예제 #1
0
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
            var user = _miniStatementFacade.FindUserByEmail(model.Email);

            if (user.Password == model.Password)
            {
                try
                {
                    Session["UID"]   = user.UserId;
                    Session["Email"] = user.Email;
                }
                catch (Exception)
                {
                }
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                ModelState.AddModelError("", "Invalid login attempt.");
            }
            return(View(model));
        }
        /// <summary>
        /// Export user transactions controller
        /// Entry Criteria : userid and accountnumber shouldnt be null.
        /// Responsibility : Exports user transactions to excel
        /// Success Criteria : Fetchs users transactions from DB and exports to excel
        /// Exception condition: Fail when the database call fails for any exception.
        /// @return
        /// @throws SQLException
        /// @throws ClassNotFoundException
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="accountNumber"></param>
        public ActionResult ExportData(int userId, string accountNumber)
        {
            MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();

            try
            {
                DataTable transactions = _miniStatementFacade.FindUserTransactionsForExport(userId, accountNumber);

                using (XLWorkbook wb = new XLWorkbook())
                {
                    wb.Worksheets.Add(transactions);
                    wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                    wb.Style.Font.Bold            = true;

                    Response.Clear();
                    Response.Buffer      = true;
                    Response.Charset     = "";
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("content-disposition", "attachment;filename= EmployeeReport.xlsx");

                    using (MemoryStream MyMemoryStream = new MemoryStream())
                    {
                        wb.SaveAs(MyMemoryStream);
                        MyMemoryStream.WriteTo(Response.OutputStream);
                        Response.Flush();
                        Response.End();
                    }
                }
            }
            catch (Exception)
            {
            }
            return(RedirectToAction("ViewMiniStatement", "MiniStatement"));
        }
        public void WhenHeClicksOnViewMiniStatement()
        {
            MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();

            UserId = _miniStatementFacade.FindUserByEmail("*****@*****.**").UserId;
            var userAccount = _miniStatementFacade.GeUsertAccountsByUserId(UserId).FirstOrDefault();

            AccountId     = userAccount.AccountId;
            AccountNumber = userAccount.AccountNumber;
            AccountName   = userAccount.Account.AccountName;
            MiniStatementController miniStatementcontroller = new MiniStatementController();

            result = miniStatementcontroller.ViewMiniStatement(UserId, AccountId);
        }
예제 #4
0
 public void Login()
 {
     try
     {
         var email    = "*****@*****.**";
         var password = "******";
         MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
         var user = _miniStatementFacade.FindUserByEmail(email);
         Assert.AreEqual(password, user.Password);
     }
     catch (Exception e)
     {
         Assert.IsTrue(false);
     }
 }
예제 #5
0
        public void Accounts()
        {
            try
            {
                var userId = 1;
                var totalAvaialbeBalance = decimal.Zero;
                MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
                var userTransactions = _miniStatementFacade.GetUserTransactionsByUserId(userId);
                totalAvaialbeBalance = _miniStatementFacade.GetCurrentAvailableBalance(userTransactions);

                Assert.AreEqual(35400, totalAvaialbeBalance);
            }
            catch (Exception)
            {
                Assert.IsTrue(false);
            }
        }
