Beispiel #1
0
        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();
        }
Beispiel #3
0
        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"));
        }