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(); }
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); }
public static void Main(string[] args) { using (BPSContext context = new BPSContext()) { //Initialize.Seed(context); //User user = GetUser(context); //GetUserInfo(user); PayBills(5, 1000000, context); Console.WriteLine(); } }
private static User GetUser(BPSContext context) { User user = null; while (true) { Console.WriteLine("Enter UserId:"); int userId = int.Parse(Console.ReadLine()); user = context.Users.Where(x => x.UserId == userId).Include(x => x.PaymentMethods) .ThenInclude(x => x.BankAccount).Include(x => x.PaymentMethods).ThenInclude(x => x.CreditCard) .FirstOrDefault(); if (user == null) { Console.WriteLine($"User with id {userId} not found!"); userId = int.Parse(Console.ReadLine()); continue; } break; } return(user); }