public IActionResult DeleteRecord(int id) { var y = _db.CodeStyleFiles.Find(id); _db.CodeStyleFiles.Remove(y); _db.SaveChanges(); return(RedirectToAction("AllRecords")); }
public IActionResult DeleteGroup(int id) { var y = _db.Groups.Find(id); _db.Groups.Remove(y); _db.SaveChanges(); return(RedirectToAction("AllGroups")); }
public static TestResponse WriteToDb(HSEContestDbContext _db, TestingResult res, bool recheck) { bool ok = false; if (recheck) { var existing = _db.TestingResults.FirstOrDefault(r => r.SolutionId == res.SolutionId && r.TestId == res.TestId); if (existing != null) { existing.Commentary = res.Commentary; existing.ResultCode = res.ResultCode; existing.Score = res.Score; existing.TestData = res.TestData; _db.SaveChanges(); ok = true; } } else { var x = _db.TestingResults.Add(res); var beforeState = x.State; int r = _db.SaveChanges(); var afterState = x.State; ok = beforeState == EntityState.Added && afterState == EntityState.Unchanged && r == 1; } TestResponse response; if (ok) { response = new TestResponse { OK = true, Message = "success", Result = res.ResultCode, Score = res.Score, TestResultId = res.Id, TestId = res.TestId, }; } else { response = new TestResponse { OK = false, Message = "can't write result to db", Result = ResultCode.IE, Score = res.Score, TestId = res.TestId, }; } return(response); }
TestResponse WriteTestResponseToDb(TestResponse resp, int solutionId, int testId) { var testResult = _db.TestingResults.FirstOrDefault(t => t.SolutionId == solutionId && t.TestId == testId); if (testResult is null) { var res = new TestingResult { Score = resp.Score, Commentary = resp.Message, SolutionId = solutionId, TestId = testId, ResultCode = resp.Result, }; var x = _db.TestingResults.Add(res); var beforeState = x.State; int r = _db.SaveChanges(); var afterState = x.State; bool ok = beforeState == EntityState.Added && afterState == EntityState.Unchanged && r == 1; TestResponse response; if (ok) { response = new TestResponse { OK = true, Message = "success", Result = ResultCode.OK, Score = res.Score, TestResultId = res.Id, TestId = testId, }; } else { response = new TestResponse { OK = false, Message = "can't write result to db", Result = ResultCode.IE, Score = res.Score, TestId = testId, }; } return response; } else { return resp; } }
public async Task CheckSolutions(PlagiarismCheckRequest checkRequest) { try { int taskId = checkRequest.TaskId; var task = _db.StudentTasks.Find(taskId); while (DateTime.Now < task.To) { await Task.Delay(5 * 60 * 1000); _db.Entry(task).Reload(); } var check = _db.PlagiarismChecks.Find(taskId); if (check.Settings.MakeCheck) { var sourceFileList = new List <string>(); var studentSolutions = _db.StudentResults.Where(r => r.TaskId == taskId).Select(r => r.Solution).ToList(); var taskDir = new DirectoryInfo("C:\\tasks\\" + taskId.ToString()); if (taskDir.Exists) { taskDir.Delete(true); } taskDir.Create(); var saveDir = new DirectoryInfo("C:\\saving"); if (!saveDir.Exists) { saveDir.Create(); } foreach (var sol in studentSolutions) { var curSaveDir = new DirectoryInfo(saveDir.FullName + "\\" + sol.Id.ToString()); if (curSaveDir.Exists) { curSaveDir.Delete(true); } curSaveDir.Create(); string fullPath = curSaveDir.FullName + "\\" + sol.File.Name; File.WriteAllBytes(fullPath, sol.File.Content); ZipFile.ExtractToDirectory(fullPath, curSaveDir.FullName, true); var curSolDir = new DirectoryInfo(taskDir.FullName + "\\" + sol.Id.ToString()); if (curSolDir.Exists) { curSolDir.Delete(true); } curSolDir.Create(); var solFiles = curSaveDir.GetFiles("*.cs", SearchOption.AllDirectories).Where(p => !p.FullName.Contains("\\obj\\")).ToList(); foreach (var file in solFiles) { file.CopyTo(curSolDir.FullName + "//" + file.Name); } curSaveDir.Delete(true); } var request = new MossRequest { UserId = _config.MossId, IsDirectoryMode = true, IsBetaRequest = false, Language = check.Settings.Language, MaxMatches = check.Settings.MaxMatches }; //request.BaseFile.AddRange(this.BaseFileList); foreach (var solDir in taskDir.GetDirectories()) { var curSolFiles = solDir.GetFiles("*.cs", SearchOption.AllDirectories).Select(f => f.FullName).Where(p => !p.Contains("\\obj\\")).ToList(); sourceFileList.AddRange(curSolFiles); } request.Files.AddRange(sourceFileList); bool res = request.SendRequest(out string response); check.Link = response; if (res) { string html = new WebClient().DownloadString(response); var config = Configuration.Default; var context = BrowsingContext.New(config); var document = context.OpenAsync(req => req.Content(html)).Result; var allLines = document.All.Where(m => m.LocalName == "tr" && !m.Children.Any(c => c.LocalName == "th")); foreach (var line in allLines) { var file1 = ParseUserAndPercent(line.Children[0]); var file2 = ParseUserAndPercent(line.Children[1]); var lMatched = int.Parse(line.Children[2].InnerHtml); var solId1 = file1.Item1; var percent1 = file1.Item2; var solId2 = file2.Item1; var percent2 = file2.Item2; if (percent1 > check.Settings.MinPercent || percent2 > check.Settings.MinPercent) { var sol1 = _db.Solutions.Find(solId1); var sol2 = _db.Solutions.Find(solId2); var newResult = new PlagiarismResult { SolutionId1 = sol1.Id, SolutionId2 = sol2.Id, Percent1 = percent1, Percent2 = percent2, LinesMatched = lMatched, TaskId = taskId, }; _db.PlagiarismResults.Add(newResult); sol1.PlagiarismDetected = true; sol2.PlagiarismDetected = true; } } } _db.SaveChanges(); } } catch { return; } }
public async Task <IActionResult> UploadUsers(IFormFile file) { if (file != null) { CsvParserOptions csvParserOptions = new CsvParserOptions(true, ';'); CsvUserMapping csvMapper = new CsvUserMapping(); CsvParser <CsvUser> csvParser = new CsvParser <CsvUser>(csvParserOptions, csvMapper); var res = csvParser.ReadFromStream(file.OpenReadStream(), System.Text.Encoding.UTF8).ToList(); foreach (var userRecord in res) { var groupName = userRecord.Result.GroupName; var group = _db.Groups.FirstOrDefault(g => g.Name == groupName); if (group is null) { group = new Group { Name = groupName, }; _db.Groups.Add(group); _db.SaveChanges(); } User newUser = new User { FirstName = userRecord.Result.FirstName, LastName = userRecord.Result.LastName, Email = userRecord.Result.Email, UserName = userRecord.Result.Email, }; var result = await _userManager.CreateAsync(newUser, userRecord.Result.Password); bool ok = result.Succeeded; if (ok) { var groups = new List <UserGroup> { new UserGroup { GroupId = group.Id, UserId = newUser.Id } }; newUser.Groups = groups; _db.SaveChanges(); var result1 = await _userManager.AddToRoleAsync(newUser, "student"); ok = result1.Succeeded; } if (!ok) { var response1 = new { status = "error", data = string.Join(",", result.Errors.Select(e => e.Description)) }; return(Json(response1)); } } var response = new { status = "success", data = "" }; return(Json(response)); } else { var response1 = new { status = "error", data = "Got no file!" }; return(Json(response1)); } }