public ActionResult CreateDebtItem(DebtItem debtItem) { try { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var budgeteer = _repo.Budgeteers.GetBudgeteerByUserId(userId); var budget = _repo.Budgets.GetBudgetByBudgeteerIdMonthAndYear(budgeteer.BudgeteerId, DateTime.Now.Month, DateTime.Now.Year); var newDebtItem = new DebtItem { DebtItemName = debtItem.DebtItemName, Category = debtItem.Category, TotalDebtAmount = debtItem.TotalDebtAmount, AmountToPayPerMonth = debtItem.AmountToPayPerMonth, DueDate = debtItem.DueDate, BudgeteerId = budgeteer.BudgeteerId }; _repo.DebtItems.Create(newDebtItem); _repo.Save(); budget.MonthlyLimit += newDebtItem.AmountToPayPerMonth; _repo.Budgets.Update(budget); _repo.Save(); _googleCalendarService.AddDebtItemEvent(newDebtItem); return(RedirectToAction(nameof(Index))); } catch { return(View(debtItem)); } }
public void AddDebtItemEvent(DebtItem debtItem) { UserCredential credential; using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } var service = new CalendarService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); EventsResource.ListRequest request = service.Events.List("primary"); request.TimeMin = DateTime.Now; request.ShowDeleted = false; request.SingleEvents = true; request.MaxResults = 10; request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime; var debtItemEvent = new Event(); EventDateTime start = new EventDateTime(); start.DateTime = debtItem.DueDate; EventDateTime end = new EventDateTime(); end.DateTime = debtItem.DueDate.AddMinutes(30); debtItemEvent.Start = start; debtItemEvent.End = end; debtItemEvent.Summary = $"{debtItem.DebtItemName} due date"; debtItemEvent.Description = $"Your {debtItem.DebtItemName} is due!";; var calendarId = "primary"; debtItemEvent = service.Events.Insert(debtItemEvent, calendarId).Execute(); }
public ActionResult PayDebtItem(int debtItemId) { var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var budgeteer = _repo.Budgeteers.GetBudgeteerByUserId(userId); var debtItemFromDb = _repo.DebtItems.GetDebtItem(debtItemId); debtItemFromDb.IsPaid = true; _repo.DebtItems.Update(debtItemFromDb); _repo.Save(); var budget = _repo.Budgets.GetBudgetByBudgeteerIdMonthAndYear(budgeteer.BudgeteerId, DateTime.Now.Month, DateTime.Now.Year); budget.MonthlyDebtItemMoney += debtItemFromDb.AmountToPayPerMonth; budget.MonthlyTotalMoney += debtItemFromDb.AmountToPayPerMonth; _repo.Budgets.Update(budget); _repo.Save(); var wallet = _repo.Wallets.GetWallet(budgeteer.WalletId); wallet.TotalDebtItemMoney += debtItemFromDb.AmountToPayPerMonth; wallet.TotalMoney += debtItemFromDb.AmountToPayPerMonth; _repo.Wallets.Update(wallet); _repo.Save(); var nextMonthDebtItem = new DebtItem { DebtItemName = debtItemFromDb.DebtItemName, Category = debtItemFromDb.Category, AmountToPayPerMonth = debtItemFromDb.AmountToPayPerMonth, TotalDebtAmount = debtItemFromDb.TotalDebtAmount -= debtItemFromDb.AmountToPayPerMonth, DueDate = debtItemFromDb.DueDate.AddMonths(1), BudgeteerId = debtItemFromDb.BudgeteerId }; _repo.DebtItems.Create(nextMonthDebtItem); _repo.Save(); _googleCalendarService.AddDebtItemEvent(nextMonthDebtItem); return(RedirectToAction("Index")); }