using Koogle.Domain.Enums; namespace Koogle.Application.DTOs; /// /// Data transfer object representing a game day. /// public record DayDto { /// /// Unique identifier of the day. /// public Guid Id { get; init; } /// /// Date of the game day. /// public DateTime PostDate { get; init; } /// /// Current status of the day (New, Started, Postponed, Closed). /// public DayStatus Status { get; init; } /// /// Unique identifier of the club this day belongs to. /// public Guid ClubId { get; init; } /// /// Name of the club this day belongs to. /// public string? ClubName { get; init; } /// /// Number of participants on this day. /// public int ParticipantCount { get; init; } /// /// List of participants on this day. /// public List Participants { get; init; } = []; /// /// Date and time when the day was created. /// public DateTime CreatedAt { get; init; } /// /// Date and time when the day was last modified. /// public DateTime? ModifiedAt { get; init; } } /// /// Lightweight data transfer object for day summaries. /// public record DaySummaryDto { /// /// Unique identifier of the day. /// public Guid Id { get; init; } /// /// Date of the game day. /// public DateTime PostDate { get; init; } /// /// Current status of the day. /// public DayStatus Status { get; init; } /// /// Number of participants on this day. /// public int ParticipantCount { get; init; } } /// /// Data transfer object for creating a new game day. /// public record CreateDayDto { /// /// Date of the game day to create. /// public DateTime PostDate { get; init; } = DateTime.Today; /// /// List of person IDs to add as initial participants. /// public List ParticipantIds { get; init; } = []; } /// /// Data transfer object for updating an existing game day. /// public record UpdateDayDto { /// /// Unique identifier of the day to update. /// public Guid Id { get; init; } /// /// Updated date of the game day. /// public DateTime PostDate { get; init; } /// /// Updated status of the day. /// public DayStatus Status { get; init; } } /// /// Data transfer object representing a participant on a game day. /// public record DayParticipantDto { /// /// Unique identifier of the person. /// public Guid PersonId { get; init; } /// /// Name of the person. /// public string PersonName { get; init; } = string.Empty; /// /// Status indicating whether the person is a member or guest. /// public PersonStatus PersonStatus { get; init; } } /// /// Data transfer object for adding a participant to a game day. /// public record AddDayParticipantDto { /// /// Unique identifier of the day. /// public Guid DayId { get; init; } /// /// Unique identifier of the person to add. /// public Guid PersonId { get; init; } } /// /// Data transfer object for removing a participant from a game day. /// public record RemoveDayParticipantDto { /// /// Unique identifier of the day. /// public Guid DayId { get; init; } /// /// Unique identifier of the person to remove. /// public Guid PersonId { get; init; } } /// /// Data transfer object for filtering game days. /// public record DayFilterDto { /// /// Filter by year. /// public int? Year { get; init; } /// /// Filter by status. /// public DayStatus? Status { get; init; } }