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