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