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})"); }
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(); }
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); }
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}"); } }
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})"); } }
public void AddAbsence([FromRoute] string studentId, [FromBody] AbsenceInputModel absenceModel) { _studentService.AddAbsenceToStudent(studentId, absenceModel); }