示例#1
0
        public async Task <IActionResult> CheckLog(
            [FromRoute] Guid solutionId,
            [FromRoute] Guid testDataId,
            [FromBody] SolutionCheckRequest request)
        {
            var solution = await dbContext.Solutions.SingleOrDefaultAsync(s => s.Id == solutionId);

            if (solution == null)
            {
                return(NotFound("solution not found"));
            }

            var testData = await dbContext.TestData
                           .Where(td => td.Id == testDataId)
                           .Where(td => td.ExerciseDataGroup.ExerciseId == solution.ExerciseId)
                           .SingleOrDefaultAsync();

            if (testData == null)
            {
                return(NotFound("exercise data not found"));
            }

            var newCheck = mapper.Map <SolutionCheck>(request);

            newCheck.SolutionId  = solution.Id;
            newCheck.TestDataId  = testData.Id;
            newCheck.CheckedTime = DateTimeOffset.UtcNow;

            dbContext.SolutionChecks.Add(newCheck);
            await dbContext.SaveChangesAsync();

            return(Ok());
        }
示例#2
0
        public async Task SaveLog(Guid solutionId, Guid testDataId, SolutionCheckRequest solutionCheck)
        {
            if (solutionCheck.ProgramOut.Length > 500_000)
            {
                logger.LogWarning($"Trim program out");
                solutionCheck.ProgramOut = solutionCheck.ProgramOut.Substring(0, 500_000);
            }
            var jsonString = JsonConvert.SerializeObject(solutionCheck);
            var content    = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var result     = await InvokePostInternal($"api/executor/checklog/{solutionId}/{testDataId}", content);

            logger.LogDebug($"Sended logs, status code: {result.StatusCode}");
        }