示例#1
0
        private static void Login(ATM_Context db)
        {
            var userName   = Read("Username? ");
            var passChoice = Read("Password?");
            var userList   = db.Users.Where(u => u.UserName == userName).ToList();

            if (!userList.Any())
            {
                Console.WriteLine("Login Unsuccessful Please Try Again");
            }
            else
            {
                var userInstance = db.Users.Where(u => u.UserName == userName).First();
                activeUser = userInstance;
            }

            if (activeUser.Password == passChoice)
            {
                Console.WriteLine("Successful Login");
                loggedIn = true;
            }
            else
            {
                Console.WriteLine("Login Unsuccessful Please Try Again");
            }
        }
示例#2
0
        private static void CreateNewUser(ATM_Context db)
        {
            var userName = Read("UserName?-");
            var passWord = Read("Password?-");

            var userNameCheckList = db.Users.Where(u => u.UserName == userName).ToList();

            if (!userNameCheckList.Any())
            {
                Console.WriteLine("Press Enter to initialize User");
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("This Username is unavailable, please choose another Username.");
                CreateNewUser(db);
            }

            var newUser = new User()
            {
                UserName = userName,
                Password = passWord
            };

            activeUser = newUser;
            db.Users.Add(newUser);
            db.SaveChanges();
        }
示例#3
0
        private static void WithdrawWithODP(ATM_Context db)
        {
            bool withdrawing = true;

            while (withdrawing == true)
            {
                double adjValue = double.Parse(Read("How Much would you like to Withdraw?> "));
                if (activeAcct.CurrentBalance - adjValue < 0)
                {
                    activeAcct.CurrentBalance = activeAcct.CurrentBalance - adjValue - 15;
                    logBalance = activeAcct.CurrentBalance - adjValue;
                    adjustment = "withdrawl (-)";
                    Console.WriteLine($"Withdrawing ${adjValue}");
                    Console.WriteLine("Your account has insufficient funds to cover this withdrawl; a" +
                                      " $15.00 fee has been charged to your account.");
                    Console.WriteLine($"Your Balance is now ${activeAcct.CurrentBalance}");
                    DateTime time       = DateTime.Now;
                    var      newATM_Log = new ATM_Log()
                    {
                        ActiveAcct = activeAcct,
                        Time       = time,
                        Adjustment = adjustment,
                        AdjValue   = adjValue,
                        LogBalance = logBalance
                    };

                    db.ATM_Logs.Add(newATM_Log);
                    db.SaveChanges();
                    withdrawing = false;
                }
                else
                {
                    activeAcct.CurrentBalance = activeAcct.CurrentBalance - adjValue;
                    logBalance = activeAcct.CurrentBalance - adjValue;
                    adjustment = "withdrawl (-)";
                    Console.WriteLine($"Withdrawing ${adjValue}");
                    DateTime time       = DateTime.Now;
                    var      newATM_Log = new ATM_Log()
                    {
                        ActiveAcct = activeAcct,
                        Time       = time,
                        Adjustment = adjustment,
                        AdjValue   = adjValue,
                        LogBalance = logBalance
                    };

                    db.ATM_Logs.Add(newATM_Log);
                    db.SaveChanges();
                    withdrawing = false;
                }
            }
        }
示例#4
0
        private static void InitializeAcct(ATM_Context db)
        {
            CreateNewUser(db);

            Console.WriteLine();
            var user    = db.Users.Where(u => u.UserName == activeUser.UserName).First();
            var newAcct = new Acct()
            {
                AcctUser       = user,
                AcctName       = user.UserName,
                CurrentBalance = 0
            };

            db.Accounts.Add(newAcct);
            db.SaveChanges();
            Console.WriteLine($"Your Account has been intialized with the Username: [{user.UserName}]" +
                              $" , with the Password [{user.Password}]");
            Console.WriteLine("Please login to this Acct to deposit an initial balalnce");
        }
示例#5
0
        private static void Deposit(ATM_Context db)
        {
            double deposit = double.Parse(Read("How much would you like to Deposit >"));

            adjustment = "deposit (+)";
            Console.WriteLine($"Depositing ${deposit}");
            activeAcct.CurrentBalance = activeAcct.CurrentBalance + deposit;
            adjValue   = deposit;
            logBalance = activeAcct.CurrentBalance + deposit;
            DateTime time       = DateTime.Now;
            var      newATM_Log = new ATM_Log()
            {
                ActiveAcct = activeAcct,
                Time       = time,
                Adjustment = adjustment,
                AdjValue   = adjValue,
                LogBalance = logBalance
            };

            db.ATM_Logs.Add(newATM_Log);
            db.SaveChanges();
        }
