public ActionResult CreateLoanExpenditure() { var model = new CreateLoanExpenditureModel() { }; return(PartialView(model)); }
public async Task <ActionResult> CreateLoanExpenditure(CreateLoanExpenditureModel model) { var nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone(); nfi.NumberGroupSeparator = " "; var officeRole = _db.Roles.SingleOrDefault(r => r.Name.Contains("Офис")); var office = _db.Users.FirstOrDefault(u => u.Roles.Any(r => r.RoleId == officeRole.Id)); if (office == null) { return(RedirectToAction("LoanExpenditures")); } var otherSum = decimal.Parse(_db.SettingsValues.FirstOrDefault(sv => sv.Key == "OtherSum").Value .Replace(" ", string.Empty), CultureInfo.InvariantCulture); var remainder = model.Amount; if (otherSum > 0) { _db.SettingsValues.FirstOrDefault(sv => sv.Key == "OtherSum").Value = otherSum >= model.Amount ? (otherSum - model.Amount).ToString("#,0", nfi) : (0).ToString("#,0", nfi); } office.Balance -= model.Amount; var expenditure = new LoanExpenditure { Description = model.Name, Amount = model.Amount }; var operation = new LoanExpenditureOperation { LoanExpenditure = expenditure, OperationDateTime = DateTime.Now, OperationTypeId = LoanExpenditureOperation.LEOType.New }; var user = await _userManager.FindByIdAsync(_userManager.GetUserId(User)); using (var transaction = await _db.Database.BeginTransactionAsync()) { _db.LoanExpenditureOperations.Add(operation); _db.SetUserContext(user.Id); await _db.SaveChangesAsync(); transaction.Commit(); } return(RedirectToAction("LoanExpenditures")); }