コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TestsController"/> class.
 /// </summary>
 /// <param name="data">Open Judge System Database context for the control
 /// ler to work with</param>
 /// <param name="submissionsForProcessingData">ISubmissionsForProcessingDataService
 /// for the controller to work with the SubmissionsForProcessing table via a service</param>
 /// /// <param name="participantScoresData">IParticipantScoresDataService
 /// for the controller to work with the ParticipantScore table via a service</param>
 public TestsController(
     IOjsData data,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     IParticipantScoresDataService participantScoresData)
     : base(data)
 {
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.participantScoresData        = participantScoresData;
 }
コード例 #2
0
 public TempController(
     IOjsData data,
     IHangfireBackgroundJobService backgroundJobs,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     IContestsDataService contestsData)
     : base(data)
 {
     this.backgroundJobs = backgroundJobs;
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.contestsData = contestsData;
 }
コード例 #3
0
 public ProblemsController(
     IOjsData data,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     IParticipantScoresDataService participantScoresData,
     IContestsDataService contestsData,
     IProblemsDataService problemsData)
     : base(data)
 {
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.participantScoresData        = participantScoresData;
     this.contestsData = contestsData;
     this.problemsData = problemsData;
 }
 public OjsSubmissionProcessingStrategy(
     ISubmissionsDataService submissionsData,
     ITestRunsDataService testRunsData,
     IParticipantsDataService participantsData,
     IParticipantScoresDataService participantScoresData,
     ISubmissionsForProcessingDataService submissionsForProcessingData)
 {
     this.submissionsData              = submissionsData;
     this.testRunsData                 = testRunsData;
     this.participantsData             = participantsData;
     this.participantScoresData        = participantScoresData;
     this.submissionsForProcessingData = submissionsForProcessingData;
 }
コード例 #5
0
 public SubmissionsController(
     IOjsData data,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     IParticipantScoresBusinessService participantScoresBusiness,
     IParticipantScoresDataService participantScoresData,
     IParticipantsDataService participantsData,
     ITestRunsDataService testRunsData)
     : base(data)
 {
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.participantScoresBusiness    = participantScoresBusiness;
     this.participantScoresData        = participantScoresData;
     this.participantsData             = participantsData;
     this.testRunsData = testRunsData;
 }
コード例 #6
0
 public CompeteController(
     IOjsData data,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     IParticipantsBusinessService participantsBusiness,
     IParticipantsDataService participantsData,
     IContestsBusinessService contestsBusiness,
     IContestsDataService contestsData,
     IProblemsDataService problemsData)
     : base(data)
 {
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.participantsBusiness         = participantsBusiness;
     this.participantsData             = participantsData;
     this.contestsBusiness             = contestsBusiness;
     this.contestsData = contestsData;
     this.problemsData = problemsData;
 }
コード例 #7
0
 public ProblemsBusinessService(
     IEfDeletableEntityRepository <Problem> problems,
     IContestsDataService contestsData,
     IParticipantScoresDataService participantScoresData,
     IProblemsDataService problemsData,
     IProblemResourcesDataService problemResourcesData,
     ISubmissionsDataService submissionsData,
     ISubmissionsForProcessingDataService submissionsForProcessingData,
     ITestRunsDataService testRunsData,
     ISubmissionTypesDataService submissionTypesData,
     IProblemGroupsBusinessService problemGroupsBusiness)
 {
     this.problems                     = problems;
     this.contestsData                 = contestsData;
     this.participantScoresData        = participantScoresData;
     this.problemsData                 = problemsData;
     this.problemResourcesData         = problemResourcesData;
     this.submissionsData              = submissionsData;
     this.submissionsForProcessingData = submissionsForProcessingData;
     this.testRunsData                 = testRunsData;
     this.submissionTypesData          = submissionTypesData;
     this.problemGroupsBusiness        = problemGroupsBusiness;
 }
コード例 #8
0
        private void BeginProcessingSubmission(
            Submission submission,
            SubmissionForProcessing submissionForProcessing,
            IOjsData data,
            ISubmissionsForProcessingDataService submissionsForProccessingData,
            IParticipantScoresDataService participantScoresData)
        {
            submission.ProcessingComment = null;
            try
            {
                data.TestRuns.DeleteBySubmissionId(submission.Id);
                this.ProcessSubmission(submission);
                data.SaveChanges();
            }
            catch (Exception exception)
            {
                this.logger.ErrorFormat("ProcessSubmission on submission №{0} has thrown an exception: {1}", submission.Id, exception);
                submission.ProcessingComment = $"Exception in ProcessSubmission: {exception.Message}";
            }

            try
            {
                this.CalculatePointsForSubmission(submission);
            }
            catch (Exception exception)
            {
                this.logger.ErrorFormat("CalculatePointsForSubmission on submission №{0} has thrown an exception: {1}", submission.Id, exception);
                submission.ProcessingComment = $"Exception in CalculatePointsForSubmission: {exception.Message}";
            }

            submission.Processed = true;
            submissionsForProccessingData.SetToProcessed(submissionForProcessing.Id);

            try
            {
                participantScoresData.SaveBySubmission(submission);
            }
            catch (Exception exception)
            {
                this.logger.ErrorFormat("SaveParticipantScore on submission №{0} has thrown an exception: {1}", submission.Id, exception);
                submission.ProcessingComment = $"Exception in SaveParticipantScore: {exception.Message}";
            }

            try
            {
                submission.CacheTestRuns();
            }
            catch (Exception exception)
            {
                this.logger.ErrorFormat("CacheTestRuns on submission №{0} has thrown an exception: {1}", submission.Id, exception);
                submission.ProcessingComment = $"Exception in CacheTestRuns: {exception.Message}";
            }

            try
            {
                data.SaveChanges();
            }
            catch (Exception exception)
            {
                this.logger.ErrorFormat("Unable to save changes to the submission №{0}! Exception: {1}", submission.Id, exception);
            }

            this.logger.InfoFormat("Submission №{0} successfully processed", submission.Id);
        }
 public SubmissionsForProcessingBusinessService(
     ISubmissionsForProcessingDataService submissionsForProcessingData)
 {
     this.submissionsForProcessingData = submissionsForProcessingData;
 }