<?php

namespace App\Http\Controllers;

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


class PagesController extends Controller
{
    use Api;

    public function handleUserDetailsAndToken()
    {
        $user = request()->query('id_token') ? json_decode(base64_decode(request()->query('id_token'))) : null;
        if ($user) {
            $firstLoginCookie = Cookie::get('first_login');

            if (!$firstLoginCookie) {
                Cookie::queue('first_login', true, 60);
                $firstLoginCookie = Cookie::get('first_login');
                // Remove dd() from production code to avoid interruptions
                // dd($firstLoginCookie);
            }

            Cookie::queue('auth_token', $user->token, 60);
            Cookie::queue('user_details', json_encode($user), 60);
            return true;
        }

        return false;
    }

    public function dashboard()
    {
        // Retrieve the first login cookie if needed for some operations
        $firstLogin = Cookie::get('first_login');

        // dd($firstLogin);

        $handled = $this->handleUserDetailsAndToken();

        if ($handled) {
            return redirect()->route('dashboard');
        }

        $storedUserDetails = json_decode(Cookie::get('user_details'), true);

        return Inertia::render('Dashboard', [
            'user' => $storedUserDetails
        ]);
    }
    public function leave()
    {

        return Inertia::render('Leave/Index');
    }

    public function staffMovement()
    {

        return Inertia::render('StaffMovement/Index');
    }

    public function vehicleMovement()
    {

        return Inertia::render('VehicleRequest/Index');
    }

    public function travel()
    {
        return Inertia::render('Travel/Index');
    }

    public function onBoarding()
    {
        return Inertia::render('OnBoarding/Index');
    }


    public function offBoarding()
    {
        return Inertia::render('OffBoarding/Index');
    }

    public function interview()
    {
        return Inertia::render('Interview/Index');
    }

    public function helpDesk()
    {
        return Inertia::render('Comms/HelpDesk/Index');
    }

    public function announcement()
    {
        return Inertia::render('Comms/Announcements/Index');
    }
    public function holiday()
    {
        return Inertia::render('Comms/Holidays/Index');
    }
    public function anniversary()
    {
        return Inertia::render('Comms/Anniversaries/Index');
    }
    public function timeLog()
    {
        return Inertia::render('TimeTracker/Index');

    }

    public function timeSheet()
    {
        return Inertia::render('TimeSheets/Index');

    }

    public function kpi()
    {
        return Inertia::render('Kpi/Index');

    }

    public function kpi_review()
    {
        return Inertia::render('Kpi/KpiReview');

    }
    public function kpi_grading()
    {
        return Inertia::render('Kpi/KpiGrading');

    }

    public function kpi_data()
    {
        return Inertia::render('Kpi/KpiData');

    }

    public function kpi_grading_data(Request $request)
    {
        $Id = $request->input('id');
        return Inertia::render('Kpi/KpiGradingData', [
            'Id' => $Id,
        ]);

    }
    public function kpi_review_data(Request $request)
    {
        $reviewId = $request->input('id');
        $viewer = $request->input('viewer');
        return Inertia::render('Kpi/KpiReviewData', [
            'reviewId' => $reviewId,
            'viewer' => $viewer,
        ]);
    }

    public function goal_review(Request $request)
    {
        return Inertia::render('Goal/GoalReview');
    }

    public function goal_assignment_review(Request $request)
    {
        $reviewId = $request->input('id');
        return Inertia::render('Goal/GoalAssignment', [
            'reviewId' => $reviewId,
        ]);
    }

    public function staffGoal(Request $request)
    {

        return Inertia::render('Goal/StaffGoal');
    }

    public function staffGoalDetail(Request $request)
    {
        $reviewId = $request->input('id');
        return Inertia::render('Goal/GoalDetail', [
            'reviewId' => $reviewId,
        ]);
    }

    public function courses()
    {
        return Inertia::render('Training/Courses/Index');
    }

    public function learningArea(Request $request)
    {
        // dd($request->all());
        return Inertia::render('Training/Courses/LearningArea', ['course_id' => $request->query('course_id'), 'enrolment_id' => $request->query('enrolment_id')]);
    }
    public function enrolledCourses()
    {
        return Inertia::render('Training/Courses/EnrolledCourses');

    }

    public function attendance()
    {
        return Inertia::render('Reports/Attendance/Index');
    }

    public function shift()
    {
        return Inertia::render('Reports/Shift/Index');

    }
}
