コード例 #1
0
        public void IncrementTotalTransactions(int UserID)
        {
            string retrieveUser = $"SELECT * FROM [dbo].[UserInfos] WHERE UserID = {UserID}";
            var    user         = dbConnection.QueryFirstOrDefault <UserInfo>(retrieveUser);

            if (user != null)
            {
                user.TotalCurrentTransactions++;
            }
            dbContext.UserInfos.Update(user);
            dbContext.SaveChanges();
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        public int CommitTransaction(TransactionViewModel transaction)
        {
            if (transaction.EditMode)
            {
                // Delete transaction in db because deemed easier to delete and recreate instead of update
                DeleteTransaction(transaction.JournalHeader.TransactionID);
            }

            // Check that user is not at transaction cap
            if (userInfoUtils.UserAtMaxTransactions(transaction.UserID))
            {
                return(-1);
            }

            int     tranID = -1;
            decimal?total  = 0;

            foreach (JournalLineItemViewModel lineItem in transaction.PreviousEntries)
            {
                total += (lineItem.DebitAmount != null) ? lineItem.DebitAmount : 0;
            }

            JournalTransaction transactionEntry = new JournalTransaction()
            {
                Memo             = transaction.JournalHeader.Memo,
                RecordedDateTime = DateTime.Now.ToString(),
                TotalAmount      = (decimal)total,
                UserID           = transaction.UserID
            };

            try
            {
                dbContext.JournalTransactions.Add(transactionEntry);
                dbContext.SaveChanges();
            }
            catch
            {
                return(-1);
            }
            tranID = transactionEntry.TransactionId;
            foreach (JournalLineItemViewModel lineItem in transaction.PreviousEntries)
            {
                JournalEntry entry = new JournalEntry()
                {
                    AccountName         = lineItem.AccountName,
                    DebitBalance        = AccountsInfo.DebitAccounts.Contains(lineItem.AccountName),
                    DebitAmount         = lineItem.DebitAmount,
                    CreditAmount        = lineItem.CreditAmount,
                    ParentTransactionId = transactionEntry.TransactionId
                };
                try
                {
                    dbContext.JournalEntries.Add(entry);
                }
                catch
                {
                    return(-1);
                }
            }
            try
            {
                dbContext.SaveChanges();
            }
            catch
            {
                return(-1);
            }
            return(tranID);
        }