コード例 #1
0
        public void TestBudgetCreateViewModelCancel()
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            using (var sqliteMemoryWrapper = new SqliteMemoryWrapper())
            {
                var currencyFactory   = new CurrencyFactory();
                var usdCurrencyEntity = currencyFactory.Create(CurrencyPrefab.Usd, true);
                currencyFactory.Add(sqliteMemoryWrapper.DbContext, usdCurrencyEntity);

                var budgetService = new BudgetService(
                    loggerFactory,
                    sqliteMemoryWrapper.DbContext);

                var viewModel = new BudgetCreateViewModel(
                    loggerFactory,
                    budgetService,
                    new Mock <IBudgetTransactionListViewModelFactory>().Object
                    );

                viewModel.Name = "My First Budget";
                viewModel.CancelCommand.Execute(this);

                List <Budget> budgets = budgetService.GetAll().ToList();

                Assert.AreEqual(0, budgets.Count);
            }
        }
コード例 #2
0
        public async Task <IActionResult> Create([FromBody] BudgetCreateViewModel input)
        {
            var    user        = User.GetDetails();
            var    data        = _mapper.Map <BudgetCreateViewModel, Budget>(input);
            var    budget      = new Budget(input.Name, input.Description, input.BudgetHeadId, input.BudgetCategoryId, input.DepartmentId, input.CurrencyId, user.Id);
            string referenceId = await _unitOfWork.NumberingSequences.GenerateReferenceId(NumberingSequenceTypeEnum.Budget);

            if (referenceId == null)
            {
                return(BadRequest("ReferenceId not generated"));
            }

            budget.SetBudgetData(input.BudgetType, referenceId, input.DivisionId, input.SubDivisionId, input.PersonInChargeId, input.Justification);
            budget.SetBudgetAmountData(input.StartDate, input.EndDate, input.TransactionDate, input.BasicAmount, input.TaxAmount);
            budget.CalculateTotalAmount();
            budget.AddSpendLimits(data.BudgetSpendLimits.ToList(), user.Id);
            budget.AddCostCodes(data.BudgetCostCodes.ToList(), user.Id);
            budget.SetBaseId(null);
            budget.SetRevisionNumber(0);
            budget.SetActive();
            if (await _unitOfWork.Budgets.AnyAsync(budget))
            {
                return(BadRequest("Budget Already Exists"));
            }

            _unitOfWork.Budgets.Add(budget);
            await _unitOfWork.CompleteAsync(user.Id);

            return(Ok(budget));
        }
コード例 #3
0
        public ActionResult Create([Bind(Include = "InitialAmount,Category")] BudgetCreateViewModel model)
        {
            BudgetCategory category  = new BudgetCategory();
            Household      household = db.Households.Find(Convert.ToInt32(User.Identity.GetHouseholdId()));

            if (ModelState.IsValid && !household.BudgetCategories.Select(bc => bc.Name).Contains(model.Category))
            {
                category.Name        = model.Category;
                category.HouseholdId = Convert.ToInt32(User.Identity.GetHouseholdId());
                db.BudgetCategories.Add(category);
                db.SaveChanges();

                Budget budget = new Budget();
                budget.Amount           = model.InitialAmount;
                budget.HouseholdId      = Convert.ToInt32(User.Identity.GetHouseholdId());
                budget.BudgetCategoryId = category.Id;
                db.Budgets.Add(budget);
                db.SaveChanges();
                return(RedirectToAction("Details", new { id = budget.Id }));
            }

            ViewBag.HouseholdName = household.Name;
            return(View(model));
        }
