public void CreateUser(User user)
        {
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                Role userRole = academyDb.Role.FirstOrDefault(r => r.Name == "user");
                if (userRole != null)
                {
                    user.Role = userRole;
                }

                academyDb.User.Add(user);
                academyDb.SaveChanges();
            }
        }
        public void DeleteLecturer(Lecturer lecturer)
        {
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                using (var transaction = academyDb.Database.BeginTransaction())
                {
                    // delete course from lecturer-courcse table
                    var lectureCoursesForDelete = academyDb.LecturerCourse.Where(lc => lc.LecturerId == lecturer.Id);
                    foreach (var lc in lectureCoursesForDelete)
                    {
                        academyDb.LecturerCourse.Remove(lc);
                    }
                    // delete lecturer
                    academyDb.Lecturer.Remove(lecturer);
                    academyDb.SaveChanges();

                    transaction.Commit();
                }
            }
        }
        public void DeleteHomeTask(HomeTask homeTask)
        {
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                using (var transaction = academyDb.Database.BeginTransaction())
                {
                    // delete hometask assessments
                    var hometaskAssessmentsForDelete = academyDb.HomeTaskAssessment.Where(a => a.HomeTaskId == homeTask.Id);
                    foreach (var ha in hometaskAssessmentsForDelete)
                    {
                        academyDb.HomeTaskAssessment.Remove(ha);
                    }

                    // delete hometask
                    academyDb.HomeTask.Remove(homeTask);
                    academyDb.SaveChanges();

                    transaction.Commit();
                }
            }
        }
        public void DeleteCourse(Course course)
        {
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                using (var transaction = academyDb.Database.BeginTransaction())
                {
                    // delete course from lecturer-courcse table
                    var lectureCoursesForDelete = academyDb.LecturerCourse.Where(lc => lc.CourseId == course.Id);
                    foreach (var lcd in lectureCoursesForDelete)
                    {
                        academyDb.LecturerCourse.Remove(lcd);
                    }

                    // delete course from student-courcse table
                    var studentCoursesForDelete = academyDb.StudentCourse.Where(sc => sc.CourseId == course.Id);
                    foreach (var sc in studentCoursesForDelete)
                    {
                        academyDb.StudentCourse.Remove(sc);
                    }

                    // delete assessment from HomeTaskAssessment table
                    // delete hometasks from Hometask table
                    var hometasksForDelete = academyDb.HomeTask.Where(h => h.CourseId == course.Id);
                    foreach (var hd in hometasksForDelete)
                    {
                        var assessmentsForDelete = academyDb.HomeTaskAssessment.Where(ha => ha.HomeTaskId == hd.Id);
                        foreach (var ad in assessmentsForDelete)
                        {
                            academyDb.HomeTaskAssessment.Remove(ad);
                        }
                        academyDb.HomeTask.Remove(hd);
                    }
                    // delete course
                    academyDb.Course.Remove(course);
                    academyDb.SaveChanges();

                    transaction.Commit();
                }
            }
        }
        public void AssignLecturersToCourse(int courseId, List <int> lecturersIds)
        {
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                // get all course notations
                var lectCour = academyDb.LecturerCourse.Where(lc => lc.CourseId == courseId);
                foreach (var lc in lectCour)
                {
                    academyDb.LecturerCourse.Remove(lc);
                }

                foreach (var lcId in lecturersIds)
                {
                    academyDb.LecturerCourse.Add(new LecturerCourse()
                    {
                        LecturerId = lcId, CourseId = courseId
                    });
                }

                academyDb.SaveChanges();
            }
        }
        public void CreateHomeTask(HomeTask homeTask)
        {
            // create hometask
            using (AcademyContext academyDb = new AcademyContext(options))
            {
                academyDb.HomeTask.Add(homeTask);
                academyDb.SaveChanges();
            }

            using (AcademyContext academyDb = new AcademyContext(options))
            {
                if (academyDb.StudentCourse.Where(sc => sc.CourseId == homeTask.CourseId).Count() > 0)
                {
                    // create assessments for all students in course without assessments
                    List <int> courseHometasksIds = academyDb.HomeTask.Where(h => h.CourseId == homeTask.CourseId).Select(h => h.Id).ToList();
                    List <int> courseStudentsIds  = academyDb.StudentCourse.Where(st => st.CourseId == homeTask.CourseId).Select(st => st.StudentId).ToList();
                    foreach (var hi in courseHometasksIds)
                    {
                        if (academyDb.HomeTaskAssessment.Where(ha => ha.HomeTaskId == hi).Count() == 0)
                        {
                            foreach (var csi in courseStudentsIds)
                            {
                                academyDb.HomeTaskAssessment.Add(
                                    new HomeTaskAssessment()
                                {
                                    IsComplete = false,
                                    Date       = DateTime.Now,
                                    HomeTaskId = homeTask.Id,
                                    StudentId  = csi
                                });
                            }
                        }
                    }
                    academyDb.SaveChanges();
                }
            }
        }