<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use App\Models\Interview;
use App\Models\User;
use App\Services\Recruitment\RecruitmentNavService;
use Illuminate\Support\Facades\Auth;

class MyInterviewsController extends Controller
{
    public function index(RecruitmentNavService $nav)
    {
        $user = Auth::user();
        abort_unless($user instanceof User && $nav->canViewAssignedInterviews($user), 403);

        if ($nav->hasHrAccess($user)) {
            return redirect()->route('interviews.index');
        }

        $today = now()->toDateString();

        $assigned = Interview::query()
            ->with(['applicant.jobPosting'])
            ->where('interviewer_id', $user->id);

        $todayInterviews = (clone $assigned)
            ->whereDate('scheduled_at', $today)
            ->where('status', 'scheduled')
            ->orderBy('scheduled_at')
            ->get();

        $upcomingInterviews = (clone $assigned)
            ->whereDate('scheduled_at', '>', $today)
            ->where('status', 'scheduled')
            ->orderBy('scheduled_at')
            ->get();

        $earlierInterviews = (clone $assigned)
            ->where(function ($query) use ($today) {
                $query->where('status', '!=', 'scheduled')
                    ->orWhereDate('scheduled_at', '<', $today);
            })
            ->orderByDesc('scheduled_at')
            ->limit(20)
            ->get();

        return view('recruitment.my-interviews.index', compact(
            'todayInterviews',
            'upcomingInterviews',
            'earlierInterviews'
        ));
    }
}
