Example #1
0
        public async Task <IActionResult> SubmitTaskSolution([FromBody] TaskSolutionModel model)
        {
            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var result = await _taskService.SubmitTaskSolution(model, userId);

            return(Ok(result));
        }
Example #2
0
        public async Task <TaskSolutionResult> SubmitTaskSolution(TaskSolutionModel model, string currentUserId)
        {
            var taskSolutionResult = await ValidateTaskSolution(model);

            if (taskSolutionResult.IsSuccess)
            {
                await SaveTaskSolution(model, currentUserId);
            }

            return(taskSolutionResult);
        }
Example #3
0
        private async System.Threading.Tasks.Task SaveTaskSolution(TaskSolutionModel model, string currentUserId)
        {
            if (_context.UserTaskSolutions.Any(x => x.TaskId == model.TaskId && x.UserId == currentUserId))
            {
                return;
            }
            var userTaskSolution = new UserTaskSolution {
                TaskId = model.TaskId, Solution = model.Solution, UserId = currentUserId
            };

            _context.UserTaskSolutions.Add(userTaskSolution);
            await _context.SaveChangesAsync();
        }
Example #4
0
        private async Task <TaskSolutionResult> ValidateTaskSolution(TaskSolutionModel taskSolution)
        {
            var task    = _context.Tasks.First(x => x.Id == taskSolution.TaskId);
            var request = new ExecuteCodeRequest {
                Program = taskSolution.Solution, Input = task.Input
            };
            var response = await _rextesterApiClient.ExecuteCode(request);

            return(new TaskSolutionResult
            {
                IsSuccess = response.IsSuccess && task.Output == response.Result.Trim(),
                Error = response.Errors
            });
        }