public CourseIndex GetCourseIndex(Guid id, Guid?userId, Role loggedUserRole) { var courseIndex = new CourseIndex(); var classRepository = new ClassRepository(_context); courseIndex.Course = _context.GetList <Course>().Find(id); courseIndex.ClassesInfo = courseIndex.Course.Classes.Where(a => a.Active) .OrderBy(x => x.Order) .Select(a => new ClassInfo { Class = a, Available = userId.HasValue && classRepository.CheckClassAvailability(a.Id, userId.Value), Percentual = userId.HasValue ? a.Accesses.LastOrDefault(x => x.User.Id == userId)?.Percentual ?? 0 : 0, Editable = classRepository.CheckClassEditable(a, userId, loggedUserRole) }); return(courseIndex); }
public void UpdateWithClasses(Course course) { var currentCourse = GetById(course.Id); course.CreatedAt = currentCourse.CreatedAt; currentCourse.Subject = course.Subject; currentCourse.TeacherInCharge = course.TeacherInCharge; course.Classes = currentCourse.Classes; _context.Update(currentCourse, course); if (course.Active) { return; } var classRepository = new ClassRepository(_context); foreach (var klass in course.Classes) { klass.Active = false; classRepository.Update(klass); } }