public async Task <IActionResult> PAW(HomeworkViewModel model, IList <IFormFile> files) { if (ModelState.IsValid) { model = WrapStudentsData(model); model = WrapHomeworkDescriptionData(model); //get homework info var homeworkDescriptionName = _repository.HomeworkDescriptionRepository.GetById(model.HomeworkDescriptionID).Name; var reflectionValidationFileName = _repository.HomeworkDescriptionRepository.GetById(model.HomeworkDescriptionID).ReflectionFile; var unitTestingFileName = _repository.HomeworkDescriptionRepository.GetById(model.HomeworkDescriptionID).UnitTestsFile; //student's homework folder var studentsHomeworkFolder = Path.Combine(Config.BasePathToCodeFiles, model.GetHomeworkDirectory()); var teachersHomeworkFolder = Path.Combine(Config.BasePathToValidationFiles, homeworkDescriptionName); //get validation files var reflectionFile = Path.Combine(Config.BasePathToValidationFiles, homeworkDescriptionName, reflectionValidationFileName); var unitTestingFile = Path.Combine(Config.BasePathToValidationFiles, homeworkDescriptionName, unitTestingFileName); try { HomeworkHelper.InitFolder(studentsHomeworkFolder, teachersHomeworkFolder); await ProcessZipUpload(model.CsProject, studentsHomeworkFolder); //compile and execute and then save data to DB Evaluation eval = await EvaluatorTaskFactory .CreateAndStart(new EvaluationTask(studentsHomeworkFolder, model.CsProject.FileName, reflectionFile, unitTestingFile)); model.StaticEvaluationResult = eval.StaticEvaluation.EvaluationResult; model.FunctionalEvaluationResult = eval.FunctionalEvaluation.EvaluationResult; TempData["evaluation"] = JsonConvert.SerializeObject(eval); //returns HomeworkID var homeworkID = _repository.HomeworkRepository.Add(model); return(RedirectToAction("Results", new { HomeworkID = homeworkID, model.StudentID })); } catch (Exception ex) { return(RedirectToAction("Error")); } } return(RedirectToAction("PAW")); }