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)); }
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")); } }