#nullable enable
namespace Baya.Application.Models.Booking;

/// <summary>
/// One row in the role-scoped inbox. <see cref="CounterpartyName"/> is the nurse's name in the customer
/// inbox and the patient's name in the nurse inbox; <see cref="NurseRating"/> is populated only in the
/// customer inbox, and <see cref="CustomerNotes"/> (stage-1 disclosure) only in the nurse inbox. No
/// encrypted/clinical field is ever projected here.
/// </summary>
public record BookingRequestListItemDto(
    long Id,
    string Status,
    string CounterpartyName,
    decimal? NurseRating,
    string? RequiredCaregiverGender,
    DateOnly RequestedDate,
    TimeOnly RequestedTimeStart,
    TimeOnly RequestedTimeEnd,
    DateTime NurseResponseDeadlineAt,
    DateTime? PaymentDeadlineAt,
    string? CustomerNotes,
    // The requested service variant — makes the inbox row self-describing without opening the detail.
    string VariantLabel,
    // Coarse patient age for triage (nurse inbox); null when the birth date is unset.
    int? PatientAge);
