protected override void Seed(ApplicationDbContext context) { #region Household context.Households.AddOrUpdate( h => h.Name, new Household { Name = "Seeded House", Greeting = "Welcome to the Seeded house!" } ); #endregion #region Roles var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); if (!context.Roles.Any(r => r.Name == "Admin")) { roleManager.Create(new IdentityRole { Name = "Admin" }); } if (!context.Roles.Any(r => r.Name == "HOH")) { roleManager.Create(new IdentityRole { Name = "HOH" }); } if (!context.Roles.Any(r => r.Name == "Member")) { roleManager.Create(new IdentityRole { Name = "Member" }); } if (!context.Roles.Any(r => r.Name == "Guest")) { roleManager.Create(new IdentityRole { Name = "Guest" }); } #endregion #region Users UserManager <ApplicationUser> userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); if (!context.Users.Any(u => u.Email == "*****@*****.**")) { userManager.Create(new ApplicationUser { UserName = "******", Email = "*****@*****.**", FirstName = "Gregorio", LastName = "Zambrana", Avatar = WebConfigurationManager.AppSettings["DefaultAvatar"] }, WebConfigurationManager.AppSettings["DefaultPassword"]); } var userAdmin = userManager.FindByEmail("*****@*****.**").Id; userManager.AddToRole(userAdmin, "Admin"); if (!context.Users.Any(u => u.Email == "*****@*****.**")) { userManager.Create(new ApplicationUser { UserName = "******", Email = "*****@*****.**", FirstName = "House", LastName = "Leader", Avatar = WebConfigurationManager.AppSettings["DefaultAvatar"] }, WebConfigurationManager.AppSettings["DefaultPassword"]); } var userHead = userManager.FindByEmail("*****@*****.**").Id; userManager.AddToRole(userHead, "HOH"); if (!context.Users.Any(u => u.Email == "*****@*****.**")) { userManager.Create(new ApplicationUser { UserName = "******", Email = "*****@*****.**", FirstName = "House", LastName = "Member", Avatar = WebConfigurationManager.AppSettings["DefaultAvatar"] }, WebConfigurationManager.AppSettings["DefaultPassword"]); } var userMember = userManager.FindByEmail("*****@*****.**").Id; userManager.AddToRole(userMember, "Member"); if (!context.Users.Any(u => u.Email == "*****@*****.**")) { userManager.Create(new ApplicationUser { UserName = "******", Email = "*****@*****.**", FirstName = "Lobby", LastName = "Guest", Avatar = WebConfigurationManager.AppSettings["DefaultAvatar"] }, WebConfigurationManager.AppSettings["DefaultPassword"]); } var userGuest = userManager.FindByEmail("*****@*****.**").Id; userManager.AddToRole(userGuest, "Guest"); #endregion #region AddUserToHousehold var household = context.Households.FirstOrDefault(h => h.Name == "Seeded House").Id; sHelp.AddUserToHouse(userAdmin, household); sHelp.AddUserToHouse(userHead, household); sHelp.AddUserToHouse(userMember, household); #endregion #region Banks context.Banks.AddOrUpdate( b => b.Name, new BankAccount { HouseholdId = household, Name = "BB&T", InitialBalance = 1000.00, CurrentBalance = 1500.00, ReconciledBalance = 1500.00, LowLevelBalance = 100.00, Type = AccountType.Checking }, new BankAccount { HouseholdId = household, Name = "Wells Fargo", InitialBalance = 500.00, CurrentBalance = 500.00, ReconciledBalance = 500.00, LowLevelBalance = 50.00, Type = AccountType.Savings } ); #endregion #region Budgets context.Budgets.AddOrUpdate( b => b.Name, new Budget { HouseholdId = household, Name = "Utilities", Description = "Aggregation of funds for Utilities" }, new Budget { HouseholdId = household, Name = "Vehicle Maintenance", Description = "Aggregation of Vehicle service funds" }, new Budget { HouseholdId = household, Name = "Personal Items", Description = "Aggregation of funds for Personal Items, e.g Laptop, Camera, Phone" } ); #endregion context.SaveChanges(); #region BudgetItems var budgets = context.Budgets.AsNoTracking(); var ubudId = budgets.FirstOrDefault(b => b.Name == "Utilities").Id; var vbudId = budgets.FirstOrDefault(b => b.Name == "Vehicle Maintenance").Id; var pbudId = budgets.FirstOrDefault(b => b.Name == "Personal Items").Id; context.BudgetItems.AddOrUpdate( i => i.Name, //Utilities Budget Items new BudgetItem { BudgetId = ubudId, Name = "Water Bill", Description = "For use of city water", CurrentAmount = 120.00, TargetAmount = 100.00 }, new BudgetItem { BudgetId = ubudId, Name = "Eletric Bill", Description = "For use of city electric", CurrentAmount = 200.00, TargetAmount = 100.00 }, new BudgetItem { BudgetId = ubudId, Name = "Cable Bill", Description = "For use of Spectrum cable services", CurrentAmount = 80.00, TargetAmount = 50.00 }, //Vehicle Maintenance Budget Items new BudgetItem { BudgetId = vbudId, Name = "Oil Change", Description = "For Oil Change Service", CurrentAmount = 100.00, TargetAmount = 70.00 }, new BudgetItem { BudgetId = vbudId, Name = "Filter Replacement", Description = "For replacement of various car filter", CurrentAmount = 120.00, TargetAmount = 100.00 }, new BudgetItem { BudgetId = vbudId, Name = "Tire Replacement", Description = "For replacement of tires", CurrentAmount = 495.00, TargetAmount = 300.00 }, //Personal Budget Items new BudgetItem { BudgetId = pbudId, Name = "Canon Camera", Description = "For events, gatherings in church", CurrentAmount = 1200.00, TargetAmount = 700.00 }, new BudgetItem { BudgetId = pbudId, Name = "Surface Laptop", Description = "For use of at work", CurrentAmount = 1000.00, TargetAmount = 800.00 }, new BudgetItem { BudgetId = pbudId, Name = "Galaxy Phone", Description = "For personal use", CurrentAmount = 600.00, TargetAmount = 300.00 } ); #endregion context.SaveChanges(); #region Transactions var banks = context.Banks.AsNoTracking(); var budItems = context.BudgetItems.AsNoTracking(); //Bank Account Id var bbtId = banks.FirstOrDefault(b => b.Name == "BB&T").Id; var wellsId = banks.FirstOrDefault(b => b.Name == "Wells Fargo").Id; //BudgetItem Id var budItemId1 = budItems.FirstOrDefault(b => b.Name == "Water bill").Id; var budItemId2 = budItems.FirstOrDefault(b => b.Name == "Eletric Bill").Id; var budItemId3 = budItems.FirstOrDefault(b => b.Name == "Cable Bill").Id; var budItemId4 = budItems.FirstOrDefault(b => b.Name == "Oil Change").Id; var budItemId5 = budItems.FirstOrDefault(b => b.Name == "Filter Replacement").Id; var budItemId6 = budItems.FirstOrDefault(b => b.Name == "Tire Replacement").Id; var budItemId7 = budItems.FirstOrDefault(b => b.Name == "Canon Camera").Id; var budItemId8 = budItems.FirstOrDefault(b => b.Name == "Surface Laptop").Id; var budItemId9 = budItems.FirstOrDefault(b => b.Name == "Galaxy Phone").Id; context.Transactions.AddOrUpdate( t => t.Description, //Transactions for Utility Budget Items new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId1, EnteredById = userHead, Date = DateTime.Now, Description = "Payment for Water Bill", Amount = 70.00, Reconciled = false, ReconciledAmount = 50.00, Type = TransactionType.Payment }, new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId2, EnteredById = userHead, Date = DateTime.Now, Description = "Payment for Electric Bill", Amount = 150.00, Reconciled = false, ReconciledAmount = 100.00, Type = TransactionType.Payment }, new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId3, EnteredById = userHead, Date = DateTime.Now, Description = "Payment for Cable Bill", Amount = 45.00, Reconciled = false, ReconciledAmount = 100.00, Type = TransactionType.Payment }, //Transactions for Vehicle Maintenance Budget Items new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId4, EnteredById = userMember, Date = DateTime.Now, Description = "Oil Change Servicing", Amount = 72.00, Reconciled = false, ReconciledAmount = 70.00, Type = TransactionType.Withdrawal }, new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId5, EnteredById = userMember, Date = DateTime.Now, Description = "Car Cabin Filter Change", Amount = 50.00, Reconciled = false, ReconciledAmount = 100.00, Type = TransactionType.Withdrawal }, new Transaction { BankAccountId = bbtId, BudgetItemId = budItemId6, EnteredById = userMember, Date = DateTime.Now, Description = "Tire Replacement (2)", Amount = 170.00, Reconciled = false, ReconciledAmount = 300.00, Type = TransactionType.Withdrawal }, //Transactions for Personal Budget Items new Transaction { BankAccountId = wellsId, BudgetItemId = budItemId7, EnteredById = userAdmin, Date = DateTime.Now, Description = "Stash for new camera", Amount = 200.00, Reconciled = false, ReconciledAmount = 700.00, Type = TransactionType.Deposit }, new Transaction { BankAccountId = wellsId, BudgetItemId = budItemId8, EnteredById = userAdmin, Date = DateTime.Now, Description = "Stash for new laptop", Amount = 300.00, Reconciled = false, ReconciledAmount = 800.00, Type = TransactionType.Deposit }, new Transaction { BankAccountId = wellsId, BudgetItemId = budItemId9, EnteredById = userAdmin, Date = DateTime.Now, Description = "Stash for new phone", Amount = 100.00, Reconciled = false, ReconciledAmount = 300.00, Type = TransactionType.Deposit } ); #endregion }