<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Services\StaffInfoService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class StaffApiController extends Controller
{
    /**
     * Store the newly created resource in storage.
     */
    public function store(Request $request, StaffInfoService $staffService)
    {
        $payload = $request->all();
        $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());
    }

    /**
     * Display the resource.
     */
    public function show(Request $request, StaffInfoService $staffService)
    {
        $response = $staffService->getStaffInfo($request->id);
        return new JsonResponse($response->object(), $response->status());
    }

    /**
     * Update the resource in storage.
     */
    public function update(Request $request, StaffInfoService $staffService)
    {
        // $response = $staffService->updateSchemaData(schemaName: $request->section, id: $request->id, data: $request->all());

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

    /**
     * Remove the resource from storage.
     */
    public function destroy(Request $request, StaffInfoService $staffService)
    {
        $response = $staffService->deleteStaff($request->id);
        return new JsonResponse($response->object(), $response->status());
    }
}
