Esempio n. 1
0
        public async Task <SubmissionResponse> SaveTable(Table table, bool isUpdate)
        {
            if (table == null)
            {
                return(SubmissionResponse.Error());
            }

            if (isUpdate && table.Id.IsEmptyOrEmptyGuid())
            {
                return(SubmissionResponse.Error(Constants.Errors.EmptyPayload));
            }

            if (isUpdate)
            {
                table.SetUpdateCommonFields();
            }
            else
            {
                if (table.Id.IsEmptyOrEmptyGuid())
                {
                    table.Id = Guid.NewGuid().ToString();
                }
                table.SetNewCommonFields();
            }

            return(await coreStore.SaveTable(table, isUpdate));
        }
Esempio n. 2
0
        public SubmissionResponse SaveNewSubmission(BaseSubmission submission, string result)
        {
            var response = new SubmissionResponse();

            if (!DoesUserTaskSubmissionExist(submission.TaskId, submission.Nickname))
            {
                var newSubmission = new UserSubmission()
                {
                    Code               = submission.Solution,
                    IsCorrect          = DoesTaskHaveCorrectResult(submission.TaskId, result),
                    IsDeleted          = false,
                    Nickname           = submission.Nickname,
                    Result             = result,
                    SubmissionDateTime = DateTime.UtcNow,
                    TaskId             = submission.TaskId
                };

                _programmingCompetitionDataContext.UserSubmission.Add(newSubmission);
                _programmingCompetitionDataContext.SaveChanges();

                response.IsCorrectResult      = newSubmission.IsCorrect;
                response.IsSubmissionAccepted = true;
                response.Response             = newSubmission.Result;
            }
            else
            {
                response.IsSubmissionAccepted = false;
                response.Response             = "There is already a submission for this task with current user nickname!";
            }

            return(response);
        }
        public async Task <SubmissionResponse> ExecuteFiddleAsync(BaseSubmission submission)
        {
            var          model           = ConfigureSubmissionForm(submission.Solution);
            const string requestEndpoint = "api/fiddles";

            var stringContent = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
            var response      = await _httpClient.PostAsync(requestEndpoint, stringContent);

            var result = new SubmissionResponse();

            if (response.StatusCode != HttpStatusCode.OK)
            {
                result.Response =
                    $@"Failed to execute API request. Here is an answer from API:
Response Code: {response.StatusCode}, Response Body: {response.Content}";
                result.IsSubmissionAccepted = false;
            }
            else
            {
                var unparsedResponse = await response.Content.ReadAsStringAsync();

                var executionResult = JsonConvert.DeserializeObject <FiddleExecuteResult>(unparsedResponse);
                if (!executionResult.HasErrors && !executionResult.HasCompilationErrors)
                {
                    result = _submissionsRepository.SaveNewSubmission(submission, executionResult.ConsoleOutput);
                }
                else
                {
                    result.Response             = executionResult.ConsoleOutput;
                    result.IsSubmissionAccepted = false;
                }
            }

            return(result);
        }
Esempio n. 4
0
        public void SyncSubmitPositionTest()
        {
            // Test that submitting a score returns proper position
            SubmissionResponse r1 = lb.SubmitScore(uniqueLevelName, new Score(1, "abc", "xyz"));
            SubmissionResponse r2 = lb.SubmitScore(uniqueLevelName, new Score(3, "abc", "xyz"));
            SubmissionResponse r3 = lb.SubmitScore(uniqueLevelName, new Score(2, "abc", "xyz"));

            // Confirm the returned positions
            Assert.AreEqual(r1.position, 1);
            Assert.AreEqual(r2.position, 2);
            Assert.AreEqual(r3.position, 2);
        }
Esempio n. 5
0
        public async Task <SubmissionResponse> SaveTable(Table table, bool isUpdate)
        {
            var tableCollection = mongoService.GetCollection <Table>(Constants.Collections.TablesCollection);

            var update = Builders <Table> .Update
                         .Set(m => m.ModifiedOn, table.ModifiedOn)
                         .Set(m => m.ModifiedBy, table.ModifiedBy)
                         .SetIfNotEmpty(m => m.TableNumber, table.TableNumber);

            if (!isUpdate)
            {
                update = update.SetIfNotEmpty(m => m.CreatedOn, table.CreatedOn)
                         .SetIfNotEmpty(m => m.CreatedBy, table.CreatedBy);
            }

            await tableCollection.UpdateOneAsync(table.Id.ToIdFilter <Table>(), update, new UpdateOptions { IsUpsert = true });

            return(SubmissionResponse.Ok(table));
        }
Esempio n. 6
0
        public async Task <ActionResult <SubmissionResponse> > PatchEmployee([FromBody] Employee request)
        {
            var command = commandFactory.PatchEmployeeCommand(request);

            logger.LogTrace("Validating command");

            var validationResult = Validate(command);

            if (validationResult.IsFailure)
            {
                return(BadRequest(this.ModelState));
            }

            var result = await mediator.Send(command).ConfigureAwait(false);

            if (result.IsFailure)
            {
                return(this.Ok(SubmissionResponse.ForFailure(result.Error)));
            }

            return(this.Ok(SubmissionResponse.ForSuccess()));
        }
Esempio n. 7
0
        public SubmissionResponse SubmitText(string text)
        {
            SubmissionResponse finalResult = null;

            var dirProcess      = GetRandomDirectionalProcess();
            var originalProcess = dirProcess;

            var retry         = false;
            var retryCountMax = 3;
            var retryCount    = 0;

            do
            {
                finalResult = SubmitTextInternal(dirProcess, _grid.Width, text);

                // If it inserted successfully, then do not retry.
                retry = !finalResult.Success;

                if (retry)
                {
                    var nextDir = dirProcess.GetNextDirection();

                    // If we've reached the original direction in the retry loop, then quit.
                    if (nextDir == originalProcess.Direction)
                    {
                        retryCount++;

                        if (retryCount == retryCountMax)
                        {
                            break;
                        }
                    }

                    dirProcess = GetDirectionProcess(nextDir);
                }
            } while (retry);

            return(finalResult);
        }
Esempio n. 8
0
 public IActionResult AddMovies(SubmissionResponse onSubmit)
 {
     TempStorage.AddSubmission(onSubmit);
     return(View("Confirmation", onSubmit));
 }
 public SubmissionRejected(Submission submission, SubmissionResponse response)
 {
     Submission = submission;
     Response   = response;
 }
Esempio n. 10
0
 public static ActionResult <SubmissionResponse> GetSubmissionResponse(this ControllerBase controller, SubmissionResponse result) =>
 result.ToOption()
 .Where(m => m.Success)
 .Select(m => (ActionResult <SubmissionResponse>)controller.Ok(result))
 .DefaultIfEmpty(controller.BadRequest(result))
 .Single();
 public SubmissionApproved(Submission submission, SubmissionResponse response)
 {
     Submission = submission;
     Response   = response;
 }