namespace GerbilManagerWebAPI.Dtos
{
    /// <summary>ABGABE-STATUS: response DTO for a stored reservation/sale status.</summary>
    public record SaleReservationDto(
        Guid Id,
        Guid GerbilId,
        string? GerbilName,
        string Status,
        Guid? ReservedForContactId,
        string? ContactName,
        DateTime? AppointmentDate,
        decimal? Price,
        string? Note,
        DateTime? HandedOverDate,
        DateTimeOffset CreatedAt,
        DateTimeOffset UpdatedAt);

    /// <summary>ABGABE-STATUS: payload for POST /reservations.</summary>
    public record SaleReservationInput(
        Guid GerbilId,
        string? GerbilName,
        string? Status,
        Guid? ReservedForContactId,
        string? ContactName,
        DateTime? AppointmentDate,
        decimal? Price,
        string? Note,
        DateTime? HandedOverDate);

    /// <summary>
    /// ABGABE-STATUS: payload for PUT /reservations/{id}. All fields optional — only the
    /// provided ones are changed. A null/blank Status is ignored.
    /// </summary>
    public record SaleReservationUpdate(
        string? GerbilName,
        string? Status,
        Guid? ReservedForContactId,
        string? ContactName,
        DateTime? AppointmentDate,
        decimal? Price,
        string? Note,
        DateTime? HandedOverDate);
}
