<?php

namespace App\Tools;

use App\Models\Staff\BenefitsInfo;
use App\Models\Staff\ContactInfo;
use App\Models\Staff\JobInfo;
use App\Models\Staff\PayrollInfo;
use App\Models\Staff\PersonalInfo;
use App\Models\Staff\Staff;
use App\Models\Staff\EduBackgroundInfo;
use App\Models\Staff\WorkExpInfo;
use Illuminate\Support\Facades\Storage;


class StaffManagementTool
{
    /**
     * Upload the staff's personal info
     * @param PersonalInfo $personal_info
     * @return void
     */
    public static function uploadProfilePicture(PersonalInfo $personal_info): void
    {
        $file = request()->file('profile_picture');
        $extension = $file->getClientOriginalExtension();
        $filename = uniqid() . '.' . $extension;
        $tenant_id = tenant_id();
        Storage::disk('public')->putFileAs("tenants/$tenant_id/profile_pictures", $file, $filename);
        $personal_info->profile_picture = asset("storage/tenants/$tenant_id/profile_pictures/$filename");
        // $personal_info->save();
    }

     /**
     * Upload the staff's personal info
     * @param JobInfo $job_info
     * @return void
     */
    public static function uploadDigitalSignature(JobInfo $job_info): void
    {
        $file = request()->file('staff_digital_signature');
        $extension = $file->getClientOriginalExtension();
        $filename = uniqid() . '.' . $extension;
        $tenant_id = tenant_id();
        Storage::disk('public')->putFileAs("tenants/$tenant_id/staff_digital_signatures", $file, $filename);
        $job_info->staff_digital_signature = asset("storage/tenants/$tenant_id/staff_digital_signatures/$filename");
        // $job_info->save();
    }

    /**
     * Upload the staff's personal info
     * @param EduBackgroundInfo $edu_background_info
     * @return void
     */
    public static function uploadCertificateTranscript(EduBackgroundInfo $edu_background_info, string $file_name): void
    {
        $file = request()->file($file_name);
        $extension = $file->getClientOriginalExtension();
        $filename = uniqid() . '.' . $extension;
        $tenant_id = tenant_id();
        Storage::disk('public')->putFileAs("tenants/$tenant_id/certificate_transcripts", $file, $filename);
        $edu_background_info->certificate_transcript = asset("storage/tenants/$tenant_id/certificate_transcripts/$filename");
        // $edu_background_info->save();
    }

    /**
     * Get the section under staff a user is trying to access
     * @return mixed $section
     */
    public static function getSection(): mixed
    {
        $staff_info_sections = [
            [
                'name' => 'personal_info',
                'class' => PersonalInfo::class
            ],
            [
                'name' => 'contact_info',
                'class' => ContactInfo::class
            ],
            [
                'name' => 'job_info',
                'class' => JobInfo::class
            ],
            [
                'name' => 'payroll_info',
                'class' => PayrollInfo::class
            ],
            [
                'name' => 'work_exp_info',
                'class' => WorkExpInfo::class
            ],
            [
                'name' => 'edu_background_info',
                'class' => EduBackgroundInfo::class
            ],
            [
                'name' => 'benefits_info',
                'class' => BenefitsInfo::class
            ],
        ];

        $target_section = request('section');

        foreach ($staff_info_sections as $section) {
            if ($target_section === $section['name']) {
                return $section;
            }
        }

        abort(404, 'Section not found');
    }

}
