示例#1
0
        public async Task <IViewComponentResult> InvokeAsync(TransactionCategory.TransactionCategoryType type)
        {
            var viewModel = controllerTransactions.GetTransactionsCreateViewModel(User.Identity.Name);

            viewModel.TransactionCategoryType = type;

            // 根據交易類型取得主交易類別
            var MainQuary = from mainTran in db.MainTransactionCategory
                            where mainTran.TransactionType == type
                            select mainTran;
            var MainSelectList = new SelectList(MainQuary, "ID", "Name");

            viewModel.MainTransactionCategoryCollection = MainSelectList;
            // 子交易類別
            int MainTransID;

            try
            {
                int.TryParse(viewModel.MainTransactionCategoryCollection.FirstOrDefault().Value, out MainTransID);
            }
            catch (System.Exception)
            {
                MainTransID = 0;
            }

            viewModel.SubTransactionCategoryCollection = controllerTransactions.GetSubTransactionCategory(MainTransID);

            // 轉帳交易使用 CreateTransfer ViewComponent
            if (type == TransactionCategory.TransactionCategoryType.Transfer)
            {
                return(View("CreateTransfer", viewModel));
            }
            // 收入支出使用Default TransactionCreate ViewComponent
            return(View(viewModel));
        }
示例#2
0
        // 更新交易時使用, 會修改後的交易金額調整帳戶餘額 (目前默認不可修改交易類型)
        public void UpdateTransaction(ApplicationDbContext context)
        {
            TransactionCategory.TransactionCategoryType transType = GetTransactionCategoryType(context);

            var accounts = context.FinancialAccount;
            var account  = accounts.Single(ac => ac.ID == this.FinancialAccountID);

            var oldTransactionAmount = context.Transaction.AsNoTracking().Single(t => t.ID == ID).Amount;

            if (transType == TransactionCategory.TransactionCategoryType.Expense)
            {
                account.Amount += oldTransactionAmount;
                account.Amount -= Amount;
            }
            else if (transType == TransactionCategory.TransactionCategoryType.Income)
            {
                account.Amount -= oldTransactionAmount;
                account.Amount += Amount;
            }
            else if (transType == TransactionCategory.TransactionCategoryType.Transfer)
            {
                var targetAccount = accounts.Single(ac => ac.ID == this.TargetFinancialAccountID);

                account.Amount += oldTransactionAmount;
                account.Amount -= Amount;

                targetAccount.Amount -= oldTransactionAmount;
                targetAccount.Amount += Amount;
            }
        }