public async Task <CreateDealForm> GetCreateDealForm(int currentUserId) { var currentUser = await _context.Users.FirstAsync(x => x.Id == currentUserId); var haveOpenDeal = currentUser.Deals.Any(x => x.DealStatus != DealStatus.Closed); var res = new CreateDealForm { IsCurrentUserActive = currentUser.IsActive, HaveOpenDeal = haveOpenDeal, OpenDealId = haveOpenDeal ? currentUser.Deals.Single(x => x.DealStatus != DealStatus.Closed).Id : 0 }; return(res); }
public async Task <ActionResult> Create(CreateDealForm model) { if (model.PaymentCount < 1 && model.PaymentCount > model.DealPeriod) { ModelState.AddModelError("PaymentCount", "Неверное количество платежей."); } if (ModelState.IsValid) { var id = await _dealService.CreateDeal(User.Identity.GetUserId <int>(), model); return(RedirectToAction("Details", new { id = id })); } return(View(model)); }
public async Task <int> CreateDeal(int userId, CreateDealForm model) { var currentUser = await _context.Users.FirstAsync(x => x.Id == userId); var haveOpenDeal = currentUser.Deals.Any(x => x.DealStatus != DealStatus.Closed); if (haveOpenDeal) { throw new AccessViolationException("User try to create the 2nd open deal."); } var deal = Mapper.Map <Deal>(model); deal.OwnerId = userId; _context.Deals.Add(deal); await _context.SaveChangesAsync(); return(deal.Id); }