/// <summary>
        /// 1. etsitään oikea tili, jolle tilitapahtuma kirjataan
        /// 2. tilin saldo (Balance) laitetaan vastaaman oikeaa suoritusta +/- tapahtuma
        /// 3. päivitetään Account:n Balance
        /// 4. Tallennetaan muutokset sekä Transaction että Account tauluihin
        /// </summary>
        /// <param name="transaction"></param>
        /// <returns></returns>
        //public bool AddTransaction(Transaction transaction)
        //{
        //    bool res = false;
        //    using (var context = new BankdbContext())
        //    {
        //        try
        //        {
        //            context.Add(transaction);
        //            var account = GetAccountByIban(transaction.Iban);
        //            decimal balanceBeforeTransaction = account.Balance;
        //            var lastTransaction = GetTransactionsOfAccount(transaction.Iban);
        //            int result = DateTime.Compare(transaction.TimeStamp, lastTransaction.TimeStamp);
        //            if (result>0)
        //            {
        //                account.Balance += transaction.Amount;
        //            }
        //            if (account.Balance - transaction.Amount == balanceBeforeTransaction)
        //            {
        //                res = true;
        //            }

        //            //Update Account-table
        //            context.Account.Update(account);

        //            context.SaveChanges();
        //        }
        //        catch (Exception ex)
        //        {
        //            throw new NotImplementedException($"{ex.Message}\n{ex.InnerException.Message} \n");
        //        }
        //        return res;
        //    }
        //}
        /// <summary>
        /// 1. etsitään oikea tili, jolle tilitapahtuma kirjataan
        /// 2. tilin saldo (Balance) laitetaan vastaaman oikeaa suoritusta +/- tapahtuma
        /// 3. päivitetään Account:n Balance
        /// 4. Tallennetaan muutokset sekä Transaction että Account tauluihin
        /// </summary>
        /// <param name="transaction"></param>
        /// <returns></returns>
        public void AddTransaction(Transaction transaction)
        {
            using (var context = new BankdbContext())
            {
                try
                {
                    //Lisätään tapahtumatauluun rivi
                    context.Add(transaction);

                    //Etsitään tili, jonka tietoja päivitetään
                    var account = GetAccountByIban(transaction.Iban);
                    //Lasketaan tilille uusi saldoa
                    account.Balance += transaction.Amount;

                    //Update Account-table
                    context.Account.Update(account);
                    //Tallennetaan muutokset tietokantaan
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    throw new NotImplementedException($"{ex.Message}\n{ex.InnerException.Message} \n");
                }
            }
        }
