Esempio n. 1
0
        public Task <CreatedEntityResponse> Handle(CreateTestVariantRequest request, CancellationToken cancellationToken)
        {
            TestVariantSaveDataDto data = request.Data;

            using var scope = TransactionsFactory.Create();
            return(Task.FromResult(new CreatedEntityResponse()));
        }
Esempio n. 2
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();
        }
Esempio n. 3
0
        private async Task OnStartTransition(
            StateTransitionContext <TEntity> context,
            StateMachine <string, string> .Transition transition,
            StateConfiguration <TEntity> configuration)
        {
            context.SourceState = transition.Source;
            context.TargetState = transition.Destination;
            context.Trigger     = transition.Trigger;
            var handlers = configuration.Handlers
                           .Select(t => _serviceProvider.GetService(t))
                           .Cast <IStateTransitionHandler <TEntity> >();

            using var transaction = TransactionsFactory.Create();
            foreach (var stateTransitionHandler in handlers)
            {
                await stateTransitionHandler.Transit(context);
            }

            transaction.Complete();
        }
Esempio n. 4
0
        public async Task EndTests(IReadOnlyCollection <StudentTestSession> studentTestSessions)
        {
            using var scope = TransactionsFactory.Create();

            foreach (var session in studentTestSessions.Where(e => e.State == StudentTestSessionState.Started))
            {
                await _stateManager.Process(session, StudentTestSessionTriggers.EndTest);
            }

            await _unitOfWork.Commit();

            foreach (var session in studentTestSessions.Where(e => e.State == StudentTestSessionState.Pending))
            {
                await _stateManager.Process(session, StudentTestSessionTriggers.OverdueTest);
            }

            await _unitOfWork.Commit();

            scope.Complete();
        }