using Koogle.Application.DTOs; namespace Koogle.Web.Store.DayState; // Load Days Actions /// /// Action to load all days for the current club. /// public record LoadDaysAction(DayFilterDto? Filter = null); /// /// Action dispatched when days are loaded successfully. /// public record LoadDaysSuccessAction(IReadOnlyList Days); /// /// Action dispatched when loading days fails. /// public record LoadDaysFailureAction(string Error); // Load Day Details Actions /// /// Action to load a single day with full details. /// public record LoadDayDetailsAction(Guid DayId); /// /// Action dispatched when day details are loaded successfully. /// public record LoadDayDetailsSuccessAction(DayDto Day); /// /// Action dispatched when loading day details fails. /// public record LoadDayDetailsFailureAction(string Error); // Create Day Actions /// /// Action to create a new day. /// public record CreateDayAction(CreateDayDto Dto); /// /// Action dispatched when day is created successfully. /// public record CreateDaySuccessAction(DayDto Day); /// /// Action dispatched when creating day fails. /// public record CreateDayFailureAction(string Error); // Update Day Actions /// /// Action to update an existing day. /// public record UpdateDayAction(UpdateDayDto Dto); /// /// Action dispatched when day is updated successfully. /// public record UpdateDaySuccessAction(DayDto Day); /// /// Action dispatched when updating day fails. /// public record UpdateDayFailureAction(string Error); // Delete Day Actions /// /// Action to delete a day. /// public record DeleteDayAction(Guid Id); /// /// Action dispatched when day is deleted successfully. /// public record DeleteDaySuccessAction(Guid Id); /// /// Action dispatched when deleting day fails. /// public record DeleteDayFailureAction(string Error); // Participant Actions /// /// Action to add a participant to a day. /// public record AddDayParticipantAction(AddDayParticipantDto Dto); /// /// Action dispatched when participant is added successfully. /// public record AddDayParticipantSuccessAction(DayDto Day); /// /// Action dispatched when adding participant fails. /// public record AddDayParticipantFailureAction(string Error); /// /// Action to remove a participant from a day. /// public record RemoveDayParticipantAction(RemoveDayParticipantDto Dto); /// /// Action dispatched when participant is removed successfully. /// public record RemoveDayParticipantSuccessAction(DayDto Day); /// /// Action dispatched when removing participant fails. /// public record RemoveDayParticipantFailureAction(string Error); // Status Actions /// /// Action to advance day status (New → Started → Closed). /// public record AdvanceDayStatusAction(Guid DayId); /// /// Action dispatched when status is advanced successfully. /// public record AdvanceDayStatusSuccessAction(DayDto Day); /// /// Action dispatched when advancing status fails. /// public record AdvanceDayStatusFailureAction(string Error); // Available Persons Actions /// /// Action to load available persons for participant selection. /// public record LoadAvailablePersonsAction; /// /// Action dispatched when available persons are loaded successfully. /// public record LoadAvailablePersonsSuccessAction(IReadOnlyList Persons); /// /// Action dispatched when loading available persons fails. /// public record LoadAvailablePersonsFailureAction(string Error); // Selection and Error Actions /// /// Action to select a day for editing. /// public record SelectDayAction(DayDto? Day); /// /// Action to clear day error state. /// public record ClearDayErrorAction; /// /// Action to set filter for day list. /// public record SetDayFilterAction(DayFilterDto? Filter); // PersonExpense Actions /// /// Action to load person expenses for a day. /// public record LoadDayExpensesAction(Guid DayId); /// /// Action dispatched when day expenses are loaded successfully. /// public record LoadDayExpensesSuccessAction(IReadOnlyList Expenses); /// /// Action dispatched when loading day expenses fails. /// public record LoadDayExpensesFailureAction(string Error); /// /// Action to load available expense templates. /// public record LoadAvailableExpensesAction; /// /// Action dispatched when available expenses are loaded successfully. /// public record LoadAvailableExpensesSuccessAction(IReadOnlyList Expenses); /// /// Action dispatched when loading available expenses fails. /// public record LoadAvailableExpensesFailureAction(string Error); /// /// Action to create a new person expense. /// public record CreatePersonExpenseAction(CreatePersonExpenseDto Dto); /// /// Action dispatched when person expense is created successfully. /// public record CreatePersonExpenseSuccessAction(PersonExpenseDto Expense); /// /// Action dispatched when creating person expense fails. /// public record CreatePersonExpenseFailureAction(string Error); /// /// Action to create an inverse person expense (charged to all except one). /// public record CreateInversePersonExpenseAction(CreateInversePersonExpenseDto Dto); /// /// Action dispatched when inverse expenses are created successfully. /// public record CreateInversePersonExpenseSuccessAction(IReadOnlyList Expenses); /// /// Action dispatched when creating inverse expense fails. /// public record CreateInversePersonExpenseFailureAction(string Error); /// /// Action to delete a person expense. /// public record DeletePersonExpenseAction(Guid Id, Guid DayId); /// /// Action dispatched when person expense is deleted successfully. /// public record DeletePersonExpenseSuccessAction(Guid Id); /// /// Action dispatched when deleting person expense fails. /// public record DeletePersonExpenseFailureAction(string Error); /// /// Action to update person expense status (Open/Done). /// public record UpdatePersonExpenseStatusAction(UpdatePersonExpenseStatusDto Dto); /// /// Action dispatched when person expense status is updated successfully. /// public record UpdatePersonExpenseStatusSuccessAction(PersonExpenseDto Expense); /// /// Action dispatched when updating person expense status fails. /// public record UpdatePersonExpenseStatusFailureAction(string Error); /// /// Action dispatched when trigger-based expenses are created (e.g., Gutter, Strike). /// public record TriggerExpensesCreatedAction(IReadOnlyList Expenses);