// GET public IActionResult Description(Guid id) { var problem = _problemService.Get(id); Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var userId); switch (problem.Type) { case ProblemTypes.CodeCorrector: { var viewModel = BuildDescCodeCorrectorViewModel(id, problem, userId); return(View(viewModel)); } case ProblemTypes.RestoreData: { var viewModel = BuildRestoreDataViewModel(id, problem, userId); var descRestoreDataViewModel = new DescRestoreDataViewModel(); var generator = _generators[viewModel.GeneratorType]; var generatedData = generator.CreateData(); if (problem is RestoreData data && viewModel is DescRestoreDataViewModel temp) { if (data.AdditionalData.IsInput) { temp.InputData = generatedData; } else { var output = _runner.Run(temp.SourceCode, generatedData).Trim('\n', '\r'); temp.OutputData = output; } descRestoreDataViewModel = temp; } return(View(descRestoreDataViewModel)); } case ProblemTypes.BlackBox: { var viewModel = BuildBlackBoxViewModel(id, problem, userId); return(View(viewModel)); } case ProblemTypes.TraceTable: { var viewModel = BuildTraceTableViewModel(id, problem, userId); return(View(viewModel)); } } return(View("Error", new ErrorViewModel { RequestId = "Такого типа задания не нашлось. УПССССС" })); }
public IActionResult Check(DescRestoreDataViewModel viewModel) { try { var problemId = viewModel.Id; Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var userId); var result = TestResults.WA; var input = viewModel.InputData; var outPutRight = _runner.Run(viewModel.SourceCode, input).Trim('\n', '\r'); var outPutUser = viewModel.OutputData; if (outPutRight == outPutUser) { result = TestResults.Ok; } var solution = new Solution { Result = result, UserId = userId, Input = input, ProblemId = problemId, SendTime = DateTime.Now }; _solutionsService.Save(solution); return(RedirectToAction("Description", "Problems", new { viewModel.Id })); } catch (Exception e) { return(View("Error", new ErrorViewModel() { RequestId = e.Message })); } }