<?php

namespace App\Http\Controllers\Web\Payroll;

use App\Http\Controllers\Controller;
use App\Models\PayrollPtSlab;
use Illuminate\Http\Request;

class PayrollPtSlabController extends Controller
{
    public function store(Request $request)
    {
        $companyId = auth()->user()->company_id;
        if (! $companyId) {
            return redirect()->back()->with('error', 'Company not found.');
        }

        $validated = $request->validate([
            'state' => 'required|string|max:100',
            'min_gross' => 'required|numeric|min:0',
            'max_gross' => 'nullable|numeric|min:0',
            'amount' => 'required|numeric|min:0',
            'effective_from' => 'nullable|date',
            'redirect_to' => 'nullable|string',
        ]);

        PayrollPtSlab::withoutGlobalScopes()->create([
            'company_id' => $companyId,
            'state' => $validated['state'],
            'min_gross' => $validated['min_gross'],
            'max_gross' => $validated['max_gross'] ?? null,
            'amount' => $validated['amount'],
            'effective_from' => $validated['effective_from'] ?? null,
        ]);

        return redirect($validated['redirect_to'] ?? route('payroll.index', ['tab' => 'advanced', 'sub' => 'pt']))
            ->with('success', 'PT slab added.');
    }

    public function destroy(Request $request, PayrollPtSlab $slab)
    {
        $companyId = auth()->user()->company_id;
        if ($companyId && (int) $slab->company_id !== (int) $companyId) {
            abort(403);
        }
        $redirectTo = (string) ($request->input('redirect_to') ?? route('payroll.index', ['tab' => 'advanced', 'sub' => 'pt']));
        $slab->delete();
        return redirect($redirectTo)->with('success', 'PT slab deleted.');
    }
}

