示例#1
0
        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"));
            }
        }
示例#2
0
        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"));
            }
        }