@extends('layouts.app')

@section('title', 'Payslip - ' . ($payroll->user?->name ?? 'Employee'))
@section('heading', 'Payslip')

@section('content')
    @php
        $earnings = $payroll->payrollComponents->where('is_earning', true);
        $deductions = $payroll->payrollComponents->where('is_earning', false);
        $totalEarnings = (float) ($payroll->salary_amount ?? 0);
        $totalDeductions = max(0, round((float) $totalEarnings - (float) ($payroll->net_salary ?? 0), 2));
        $monthLabel = \Carbon\Carbon::createFromDate((int) $payroll->year, (int) $payroll->month, 1)->format('F Y');
        $company = $payroll->user?->company;
        $companyLogoUrl = !empty($company?->logo) ? asset('storage/' . ltrim((string) $company->logo, '/')) : null;
        $employee = $payroll->user;
        $designation = $employee?->designation?->name ?? 'N/A';
        $department = $employee?->department?->name ?? 'N/A';
        $location = $employee?->location?->name ?? 'N/A';
        $employeeId = $employee?->employee_number ?: ('EMP-' . str_pad((string) ($employee?->id ?? 0), 3, '0', STR_PAD_LEFT));
        $bankName = $employee?->bank_name ?? data_get($employee, 'bankName') ?? 'N/A';
        $bankAccountNo = $employee?->account_number ?? data_get($employee, 'bank_account_no') ?? data_get($employee, 'bankAccountNo') ?? 'N/A';
        $ifscCode = $employee?->ifsc_code ?? data_get($employee, 'ifscCode') ?? 'N/A';
        $panNo = data_get($employee, 'pan_no') ?? data_get($employee, 'pan_number') ?? data_get($employee, 'panNo') ?? 'N/A';
        $workDays = (int) ($payroll->working_days ?? 0);
        $lop = (int) ($payroll->unpaid_leaves ?? 0);
        $netPay = round((float) ($payroll->net_salary ?? 0), 2);
        $toWords = function (float $amount): string {
            $value = round(max(0, $amount), 2);
            $rupees = (int) floor($value);
            $paise = (int) round(($value - $rupees) * 100);
            if (class_exists(\NumberFormatter::class)) {
                $formatter = new \NumberFormatter('en_IN', \NumberFormatter::SPELLOUT);
                $rupeesWords = ucfirst(trim((string) $formatter->format($rupees)));
                $words = $rupeesWords . ' rupees';
                if ($paise > 0) {
                    $paiseWords = trim((string) $formatter->format($paise));
                    $words .= ' and ' . $paiseWords . ' paise';
                }
                return $words . ' only';
            }
            return number_format($value, 2) . ' rupees only';
        };
        $netPayInWords = $toWords($netPay);
    @endphp
    <x-card>
        <div class="mb-6 flex flex-wrap items-center justify-between gap-3">
            <div>
                <h2 class="text-lg font-semibold text-slate-900">{{ $employee?->name ?? 'Employee' }}</h2>
                <p class="text-sm text-slate-500">Period: {{ $monthLabel }}</p>
            </div>
            <div class="flex items-center gap-2">
                @if(($payroll->status ?? '') !== 'paid')
                    <form action="{{ route('payroll.payslips.mark-paid', $payroll) }}" method="POST" class="inline">
                        @csrf
                        <button type="submit" class="rounded-lg bg-green-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-green-700">Mark as paid</button>
                    </form>
                @endif
                @if(class_exists(\Barryvdh\DomPDF\Facade\Pdf::class))
                    <a href="{{ route('payroll.payslips.download', $payroll) }}" target="_blank" class="rounded-lg border border-slate-300 bg-white px-3 py-1.5 text-sm font-medium text-slate-700 hover:bg-slate-50">Download PDF</a>
                @endif
                <a href="{{ !empty($isSelfPayslip) ? route('payroll.index', ['tab' => 'my']) : route('payroll.payslips') }}" class="rounded-lg border border-slate-300 bg-white px-3 py-1.5 text-sm font-medium text-slate-700 hover:bg-slate-50">Back to list</a>
            </div>
        </div>

        <div class="mx-auto max-w-5xl p-4 text-slate-800">
            <div class="border border-slate-300 p-4">
                <div class="mb-3 flex items-start justify-between gap-6">
                    <div>
                        @if($companyLogoUrl)
                            <img src="{{ $companyLogoUrl }}" alt="{{ $company?->name ?? config('app.name') }}" class="h-14 w-auto object-contain">
                        @else
                            <div class="text-base font-bold tracking-tight text-cyan-700">{{ $company?->name ?? config('app.name') }}</div>
                        @endif
                    </div>
                    <div class="text-right">
                        <div class="text-2xl font-bold text-slate-800">{{ $company?->name ?? config('app.name') }}</div>
                        <div class="mt-1 text-sm">{{ $company?->address ?? 'N/A' }}</div>
                        <div class="text-sm">{{ $company?->email ?? 'N/A' }}</div>
                        <div class="text-sm">{{ $company?->phone ?? 'N/A' }}</div>
                    </div>
                </div>
                <div class="my-3 border-t-2 border-slate-500"></div>
                <h2 class="text-center text-3xl font-semibold text-slate-800">Pay Slip For Duration {{ $monthLabel }}</h2>
                <div class="my-3 border-t-2 border-slate-500"></div>

                <div class="border border-slate-600 p-3">
                    <div class="grid grid-cols-1 gap-y-2 text-base md:grid-cols-2 md:gap-x-8">
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Name:</div><div>{{ $employee?->name ?? 'N/A' }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Employee ID:</div><div>{{ $employeeId }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Designation:</div><div>{{ $designation }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Bank Name:</div><div>{{ $bankName }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Department:</div><div>{{ $department }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Bank Account No:</div><div>{{ $bankAccountNo }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Location:</div><div>{{ $location }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">IFSC Code:</div><div>{{ $ifscCode }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">Effective Work Days:</div><div>{{ $workDays }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">PAN No:</div><div>{{ strtoupper($panNo) }}</div></div>
                        <div class="grid grid-cols-[190px_1fr]"><div class="font-semibold">LOP:</div><div>{{ $lop }}</div></div>
                    </div>
                </div>

                <div class="mt-4 overflow-hidden border border-slate-600">
                    <div class="grid grid-cols-2">
                        <div class="border-r border-slate-600">
                            <table class="w-full">
                                <thead><tr class="border-b border-slate-600"><th class="px-4 py-2 text-left text-lg font-semibold">Earnings</th><th class="px-4 py-2 text-right text-lg font-semibold">Amount</th></tr></thead>
                                <tbody>
                                    @foreach($earnings as $c)
                                        <tr><td class="px-4 py-1.5 text-base">{{ $c->name }}</td><td class="px-4 py-1.5 text-right text-base">₹{{ number_format((float) $c->amount, 2) }}</td></tr>
                                    @endforeach
                                    <tr class="font-semibold"><td class="px-4 py-2 text-base">Total Earnings (Rs)</td><td class="px-4 py-2 text-right text-base">₹{{ number_format((float) $totalEarnings, 2) }}</td></tr>
                                </tbody>
                            </table>
                        </div>
                        <div>
                            <table class="w-full">
                                <thead><tr class="border-b border-slate-600"><th class="px-4 py-2 text-left text-lg font-semibold">Deductions</th><th class="px-4 py-2 text-right text-lg font-semibold">Amount</th></tr></thead>
                                <tbody>
                                    @foreach($deductions as $c)
                                        <tr><td class="px-4 py-1.5 text-base">{{ $c->name }}</td><td class="px-4 py-1.5 text-right text-base">₹{{ number_format(abs((float) $c->amount), 2) }}</td></tr>
                                    @endforeach
                                    <tr class="font-semibold"><td class="px-4 py-2 text-base">Total Deductions (Rs)</td><td class="px-4 py-2 text-right text-base">₹{{ number_format((float) $totalDeductions, 2) }}</td></tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>

                <div class="mt-4 text-2xl font-semibold">Net Pay For The Month: ₹{{ number_format($netPay, 2) }}</div>
                <div class="mt-3 text-base">{{ $netPayInWords }}</div>
                <div class="mt-4 border-t-2 border-slate-500"></div>
                <div class="mt-2 text-center text-base text-slate-700">This is a system generated payslip and does not require signature.</div>
            </div>
        </div>
    </x-card>
@endsection
