public static CommandResult Handle(State state, CreateAuction createAuction) { switch (state) { case EmptyState _: var auctionCreated = AuctionCreated.Create(createAuction.Auction); return(CommandResultSuccess.Create(new List <EventPayload> { auctionCreated })); default: return(CommandResultFailure.Create("Auction already created")); } }
public static CommandResult Handle(State state, PlaceBid placeBid) { switch (state) { case CreatedState created: if (DateTime.UtcNow >= created.EndTime) { CommandResultFailure.Create("Auction has finished"); } if (placeBid.Bid.Amount <= created.HighestBid) { CommandResultFailure.Create("Bid is not higher than current highest bid"); } var bidPlaced = BidPlaced.Create(placeBid.Bid); return(CommandResultSuccess.Create(new List <EventPayload> { bidPlaced })); default: return(CommandResultFailure.Create("Auction not created")); } }