public ActionResult Leaderboard() { var submissionService = new SubmissionDataService(); var submissions = submissionService.GetAll(); var successfulSubmissions = submissions .Where(submission => submission.IsSuccessful) .GroupBy(submission => submission.Nickname) .Select(group => group.ToList()) .ToList(); var leadersList = new List <LeaderboardViewModel>(); foreach (var item in successfulSubmissions) { var solvedProblemsIds = item.Select(submission => submission.ProblemId).ToArray(); var solvedProblems = solvedProblemsIds .Select(problemId => problemList.Find(problem => problem.Id == problemId).Name).ToList(); var newLeader = new LeaderboardViewModel { Nickname = item.First().Nickname, SuccessfulSolutionsCount = item.Count, SolvedProblems = solvedProblems }; leadersList.Add(newLeader); } leadersList = leadersList.OrderByDescending(x => x.SuccessfulSolutionsCount).Take(5).ToList(); return(View(leadersList)); }
public async Task <IActionResult> SubmitAssignment(SubmissionInputViewModel input) { StudentDataService studentDataService = new StudentDataService(dbContext); Student student = studentDataService.GetStudentById(input.UserId); bool hasAccess = false; foreach (StudentClass studentClass in student.StudentClasses) { if (studentClass.ClassId == input.ClassId) { hasAccess = true; } } if (ModelState.IsValid && hasAccess) { Submission submission = new Submission(); submission.Input.SourceCode = input.SourceCode; submission.Input.Language = input.Language; submission.AssignmentId = input.AssignmentId; submission.UserId = input.UserId; submission.SubmissionTime = DateTime.Now; SubmissionDataService submissionService = new SubmissionDataService(dbContext); submissionService.AddSubmission(submission); await dbContext.SaveChangesAsync(); // SubmissionId now set on local submission AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); Assignment assignment = assignmentDataService.GetAssignmentById(submission.AssignmentId); assignment.Submissions.Add(submission); GraderMethod.GradeSubmission(submission, dbContext); submission.Output.Runtime = assignment.TimeLimit; if (submission.Compile()) { submission.RunAndCompare(); submission.GradeTestCases(); submission.MaxRunTime(); } dbContext.Submissions.Update(submission); dbContext.Assignments.Update(assignment); await dbContext.SaveChangesAsync(); submission.deleteJunkFiles(); return(RedirectToAction("SubmissionDetails", "Assignment", new { id = submission.SubmissionId })); } return(RedirectToAction("UnAuthorized", "Home")); }
public IActionResult SubmissionDetails(int id) { SubmissionDataService submissionDataService = new SubmissionDataService(dbContext); var submission = submissionDataService.GetSubmissionById(id); AssignmentDataService assignmentDataService = new AssignmentDataService(dbContext); ViewData["AssignmentName"] = assignmentDataService.GetAssignmentById(submission.AssignmentId).Name; return(View(submission)); }
public ActionResult Index(SubmissionViewModel newSubmission) { if (ModelState.IsValid) { var submissionService = new SubmissionDataService(); var submission = new Submission { Nickname = newSubmission.Nickname, ProblemId = newSubmission.ProblemId, Solution = newSubmission.Solution, IsSuccessful = true }; // The API did not work as it should for me, so I assume all posted solutions are successful for now // var response = PostSubmission(submission); submissionService.Add(submission); return(RedirectToAction("SubmittedSolution")); } return(View(newSubmission)); }
public void the_current_status_of_the_submission_is_returned() { //Arrange var fakeLrap1Repository = A.Fake <ILrap1SubmissionRepository>(); var sut = new SubmissionDataService(fakeLrap1Repository, null); var queryInvoker = new QueryInvoker(sut); A.CallTo(() => fakeLrap1Repository.GetById(A <string> .Ignored)) .Returns(new Lrap1Submission() { ResponseType = ResponseType.Acknowledgment }); //Act var query = new Lrap1StatusQuery() { ApplicationId = "123456890" }; var result = queryInvoker.Query <Lrap1StatusQuery, Lrap1StatusQueryResult>(query); //Assert Assert.Equal(ResponseType.Acknowledgment, result.ResponseType); }
public CommandInvoker(SubmissionDataService submissionDataService) { _submissionDataService = submissionDataService; }
public void the_current_status_of_the_submission_is_returned() { //Arrange var fakeLrap1Repository = A.Fake<ILrap1SubmissionRepository>(); var sut = new SubmissionDataService(fakeLrap1Repository, null); var queryInvoker = new QueryInvoker(sut); A.CallTo(() => fakeLrap1Repository.GetById(A<string>.Ignored)) .Returns(new Lrap1Submission() {ResponseType = ResponseType.Acknowledgment}); //Act var query = new Lrap1StatusQuery() { ApplicationId = "123456890" }; var result = queryInvoker.Query<Lrap1StatusQuery, Lrap1StatusQueryResult>(query); //Assert Assert.Equal(ResponseType.Acknowledgment, result.ResponseType); }