<?php

namespace App\Http\Controllers;

use App\Traits\Api;
use Inertia\Inertia;
use Inertia\Response;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Services\StaffInfoService;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Redirect;
use App\Http\Requests\ProfileUpdateRequest;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class ProfileController extends Controller
{
    use Api;
    /**
     * Display the user's profile form.
     */
    public function index(Request $request): Response
    {
        return Inertia::render('Profile/Index');
    }

    /**
     * Delete the user's file.
     */
    public function deleteFile(Request $request, $id): JsonResponse
    {
        $response = $this->remove(config('services.kedebah.hr_service_url') . "/media/$id");
        return new JsonResponse($response->object(), $response->status());
    }
    /**
     * Update the user's profile information.
     */
    public function update(Request $request, StaffInfoService $staffService): JsonResponse
    {
        $payload = $request->all();
        // Perform your existing logic
        // dd($payload);
        $response = ($request->filled('id') == false) && $request->section === 'personal_info'
            ? $staffService->createStaffPersonalInfo(data: $payload)
            : $staffService->updateStaffInfo(staffId: $request->id, section: $request->section, data: $payload);

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

    }


    /**
     * Delete the user's account.
     */
    public function destroy(Request $request): RedirectResponse
    {
        $request->validate([
            'password' => ['required', 'current_password'],
        ]);

        $user = $request->user();

        Auth::logout();

        $user->delete();

        $request->session()->invalidate();
        $request->session()->regenerateToken();

        return Redirect::to('/');
    }
}
