コード例 #1
0
        private async Task ExecuteSubmission(SubmisionDto submision, string _executionApi)
        {
            var client = new HttpClient();

            var executionModel = new ExecutionModel
            {
                MemoryLimit   = submision.MemoryLimit,
                ProblemName   = submision.ProblemName,
                UserName      = submision.UserName,
                TimeLimit     = submision.TimeLimit,
                Compilator    = submision.Compilator,
                FileName      = submision.FileName,
                NumberOfTests = submision.NumberOfTests
            };
            var serializedExecutionData = JsonConvert.SerializeObject(executionModel);
            var httpContentExecution    = new StringContent(serializedExecutionData, Encoding.UTF8, "application/json");
            var responseExecution       = await client.PostAsync(_executionApi, httpContentExecution);

            if (responseExecution.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var resultExecution = await responseExecution.Content.ReadAsStringAsync();

                var responseExecutionModels = DeserializeExecutionResponse(resultExecution);
                var serializedData          = _serializeTests.SerializeReponseTest(responseExecutionModels);
                //save in db the serializedData
                var evaluationModel = new Evaluation
                {
                    EvaluationId     = Guid.NewGuid(),
                    EvaluationResult = serializedData.Item1,
                    Score            = serializedData.Item2,
                    SubmisionId      = submision.SubmissionId
                };
                await _evaluationRepository.AddAsync(evaluationModel);

                UpdateSubmissionStatus(submision.SubmissionId, SubmissionStatus.Executed, string.Empty, serializedData.Item2);
                //notify with signalR
                await NotifyResponse(MessageType.ExecutionMessage, SubmissionStatus.Executed.ToString(), submision.SubmissionId.ToString(), serializedData.Item2.ToString());

                var x = 2;
            }
            else
            {
                //server error
                UpdateSubmissionStatus(submision.SubmissionId, SubmissionStatus.ServerError, responseExecution.ReasonPhrase, 0);
            }
        }