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); }
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 }); }
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); } }
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); } }