public Task <IQueryable <StudentTestSessionDto> > Handle(
            GetAllStudentTestSessionsRequest request,
            CancellationToken cancellationToken)
        {
            var queryParameters = new StudentTestSessionQueryParameters
            {
                StudentId = _executionContextService.GetCurrentUserId(),
                ExceptTestSessionState = TestSessionState.Pending,
            };

            return(Task.FromResult(_queryProvider.Queryable(queryParameters).Select(StudentTestSessionDto.Selector)));
        }
Example #2
0
        public async Task <IReadOnlyCollection <string> > Handle(
            GetStudentTestSessionTriggersRequest request,
            CancellationToken cancellationToken)
        {
            var queryParameters = new StudentTestSessionQueryParameters(request.TestSessionId)
            {
                StudentId = _executionContextService.GetCurrentUserId(),
            };
            var testSession = await _unitOfWork.GetSingle(queryParameters);

            return(await _stateManager.GetAvailableTriggers(testSession));
        }
Example #3
0
        public async Task ThrowIfCannotAnswer(Guid studentTestSessionId)
        {
            var queryParameters = new StudentTestSessionQueryParameters
            {
                Id    = studentTestSessionId,
                State = StudentTestSessionState.Started,
            };

            if (!await _unitOfWork.Any(queryParameters))
            {
                throw new CodedException(ErrorCode.StudentTestSessionEnded);
            }
        }
Example #4
0
        public async Task <Unit> Handle(FinalizeStudentTestSessionRequest request, CancellationToken cancellationToken)
        {
            var queryParameters = new StudentTestSessionQueryParameters
            {
                Ids        = request.StudentTestSessionIds,
                State      = StudentTestSessionState.Started,
                IsReadOnly = false,
            };

            var sessions = await _unitOfWork.GetAll(queryParameters);

            if (sessions.IsNullOrEmpty())
            {
                return(default);
Example #5
0
        public async Task <Unit> Handle(StudentTestSessionStateTransitionRequest request, CancellationToken cancellationToken)
        {
            var queryParameters = new StudentTestSessionQueryParameters(request.StudentTestSessionId)
            {
                IsReadOnly = false,
            };
            StudentTestSession session = await _unitOfWork.GetSingle(queryParameters);

            await _stateManager.Process(session, request.Trigger, request.SerializedData);

            await _unitOfWork.Update(session);

            await _unitOfWork.Commit();

            return(Unit.Value);
        }
Example #6
0
        public async Task StartAssessmentPhase(TestSession testSession)
        {
            var queryParameters = new StudentTestSessionQueryParameters
            {
                TestSessionId  = testSession.Id,
                ExcludedStates = new[] { StudentTestSessionState.Ended },
                IsReadOnly     = false,
            };
            IReadOnlyCollection <StudentTestSession> studentTestSessions = await _unitOfWork.GetAll(queryParameters);

            using var scope = TransactionsFactory.Create();
            await _studentTestSessionService.EndTests(studentTestSessions);

            await _testSessionAssessmentService.CreateAssessmentQuestions(testSession.Assessment);

            scope.Complete();
        }
Example #7
0
        public async Task <Unit> Handle(FinalizeStudentsTestSessionsRequest request, CancellationToken cancellationToken)
        {
            var queryParameters = new StudentTestSessionQueryParameters
            {
                State = StudentTestSessionState.Started,
                MoreOrGreaterThanShouldEndAt = _dateTimeProvider.UtcNow,
            };

            var sessionsData = await _unitOfWork.GetAll(queryParameters, session => new
            {
                StudentTestSessionId = session.Id,
                session.TestSession.InstructorId,
            });

            if (sessionsData.IsNullOrEmpty())
            {
                return(default);