public JsonResult ClassroomsForLesson(ClassroomType type, string elId) { ApplicationDbContext context = new ApplicationDbContext(); ScheduleItemIdModel idModel = ScheduleHelper.ParseScheduleItemId(elId); // var group = context.Groups.Single(i => i.Id == groupId); // var classrooms = context.Classrooms.Where(i => i.Capacity >= group.StudentsAmount && i.Type == type).ToList(); // List <ClassroomInfoModel> classrooms = ScheduleHelper.GetFreeClassrooms(type, idModel); return(Json(classrooms, JsonRequestBehavior.AllowGet)); }
public JsonResult TeachersForLesson(int id, LessonType type, string elId) { ScheduleItemIdModel idModel = ScheduleHelper.ParseScheduleItemId(elId); int lessonId = id; LessonType lessonType = type; ApplicationDbContext context = new ApplicationDbContext(); //Find teachers for this lesson number (to check further if teacher is unavailable) var teacherLessonsAcordingToElId = context.ScheduleItems .Where( i => i.SemesterId == idModel.SemesterId && i.DayOfWeek == idModel.DayOfWeek && i.LessonNumber == idModel.LessonNumber && i.LessonFrequency == idModel.LessonFrequency) .ToList(); var teacherLessonsIdsAcordingToElId = teacherLessonsAcordingToElId.Select(j => j.TeacherId).ToList(); var teachers = context.Form3s .Where(i => i.LessonId == lessonId && i.LessonType == lessonType) .Where(k => (context.ScheduleItems.Count(i => i.LessonId == lessonId && i.TeacherId == k.TeacherId)) <= k.Hours) //Check GENERAL Hours .Where(z => teacherLessonsIdsAcordingToElId.Contains(z.TeacherId) == false) //Check acording to elId .Select(j => j.Teacher).ToList(); //Check Max Lessons For This Day //get restriction Restriction MaxLessonsPerDayForTeachers = context.Restrictions.Single(i => i.Name == "MaxLessonsPerDayForTeachers"); int maxLessons = Convert.ToInt32(MaxLessonsPerDayForTeachers.Value); List <ScheduleItem> scheduleItemsForDay = context.ScheduleItems.Where( i => i.SemesterId == idModel.SemesterId && i.DayOfWeek == idModel.DayOfWeek //&& i.GroupId == idModel.GroupId ).ToList(); List <ScheduleItem> scheduleItemsForLesson = scheduleItemsForDay.Where( i => i.LessonNumber == idModel.LessonNumber ).ToList(); List <Teacher> teachersFiltered = new List <Teacher>(); foreach (var teacher in teachers) { int numOfLessonsNominator = scheduleItemsForDay.Where( i => i.TeacherId == teacher.Id && (i.LessonFrequency == LessonFrequency.Constant || i.LessonFrequency == LessonFrequency.Nominator)) .Count(); int numOfLessonsDeminator = scheduleItemsForDay.Where( i => i.TeacherId == teacher.Id && (i.LessonFrequency == LessonFrequency.Constant || i.LessonFrequency == LessonFrequency.Denominator)) .Count(); if (idModel.LessonFrequency == LessonFrequency.Constant) { if (numOfLessonsNominator < maxLessons && numOfLessonsDeminator < maxLessons) { teachersFiltered.Add(teacher); } } else if (idModel.LessonFrequency == LessonFrequency.Nominator) { if (numOfLessonsNominator < maxLessons) { teachersFiltered.Add(teacher); } } else if (idModel.LessonFrequency == LessonFrequency.Denominator) { if (numOfLessonsDeminator < maxLessons) { teachersFiltered.Add(teacher); } } } teachers = teachersFiltered; return(Json(teachers, JsonRequestBehavior.AllowGet)); }