using Baya.Application.Models.Booking;
using Baya.Application.Models.Common;
using Mediator;

namespace Baya.Application.Features.Booking.Commands.ExpireBookingRequests;

/// <summary>
/// Transitions stale requests: <c>pending_nurse_response → expired_no_response</c> once the response
/// deadline passes, and <c>accepted_awaiting_payment → payment_deadline_expired</c> once the payment window
/// lapses. Runs on an interval via a hosted <c>BackgroundService</c> and is also an admin manual trigger.
/// Bounded, paginated, time-injected, and idempotent — a row a concurrent action already moved is simply
/// not reloaded (the status predicate is the guard).
/// </summary>
public record ExpireBookingRequestsCommand : IRequest<OperationResult<ExpireBookingRequestsResult>>;
