public void MakePaymentTest() { Guid id = Guid.NewGuid(); IncomeAndExpenditure iAndE = new IncomeAndExpenditure() { HousingStatus = "housing-status", EmploymentStatus = "employment-status" }; BudgetSummary budgetSummary = new BudgetSummary(); BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm(); this._sessionState.Setup(x => x.GetIncomeAndExpenditure(id)).Returns(iAndE); this._budgetCalculatorService.Setup(x => x.GetBudgetSummary( iAndE, id, this._caseflowUserId)).Returns(budgetSummary); this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm); this._gtmService.Setup(x => x.RaiseBudgetCalculatorContinuedToPaymentEvent( budgetSummaryVm, this._caseflowUserId, "employment-status", "housing-status")); RedirectToActionResult result = (RedirectToActionResult)this._controller.MakePayment(id); Assert.AreEqual("Index", result.ActionName); Assert.AreEqual("PaymentOptions", result.ControllerName); Assert.AreEqual(id, result.RouteValues["id"]); }
public void Constructor_ValidModel_ExpectPresentation() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); summary.HousingGroupWidth.Should().Be(summary.Width); summary.TransportationGroupWidth.Should().Be(summary.Width); summary.FoodGroupWidth.Should().Be(summary.Width); summary.PersonalGroupWidth.Should().Be(summary.Width); summary.GivingGroupWidth.Should().Be(summary.Width); summary.DebtGroupWidth.Should().Be(summary.Width); summary.TransportationGroupOffset.Should().Be(summary.HousingGroupWidth); summary.FoodGroupOffset.Should().Be(summary.TransportationGroupOffset + summary.TransportationGroupWidth); summary.PersonalGroupOffset.Should().Be(summary.FoodGroupOffset + summary.FoodGroupWidth); summary.GivingGroupOffset.Should().Be(summary.PersonalGroupOffset + summary.PersonalGroupWidth); summary.DebtGroupOffset.Should().Be(summary.GivingGroupOffset + summary.GivingGroupWidth); summary.BudgetDelta.Should().Be(0m); summary.IsOverBudget.Should().Be(false); summary.IsUnderBudget.Should().Be(false); summary.IsOnBudget.Should().Be(true); }
private BudgetSummary CreateBudgetSummary(MonthlyIncome monthlyIncome, MonthlyOutgoings monthlyExpenses, decimal disosableIncome, IncomeAndExpenditure iAndE, bool anonUser) { var budgetSummary = new BudgetSummary(); budgetSummary.IncomeTotal = monthlyIncome.Total; budgetSummary.Salary = monthlyIncome.Salary; budgetSummary.Benefits = monthlyIncome.Benefits; budgetSummary.Pension = monthlyIncome.Pension; budgetSummary.Other = monthlyIncome.Other; budgetSummary.TotalExpenditure = monthlyExpenses.Total; budgetSummary.HouseholdBills = monthlyExpenses.HouseholdBills; budgetSummary.Expenditure = monthlyExpenses.Expenditures; budgetSummary.DisposableIncome = disosableIncome; budgetSummary.Frequency = "monthly"; budgetSummary.AnonUser = anonUser; if (iAndE != null && (iAndE.RentalArrears > 0 || iAndE.CCJsArrears > 0 || iAndE.ChildMaintenanceArrears > 0 || iAndE.CouncilTaxArrears > 0 || iAndE.CourtFinesArrears > 0 || iAndE.ElectricityArrears > 0 || iAndE.GasArrears > 0 || iAndE.MortgageArrears > 0 || iAndE.OtherUtilitiesArrears > 0 || iAndE.RentArrears > 0 || iAndE.SecuredloansArrears > 0 || iAndE.TvLicenceArrears > 0 || iAndE.WaterArrears > 0)) { budgetSummary.PriorityBillsInArrears = true; } return(budgetSummary); }
public void PropertyChanged_AnyBudgetItemAmountChanged_ExpectABunchOfEvents() { var budget = BudgetBuilder.Build(); var ratios = Substitute.ForPartsOf <BudgetRatio>(budget); var summary = new BudgetSummary(budget, ratios); var viewModel = new BudgetSummaryViewModel(summary); List <string> expectedPropertyNames = new List <string>() { nameof(BudgetSummaryViewModel.HousingGroupWidth), nameof(BudgetSummaryViewModel.TransportationGroupWidth), nameof(BudgetSummaryViewModel.FoodGroupWidth), nameof(BudgetSummaryViewModel.PersonalGroupWidth), nameof(BudgetSummaryViewModel.DebtGroupWidth), nameof(BudgetSummaryViewModel.GivingGroupWidth), nameof(BudgetSummaryViewModel.TransportationGroupOffset), nameof(BudgetSummaryViewModel.FoodGroupOffset), nameof(BudgetSummaryViewModel.PersonalGroupOffset), nameof(BudgetSummaryViewModel.DebtGroupOffset), nameof(BudgetSummaryViewModel.GivingGroupOffset), }; List <string> receivedPropertyNames = new List <string>(); viewModel.PropertyChanged += (o, e) => { receivedPropertyNames.Add(e.PropertyName); }; budget.IncomeGroup.BudgetItems[0].Amount = 100; receivedPropertyNames.Should().Contain(expectedPropertyNames); }
public void Constructor_ValidModel_ExpectPresentation() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); var viewModel = new BudgetSummaryViewModel(summary); viewModel.Width.Should().Be(summary.Width); viewModel.HousingGroupWidth.Should().Be(summary.HousingGroupWidth); viewModel.TransportationGroupWidth.Should().Be(summary.TransportationGroupWidth); viewModel.FoodGroupWidth.Should().Be(summary.FoodGroupWidth); viewModel.PersonalGroupWidth.Should().Be(summary.PersonalGroupWidth); viewModel.GivingGroupWidth.Should().Be(summary.GivingGroupWidth); viewModel.DebtGroupWidth.Should().Be(summary.DebtGroupWidth); viewModel.TransportationGroupOffset.Should().Be(summary.TransportationGroupOffset); viewModel.FoodGroupOffset.Should().Be(summary.FoodGroupOffset); viewModel.PersonalGroupOffset.Should().Be(summary.PersonalGroupOffset); viewModel.GivingGroupOffset.Should().Be(summary.GivingGroupOffset); viewModel.DebtGroupOffset.Should().Be(summary.DebtGroupOffset); viewModel.BudgetDelta.Should().Be(summary.BudgetDelta.ToCurrencyString()); viewModel.IsOverBudget.Should().Be(summary.IsOverBudget); viewModel.IsUnderBudget.Should().Be(summary.IsUnderBudget); viewModel.IsOnBudget.Should().Be(summary.IsOnBudget); }
public void ClearsCategoryBudgets() { // Act. BudgetSummary actual = new BudgetSummary(this.budget); // Assert. Assert.IsNotNull(actual.Category.Budgets, "The list of budgets for the category should not be null."); Assert.AreEqual(0, actual.Category.Budgets.Count(), "The list of budgets for the category should be empty."); }
public TransactionsAdder(API ynabApi, BudgetSummary budget, YNAB.SDK.Model.Account account) { this.ynabApi = ynabApi; this.budget = budget; this.account = account; progress = new StringBuilder(); updateTransactions = new List <UpdateTransaction>(); saveTransactions = new List <SaveTransaction>(); }
public void GetBudgetSummaryByIdIsSuccessful() { Budget budget = budgetService.CreateBudget(budgetRequest); var result = controller.GetBudgetSummaryById(budget.BudgetId); BudgetSummary resultValue = (BudgetSummary)result.Value; Assert.Equal(budget.BudgetId, resultValue.BudgetId); Assert.Equal(budget.Amount, resultValue.Amount); }
public void CalculatesBalance() { // Act. BudgetSummary actual = new BudgetSummary(this.budget); // Assert. decimal expected = this.budget.TransactionItems.Sum(ti => ti.Amount); Assert.AreEqual(expected, actual.Balance, "The value for the balance should be correct."); }
public void HousingGroupWidth_VariousWidthsAndRatios_MatchesExpectResult() { double ratio = 0.5; var budget = BudgetBuilder.Build(); var ratios = Substitute.ForPartsOf <BudgetRatio>(budget); var summary = new BudgetSummary(budget, ratios); ratios.HousingGroupRatio.Returns(ratio); summary.HousingGroupWidth.Should().Be(summary.Width * ratio); }
public void SetsBalanceToZeroWhenNoTransactionItems() { // Arrange. this.budget.TransactionItems = null; // Act. BudgetSummary actual = new BudgetSummary(this.budget); // Assert. Assert.AreEqual(0, actual.Balance, "The value for the balance should be zero."); }
public JsonResult GetBudgetSummary(Budget budget) { var budgetsummary = new BudgetSummary(); budgetsummary.ExpectedIncome = db.Budgets.Find(budget.BudgetID).ExpectedIncome; budgetsummary.Expenditures = db.BudgetCategories.Where(bc => bc.BudgetID == budget.BudgetID).Sum(bc => bc.Amount); budgetsummary.Goals = db.Goals.Where(g => g.BudgetID == budget.BudgetID).Sum(g => g.GoalAmount); budgetsummary.Remaining = budgetsummary.ExpectedIncome - budgetsummary.Expenditures - budgetsummary.Goals; return(Json(budgetsummary)); }
public ActionResult <BudgetSummary> GetBudgetSummary() { string loggedUser = User.FindFirstValue("userId"); if (loggedUser == null) { return(Unauthorized()); } BudgetSummary budget = budgetService.GetBudgetSummary(); return(budget); }
public void CopiesMainProperties() { // Act. BudgetSummary actual = new BudgetSummary(this.budget); // Assert. Assert.AreEqual(this.budget.Id, actual.Id, "The values for ID should match."); Assert.AreEqual(this.budget.Name, actual.Name, "The values for Name should match."); Assert.AreEqual(this.budget.CategoryId, actual.CategoryId, "The values for CategoryId should match."); Assert.AreEqual(this.budget.Category, actual.Category, "The values for Category should match."); Assert.AreEqual(this.budget.UserId, actual.UserId, "The values for UserId should match."); Assert.AreEqual(this.budget.User, actual.User, "The values for User should match."); }
public void HousingGroupWidth_MoreWidthsAndRatios_MatchesExpectResult() { var budget = BudgetBuilder.Build(); var ratios = new BudgetRatio(budget); var summary = new BudgetSummary(budget, ratios); budget.IncomeGroup.BudgetItems[0].Amount = 100; budget.HousingGroup.BudgetItems[0].Amount = 75; budget.FoodGroup.BudgetItems[0].Amount = 25; summary.HousingGroupWidth.Should().Be(summary.Width * 0.75); summary.FoodGroupWidth.Should().Be(summary.Width * 0.25); summary.FoodGroupOffset.Should().Be(summary.HousingGroupWidth); }
public async Task BudgetSummary() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._portalSettings.Features.EnablePartialSave = true; IncomeAndExpenditure iAndE = new IncomeAndExpenditure() { EmploymentStatus = "employment-status", HousingStatus = "housing-status", }; string lowellReference = "123456789"; this._sessionState.Setup(x => x.CheckSessionStatus(id)); this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE); this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))) .Returns(lowellReference); BudgetSummary budgetSummary = new BudgetSummary() { IncomeTotal = 5000 }; BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm() { IncomeTotal = 5000 }; this._budgetCalculatorService.Setup(x => x.GetBudgetSummary( iAndE, Guid.Parse(id), this._caseflowUserId)).Returns(budgetSummary); this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm); this._gtmService.Setup(x => x.RaiseBudgetCalculatorCompletedEvent( budgetSummaryVm, this._caseflowUserId, "employment-status", "housing-status")); this._budgetCalculatorService.Setup(x => x.SaveIncomeAndExpenditure(iAndE, lowellReference)) .Returns(Task.CompletedTask); this._budgetCalculatorService.Setup(x => x.RemovePartialSaved(Guid.Parse(this._caseflowUserId))) .Returns(Task.CompletedTask); this._sessionState.Setup(x => x.IandELaunchedExternally).Returns(true); ViewResult result = (ViewResult)await this._controller.BudgetSummary(); Assert.AreEqual(budgetSummaryVm, result.Model); Assert.IsTrue(budgetSummaryVm.IsSaved); Assert.IsTrue(budgetSummaryVm.ExternallyLaunched); }
public void Width_Set_ExpectSetAndUsedInRatio() { var budget = BudgetBuilder.Build(); var ratios = Substitute.ForPartsOf <BudgetRatio>(budget); var summary = new BudgetSummary(budget, ratios); var viewModel = new BudgetSummaryViewModel(summary); ratios.HousingGroupRatio.Returns(1);//what is the difference of using Configure or not double width = 200; viewModel.Width = width; viewModel.Width.Should().Be(width); viewModel.HousingGroupWidth.Should().Be(width); }
public void Width_Set_ExpectSetAndUsedInRatios() { var budget = BudgetBuilder.Build(); var ratios = Substitute.ForPartsOf <BudgetRatio>(budget); var summary = new BudgetSummary(budget, ratios); ratios.HousingGroupRatio.Returns(1); double width = 200; // TEST: new width summary.Width = width; summary.Width.Should().Be(width); summary.HousingGroupWidth.Should().Be(width); }
public void GetBudgetSummaryTest() { IncomeAndExpenditure iAndE = new IncomeAndExpenditure(); Guid lowellReferenceSurrogateKey = Guid.NewGuid(); string loggedInUserId = Guid.NewGuid().ToString(); MonthlyIncome monthlyIncome = new MonthlyIncome() { Benefits = 100, Other = 200, Pension = 300, Salary = 2400, Total = 3500 }; MonthlyOutgoings monthlyOutgoings = new MonthlyOutgoings() { Expenditures = 1000, HouseholdBills = 2000, Total = 3000 }; decimal disposableIncome = 500; this._calculatorService.Setup(x => x.CalculateMonthlyIncome(iAndE)).Returns(monthlyIncome); this._calculatorService.Setup(x => x.CalculateMonthlyOutgoings(iAndE)).Returns(monthlyOutgoings); this._calculatorService.Setup(x => x.CalculateDisposableIncome(3500, 3000)).Returns(disposableIncome); BudgetSummary expected = new BudgetSummary() { IncomeTotal = 3500, Salary = 2400, Benefits = 100, Pension = 300, Other = 200, TotalExpenditure = 3000, HouseholdBills = 2000, Expenditure = 1000, DisposableIncome = 500, Frequency = "monthly", AnonUser = false, PriorityBillsInArrears = false }; BudgetSummary result = this._budgetCalculatorService.GetBudgetSummary(iAndE, lowellReferenceSurrogateKey, loggedInUserId); Assert.IsTrue(Utilities.DeepCompare(expected, result)); }
public Form1() { InitializeComponent(); // Configure API key authorization: bearer Configuration.ApiKey.Add("Authorization", "YOUR_API_KEY_HERE"); // Setup prefix (e.g. Bearer) for API key Configuration.ApiKeyPrefix.Add("Authorization", "Bearer"); BudgetsApi budgetApi = new BudgetsApi(); var budgets = budgetApi.GetBudgets(); _selectedBudget = budgets.Data.Budgets[0]; this.Text = $"YNAB Statistics - {_selectedBudget.Name}"; }
public void GetBudgetSummaryIsSuccessfulWithNoConsumptions() { dbContext.Database.ExecuteSqlRaw("DELETE FROM consumptions"); Budget budget = budgetService.CreateBudget(budgetRequest); int id = budget.BudgetId; budget = dbContext.Budgets.Where(b => b.BudgetId == id).FirstOrDefault(); Assert.NotNull(budget); budget = budgetService.GetCurrentBudget(); BudgetSummary summary = budgetService.GetBudgetSummary(); Assert.Equal(0, summary.TotalSpent); Assert.Equal(budget.Amount, summary.Amount); }
public ActionResult <BudgetSummary> GetBudgetSummaryById(int budgetId) { string loggedUser = User.FindFirstValue("userId"); if (loggedUser == null) { return(Unauthorized()); } try { BudgetSummary summary = budgetService.GetBudgetSummaryById(budgetId); return(summary); } catch (SkrillaApiException e) { return(NotFound(e.Message)); } }
public void ReturnsBudgetTotalsFromContext() { // Act. List <BudgetSummary> actualList; using (CheckbookContext context = new CheckbookContext(this.dbContextOptions)) { BudgetsRepository repository = new BudgetsRepository(context); actualList = repository.GetTotals(this.userId).ToList(); } // Assert. Assert.AreEqual(this.entities.Count(), actualList.Count(), "The entity count should match."); BudgetSummary expected = new BudgetSummary(this.entities.ElementAt(0)); BudgetSummary actual = actualList.ElementAt(0); string index = "first"; Assert.AreNotEqual(0, actual.Balance, "The current total should not be zero."); Assert.AreEqual(expected.Balance, actual.Balance, $"The current total for the {index} entity should match."); }
public void GetBudgetSummaryIsSuccessful() { Budget budget = budgetService.CreateBudget(budgetRequest); Category category3 = new Category("ExampleCategory3", false, "mockUser", "exampleIcon"); Category category4 = new Category("ExampleCategory4", false, "mockUser", "exampleIcon"); dbContext.Add(category3); dbContext.Add(category4); int id = budget.BudgetId; budget = dbContext.Budgets.Where(b => b.BudgetId == id).FirstOrDefault(); Assert.NotNull(budget); budget = budgetService.GetCurrentBudget(); Consumption consumption_a = new Consumption("ExampleA", 50.5, category, "mockUser", new LocalDate(2020, 03, 21)); Consumption consumption_b = new Consumption("ExampleB", 95.3, category2, "mockUser", new LocalDate(2019, 10, 21)); Consumption consumption_c = new Consumption("ExampleC", 45.6, category, "mockUser", new LocalDate(2016, 05, 21)); Consumption consumption_d = new Consumption("ExampleD", 46.6, category3, "mockUser", new LocalDate(2020, 01, 21)); dbContext.Add(consumption_a); dbContext.Add(consumption_b); dbContext.Add(consumption_c); dbContext.Add(consumption_d); dbContext.SaveChanges(); BudgetSummary summary = budgetService.GetBudgetSummary(); Assert.Equal(192.4, summary.TotalSpent); Assert.Equal(budget.Amount, summary.Amount); Assert.Equal(4, summary.CategoryItems.Count); Assert.Contains(23.5, summary.CategoryItems.Select(c => c.BudgetedAmount)); Assert.Contains(50.5, summary.CategoryItems.Select(c => c.TotalSpent)); Assert.Contains(101.5, summary.CategoryItems.Select(c => c.BudgetedAmount)); Assert.Contains(95.3, summary.CategoryItems.Select(c => c.TotalSpent)); Assert.Contains(46.6, summary.CategoryItems.Select(c => c.TotalSpent)); }
public void PropertyChanged_AnyBudgetItemAmountChanged_ExpectBudgetEvents() { var budget = BudgetBuilder.Build(); var ratios = Substitute.ForPartsOf <BudgetRatio>(budget); var summary = new BudgetSummary(budget, ratios); List <string> expectedPropertyNames = new List <string>() { nameof(BudgetSummary.BudgetDelta), nameof(BudgetSummary.IsOverBudget), nameof(BudgetSummary.IsOnBudget), nameof(BudgetSummary.IsUnderBudget), }; List <string> receivedPropertyNames = new List <string>(); summary.PropertyChanged += (o, e) => { receivedPropertyNames.Add(e.PropertyName); }; budget.IncomeGroup.BudgetItems[0].Amount = 100; receivedPropertyNames.Should().Contain(expectedPropertyNames); }
public async Task SaveTest() { string id = Guid.NewGuid().ToString(); this._controller.RouteData.Values.Add("id", id); this._portalSettings.Features.EnablePartialSave = true; IncomeAndExpenditure iAndE = new IncomeAndExpenditure() { HousingStatus = "housing-status", EmploymentStatus = "employment-status" }; BudgetSummary budgetSummary = new BudgetSummary(); BudgetSummaryVm budgetSummaryVm = new BudgetSummaryVm(); string lowellReference = "123456789"; this._sessionState.Setup(x => x.CheckSessionStatus(id)); this._sessionState.Setup(x => x.GetIncomeAndExpenditure(Guid.Parse(id))).Returns(iAndE); this._sessionState.Setup(x => x.GetLowellReferenceFromSurrogate(Guid.Parse(id))).Returns(lowellReference); this._budgetCalculatorService.Setup(x => x.GetBudgetSummary( iAndE, Guid.Parse(id), this._caseflowUserId)).Returns(budgetSummary); this._mapper.Setup(x => x.Map <BudgetSummary, BudgetSummaryVm>(budgetSummary)).Returns(budgetSummaryVm); this._budgetCalculatorService.Setup(x => x.SaveIncomeAndExpenditure(iAndE, lowellReference)).Returns(Task.CompletedTask); this._budgetCalculatorService.Setup(x => x.RemovePartialSaved(Guid.Parse(this._caseflowUserId))).Returns(Task.CompletedTask); ViewResult result = (ViewResult)await this._controller.Save(); Assert.AreEqual("BudgetSummary", result.ViewName); Assert.AreEqual(budgetSummaryVm, result.Model); Assert.AreEqual(this._caseflowUserId, budgetSummaryVm.LoggedInUserId); Assert.IsTrue(budgetSummaryVm.IsSaved); Assert.AreEqual("housing-status", budgetSummaryVm.HousingStatus); Assert.AreEqual("employment-status", budgetSummaryVm.EmploymentStatus); }
public async Task ParseMessage(string[] splitMessage, string venmoUserId, Action <string, List <IBlock>?> respondAction, MongoDatabase database) { VenmoUser venmoUser = database.GetUser(venmoUserId) !; if (splitMessage.Length == 4 && splitMessage[2].ToLower() == "code") { await CompleteAuth(splitMessage[3], venmoUser, database); Configuration config = helperMethods.CreateConfiguration(venmoUser.YNAB !.Auth !.AccessToken !); BudgetSummary defaultBudget = await GetDefaultBudget(config); database.SaveUser(venmoUser); string accounts = ListAccounts(defaultBudget.Accounts); respondAction.Invoke($"YNAB authentication complete. Please select the account your Venmo transactions import into and set it as your default account using /venmo ynab set account {{number}}\n{accounts}", null); return; } if (venmoUser.YNAB == null || venmoUser.YNAB.Auth == null || string.IsNullOrEmpty(venmoUser.YNAB.Auth.AccessToken)) { respondAction(ynabOAuthHandler.RequestAuthString, null); return; } string?accessToken = await helperMethods.CheckIfYNABAccessTokenIsExpired(venmoUser, database, ynabApi); if (accessToken == null) { respondAction(ynabOAuthHandler.RequestAuthString, null); return; } Configuration configuration = helperMethods.CreateConfiguration(venmoUser.YNAB.Auth !.AccessToken !); if (splitMessage[2].ToLower() == "help") { // help respondAction(YNABHelp.HelpMessage, null); } else if (splitMessage[2].ToLower() == "list") { if (splitMessage[3].ToLower() == "account" || splitMessage[3].ToLower() == "accounts") { // list accounts respondAction(await ListAccounts(configuration), null); } else if (splitMessage[3].ToLower() == "categories") { // list categories respondAction(await ListCategories(configuration), null); } else if (splitMessage[3].ToLower() == "mapping" || splitMessage[3].ToLower() == "mappings") { // list mapping respondAction(ListMappings(venmoUser), null); } } else if (splitMessage[2].ToLower() == "set") { if (splitMessage[3].ToLower() == "account") { // set default account respondAction(await SetDefaultAccount(splitMessage[4], venmoUser, database, configuration), null); } else if (splitMessage[3].ToLower() == "mapping") { // create/update mapping respondAction(await CreateOrUpdateMapping(splitMessage, venmoUser, database, configuration), null); } } else if (splitMessage[2].ToLower() == "delete") { if (splitMessage[3].ToLower() == "mapping") { // delete mapping respondAction(DeleteMapping(splitMessage[4], venmoUser, database), null); } else if (splitMessage[3].ToLower() == "auth") { // delete auth venmoUser.YNAB.Auth = null; database.SaveUser(venmoUser); respondAction("Deleted YNAB authentication information from database. If you want to delete all of your YNAB user information from the database run /venmo ynab delete everything", null); } else if (splitMessage[3].ToLower() == "everything") { // delete everything venmoUser.YNAB = null; database.SaveUser(venmoUser); respondAction("Deleted all of your YNAB information from the database.", null); } } }
public BudgetSummary GetBudgetSummary() { string loggedUser = _httpContextAccessor.HttpContext.User.FindFirstValue("userId"); Budget budget = dbContext.Budgets .Where(b => b.PersonId.Equals(loggedUser)) .Include(b => b.BudgetItems) .AsEnumerable() .OrderByDescending(b => b.EndDate.Year) .ThenByDescending(b => b.EndDate.Month) .ThenByDescending(b => b.EndDate.Day) .FirstOrDefault(); if (budget == null) { return(null); } List <Consumption> consumptionsSet = dbContext.Consumptions .Where(c => c.PersonId.Equals(loggedUser) && budget.StartDate.CompareTo(c.Date) <= 0 && budget.EndDate.CompareTo(c.Date) >= 0). Include(c => c.Category).ToList(); List <BudgetItem> budgetItems = budget.BudgetItems.ToList(); List <Category> categories = dbContext.Categories .Where(c => c.PersonId.Equals(loggedUser)) .ToList(); List <BudgetCategorySummaryItem> summaryItems = new List <BudgetCategorySummaryItem>(); categories.ForEach(category => { BudgetCategorySummaryItem item = consumptionsSet .Where(c => c.Category.Equals(category)) .AsEnumerable() .GroupBy(c => c.Category) .Select(g => { var budgetItem = budgetItems.Where(b => b.Category.Equals(g.Key)).FirstOrDefault(); double budgetAmount = (budgetItem == null) ? -1 : budgetItem.BudgetedAmount; return(new BudgetCategorySummaryItem(g.Key, budgetAmount, g.Sum(c => c.Amount))); }).FirstOrDefault(); if (item != null) { summaryItems.Add(item); } else { summaryItems.Add(new BudgetCategorySummaryItem(category, -1, 0)); } }); var totalRes = consumptionsSet .GroupBy(c => c.PersonId) .Select(g => new { total = g.Sum(c => c.Amount) }) .FirstOrDefault(); double totalSpent = (totalRes == null) ? 0 : totalRes.total; totalSpent = Math.Round(totalSpent, 2); summaryItems = summaryItems.OrderByDescending(i => i.TotalSpent).ToList(); BudgetSummary summary = new BudgetSummary(budget.Amount, (double)totalSpent, summaryItems, budget.BudgetId); return(summary); }
public static int EditBudgetInfo(BudgetSummary budgetSummary, XBase.Common.UserInfoUtil userinfo) { return(ProjectBudgetDBHelper.EditBudgetInfo(budgetSummary, userinfo)); }
private static void OutputSummary(BudgetSummary summary) { Console.WriteLine(summary.ToString()); }