示例#2
0
        public static void UpdateCustomerData(string selectedUserId, string FirstName, string LastName)
        {
            int userId;

            int.TryParse(selectedUserId, out userId);

            if (userId > 0)
            {
                try
                {
                    var context         = new BankdbContext();
                    var UpdatedCustomer = context.Customer.Where(c => c.Id == userId).FirstOrDefault();
                    UpdatedCustomer.FirstName = FirstName;
                    UpdatedCustomer.LastName  = LastName;
                    context.Customer.Update(UpdatedCustomer);
                    context.SaveChanges();

                    Console.WriteLine("Customer Data Updated.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
        }
示例#3
0
        public static void ViewTransactionsOfOneCustomer(int customerId)
        {
            try
            {
                BankdbContext context  = new BankdbContext();
                var           customer = context.Customer.Where(c => c.Id == customerId).SingleOrDefault();
                if (customer != null)
                {
                    var accounts = customer.BankAccount.ToList();
                    foreach (BankAccount a in accounts)
                    {
                        Console.WriteLine($"Transactions in account number {a.Iban}:");

                        List <BankAccountTransaction> transactions = context.BankAccountTransaction.ToListAsync().Result;
                        foreach (BankAccountTransaction t in transactions)
                        {
                            Console.WriteLine($"Transaction date: {t.TimeStamp}  Balance: {t.Amount}");
                        }
                        Console.WriteLine($"Current balance: {a.Balance}:");
                    }
                    Console.WriteLine();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#4
0
        public static void AddCustomerBankAccount(string NewIBAN, string NewName, int NewBankId, int NewCustomerId, string NewBalance)
        {
            decimal Balance;

            decimal.TryParse(NewBalance, out Balance);
            if (NewIBAN.Length >= 12 && NewName.Length >= 2 && Balance >= 0 && NewIBAN.Length <= 50 && NewName.Length <= 50)
            {
                try
                {
                    var context        = new BankdbContext();
                    var newBankAccount = new Model.BankAccount
                    {
                        Iban       = NewIBAN,
                        Name       = NewName,
                        BankId     = NewBankId,
                        CustomerId = NewCustomerId,
                        Balance    = Balance
                    };

                    context.BankAccount.Add(newBankAccount);
                    context.SaveChanges();

                    Console.WriteLine("User Bank Account added to database.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
        }
示例#5
0
 //Search for Customer's transactions
 public async void SearchForCustomerTransactions(ListView lvCustomersTransactions, string iban)
 {
     using (var db = new BankdbContext()) {
         var transactions = db.BankAccountTransaction
                            .Where(bat => bat.Iban == iban)
                            .OrderBy(bat => bat.TimeStamp)
                            .ToList();
         if (transactions.Count > 0)
         {
             lvCustomersTransactions.Items.Clear();
             ListViewItem lvi;
             foreach (BankAccountTransaction bat in transactions)
             {
                 lvi = new ListViewItem(string.Format("{0}.{1}.{2}", bat.TimeStamp.Day, bat.TimeStamp.Month,
                                                      bat.TimeStamp.Year));
                 lvi.SubItems.Add(bat.Amount.ToString());
                 lvCustomersTransactions.Items.Add(lvi);
             }
         }
         else
         {
             lvCustomersTransactions.Items.Clear();
         }
     }
 }
示例#6
0
        //List all customers and their information in a single bank
        public static void ViewCustomersInBank(int bankId)
        {
            BankdbContext context = new BankdbContext();
            var           bank    = context.Bank.Where(b => b.Id == bankId).ToListAsync().Result;

            try
            {
                if (bank.Capacity > 0)
                {
                    var customers = bank.Single().Customer;
                    foreach (Customer c in customers)
                    {
                        Console.WriteLine($"Customer ID: {c.Id}  Customer name: {c.FirstName} {c.LastName}  Customer account number: {c.BankAccount}");
                    }
                    if (customers.Count == 0)
                    {
                        Console.WriteLine("No customers in bank {0}.", bankId);
                    }
                    Console.WriteLine();
                }
                else
                {
                    Console.WriteLine("Bank with id {0} does not exist.", bankId);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#7
0
        public static List <int> AddCustomer(string NewFirstName, string NewLastName, string Id)
        {
            int SelectedBankId;

            int.TryParse(Id, out SelectedBankId);
            List <int> UserData = new List <int>();

            if (SelectedBankId > 0 && NewFirstName.Length >= 2 && NewLastName.Length >= 2 && NewFirstName.Length <= 50 && NewLastName.Length <= 50)
            {
                var context     = new BankdbContext();
                var newCustomer = new Model.Customer
                {
                    FirstName = NewFirstName,
                    LastName  = NewLastName,
                    BankId    = SelectedBankId
                };

                context.Customer.Add(newCustomer);
                context.SaveChanges();

                UserData.Add(newCustomer.BankId);
                UserData.Add(newCustomer.Id);

                Console.WriteLine("User Added to database.");

                return(UserData);
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
                return(UserData);
            }
        }
示例#8
0
        /// <summary>
        /// Adds a new transaction for the customer account and update account balance
        /// </summary>
        public static void MakeTransaction(string iban, float amount)
        {
            try
            {
                BankdbContext context = new BankdbContext();

                var account = context.BankAccount.Where(a => a.Iban == iban).SingleOrDefault();
                if (account != null)
                {
                    BankAccountTransaction newTransaction = new BankAccountTransaction
                    {
                        Iban      = iban,
                        Amount    = (decimal)amount,
                        TimeStamp = DateTime.Today
                    };

                    account.Balance += (decimal)amount;

                    context.BankAccount.Update(account);
                    context.BankAccountTransaction.Add(newTransaction);
                    context.SaveChanges();
                    Console.WriteLine($"Transaction of the amount of {amount} done for account {iban}. Current balance is: {account.Balance}");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#9
0
        public static List <string> GetCustomerAccounts(string SelectedCustomer)
        {
            int customerId;

            int.TryParse(SelectedCustomer, out customerId);
            List <string> IbanList = new List <string>();

            if (customerId > 0)
            {
                try
                {
                    var context      = new BankdbContext();
                    var BankAccounts = context.BankAccount.Where(b => b.CustomerId == customerId)
                                       .ToListAsync().Result;

                    int i = 0;
                    foreach (var item in BankAccounts)
                    {
                        i++;
                        Console.WriteLine("{2}. Name: {0}, Balance: {1}", item.Name, item.Balance, i);
                        IbanList.Add(item.Iban);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
            return(IbanList);
        }
示例#10
0
        //Update Customer's Account
        public Tuple <int, string, string> UpdateAccount(int custId, string iban, string accountName, decimal balance)
        {
            using (var db = new BankdbContext()) {
                try  {
                    var bankAccount = db.BankAccount
                                      .Where(ba => (ba.CustomerId == custId) && (ba.Iban == iban))
                                      .FirstOrDefault();

                    bankAccount.Name    = accountName;
                    bankAccount.Balance = balance; // >= 0 accepted
                    db.BankAccount.Update(bankAccount);

                    if (db.SaveChanges() > 0)
                    {
                        return(new Tuple <int, string, string>(1, "Bank account successfully updated!", "Success"));
                    }
                    else
                    {
                        return(new Tuple <int, string, string>(2, "Bank account not successfully updated!", "Failure"));
                    }
                } catch (Exception e) {
                    return(new Tuple <int, string, string>(3, "Error occurred in bank account updating operation!", "Failure"));
                }
            }
        }
示例#11
0
        /// <summary>
        /// Adds a new account for the customer
        /// </summary>
        public static void AddAccount(int customerId, int bankId, string iban, string accountName = null)
        {
            try
            {
                BankdbContext context = new BankdbContext();

                var  customer      = context.Customer.Where(c => c.Id == customerId).SingleOrDefault();
                var  bank          = context.Bank.Where(b => b.Id == bankId).SingleOrDefault();
                bool dublicateIban = context.BankAccount.Where(a => a.Iban == iban).Any();
                if (customer != null && bank != null && !dublicateIban)
                {
                    BankAccount newAccount = new BankAccount
                    {
                        Iban       = iban,
                        Name       = accountName,
                        BankId     = bankId, //Bank id should be derived from iban number
                        CustomerId = customerId,
                        Balance    = 0,
                    };

                    context.BankAccount.Add(newAccount);
                    context.SaveChanges();
                    Console.WriteLine($"Account {iban.Trim()} added for customer {customerId}.");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.InnerException.Message);
            }
        }
示例#12
0
        public static void AddCustomerTransaction(string selectedAccount, List <string> IbanList, string amount)
        {
            int IbanSelector;

            int.TryParse(selectedAccount, out IbanSelector);
            decimal newAmount;

            decimal.TryParse(amount, out newAmount);


            string selectedIban = IbanList[IbanSelector - 1];

            try
            {
                var context        = new BankdbContext();
                var newTransaction = new Model.BankAccountTransaction
                {
                    Iban      = selectedIban,
                    Amount    = newAmount,
                    TimeStamp = DateTime.Now
                };

                context.BankAccountTransaction.Add(newTransaction);
                context.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
示例#13
0
        public static void DeleteBank(string Id)
        {
            int bankId;

            int.TryParse(Id, out bankId);

            if (bankId > 0)
            {
                try
                {
                    var context     = new BankdbContext();
                    var DeletedBank = context.Bank.Where(b => b.Id == bankId).FirstOrDefault();
                    context.Bank.Remove(DeletedBank);
                    context.SaveChanges();

                    Console.WriteLine("Bank Deleted.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
        }
示例#14
0
        public static void DeleteCustomer(string selectedUserId)
        {
            int customerId;

            int.TryParse(selectedUserId, out customerId);

            if (customerId > 0)
            {
                try
                {
                    var context = new BankdbContext();

                    var DeletedUser = context.Customer.Where(c => c.Id == customerId).FirstOrDefault();
                    context.Customer.Remove(DeletedUser);
                    context.SaveChanges();

                    Console.WriteLine("Customer Deleted.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
        }
示例#15
0
        public static void UpdateBank(string Id, string NewName, string NewBic)
        {
            int bankId;

            int.TryParse(Id, out bankId);

            if (bankId > 0 && NewName.Length >= 2 && NewBic.Length >= 5 && NewName.Length <= 50 && NewBic.Length <= 10)
            {
                try
                {
                    var context     = new BankdbContext();
                    var UpdatedBank = context.Bank.Where(b => b.Id == bankId).FirstOrDefault();
                    UpdatedBank.Name = NewName;
                    UpdatedBank.Bic  = NewBic;
                    context.Bank.Update(UpdatedBank);
                    context.SaveChanges();

                    Console.WriteLine("Bank Updated.");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            else
            {
                Console.WriteLine("Invalid Inputs");
            }
        }
示例#16
0
 //Update Bank
 public bool UpdateBank(int id, string txtBankName, string txtBiccode)
 {
     using (var db = new BankdbContext()) {
         var bank = db.Bank.Where(b => b.Id == id).FirstOrDefault();
         bank.Name = txtBankName;
         bank.Bic  = txtBiccode;
         db.Bank.Update(bank);
         return(db.SaveChanges() > 0 ? true : false);
     }
 }
示例#17
0
        public static void GetBanks()
        {
            var context = new BankdbContext();
            var banks   = context.Bank.ToListAsync().Result;

            foreach (var item in banks)
            {
                Console.WriteLine("Id: {0}, Name: {1}, BIC: {2}", item.Id, item.Name, item.Bic);
            }
        }
示例#18
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var context = new BankdbContext();

            /*
             * // Add Bank
             * string name = "XYZ PANKKI";
             * string bic = "XYZHAAB";
             * //UtilitiesBank.AddBank (name, bic);
             */
            //

            /*
             * // Update Bank
             * string cName = "DKanske";
             * string cBic = "DABAFIHX";
             * string uName = "DANSKE2";
             * string uBic = "DADBAYZ";
             * UtilitiesBank.UpdateBank(cName, uName, cBic, uBic);
             */
            //

            /*
             * // Delete Bank
             * string bankName = "HANDELSBANK";
             * string bic = "OKOHIff";
             * UtilitiesBank.DeleteBank(bankName, bic);
             */
            /*
             * // New Customer
             * string firstName = "Niiko";
             * string lastName = "Niili";
             * int bankId = 3;
             * UtilitiesCustomer.AddCustomer(firstName, lastName, bankId);
             */
            // New Account for a Customer "LastName"
            string  lastName   = "Niili";
            string  iban       = "FI0250004640001555 ";
            string  aName      = "Saving Account";
            int     bankId     = 1;
            int     customerId = 4;
            decimal balance    = 15;

            UtilitiesCustomer.AddBankAccount(lastName, iban, aName, bankId, customerId, balance);


            var banks = context.Bank
                        .Where(b => b.Id == 0)
                        .Include(b => b.Customer)
                        .Include(b => b.BankAccount)
                        .FirstOrDefault();

            Console.ReadLine();
        }
示例#19
0
        /// <summary>
        /// Removes all accounts that are linked to the given bank
        /// </summary>
        public static void RemoveAllAccounts(int bankId)
        {
            BankdbContext      context  = new BankdbContext();
            List <BankAccount> accounts = context.BankAccount.Where(a => a.BankId == bankId).ToList();

            foreach (BankAccount a in accounts)
            {
                AccountHandling.RemoveAccount(a.Iban);
            }
            context.SaveChanges();
        }
示例#20
0
        public static int SearchCustomer(string lastName, int bankId)
        {
            //
            var context  = new BankdbContext();
            var customer = context.Customer
                           .Where(c => c.LastName == lastName)
                           .FirstOrDefault();

            //

            return(customer.Id);
        }
示例#21
0
 public List <Bank> GetTransactionsFromBanksCustomersAccounts()
 {
     using (var _context = new BankdbContext())
     {
         List <Bank> banks = _context.Bank
                             .Include(b => b.Customer)
                             .Include(b => b.Account)
                             .Include(b => b.Account).ThenInclude(a => a.Transaction)
                             .ToListAsync().Result;
         return(banks);
     }
 }
示例#22
0
        public static void GetUsers()
        {
            var context   = new BankdbContext();
            var customers = context.Customer
                            .Include(c => c.Bank)
                            .ToListAsync().Result;

            foreach (var item in customers)
            {
                Console.WriteLine("Id: {0}, First Name: {1}, Last Name: {2}, Bank Name: {3}", item.Id, item.FirstName, item.LastName, item.Bank.Name);
            }
        }
示例#23
0
        public static void ViewBanks()
        {
            BankdbContext context = new BankdbContext();

            var banks = context.Bank.ToListAsync().Result;

            foreach (Models.Bank b in banks)
            {
                Console.WriteLine($"Bank ID: {b.Id}  \tBank name: {b.Name.Trim()}  \tBank BIC: {b.Bic}");
            }
            Console.WriteLine();
        }
示例#24
0
 //Create New Bank
 public Tuple <int, string, string> CreateBank(string bank, string bic)
 {
     using (var db = new BankdbContext()) {
         var newBank = new Bank()
         {
             Name = bank, Bic = bic
         };
         db.Bank.Add(newBank);
         db.SaveChanges();
         return(new Tuple <int, string, string>(newBank.Id, newBank.Name, newBank.Bic));
     }
 }
示例#25
0
        /// <summary>
        /// Removes all customers
        /// </summary>
        public static void RemoveAllCustomers(int bankId)
        {
            BankdbContext context = new BankdbContext();

            // Then remove all customers of that bank
            List <Customer> customers = CustomerHandling.GetCustomersInBank(bankId);

            foreach (Customer c in customers)
            {
                CustomerHandling.RemoveCustomer(c.Id);
            }
            context.SaveChanges();
        }
 public Account GetAccountByIban(string iban)
 {
     using (var context = new BankdbContext())
         try
         {
             var account = context.Account.FirstOrDefault(a => a.Iban == iban);
             return(account);
         }
         catch (Exception ex)
         {
             throw new NotImplementedException($"{ex.Message}\n{ex.InnerException.Message}");
         }
 }
示例#27
0
 public Customer GetCustomer(string firstname, string lastname)
 {
     using (var context = new BankdbContext())
         try
         {
             var customer = context.Customer.FirstOrDefault(a => a.FirstName == firstname && a.LastName == lastname);
             return(customer);
         }
         catch (Exception ex)
         {
             throw new NotImplementedException($"{ex.Message}\n{ex.InnerException.Message}");
         }
 }
示例#28
0
        public static void AddCustomer(string firstName, string lastName, int bankId)
        {
            var context     = new BankdbContext();
            var newCustomer = new Customer
            {
                FirstName = firstName,
                LastName  = lastName,
                BankId    = bankId
            };

            context.Customer.Add(newCustomer);
            context.SaveChanges();
            return;
        }
        public void RemoveAccount(Account account)
        {
            using (var context = new BankdbContext())
                try
                {
                    context.Remove(account);

                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    throw new NotImplementedException($"{ex.Message}\n{ex.InnerException.Message}");
                }
        }
示例#30
0
        /// <summary>
        /// Changes customer's information in the database with new values.
        /// 'customerId' declares which customer is going to be changed.
        /// </summary>
        public static void ChangeCustomerInformation(int customerId, string firstName, string lastName, int bankId)
        {
            BankdbContext context        = new BankdbContext();
            Customer      changeCustomer = context.Customer.Where(c => c.Id == customerId).FirstOrDefault();

            if (changeCustomer != null)
            {
                changeCustomer.FirstName = firstName;
                changeCustomer.LastName  = lastName;
                changeCustomer.BankId    = bankId;
                context.Customer.Update(changeCustomer);
                context.SaveChanges();
            }
        }