Exemplo n.º 1
0
        public void Place(UserBidDto userBidDto)
        {
            //validation should come here

            var userBid = new UserBid(userBidDto.BidId, userBidDto.UserId, userBidDto.SuggestedPrice);

            _userBidRepository.Add(userBid);
        }
        public void PlaceBids(int lotteryId, IEnumerable <CoworkerBid> bids)
        {
            var lottery = this._context.Lotteries.Include(x => x.UserBids).First(x => x.Id == lotteryId);

            if (lottery.IsFinished)
            {
                throw new LotteryIsFinishedException();
            }

            foreach (var bid in bids)
            {
                var coworker = new Coworker {
                    Id = bid.CoworkerId
                };
                this._context.Coworkers.Attach(coworker).State = EntityState.Unchanged;
                var user = this._currentUserAccessor.GetCurrentUser();

                var existingBid = lottery.UserBids.FirstOrDefault(x =>
                                                                  x.CoworkerId == bid.CoworkerId &&
                                                                  x.UserId == user.Id);

                if (existingBid == null)
                {
                    var userBid = new UserBid()
                    {
                        LotteryId  = lotteryId,
                        Lottery    = lottery,
                        Bid        = bid.BidAmmount,
                        CoworkerId = bid.CoworkerId,
                        Coworker   = coworker,
                        User       = user
                    };

                    lottery.UserBids.Add(userBid);
                }
                else
                {
                    existingBid.Bid = bid.BidAmmount;
                }
            }

            this._context.SaveChanges();
        }
Exemplo n.º 3
0
            public async Task <Unit> Handle(SetMaxBidCommand request, CancellationToken cancellationToken)
            {
                var userBid = await _userBidService.GetByIdAsync(request.UserId);

                if (userBid == null)
                {
                    userBid           = new UserBid();
                    userBid.UserId    = request.UserId;
                    userBid.MaxAmount = request.Amount;
                    _dbContext.UserBids.Add(userBid);
                }
                else
                {
                    userBid.MaxAmount = request.Amount;
                }

                await _dbContext.SaveChangesAsync(cancellationToken);

                return(Unit.Value);
            }
Exemplo n.º 4
0
        private void UpdateUser(AuctionRaised ev, IClientSessionHandle session)
        {
            var userBid = new UserBid()
            {
                AuctionId   = ev.Bid.AuctionId.ToString(),
                DateCreated = ev.Bid.DateCreated,
                Price       = ev.Bid.Price,
                BidId       = ev.Bid.BidId.ToString()
            };
            var userFilter =
                Builders <UserRead> .Filter.Eq(f => f.UserIdentity.UserId, ev.Bid.UserIdentity.UserId.ToString());

            var userUpdate = Builders <UserRead> .Update.Push(f => f.UserBids, userBid);

            var result = _dbContext.UsersReadModel.UpdateOne(session, userFilter, userUpdate);

            if (result.MatchedCount == 0)
            {
                throw new QueryException($"Cannot find user with id: {ev.Bid.UserIdentity.UserId.ToString()}");
            }
        }