// EN: Query to find available time slots.
// VI: Query tìm slot thời gian khả dụng.

using BookingService.API.Application.DTOs;
using MediatR;

namespace BookingService.API.Application.Queries;

/// <summary>
/// EN: Query to find available booking slots based on staff schedule, resource availability, and existing appointments.
/// VI: Query để tìm slot đặt lịch dựa trên lịch nhân viên, tài nguyên và cuộc hẹn hiện tại.
/// </summary>
public record FindAvailableSlotsQuery(
    Guid ShopId,
    Guid ServiceId,
    DateTime Date,
    int ServiceDurationMinutes,
    Guid? StaffId = null,
    Guid? ResourceId = null
) : IRequest<List<TimeSlotDto>>;