예제 #6
0
        public void Transactions()
        {
            try
            {
                var userId = 1;
                MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
                IList <Transaction> userTransactions     = _miniStatementFacade.GetUserTransactionsByUserId(userId);
                var savingActBalance        = GetAccountBalance(userTransactions.Where(x => x.Account.AccountName == "Savings Account").ToList());
                var currentActBalance       = GetAccountBalance(userTransactions.Where(x => x.Account.AccountName == "Current Account").ToList());
                var seniorCitizenActBalance = GetAccountBalance(userTransactions.Where(x => x.Account.AccountName == "Senior Citizen Account").ToList());

                Assert.AreEqual(2200, savingActBalance);
                Assert.AreEqual(22400, currentActBalance);
                Assert.AreEqual(10800, seniorCitizenActBalance);
            }
            catch (Exception)
            {
                Assert.IsTrue(false);
            }
        }
        /// <summary>
        /// User mini statement view controller
        /// Entry Criteria : userid and accountid shouldnt be null.
        /// Responsibility : Display user mini statement
        /// Success Criteria : Fetchs users transactions from DB displays to user
        /// Exception condition: Fail when the database call fails for any exception.
        /// @return
        /// @throws SQLException
        /// @throws ClassNotFoundException
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="accountId"></param>
        /// <returns>UserTransactionsModel</returns>
        public ActionResult ViewMiniStatement(int userId, int accountId)
        {
            MiniStatementFacade   _miniStatementFacade  = new MiniStatementFacade();
            UserTransactionsModel userTransactionsModel = new UserTransactionsModel();

            try
            {
                IList <UserTransactionsData> transactions = _miniStatementFacade.GetUserTransactionsByAccountId(userId, accountId);
                if (transactions.Count > 0)
                {
                    userTransactionsModel.AccountType   = _miniStatementFacade.GetAccountTypeByAccountId(transactions.FirstOrDefault().AccountId);
                    userTransactionsModel.AccountNumber = transactions.FirstOrDefault().AccountNumber;
                }
                userTransactionsModel.UserTransactions = transactions;
                ViewBag.accountBalance = GetAccountBalance(transactions);
            }
            catch (Exception)
            {
            }
            return(View(userTransactionsModel));
        }
예제 #8
0
        public ActionResult Index()
        {
            MiniStatementModel model = new MiniStatementModel();

            if (Session["UID"] != null)
            {
                var userId               = (Int32)Session["UID"];
                var userEmail            = Convert.ToString(Session["Email"]);
                var totalAvaialbeBalance = decimal.Zero;
                MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
                totalAvaialbeBalance = _miniStatementFacade.GetCurrentAvailableBalanceByUserid(userId);

                IList <UserTransactionsData> userTransactions = _miniStatementFacade.GetUserTransactionsByUserId(userId);
                var savingActBalance        = GetAccountBalance(userTransactions.Where(x => x.AccountId == 1).ToList());
                var currentActBalance       = GetAccountBalance(userTransactions.Where(x => x.AccountId == 2).ToList());
                var seniorCitizenActBalance = GetAccountBalance(userTransactions.Where(x => x.AccountId == 3).ToList());
                var user = _miniStatementFacade.FindUserByEmail(userEmail);

                model.UserId = userId;
                model.TotalAvaialbeBalance           = totalAvaialbeBalance;
                model.SavingAccountBalance           = savingActBalance;
                model.CurrentAccountBalance          = currentActBalance;
                model.SeniorCitizenAccountBalance    = seniorCitizenActBalance;
                model.SavingAccountTransactionCount  = userTransactions.Where(x => x.AccountId == 1).Count();
                model.CurrentAccountTransactionCount = userTransactions.Where(x => x.AccountId == 2).Count();
                model.SeniorCitizenTransactionCount  = userTransactions.Where(x => x.AccountId == 3).Count();
                model.HasSavingsAccount          = user.HasSavingsAccount;
                model.HasCurrentAccount          = user.HasCurrentAccount;
                model.HasSeniorCitizenAccount    = user.HasSeniorCitizenAccount;
                model.SavingsAccountNumber       = user.SavingsAccountNumber;
                model.CurrentAccountNumber       = user.CurrentAccountNumber;
                model.SeniorCitizenAccountNumber = user.SeniorCitizenAccountNumber;
            }
            else
            {
                return(RedirectToRoute("Default"));
            }
            return(View(model));
        }
예제 #9
0
        private void PrepareModel(UserTransactionsModel model, int userId, int accountId)
        {
            try
            {
                MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();
                IList <Transaction> transactions         = _miniStatementFacade.GetUserTransactionsByAccountId(userId, accountId);
                var userAccounts = _miniStatementFacade.GeUsertAccountsByUserId(userId);
                var userAccount  = userAccounts.Where(x => x.AccountId == accountId).FirstOrDefault();

                if (transactions.Count > 0)
                {
                    var account = transactions[0].Account;
                    model.AccountType   = account.AccountName;
                    model.AccountNumber = userAccount.AccountNumber;
                }
                model.UserTransactions = transactions;
                model.AccountBalance   = GetAccountBalance(transactions);
                model.UserId           = userId;
                model.AccountId        = accountId;
            }
            catch (Exception)
            {
            }
        }
