/// <summary> /// Lista todas las clases de un curso /// </summary> /// <param name="courseId"> /// El id del curso /// </param> /// <returns> /// Retorna una lista de objetos SchoolClass /// </returns> public async Task <List <SchoolClass> > GetByCourse(int courseId) { List <SchoolClassEntity> schoolClassEntities = await _schoolClassRepository.GetByCourse(courseId); List <SchoolClass> schoolClasses = schoolClassEntities .Select(sc => SchoolClassMapper.Map(sc)).ToList(); return(schoolClasses); }
/// <summary> /// Crea una nueva clase /// </summary> /// <param name="schoolClass"> /// El objeto SchoolClass que contiene los datos de la clase /// </param> /// <exception cref="" /// <returns> /// Retorna el mismo objeto SchooClass con el id generado /// </returns> public async Task <SchoolClass> Save(SchoolClass schoolClass) { SchoolClassEntity schoolClassEntity = SchoolClassMapper.Map(schoolClass); //Comprueba primero que el mismo dia y a la misma hora, el profesor no esta dando //una clase de otra asignatura en otro curso SubjectEntity subjectEntity = await _subjectRepository .GetIncludingAssignedTeacher(schoolClassEntity.SubjectId); //Lanza excepcion si el profesor da otra clase bool isTeaching = await _schoolClassRepository .ExistsByTeacherDayAndSchedule( subjectEntity.Id, subjectEntity.TeacherEntity.Id, schoolClassEntity.Day, schoolClassEntity.ScheduleId); if (!isTeaching) { schoolClassEntity = await _schoolClassRepository.Save(schoolClassEntity); } else { string teacherFullName = subjectEntity.TeacherEntity.FirstName + " " + subjectEntity.TeacherEntity.LastName1 + " " + subjectEntity.TeacherEntity.LastName2; string message = "No puedes crear una clase de " + subjectEntity.Name + " a las " + schoolClass.Schedule.Start + " porque el profesor " + teacherFullName + " ya da otra clase."; throw new TeacherAlreadyTeachingException(message); } //Actualizo el id con el id retornado por el repositorio schoolClass.Id = schoolClassEntity.Id; return(schoolClass); }