示例#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
        public void ToClassResultVm_maps_ClassId()
        {
            var datetimes = new List <DateTime> {
                DateTime.Now
            }.ToHashSet();
            var sut = new SchoolClassMapper();

            // Act
            var result = sut.ToClassResultVm(11, 22, 1, datetimes);

            // Assert
            Assert.That(result.ClassId, Is.EqualTo(22));
        }
示例#3
0
        public void ToClassResultVm_maps_Datetimes()
        {
            var datetimes = new List <DateTime> {
                DateTime.Now, DateTime.Now.AddYears(-1)
            }.ToHashSet();
            var sut = new SchoolClassMapper();

            // Act
            var result = sut.ToClassResultVm(11, 22, 1, datetimes);

            // Assert
            Assert.That(result.Dates.Count, Is.EqualTo(2));
        }
示例#4
0
        public void ToClassVm_maps_Id()
        {
            var schoolClasses = new List <SchoolClass> {
                new SchoolClass("12B")
                {
                    Id = 12
                }
            };
            var sut = new SchoolClassMapper();

            // Act
            var result = sut.ToClassVm(schoolClasses);

            // Assert
            Assert.That(result.FirstOrDefault().Id, Is.EqualTo(12));
        }
示例#5
0
        public void ToClassVm_maps__SeveralSchoolClasses()
        {
            var schoolClasses = new List <SchoolClass> {
                new SchoolClass("12B")
                {
                    Id = 12
                }, new SchoolClass("11B")
                {
                    Id = 11
                }
            };
            var sut = new SchoolClassMapper();

            // Act
            var result = sut.ToClassVm(schoolClasses);

            // Assert
            Assert.That(result.Count(), Is.EqualTo(2));
        }
示例#6
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);
        }