예제 #10
0
        private void PrepareModel(MiniStatementModel model)
        {
            MiniStatementFacade _miniStatementFacade = new MiniStatementFacade();

            int    accountId;
            string accountNumber;
            var    userId           = (Int32)Session["UID"];
            var    userEmail        = Convert.ToString(Session["Email"]);
            var    userTransactions = _miniStatementFacade.GetUserTransactionsByUserId(userId);
            var    userAccounts     = _miniStatementFacade.GeUsertAccountsByUserId(userId);

            var totalAvaialbeBalance    = _miniStatementFacade.GetCurrentAvailableBalance(userTransactions);
            var savingActBalance        = _miniStatementFacade.GetBalanceByAccount("Savings Account", userTransactions);
            var currentActBalance       = _miniStatementFacade.GetBalanceByAccount("Current Account", userTransactions);
            var seniorCitizenActBalance = _miniStatementFacade.GetBalanceByAccount("Senior Citizen Account", userTransactions);

            model.UserId = userId;
            model.TotalAvaialbeBalance           = totalAvaialbeBalance;
            model.SavingAccountBalance           = savingActBalance;
            model.CurrentAccountBalance          = currentActBalance;
            model.SeniorCitizenAccountBalance    = seniorCitizenActBalance;
            model.SavingAccountTransactionCount  = userTransactions.Where(x => x.Account.AccountName == "Savings Account").Count();
            model.CurrentAccountTransactionCount = userTransactions.Where(x => x.Account.AccountName == "Current Account").Count();
            model.SeniorCitizenTransactionCount  = userTransactions.Where(x => x.Account.AccountName == "Senior Citizen Account").Count();
            model.HasSavingsAccount       = _miniStatementFacade.HasUserHadAccount(userAccounts, "Savings Account");
            model.HasCurrentAccount       = _miniStatementFacade.HasUserHadAccount(userAccounts, "Current Account");
            model.HasSeniorCitizenAccount = _miniStatementFacade.HasUserHadAccount(userAccounts, "Senior Citizen Account");

            _miniStatementFacade.GetUserAccount(userAccounts, "Savings Account", out accountId, out accountNumber);
            model.SavingsAccountId     = accountId;
            model.SavingsAccountNumber = accountNumber;
            accountId     = 0;
            accountNumber = string.Empty;
            _miniStatementFacade.GetUserAccount(userAccounts, "Current Account", out accountId, out accountNumber);
            model.CurrentAccountId     = accountId;
            model.CurrentAccountNumber = accountNumber;
            accountId     = 0;
            accountNumber = string.Empty;
            _miniStatementFacade.GetUserAccount(userAccounts, "Senior Citizen Account", out accountId, out accountNumber);
            model.SeniorCitizenAccountId     = accountId;
            model.SeniorCitizenAccountNumber = accountNumber;

            IList <SelectListItem> countryList = new List <SelectListItem>()
            {
                new SelectListItem()
                {
                    Text = "Indian Rupee", Value = "INR"
                },
                new SelectListItem()
                {
                    Text = "U.S. Dollar", Value = "USD"
                },
                new SelectListItem()
                {
                    Text = "Australian Dollar", Value = "AUD"
                },
                new SelectListItem()
                {
                    Text = "Bahraini Dinar", Value = "BHD"
                },
                new SelectListItem()
                {
                    Text = "Euro", Value = "EUR"
                },
                new SelectListItem()
                {
                    Text = "Nicaragua Cordoba", Value = "NIO"
                },
                new SelectListItem()
                {
                    Text = "Pacific Franc", Value = "XPF"
                },
                new SelectListItem()
                {
                    Text = "Singapore Dollar", Value = "SGD"
                },
                new SelectListItem()
                {
                    Text = "Qatar Rial", Value = "QAR"
                },
                new SelectListItem()
                {
                    Text = "Romanian Leu", Value = "ROL"
                },
            };

            model.CountryList = countryList;
        }