Exemplo n.º 1
0
        public static void Seed(BPSContext dbContext)
        {
            var user           = new User("John", "Smith", "*****@*****.**", "somePassword");
            var cards          = SeedCreditCards();
            var bankAccount    = new BankAccount(1000m, "CoolBank", "SWPP252P");
            var paymentMethods = new PaymentMethod[]
            {
                new PaymentMethod(user, cards[0], PaymentType.CreditCard),

                //======= test index ========//
                //new PaymentMethod(user,cards[0],PaymentType.CreditCard),

                new PaymentMethod(user, cards[1], PaymentType.CreditCard),

                new PaymentMethod(user, bankAccount, PaymentType.BankAccount),

                //======test check constraint======//
                //new PaymentMethod(user,bankAccount,cards[1],PaymentType.BankAccount)
            };

            dbContext.Users.Add(user);
            dbContext.CreditCards.AddRange(cards);
            dbContext.BankAccounts.Add(bankAccount);
            dbContext.PaymentMethods.AddRange(paymentMethods);

            dbContext.SaveChanges();
        }
Exemplo n.º 2
0
        private static void PayBills(int userId, decimal amount, BPSContext context)
        {
            var accountsMethods = context
                                  .PaymentMethods
                                  .Include(pm => pm.BankAccount)
                                  .Where(pm => pm.UserId == userId && pm.Type == PaymentType.BankAccount)
                                  .OrderBy(pm => pm.BankAccountId)
                                  .ToArray();

            var cardsMethods = context
                               .PaymentMethods
                               .Include(pm => pm.CreditCard)
                               .Where(pm => pm.UserId == userId && pm.Type == PaymentType.CreditCard)
                               .OrderBy(pm => pm.CreditCardId)
                               .ToArray();

            var totalMoney = accountsMethods.Sum(pm => pm.BankAccount.Balance) +
                             cardsMethods.Sum(c => c.CreditCard.LimitLeft);

            if (totalMoney >= amount)
            {
                Withdraw(amount, accountsMethods);
                Withdraw(amount, cardsMethods);

                context.SaveChanges();
                return;
            }

            Console.WriteLine(ErrorMessages.NotEnoughMoney);
        }