Exemplo n.º 1
0
        public async Task <ActionResult> CancelCredit(int id)
        {
            var credit = await _db.TransitAccountCredits
                         .Include(c => c.LoanGroup).Include(c => c.Account)
                         .FirstOrDefaultAsync(c => c.TransitAccountCreditId == id);

            if (credit == null)
            {
                return(PartialView("Error", new[] { "Операция не найдена" }));
            }

            credit.Account.Balance   += credit.AccountAmount;
            credit.LoanGroup.Balance -= credit.AccountAmount + credit.AddAmount;

            var operation = new TransitAccountCreditOperation
            {
                TransitAccountCredit = credit,
                OperationDateTime    = DateTime.Now,
                OperationTypeId      = TransitAccountCreditOperation.TACOType.Cancelled
            };

            var user = await _userManager.FindByIdAsync(_userManager.GetUserId(User));

            using (var transaction = await _db.Database.BeginTransactionAsync())
            {
                _db.TransitAccountCreditOperations.Add(operation);
                _db.SetUserContext(user.Id);
                await _db.SaveChangesAsync();

                transaction.Commit();
            }

            return(RedirectToAction("Index"));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> CreateCredit(CreateCreditViewModel model)
        {
            var user = await _userManager.FindByIdAsync(_userManager.GetUserId(User));

            var account = _db.TransitAccounts.FirstOrDefault();

            if (account == null)
            {
                return(RedirectToAction("Index"));
            }

            var loanGroup = _db.LoanGroups.FirstOrDefault(g => g.LoanGroupId == model.Credit.LoanGroupId);

            account.Balance -= model.Credit.AccountAmount;
            if (!model.IsEditBalance)
            {
                if (loanGroup == null)
                {
                    user.Balance += model.Credit.AccountAmount;
                }
                else
                {
                    loanGroup.Balance += model.Credit.AccountAmount + model.Credit.AddAmount;
                }
            }

            model.Credit.LoanGroup = loanGroup;
            model.Credit.Account   = account;

            var operation = new TransitAccountCreditOperation
            {
                TransitAccountCredit = model.Credit,
                OperationDateTime    = DateTime.Now,
                OperationTypeId      = TransitAccountCreditOperation.TACOType.New
            };

            using (var transaction = await _db.Database.BeginTransactionAsync())
            {
                _db.SetUserContext(user.Id);
                _db.TransitAccountCreditOperations.Add(operation);
                await _db.SaveChangesAsync();

                transaction.Commit();
            }

            return(RedirectToAction("Index"));
        }