示例#6
0
        static void Main(string[] args)
        {
            using (var db = new ATM_Context())
            {
                var userInstance = new User();
                while (loggedIn == false)
                {
                    Console.WriteLine("1) Login");
                    Console.WriteLine("2) Create New User");
                    string choiceString = Read("> ");
                    int    choiceTry;
                    int.TryParse(choiceString, out choiceTry);
                    if (choiceTry > 0)
                    {
                        int choice = int.Parse(choiceString);

                        switch (choice)
                        {
                        case 1:
                            Login(db);
                            break;

                        case 2:
                            InitializeAcct(db);
                            break;

                        default:
                            break;
                        }
                    }
                }
                activeAcct = db.Accounts.Where(n => n.AcctName == activeUser.UserName).First();

                var time = DateTime.Now;
                while (loggedIn == true)

                {
                    Console.WriteLine("1) Make Withdrawl");
                    Console.WriteLine("2) Deposit Funds");
                    Console.WriteLine("3) Print Balance");
                    Console.WriteLine("4) Transfer Funds");
                    Console.WriteLine("5) Logout");
                    int choice = int.Parse(Read("> "));

                    switch (choice)
                    {
                    case 1:
                        WithdrawWithODP(db);
                        break;

                    case 2:
                        Deposit(db);
                        break;

                    case 3:
                        PrintBalance(db);
                        break;

                    case 4:
                        Transfer(db);
                        break;

                    case 5:
                        Logout(db);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
示例#7
0
        private static void Withdraw(ATM_Context db)
        {
            bool withdrawing = true;

            while (withdrawing == true)
            {
                double adjValue = double.Parse(Read("How Much would you like to Withdraw?> "));
                if (activeAcct.CurrentBalance - adjValue < 0)
                {
                    Console.WriteLine("There are insufficient funds for this withdrawl");
                    Console.WriteLine("1) Main Menu");
                    Console.WriteLine("2) Get Balance");
                    Console.WriteLine("3) Withdraw a lesser amount");
                    Console.WriteLine("4) Logout");
                    int choice = int.Parse(Read("> "));

                    switch (choice)
                    {
                    case 1:
                        withdrawing = false;
                        break;

                    case 2:
                        PrintBalance(db);
                        break;

                    case 3:
                        Withdraw(db);
                        break;

                    case 4:
                        Logout(db);
                        break;

                    default:
                        break;
                    }
                }

                else
                {
                    activeAcct.CurrentBalance = activeAcct.CurrentBalance - adjValue;
                    logBalance = activeAcct.CurrentBalance - adjValue;
                    adjustment = "withdrawl (-)";
                    Console.WriteLine($"Withdrawing ${adjValue}");
                    DateTime time       = DateTime.Now;
                    var      newATM_Log = new ATM_Log()
                    {
                        ActiveAcct = activeAcct,
                        Time       = time,
                        Adjustment = adjustment,
                        AdjValue   = adjValue,
                        LogBalance = logBalance
                    };

                    db.ATM_Logs.Add(newATM_Log);
                    db.SaveChanges();
                    withdrawing = false;
                }
            }
        }
示例#8
0
 private static void PrintBalance(ATM_Context db)
 {
     Console.WriteLine(activeAcct.CurrentBalance);
 }
示例#9
0
 private static void Logout(ATM_Context db)
 {
     loggedIn = false;
 }
示例#10
0
        private static void Transfer(ATM_Context db)
        {
            bool transfering = new bool();

            transfering = true;
            while (transfering == true)
            {
                foreach (var Acct in db.Accounts)
                {
                    Console.WriteLine(Acct.AcctName);
                }
                var  acctNameString = Read("To which acct would you like to transfer the funds?");
                Acct recipientAcct  = db.Accounts.Where(a => a.AcctName == acctNameString).First();
                var  adjValue       = double.Parse(Read("How much would you like to transfer?"));

                if (activeAcct.CurrentBalance - adjValue > 0)
                {
                    Console.WriteLine($"Confirm transfer of ${adjValue} from {activeAcct.AcctName}" +
                                      $" to { recipientAcct.AcctName} (Y/N)");
                    string confirmChoice = Read("> ");
                    if (confirmChoice.ToLower() == "y")
                    {
                        DateTime time = DateTime.Now;
                        recipientAcct.CurrentBalance = recipientAcct.CurrentBalance + adjValue;
                        activeAcct.CurrentBalance    = activeAcct.CurrentBalance - adjValue;
                        logBalance = activeAcct.CurrentBalance;
                        adjustment = "transfer";
                        Console.WriteLine("Transfer Complete");
                        var newATM_Log = new ATM_Log()
                        {
                            ActiveAcct    = activeAcct,
                            Time          = time,
                            Adjustment    = adjustment,
                            AdjValue      = adjValue,
                            RecipientAcct = recipientAcct,
                            LogBalance    = logBalance
                        };

                        db.ATM_Logs.Add(newATM_Log);
                        db.SaveChanges();
                        transfering = false;
                    }
                    else
                    {
                        transfering = false;
                    }
                }
                else
                {
                    Console.WriteLine("There are insufficient funds available for this transfer");
                    Console.WriteLine("1)Print Balance");
                    Console.WriteLine("2)Transfer a lesser amount");
                    Console.WriteLine("3)Main Menu");

                    int choice = int.Parse(Read("> "));
                    switch (choice)
                    {
                    case 1:
                        PrintBalance(db);
                        break;

                    case 2:
                        Transfer(db);
                        break;

                    case 3:
                        transfering = false;
                        break;

                    default:
                        break;
                    }
                }
            }
        }