Пример #1
0
        public async Task CreateAsync(AbsenceInputModel inputModel)
        {
            var studentSubject = _studentSubjectsRepository.All().FirstOrDefault(s =>
                                                                                 s.StudentId == inputModel.StudentId && s.SubjectId == inputModel.SubjectId);

            if (studentSubject != null)
            {
                var teacher = _teachersRepository.All().FirstOrDefault(t => t.Id == inputModel.TeacherId);
                if (teacher != null)
                {
                    var grade = new Absence
                    {
                        Period         = inputModel.Period,
                        Type           = inputModel.Type,
                        StudentSubject = studentSubject,
                        Teacher        = teacher
                    };

                    await _absencesRepository.AddAsync(grade);

                    await _absencesRepository.SaveChangesAsync();

                    return;
                }

                throw new ArgumentException($"Sorry, we couldn't find teacher with id {inputModel.TeacherId}");
            }

            throw new ArgumentException($"Sorry, we couldn't find pair of student ({inputModel.StudentId}) and subject({inputModel.SubjectId})");
        }
Пример #2
0
        public void AddAbsenceToStudent(string studentId, AbsenceInputModel absenceModel)
        {
            var student = Repositories.Students.Query()
                          .SingleOrDefault(s => s.Id == studentId);

            if (student is null)
            {
                throw  new TargetException("Student not found");
            }

            var subject = Repositories.Subjects.GetWithoutTracking()
                          .SingleOrDefault(s => s.Id == absenceModel.SubjectId);
            var teacher = Repositories.Teachers.GetWithoutTracking()
                          .SingleOrDefault(t => t.Id == absenceModel.TeacherId);

            var absence = new Absence
            {
                DateCreated   = DateTime.Now,
                DateModified  = DateTime.Now,
                Student       = student,
                Subject       = subject,
                IsFullAbsence = absenceModel.IsFullAbsence,
                IsExcused     = false,
                Teacher       = teacher
            };

            student.Absences.Add(absence);

            Repositories.Students.SaveChanges();
        }
Пример #3
0
        public async Task CreateAbsenceAsync()
        {
            OneTimeSetUp();
            var newAbsence = new AbsenceInputModel()
            {
                Period    = AbsencePeriod.FirstTerm,
                Type      = AbsenceType.Full,
                TeacherId = TestTeacherDBId,
                StudentId = StudentCorrectId,
                SubjectId = SubjectCorrectId,
            };

            await _absencesService.CreateAsync(newAbsence);

            _absencesRepositoryMock.Object.All().Count().Should().Be(1);
        }
Пример #4
0
        public async Task CreateAbsenceAsync_WithoutTeacherId_ShouldThrowException()
        {
            OneTimeSetUp();
            var newAbsence = new AbsenceInputModel()
            {
                StudentId = StudentCorrectId,
                Period    = AbsencePeriod.FirstTerm,
                Type      = AbsenceType.Full,
                TeacherId = TestTeacherUncorrectId,
                SubjectId = SubjectCorrectId,
            };

            try
            {
                await _absencesService.CreateAsync(newAbsence);
            }
            catch (ArgumentException ae)
            {
                ae.Message.Should().Be($"Sorry, we couldn't find teacher with id {TestTeacherUncorrectId}");
            }
        }
Пример #5
0
        public async Task CreateAbsenceAsync_WithoutPairOfStudentSubject_ShouldThrowException()
        {
            _teachersRepositoryMock.Setup(t => t.All())
            .Returns(new List <Teacher> {
            }.AsQueryable());
            var newAbsence = new AbsenceInputModel()
            {
                StudentId = StudentSubjectId,
                Period    = AbsencePeriod.FirstTerm,
                Type      = AbsenceType.Full,
                TeacherId = TestTeacherDBId,
                SubjectId = 10,
            };

            try
            {
                await _absencesService.CreateAsync(newAbsence);
            }
            catch (ArgumentException ae)
            {
                ae.Message.Should().Be($"Sorry, we couldn't find pair of student ({StudentSubjectId}) and subject({10})");
            }
        }
Пример #6
0
 public void AddAbsence([FromRoute] string studentId, [FromBody] AbsenceInputModel absenceModel)
 {
     _studentService.AddAbsenceToStudent(studentId, absenceModel);
 }