Пример #1
0
        public TestListEntryModel Load(Result currentResult, DomainModel.TestPoolEntry testPoolEntry)
        {
            var resultForEntry = currentResult
                                 .AbstractResultEntries
                                 .OfType <TestResult>()
                                 .SingleOrDefault(result => result.TestPoolEntry.Id == testPoolEntry.Id);

            var taskState = resultForEntry?.Status == ExecutionStatus.Complete
                ? TaskExecutionState.Solved
                : TaskExecutionState.New;

            return(new TestListEntryModel()
            {
                QuestionId = testPoolEntry.Id,
                TestName = testPoolEntry.TestQuestion.Question,
                State = taskState
            });
        }
Пример #2
0
        private IEnumerable <BaseListEntryModel> GetOtherTasksModels(LabWork lab, Result result, Task task, DomainModel.TestPoolEntry testPoolEntry)
        {
            var otherTasks = result.AbstractResultEntries.Where(e => e is TestResult).Select(e =>
            {
                var testResult = (TestResult)e;
                var entry      = testResult.TestPoolEntry;
                var model      = _testModelLoader.Load(result, entry);
                if (testResult.TestPoolEntry.Id == testPoolEntry?.Id)
                {
                    model.State = TaskExecutionState.CurrentlySolving;
                }
                return((BaseListEntryModel)model);
            });
            var addTasks = lab.LabEntries.Select(e =>
            {
                var model = _taskModelLoader.Load(result, e);
                if (e.Task.Id == task?.Id)
                {
                    model.State = TaskExecutionState.CurrentlySolving;
                }
                return((BaseListEntryModel)model);
            }).ToArray();

            return(otherTasks.Union(addTasks));
        }
Пример #3
0
        private VariantExecutionModelBase CreateTestExecutionModel(Uri taskCompleteRedirect, DomainModel.TestPoolEntry test, LabVariant variant, LabWork lab, Result result)
        {
            var model = new TestExecutionModel();

            model.Name       = test.TestPool.Name;
            model.Question   = test.TestQuestion.Question;
            model.Answers    = test.TestQuestion.AnswerVariants;
            model.QuestionId = test.Id;
            model.OtherTasks = GetOtherTasksModels(lab, result, null, test).ToArray();
            model.VariantId  = variant.Id;
            model.LabName    = lab.Name;
            var operation  = _operationFactory.Create();
            var testResult = operation.DataContext.Query.OfEntities <TestResult>().FirstOrDefault(e => e.TestPoolEntry.Id == test.Id & e.Result.Id == result.Id);

            operation.Complete();
            model.TestResult = testResult.Id;
            return(model);
        }