コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }