public async Task <bool> BidOnAuctionAsync(Guid auctionId, Guid accountId, decimal bidValue) { using (var uow = UnitOfWorkProvider.Create()) { var auctionDto = await auctionService.GetAsync(auctionId); var accountDto = await accountService.GetAsync(accountId); if (auctionDto == null || accountDto == null || !auctionDto.IsOpened) { return(false); } auctionDto.ActualPrice += bidValue; if (!await EditAuctionAsync(auctionDto)) { return(false); } bidService.Create(new AccountAuctionRelationDTO { AuctionId = auctionId, AccountId = accountId, BidValue = bidValue, BidDateTime = DateTime.Now }); await uow.Commit(); SendMail(auctionDto, accountDto, bidValue); return(true); } }
public ActionResult CreateBid(CreateBidModel model) { if (!ModelState.IsValid) { return(View(model)); } var lot = lotService.GetById(model.LotId); var user = userService.GetOneByPredicate(u => u.Name == User.Identity.Name); if (!CheckBidPossibility(user, lot)) { return(RedirectToAction("Details", "Lot", new { id = model.LotId })); } if (lot.Bids.Count > 0) { int max = lot.Bids.Max(e => e.Price); if (model.Price <= max) { ModelState.AddModelError("Price", "Your price is less than others"); return(View(model)); } } var bid = new BidEntity(); if (user != null) { bid.ProfileId = user.ProfileId; } bid.LotId = model.LotId; bid.Price = model.Price; bid.Date = DateTime.Now; bidService.Create(bid); return(RedirectToAction("Details", "Lot", new { id = model.LotId })); }