using Koogle.Domain.Enums; namespace Koogle.Application.DTOs; /// /// Data transfer object representing an expense template. /// public record ExpenseDto { /// /// Unique identifier of the expense. /// public Guid Id { get; init; } /// /// Name of the expense. /// public string Name { get; init; } = string.Empty; /// /// Description of the expense. /// public string Description { get; init; } = string.Empty; /// /// Default price of the expense. /// public decimal Price { get; init; } /// /// Indicates if this expense should be shown as a quick-action button. /// public bool IsOneClick { get; init; } /// /// Indicates if this is an inverse expense (charged to all except one person). /// public bool IsInverse { get; init; } /// /// Indicates if the price can vary when assigned. /// public bool IsVariable { get; init; } /// /// Type of the expense (Monetary or Material). /// public ExpenseType ExpenseType { get; init; } /// /// Unique identifier of the club this expense belongs to. /// public Guid ClubId { get; init; } /// /// Date and time when the expense was created. /// public DateTime CreatedAt { get; init; } /// /// Date and time when the expense was last modified. /// public DateTime? ModifiedAt { get; init; } } /// /// Data transfer object for creating a new expense template. /// public record CreateExpenseDto { /// /// Name of the expense to create. /// public string Name { get; init; } = string.Empty; /// /// Description of the expense. /// public string Description { get; init; } = string.Empty; /// /// Default price of the expense. /// public decimal Price { get; init; } /// /// Indicates if this expense should be shown as a quick-action button. /// public bool IsOneClick { get; init; } /// /// Indicates if this is an inverse expense. /// public bool IsInverse { get; init; } /// /// Indicates if the price can vary when assigned. /// public bool IsVariable { get; init; } /// /// Type of the expense (Monetary or Material). /// public ExpenseType ExpenseType { get; init; } = ExpenseType.Monetary; } /// /// Data transfer object for updating an existing expense template. /// public record UpdateExpenseDto { /// /// Unique identifier of the expense to update. /// public Guid Id { get; init; } /// /// Updated name of the expense. /// public string Name { get; init; } = string.Empty; /// /// Updated description of the expense. /// public string Description { get; init; } = string.Empty; /// /// Updated default price. /// public decimal Price { get; init; } /// /// Updated one-click status. /// public bool IsOneClick { get; init; } /// /// Updated inverse expense status. /// public bool IsInverse { get; init; } /// /// Updated variable price status. /// public bool IsVariable { get; init; } /// /// Updated expense type. /// public ExpenseType ExpenseType { get; init; } } /// /// Lightweight data transfer object for expense summaries. /// public record ExpenseSummaryDto { /// /// Unique identifier of the expense. /// public Guid Id { get; init; } /// /// Name of the expense. /// public string Name { get; init; } = string.Empty; /// /// Default price of the expense. /// public decimal Price { get; init; } /// /// Indicates if this expense is shown as a quick-action button. /// public bool IsOneClick { get; init; } }