Пример #1
0
        public async Task <IHttpActionResult> Update(string dealId, [FromBody] DealRequestViewModel dealModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            string         username = HttpContext.Current.User.Identity.Name;
            IdentityResult result   = await _repo.UpdateDeal(username, dealId, dealModel);

            IHttpActionResult errorResult = GetErrorResult(result);

            return(errorResult == null?Ok() : errorResult);
        }
Пример #2
0
 private async Task <Deal> MapDealAsync(DealRequestViewModel deal, string ownerUsername)
 {
     return(new Deal
     {
         Title = deal.Title,
         StartAmount = deal.StartAmount,
         ReturnedAmount = 0m,
         DealDurationInMonth = deal.DealDurationInMonth,
         PercentRate = deal.PercentRate,
         UserOwner = await _context.Users.FirstOrDefaultAsync(u => u.UserName == ownerUsername),
         UserCreditor = await _context.Users.FirstOrDefaultAsync(u => u.UserName == deal.CreditorUserName),
         DealStartDate = null,
         RatingPositive = null,
         RatingNegative = null,
         DealClosedDate = null,
         IsClosed = false
     });
 }
Пример #3
0
        public async Task <IdentityResult> CreateDeal(string username, DealRequestViewModel dealModel)
        {
            _context.Deals.Add(await MapDealAsync(dealModel, username));

            try
            {
                await _context.SaveChangesAsync();

                return(IdentityResult.Success);
            }
            catch (DbEntityValidationException ex)
            {
                _logger.Error("DealRepository.CreateDeal", ex);
                return(IdentityResult.Failed(ex.GetValidationErrors()));
            }
            catch (Exception ex)
            {
                _logger.Error("DealRepository.CreateDeal", ex);
                return(null);
            }
        }
Пример #4
0
        public async Task <IdentityResult> UpdateDeal(string username, string dealId, DealRequestViewModel dealModel)
        {
            Deal oldDeal = await _context.Deals.FirstOrDefaultAsync(d => d.Id == dealId);

            if (oldDeal == null)
            {
                return(IdentityResult.Failed($"Deal with id '{dealId}' not found."));
            }

            if (oldDeal.UserOwner.UserName != username)
            {
                return(IdentityResult.Failed("Can not update deal by not owner user."));
            }

            if (oldDeal.IsClosed)
            {
                return(IdentityResult.Failed("Deal is closed."));
            }

            if (oldDeal.UserCreditor != null)
            {
                return(IdentityResult.Failed("Can not change condition deal after deal conclusion."));
            }

            ApplicationUser creditorUser = await _context.Users.FirstOrDefaultAsync(d => d.UserName == dealModel.CreditorUserName);

            if (!string.IsNullOrWhiteSpace(dealModel.CreditorUserName) && creditorUser == null)
            {
                return(IdentityResult.Failed($"User with username '{dealModel.CreditorUserName}' not found"));
            }

            oldDeal.Title               = dealModel.Title;
            oldDeal.StartAmount         = dealModel.StartAmount;
            oldDeal.DealDurationInMonth = dealModel.DealDurationInMonth;
            oldDeal.PercentRate         = dealModel.PercentRate;
            oldDeal.UserCreditor        = creditorUser;

            try
            {
                await _context.SaveChangesAsync();

                return(IdentityResult.Success);
            }
            catch (DbEntityValidationException ex)
            {
                _logger.Error("DealRepository.UpdateDeal", ex);
                return(IdentityResult.Failed(ex.GetValidationErrors()));
            }
            catch (Exception ex)
            {
                _logger.Error("DealRepository.UpdateDeal", ex);
                return(null);
            }
        }