public override ValidationResult Validate(SessionRequestDto entity) { var validation = base.Validate(entity); if (validation.Errors.Any()) { return(validation); } var hasComponent = _componentRepository.GetComponentsByModule(entity.ModuleId); if (!hasComponent.Any()) { validation.Errors.Add("You can't open a session without any components"); } var classroomByModule = _classroomRepository.GetClassroomByModule(entity.ModuleId); if (classroomByModule == null) { validation.Errors.Add($"No classroom was assigned to {entity.ModuleId}"); } var session = _repository.GetOpenSessions(entity.ModuleId).ToList(); if (session.Count >= 1) { validation.Errors.Add($"A session for {entity.ModuleId} was already opened"); } return(validation); }
public async Task <ValidationResult> DeleteModule(Guid id) { var validationResult = new ValidationResult(); var module = _moduleRepository.GetModule(id); if (module == null) { return(null); } var classroom = _classroomRepository.GetClassroomByModule(module.Id); if (classroom != null) { validationResult = _classroomValidator.Validate(classroom); return(validationResult); } await _moduleRepository.DeleteModule(id); return(validationResult); }
private (int totalStudents, int finishedStudents) GetStudentStats(Session session) { var classRoom = _classRoomRepo.GetClassroomByModule(session.ModuleId); if (classRoom == null) { return(0, 0); } var totalStudents = classRoom.Users.Count; var componentCount = session.Module.Components.Count; var finishedStudents = 0; foreach (var classRoomUser in classRoom.Users) { var results = _resultRepo.FindResult(session.Id, classRoomUser.Id).ToList(); if (results.Count >= componentCount) { finishedStudents++; } } return(totalStudents, finishedStudents); }