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 }); }
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)); }
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); }