<?php

namespace App\Http\Controllers;

use App\Models\Booking;
use App\Services\BookingManagementService;
use Illuminate\Http\Request;

class BookingManagementController extends Controller
{
    public function __construct(private BookingManagementService $service) {}

    public function index(Request $request)
    {
        $filters = $request->validate([
            'q' => ['nullable', 'string', 'max:120'],
            'status' => ['nullable', 'in:pending,accepted,declined,cancelled,expired,in_progress,completed'],
            'payment_status' => ['nullable', 'in:pending,paid,failed'],
            'type' => ['nullable', 'in:appointment,realtime'],
            'date_from' => ['nullable', 'date'],
            'date_to' => ['nullable', 'date', 'after_or_equal:date_from'],
        ]);

        return view('admin.bookings', $this->service->index($filters));
    }

    public function show(Booking $booking)
    {
        return view('admin.booking-detail', ['booking' => $this->service->find($booking->id)]);
    }
}
