public async Task <QueryResponse <Lesson> > GetLessonsByTeacher(int id) { using (BiometricPresenceDB db = new BiometricPresenceDB()) { List <Lesson> lessons = await db.Lessons.Include(c => c.Class).Include(c => c.Subject).Where(c => c.TeacherID == id).ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Lesson>(lessons)); } }
public async Task <QueryResponse <Presence> > GetPresenceListOfLesson(int id) { using (BiometricPresenceDB db = new BiometricPresenceDB()) { List <Presence> presences = await db.Presences.Include(c => c.Student).Where(c => c.LessonID == id).ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Presence>(presences)); } }
public async Task <QueryResponse <Teacher> > GetAll() { try { using (BiometricPresenceDB dataBase = new BiometricPresenceDB()) { List <Teacher> teachers = await dataBase.Teachers.ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Teacher>(teachers)); } } catch (Exception ex) { QueryResponse <Teacher> teacher = (QueryResponse <Teacher>)ResponseMessage.CreateErrorResponse(ex); return(teacher); } }
public async Task <QueryResponse <Subject> > GetAll() { try { using (BiometricPresenceDB dataBase = new BiometricPresenceDB()) { List <Subject> subjects = await dataBase.Subjects.Include(c => c.Teachers).ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Subject>(subjects)); } } catch (Exception ex) { QueryResponse <Subject> subject = (QueryResponse <Subject>)ResponseMessage.CreateErrorResponse(ex); return(subject); } }
public async Task <QueryResponse <Class> > GetAll() { try { using (BiometricPresenceDB dataBase = new BiometricPresenceDB()) { List <Class> classes = await dataBase.Classes.ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Class>(classes)); } } catch (Exception ex) { QueryResponse <Class> clasS = (QueryResponse <Class>)ResponseMessage.CreateErrorResponse(ex); return(clasS); } }
public async Task <QueryResponse <Student> > GetAll() { try { using (BiometricPresenceDB dataBase = new BiometricPresenceDB()) { List <Student> students = await dataBase.Students.ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Student>(students)); } } catch (Exception ex) { QueryResponse <Student> student = (QueryResponse <Student>)ResponseMessage.CreateErrorResponse(ex); return(student); } }
public async Task <QueryResponse <Lesson> > GetAll() { try { using (BiometricPresenceDB dataBase = new BiometricPresenceDB()) { List <Lesson> lessons = await dataBase.Lessons.ToListAsync(); return(ResponseMessage.CreateQuerySuccessResponse <Lesson>(lessons)); } } catch (Exception ex) { QueryResponse <Lesson> lesson = (QueryResponse <Lesson>)ResponseMessage.CreateErrorResponse(ex); return(lesson); } }
public async Task <QueryResponse <Lesson> > GenerateSchedule(DateTime schoolYearBegin) { var allTeachers = await _teacherService.GetAll(); var allSubjects = await _subjectService.GetAll(); var allClasses = await _classService.GetAll(); List <Teacher> teachers = allTeachers.Data; List <Subject> subjects = allSubjects.Data; List <Class> classes = allClasses.Data; Random rdm = new Random(); List <Lesson> lessons = new List <Lesson>(); int lessonDuration = 45; List <Subject> subjecstWithFrequency = new List <Subject>(); foreach (Subject subject in subjects) { for (int i = 0; i < subject.Frequency; i++) { subjecstWithFrequency.Add(subject); } } List <Subject> classSubjects = subjecstWithFrequency.ToList(); Dictionary <int, List <Subject> > dictionary = new Dictionary <int, List <Subject> >(); foreach (Class item in classes) { dictionary.Add(item.ID, classSubjects.ToList()); } //PRA CADA DIA DA SEMANA for (int day = 1; day < 6; day++) { //PRA CADA AULA for (int order = 0; order < 5; order++) { List <Teacher> teachersAvailable = teachers.ToList(); //PRA CADA TURMA foreach (Class @class in classes) { //dia = 1 //ordem = 0 //turma a Begin: //SEGUNDA 1ªaula int indexSubjectDrawn = rdm.Next(0, dictionary[@class.ID].Count); Subject subjectDrawn = null; try { subjectDrawn = dictionary[@class.ID][indexSubjectDrawn]; } catch (Exception ex) { } DateTime date = new DateTime(schoolYearBegin.Year, schoolYearBegin.Month, schoolYearBegin.Day + (day - 1)); Shift shift = @class.ClassShift; if (shift == Shift.Matutino) { date = date.AddMinutes(450); } else if (shift == Shift.Vespertino) { date = date.AddMinutes(810); } else { date = date.AddMinutes(1110); } date = date.AddMinutes(lessonDuration * order); if (order >= 3) { date = date.AddMinutes(15); } int indexTeacherOfSubject = rdm.Next(0, subjectDrawn.Teachers.Count); if (subjectDrawn.Teachers.Count == 0) { return(new QueryResponse <Lesson>() { Message = "A matéria " + subjectDrawn.SubjectName + " não possui professores disponíveis.", Success = false }); } Teacher teacherDrawn = subjectDrawn.Teachers.ToList()[indexTeacherOfSubject]; bool find = false; //Remove o professor que estava disponível da lista for (int i = 0; i < teachersAvailable.Count; i++) { if (teachersAvailable[i].ID == teacherDrawn.ID) { teachersAvailable.RemoveAt(i); find = true; break; } } if (!find) { goto Begin; } //Remove a matéria sorteada dictionary[@class.ID].RemoveAt(indexSubjectDrawn); lessons.Add(new Lesson() { //Presences = new List<Presence> ClassID = @class.ID, date = date, Order = (LessonOrder)order, Shift = shift, LessonDate = (DayOfWeek)day, SubjectID = subjectDrawn.ID, TeacherID = teacherDrawn.ID }); } } } return(ResponseMessage.CreateQuerySuccessResponse <Lesson>(lessons)); }