<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use App\Models\PrePayment;
use App\Services\Finance\FinanceDashboardStatsService;
use App\Services\Finance\FinanceNavService;
use Illuminate\Support\Facades\Auth;

class FinanceHubController extends Controller
{
    public function __construct(
        protected FinanceDashboardStatsService $stats,
        protected FinanceNavService $nav
    ) {}

    public function self()
    {
        $user = Auth::user();
        abort_unless($user?->hasPermission('finance_self_view'), 403);

        $stats = $this->stats->selfStats($user);

        return view('finance.self', compact('stats'));
    }

    public function team()
    {
        $user = Auth::user();
        abort_unless($user?->hasPermission('finance_team_view'), 403);

        $stats = $this->stats->teamStats($user);

        return view('finance.team', compact('stats'));
    }

    public function operational()
    {
        abort_unless(Auth::user()?->hasPermission('finance_operational'), 403);

        $stats = $this->stats->operationalStats(Auth::user()?->company_id);

        return view('finance.operational', compact('stats'));
    }

    public function myAdvances()
    {
        $user = Auth::user();
        abort_unless($user?->hasPermission('finance_self_view'), 403);

        $summary = $this->stats->myAdvanceSummary($user);
        $plans = $this->stats->groupedAdvancePlans($user);

        $advances = PrePayment::query()
            ->where('user_id', $user->id)
            ->orderByDesc('advance_date')
            ->orderByDesc('year')
            ->orderByDesc('month')
            ->orderBy('installment_number')
            ->paginate(20);

        return view('finance.my-advances', compact('advances', 'summary', 'plans'));
    }
}
