Beispiel #1
0
        public Subscription GetBasicSubscription(IdentityUserExtended user)
        {
            var s = new Subscription
            {
                Id          = "MAIN",
                CreatedAt   = DateTime.Now,
                UpdatedAt   = DateTime.Now,
                CreatedBy   = user.Id,
                OwnedBy     = user.Id,
                CreatorName = user.UserName,
                Deleted     = false,
                UserId      = user.Id,
                Status      = SubscriptionStatus.Active,
                Products    = new List <SubscriptionProduct>
                {
                    new SubscriptionProduct
                    {
                        Id             = "MAIN",
                        CreatedAt      = DateTime.Now,
                        Deleted        = false,
                        ProductName    = "Basic",
                        SubscriptionId = "MAIN",
                        UpdatedAt      = DateTime.Now
                    }
                }
            };

            return(s);
        }
        public async Task <IActionResult> Journal()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(View(null));
            }
            IdentityUserExtended currentUser = await userManager.GetUserAsync(User);

            JournalViewModel journal = transactionUtils.RetrieveAllTransactionsByUser(currentUser.UserInfoID);

            return(View(journal));
        }
Beispiel #3
0
        public async Task <IActionResult> BalanceSheet()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(View(null));
            }
            IdentityUserExtended user = await userManager.GetUserAsync(User);

            BalanceSheetViewModel model = statementUtils.GenerateBalanceSheet(user.UserInfoID);

            return(View(model));
        }
        public async Task <IActionResult> GeneralLedger()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(View(null));
            }
            IdentityUserExtended currentUser = await userManager.GetUserAsync(User);

            GeneralLedgerViewModel accounts = new GeneralLedgerViewModel()
            {
                AllAccounts = transactionUtils.Post(currentUser.UserInfoID)
            };

            return(View(accounts));
        }
        public async Task <IActionResult> Register(RegisterViewModel registerInput)
        {
            if (!ModelState.IsValid)
            {
                return(View(registerInput));
            }
            DateTime currentDateTime = DateTime.Now;
            UserInfo newUserInfo     = new UserInfo
            {
                AccountCreation          = currentDateTime,
                LastActivity             = currentDateTime,
                TotalCurrentTransactions = 0,
                TotalStatements          = 0
            };

            dbContext.UserInfos.Add(newUserInfo);
            dbContext.SaveChanges();
            // EF Core follows the insert and can now retrieve the auto-generated primary key id
            int newUserID = newUserInfo.UserID;
            IdentityUserExtended newUser = new IdentityUserExtended
            {
                UserName   = registerInput.Username,
                Email      = registerInput.Email,
                UserInfoID = newUserID
            };
            // This overload of CreateAsync will automatically hash the password argument
            var result = await userManager.CreateAsync(newUser, registerInput.Password);

            if (result.Succeeded)
            {
                await signInManager.SignInAsync(newUser, isPersistent : false);

                return(RedirectToAction("Index", "Home"));
            }
            // If CreateAsync failed, document errors before returning to register page
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }
            return(View(registerInput));
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new IdentityUserExtended {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        public async Task <IActionResult> RecordTransaction(TransactionViewModel journal)
        {
            if (!ModelState.IsValid)
            {
                return(View(journal));
            }
            IdentityUserExtended currentUser = null;

            if (User.Identity.IsAuthenticated)
            {
                currentUser = await userManager.GetUserAsync(User);
            }
            switch (journal.Action)
            {
            case JournalAction.AddHeader:
                return(View(journal));

            case JournalAction.EditHeader:
                return(View(journal));

            case JournalAction.AddItem:
                #region [ Add Item ]
                // Check that journalLineitem exists and that debit/credit amounts do not both contian values and do not both contain nothing
                if (journal.JournalLineItem != null &&
                    !(journal.JournalLineItem.DebitAmount != null && journal.JournalLineItem.CreditAmount != null) &&
                    !(journal.JournalLineItem.DebitAmount == null && journal.JournalLineItem.CreditAmount == null) &&
                    journal.JournalLineItem.AccountName != null)
                {
                    journal.PreviousEntries.Add(journal.JournalLineItem);
                }
                return(View(journal));

                #endregion [ Add Item ]
            case JournalAction.EditItem:
                #region [ Edit Item ]
            {
                // Should not occur unless tampered with on client side
                // (could make this more robust in future by adding arbitrary amount to i on front-end before passing)
                int index = -1;
                for (int i = 0; i < journal.PreviousEntries.Count; ++i)
                {
                    if (journal.PreviousEntries[i].ActionItemIndex == 111)
                    {
                        index = i;
                    }
                }
                if (index == -1)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                return(View(journal));
            }

                #endregion [ Edit Item ]
            case JournalAction.CompleteEdit:
                return(View(journal));

            case JournalAction.DeleteItem:
                #region [ Delete item ]
            {
                int index = -1;
                for (int i = 0; i < journal.PreviousEntries.Count; ++i)
                {
                    if (journal.PreviousEntries[i].ActionItemIndex == 111)
                    {
                        index = i;
                    }
                }
                if (index == -1)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                journal.PreviousEntries.RemoveAt(index);
                return(View(journal));
            }

                #endregion [ Delete item ]
            case JournalAction.CommitTransaction:
                #region [ Commit Transaction ]
                journal.UserID = (currentUser != null) ? currentUser.UserInfoID : 0;
                int transactionID = transactionUtils.CommitTransaction(journal);
                if (transactionID != -1)
                {
                    userInfoUtils.IncrementTotalTransactions(currentUser.UserInfoID);
                    return(RedirectToAction("TransactionCommitted", new { tranID = transactionID }));
                }
                return(RedirectToAction("Index", "Home"));

                #endregion [ Commit Transaction ]
            case JournalAction.EditTransaction:
                return(View(journal));

            default:
                return(RedirectToAction("Index", "Home"));
            }
        }