private void Set(WinningBid newBid)
        {
            if (!FirstOffer() && CurrentWinningBid.WasMadeBy(newBid.Bidder))
            {
                DomainEvents.Raise(new OutBid(Id, CurrentWinningBid.Bidder));
            }

            CurrentWinningBid = newBid;
        }
Exemplo n.º 2
0
        private void Place(WinningBid newBid)
        {
            if (!FirstOffer() && CurrentWinningBid.WasMadeBy(newBid.Bidder))
            {
                DomainEvents.Raise(new OutBid(Id, CurrentWinningBid.Bidder));
            }

            CurrentWinningBid = newBid;
            DomainEvents.Raise(new BidPlaced(Id, newBid.Bidder, newBid.CurrentAuctionPrice.Amount, newBid.TimeOfBid));
        }
Exemplo n.º 3
0
        public AuctionSnapshot GetSnapshot()
        {
            var snapshot = new AuctionSnapshot();

            snapshot.Id            = this.Id;
            snapshot.StartingPrice = this.StartingPrice.GetSnapshot().Value;
            snapshot.EndsAt        = this.EndsAt;
            snapshot.Version       = this.Version;

            if (HasACurrentBid())
            {
                snapshot.WinningBid = CurrentWinningBid.GetSnapshot();
            }

            return(snapshot);
        }
 public void PlaceBidFor(Bid bid, DateTime currentTime)
 {
     if (StillInProgress(currentTime))
     {
         if (FirstOffer())
         {
             PlaceABidForTheFirst(bid);
         }
         else if (BidderIsIncreasingMaximumBid(bid))
         {
             CurrentWinningBid = CurrentWinningBid.RaiseMaximumBidTo(bid.MaximumBid);
         }
         else if (CurrentWinningBid.CanBeExceededBy(bid.MaximumBid))
         {
             Set(CurrentWinningBid.DetermineWinningBidIncrement(bid));
         }
     }
 }
Exemplo n.º 5
0
        public void PlaceBidFor(Offer offer, DateTime currentTime)
        {
            if (StillInProgress(currentTime))
            {
                if (FirstOffer())
                {
                    PlaceABidForTheFirst(offer);
                }
                else if (BidderIsIncreasingMaximumBidToNew(offer))
                {
                    CurrentWinningBid = CurrentWinningBid.RaiseMaximumBidTo(offer.MaximumBid);
                }
                else if (CurrentWinningBid.CanBeExceededBy(offer.MaximumBid))
                {
                    var newBids = new AutomaticBidder().GenerateNextSequenceOfBidsAfter(offer, CurrentWinningBid);

                    foreach (var bid in newBids)
                    {
                        Place(bid);
                    }
                }
            }
        }
Exemplo n.º 6
0
 private bool BidderIsIncreasingMaximumBidToNew(Offer offer)
 {
     return(CurrentWinningBid.WasMadeBy(offer.Bidder) && offer.MaximumBid.IsGreaterThan(CurrentWinningBid.MaximumBid));
 }
 private bool BidderIsIncreasingMaximumBid(Bid bid)
 {
     return(CurrentWinningBid.WasMadeBy(bid.Bidder) && bid.MaximumBid.IsGreaterThan(CurrentWinningBid.MaximumBid));
 }