<?php

namespace App\Http\Controllers;

use App\Traits\Api;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;

class KpiController extends Controller
{
    use Api;
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/staff-kpi", $data);
        // dd($response->object());
        Log::info('response' . $response);
        return new JsonResponse($response->object(), $response->status());
    }

    public function getKpiForm()
    {
        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/staff-kpi-form");
        Log::info('data received' . $response);
        return new JsonResponse($response->json(), $response->status());
    }

    public function submitKpiForm(Request $request, $id)
    {
        $formData = $request->all();
        $formData['kpi_activity_id'] = $id;

        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/submit-staff-kpi", $formData);
        return new JsonResponse($response->json(), $response->status());
    }

    public function KpiReview(Request $request): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/reviews/reviewable-activities", $data);

        Log::info('response' . $response);
        return new JsonResponse($response->object(), $response->status());
    }

    public function KpiGrading(Request $request): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/current-staff/gradings", $data);

        Log::info('response' . $response);
        return new JsonResponse($response->object(), $response->status());
    }

    public function fetchKpiReviewData(Request $request, $id): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/reviews/reviewable-activities/{$id}", $data);
        Log::info('response: ' . $response->body());
        return new JsonResponse($response->object(), $response->status());
    }


    public function fetchKpiReviewDataReturned(Request $request, $id): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/{$id}/details", $data);
        Log::info('response: ' . $response->body());
        return new JsonResponse($response->object(), $response->status());
    }

    public function fetchKpiGradingData(Request $request, $id): JsonResponse
    {
        $data = [
            'paginate' => true,
            'page' => $request->input('page', 1),
            'per_page' => $request->input('per_page', 10),
            'search_query' => $request->input('filter.search_query'),
        ];

        $response = $this->get(config('services.kedebah.hr_service_url') . "/performance/kpi/current-staff/gradings/{$id}", $data);
        Log::info('response: ' . $response->body());
        return new JsonResponse($response->object(), $response->status());
    }

    public function submitKpiReview(Request $request): JsonResponse
    {
        $formData = $request->all();

        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/reviews/reviewer/submit", $formData);
        Log::info('response' . $response->status());

        $jsonResponse = $response->json();
        $jsonResponse['redirect'] = route('kpi_review.index');

        return new JsonResponse($jsonResponse, $response->status());
    }

    public function submitKpiReviewReturned(Request $request): JsonResponse
    {

        $id = $request->input('kpi_activity_id');

        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/{$id}/resubmit");
        Log::info('response' . $response->status());



        return new JsonResponse($response->json(), $response->status());
    }

    // public function submitKpiReviewReturned(Request $request): JsonResponse
// {
//     $id = $request->input('kpi_activity_id');

    //     $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/{$id}/resubmit");
//     Log::info('response'.$response->status());

    //     $jsonResponse = $response->json();
//     $jsonResponse['redirect'] = route('kpi_review.index'); // Add the redirect URL

    //     return new JsonResponse($jsonResponse, $response->status());
// }


    public function submitSubArea(Request $request): JsonResponse
    {
        $id = $request->input('activity_item_id');
        $formData = $request->only(['reviewer_rating', 'reviewer_comment']);
        // dd($formData,$id);




        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/reviews/reviewer/activity-item/{$id}", $formData);
        Log::info('response' . $response->status());
        return new JsonResponse($response->json(), $response->status());
    }

    public function submitSubAreaReturned(Request $request): JsonResponse
    {
        $id = $request->input('activity_item_id');
        $formData = $request->only(['score', 'comment']);
        // dd($formData,$id);




        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/activities/staff/activity-item/{$id}", $formData);
        Log::info('response' . $response->status());
        return new JsonResponse($response->json(), $response->status());
    }

    public function approveSubArea(Request $request): JsonResponse
    {
        $id = $request->input('activity_item_id');
        $formData = $request->only(['reviewer_rating', 'reviewer_comment']);
        // dd($formData);

        $response = $this->post(config('services.kedebah.hr_service_url') . "/performance/kpi/reviews/reviewer/activity-item/{$id}/mark-reviewed", $formData);
        Log::info('response: ' . $response->status());
        return new JsonResponse($response->json(), $response->status());
    }




}
