public async static Task Initialize(IServiceProvider services) { //change from accessing just the database service //add user and role services. //var refers to generic variable... can hold any datatype var database = services.GetRequiredService <ApplicationDbContext>(); var userManager = services.GetRequiredService <UserManager <ApplicationUser> >(); var roleManager = services.GetRequiredService <RoleManager <IdentityRole> >(); //List<DepartmentChair> departmentChairList = DepartmentChair.PopulateDepartmentChair(); //Step 1: Avoid "Re-populating" tables with the same data if (!database.Departments.Any()) { //List<DepartmentChair> departmentChairs = database.DepartmentChairs.ToList<DepartmentChair>(); //Department department = new Department("Management Information Systems", departmentChairs[0].DepartmentChairID); //List<Department> departmentsList = new List<Department>(); //departmentsList.Add(department); //department = new Department("Accounting", departmentChairs[1].DepartmentChairID); //departmentsList.Add(department); //Step 2: Get data for Departments table // Class method. Call using Class Department6 // department.PopulateDepartments(); this is an error because we made the static //List<DepartmentChair> departments = database.Departments.ToList<DepartmentChair>(); List <Department> departmentList = Department.PopulateDepartments(); database.Departments.AddRange(departmentList); database.SaveChanges(); } // This is the data population for Course if (!database.Courses.Any()) { List <Course> courseList = Course.PopulateCourses(); database.Courses.AddRange(courseList); database.SaveChanges(); } string roleCoordinator = "Coordinator"; String roleDepartmentChair = "Chair"; List <ApplicationUser> appUserList = ApplicationUser.PopulateUsers(); if (!database.Roles.Any()) { IdentityRole role = new IdentityRole(roleCoordinator); await roleManager.CreateAsync(role); role = new IdentityRole(roleDepartmentChair); await roleManager.CreateAsync(role); } if (!database.Users.Any()) { //DBConn 1 (Synchronus - Method 1) //DBConn 1 (Sych - Method 2) // this means method 2 only goes after method 1 is done // Async means that both can go go at the same time foreach (ApplicationUser eachCoordinator in appUserList) { //userManager = services.GetRequiredService<UserManager<ApplicationUser>>(); await userManager.CreateAsync(eachCoordinator); //userManager = services.GetRequiredService<UserManager<ApplicationUser>>(); await userManager.AddToRoleAsync(eachCoordinator, roleCoordinator); } } // Need to finish added department chairs to the list. List <DepartmentChair> chairList = DepartmentChair.PopulateDepartmentChair(); if (!database.DepartmentChairs.Any()) { foreach (DepartmentChair eachChair in chairList) { await userManager.CreateAsync(eachChair); await userManager.AddToRoleAsync(eachChair, roleDepartmentChair); } } if (!database.ConflictCourses.Any()) { List <ConflictCourse> conflictCourseList = ConflictCourse.PopulateConflictCourses(); database.ConflictCourses.AddRange(conflictCourseList); database.SaveChanges(); } if (!database.Instructors.Any()) { List <Instructor> instructorList = Instructor.PopulateInstructors(); database.Instructors.AddRange(instructorList); database.SaveChanges(); } if (!database.CourseOfferings.Any()) { List <CourseOffering> offeringList = CourseOffering.PopulateCourseOffering(); database.CourseOfferings.AddRange(offeringList); database.SaveChanges(); } List <Department> departments = database.Departments.ToList <Department>(); if (departments[0].DepartmentChairID == null) { List <DepartmentChair> departmentChairs = database.DepartmentChairs.ToList <DepartmentChair>(); departments[0].DepartmentChairID = departmentChairs[0].DepartmentChairID; database.Departments.Update(departments[0]); departments[1].DepartmentChairID = departmentChairs[1].DepartmentChairID; database.Departments.Update(departments[1]); } //departments[2].DepartmentChairID = departmentChairs[2].DepartmentChairID; //database.Departments.Update(departments[2]); database.SaveChanges(); } // end of task
public async static Task Initialize(IServiceProvider services) { //change from accessing just the database service, add user and role services var database = services.GetRequiredService <ApplicationDbContext>(); var userManager = services.GetRequiredService <UserManager <ApplicationUser> >(); var roleManager = services.GetRequiredService <RoleManager <IdentityRole> >(); if (!database.Departments.Any()) { List <Department> departmentList = Department.PopulateDepartments(); database.Departments.AddRange(departmentList); database.SaveChanges(); } if (!database.Courses.Any()) { List <Course> courseList = Course.PopulateCourses(); database.Courses.AddRange(courseList); database.SaveChanges(); } string roleDepartmentChair = "DepartmentChair"; string roleCoordinator = "Coordinator"; if (!database.Roles.Any()) { IdentityRole role = new IdentityRole(roleCoordinator); await roleManager.CreateAsync(role); role = new IdentityRole(roleDepartmentChair); await roleManager.CreateAsync(role); } List <ApplicationUser> appUserList = ApplicationUser.PopulateUsers(); if (!database.Users.Any()) { foreach (ApplicationUser eachCoordinator in appUserList) { await userManager.CreateAsync(eachCoordinator); await userManager.AddToRoleAsync(eachCoordinator, roleCoordinator); } } List <DepartmentChair> chairList = DepartmentChair.PopulateDapartmentChair(); if (!database.DepartmentChairs.Any()) { foreach (ApplicationUser eachDepartmentChair in chairList) { await userManager.CreateAsync(eachDepartmentChair); await userManager.AddToRoleAsync(eachDepartmentChair, roleDepartmentChair); } } if (!database.ConflictCourses.Any()) { List <ConflictCourse> conflictCourseList = ConflictCourse.PopulateConflictCourses(); database.ConflictCourses.AddRange(conflictCourseList); database.SaveChanges(); } if (!database.Instructors.Any()) { List <Instructor> instructorList = Instructor.PopulateInstructors(); database.Instructors.AddRange(instructorList); database.SaveChanges(); } if (!database.CourseOfferings.Any()) { List <CourseOffering> courseOfferingsList = CourseOffering.PopulateCourseOfferings(); database.CourseOfferings.AddRange(courseOfferingsList); database.SaveChanges(); } //if (!database.Departments.Any()) //{ List <Department> departments = database.Departments.ToList <Department>(); List <DepartmentChair> departmentChairs = database.DepartmentChairs.ToList <DepartmentChair>(); departments[0].DepartmentChairID = departmentChairs[0].DepartmentChairID; database.Departments.Update(departments[0]); departments[1].DepartmentChairID = departmentChairs[1].DepartmentChairID; database.Departments.Update(departments[1]); departments[2].DepartmentChairID = departmentChairs[2].DepartmentChairID; database.Departments.Update(departments[2]); database.SaveChanges(); // } if (!database.TeachingQualifications.Any()) { List <TeachingQualification> teachingQualificationsList = TeachingQualification.PopulateTeachingQualifications(); database.TeachingQualifications.AddRange(teachingQualificationsList); database.SaveChanges(); } if (!database.CourseOfferingChanges.Any()) { List <CourseOfferingChanges> courseOfferingChangesList = CourseOfferingChanges.PopulateCourseOfferingChanges(); database.CourseOfferingChanges.AddRange(courseOfferingChangesList); database.SaveChanges(); } }