コード例 #4
0
        public void TestBudgetCreateViewModelOK()
        {
            ILoggerFactory loggerFactory = new LoggerFactory();

            using (var sqliteMemoryWrapper = new SqliteMemoryWrapper())
            {
                var currencyFactory   = new CurrencyFactory();
                var usdCurrencyEntity = currencyFactory.Create(CurrencyPrefab.Usd, true);
                currencyFactory.Add(sqliteMemoryWrapper.DbContext, usdCurrencyEntity);

                var accountFactory = new AccountFactory();
                Entities.Account incomeAccountEntity =
                    accountFactory.Create(AccountPrefab.Income, usdCurrencyEntity);
                Entities.Account checkingAccountEntity =
                    accountFactory.Create(AccountPrefab.Checking, usdCurrencyEntity);
                Entities.Account groceriesPrepaymentAccountEntity =
                    accountFactory.Create(AccountPrefab.GroceriesPrepayment, usdCurrencyEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, incomeAccountEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, checkingAccountEntity);
                accountFactory.Add(sqliteMemoryWrapper.DbContext, groceriesPrepaymentAccountEntity);

                var accountService = new AccountService(
                    loggerFactory,
                    sqliteMemoryWrapper.DbContext);

                var budgetService = new BudgetService(
                    loggerFactory,
                    sqliteMemoryWrapper.DbContext);

                var mockAccountLinkViewModelFactory = new Mock <IAccountLinkViewModelFactory>();
                mockAccountLinkViewModelFactory
                .Setup(f => f.Create(It.IsAny <AccountLink>()))
                .Returns((AccountLink accountLink) =>
                {
                    return(new AccountLinkViewModel(
                               loggerFactory,
                               accountLink));
                });

                var mockBudgetTransactionItemViewModelFactory = new Mock <IBudgetTransactionItemViewModelFactory>();
                mockBudgetTransactionItemViewModelFactory
                .Setup(f => f.Create(
                           It.IsAny <ObservableCollection <IAccountLinkViewModel> >(),
                           It.IsAny <BudgetTransaction>(),
                           It.IsAny <BudgetTransactionType>()))
                .Returns(
                    (ObservableCollection <IAccountLinkViewModel> accountLinks,
                     BudgetTransaction budgetTransaction,
                     BudgetTransactionType type) =>
                {
                    return(new BudgetTransactionItemViewModel(
                               loggerFactory,
                               accountLinks,
                               budgetTransaction,
                               type));
                });

                var mockTransactionListViewModelFactory = new Mock <IBudgetTransactionListViewModelFactory>();
                mockTransactionListViewModelFactory
                .Setup(f => f.Create(It.IsAny <int>()))
                .Returns((int budgetId) =>
                {
                    return(new BudgetTransactionListViewModel(
                               loggerFactory,
                               accountService,
                               budgetService,
                               mockAccountLinkViewModelFactory.Object,
                               mockBudgetTransactionItemViewModelFactory.Object,
                               new Mock <IDeleteConfirmationViewService>().Object,
                               budgetId
                               ));
                });

                var viewModel = new BudgetCreateViewModel(
                    loggerFactory,
                    budgetService,
                    mockTransactionListViewModelFactory.Object
                    );

                viewModel.Name           = "My First Budget";
                viewModel.SelectedPeriod = BudgetPeriod.Monthly;
                viewModel.OKCommand.Execute(this);

                List <Budget> budgets = budgetService.GetAll().ToList();

                Assert.AreEqual(1, budgets.Count);
                Assert.AreEqual(viewModel.Name, budgets[0].Name);
                Assert.AreEqual(viewModel.SelectedPeriod, budgets[0].Period);
                Assert.AreEqual(AccountType.Income, budgets[0].InitialTransaction.CreditAccount.Type);
                Assert.AreEqual(AccountType.Asset, budgets[0].InitialTransaction.DebitAccount.Type);
                Assert.AreEqual(AccountType.Asset, budgets[0].SurplusTransaction.CreditAccount.Type);
                Assert.AreEqual(AccountType.Asset, budgets[0].SurplusTransaction.DebitAccount.Type);
                Assert.AreEqual(0, budgets[0].Transactions.Count());
            }
        }