<?php

namespace App\Http\Controllers\Web\Payroll;

use App\Http\Controllers\Controller;
use App\Models\EmployeePayroll;
use Illuminate\Http\Request;

class PayrollSelfController extends Controller
{
    public function index(Request $request)
    {
        return redirect()->route('payroll.index', ['tab' => 'my']);
    }

    public function show(Request $request, EmployeePayroll $employeePayroll)
    {
        $user = $request->user();
        $companyId = $user?->company_id;
        if (! $companyId || (int) $employeePayroll->company_id !== (int) $companyId) {
            abort(403);
        }
        if ((int) $employeePayroll->user_id !== (int) $user->id) {
            abort(403);
        }
        $employeePayroll->load(['user.department', 'payrollCycle', 'components']);

        return view('payroll.my.show', compact('employeePayroll'));
    }

    public function download(Request $request, EmployeePayroll $employeePayroll)
    {
        $user = $request->user();
        $companyId = $user?->company_id;
        if (! $companyId || (int) $employeePayroll->company_id !== (int) $companyId) {
            abort(403);
        }
        if ((int) $employeePayroll->user_id !== (int) $user->id) {
            abort(403);
        }
        if (! class_exists(\Barryvdh\DomPDF\Facade\Pdf::class)) {
            return redirect()->back()->with('error', 'PDF download requires barryvdh/laravel-dompdf.');
        }
        $employeePayroll->load(['user.company', 'user.department', 'user.designation', 'user.location', 'payrollCycle', 'components']);
        $pdf = \Barryvdh\DomPDF\Facade\Pdf::loadView('payroll.cycles.payslip-pdf', ['employeePayroll' => $employeePayroll]);
        $filename = 'payslip-' . $employeePayroll->user_id . '-' . $employeePayroll->payrollCycle->year . '-' . str_pad((string) $employeePayroll->payrollCycle->month, 2, '0', STR_PAD_LEFT) . '.pdf';

        return $pdf->download($filename);
    }
}
