public static IEnumerable <object> Handle(ReservationState _, RequestTickets command) { var reservationId = Guid.NewGuid(); var requestedOn = DateTime.UtcNow; yield return(new TicketsRequested(reservationId, command.TicketId, command.QuantityRequested, requestedOn)); }
public static ReservationState Apply(ReservationState state, IEnumerable <object> events) { foreach (var e in events) { Apply(state, e); } return(state); }
private static void Apply(ReservationState state, object @event) { switch (@event) { case TicketsRequested e: state.Id = e.ReservationId; state.Status = ReservationStatus.Requested; state.TicketId = e.TicketId; state.QuantityRequested = e.QuantityRequested; break; case ReservationRejected _: state.Status = ReservationStatus.Rejected; break; case ReservationConfirmed e: state.Status = ReservationStatus.Confirmed; state.QuantityReserved = e.QuantityReserved; break; } }
public static IEnumerable <object> Handle(ReservationState state, RejectReservation _) { var rejectedOn = DateTime.UtcNow; yield return(new ReservationRejected(state.Id, state.TicketId, state.QuantityRequested, rejectedOn)); }
public static IEnumerable <object> Handle(ReservationState state, ConfirmReservation _) { var confirmedOn = DateTime.UtcNow; yield return(new ReservationConfirmed(state.Id, state.TicketId, state.QuantityReserved, confirmedOn)); }