Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }