Exemple #1
0
        private string AddReadLine(GenericCodeSkeletonDto skeleton)
        {
            var readLines     = skeleton.ReadLine;
            var withReadLines = skeleton.Skeleton.Replace("{read}", readLines);

            return(withReadLines);
        }
Exemple #2
0
        private string GenerateReadSkeleton(TaskDto task, GenericCodeSkeletonDto genericSkeleton)
        {
            string skeleton;

            if (task.InputType.Equals("Standart"))
            {
                skeleton = AddReadLine(genericSkeleton);
            }
            else if (task.InputType.Equals("String"))
            {
                skeleton = AddReadLine(genericSkeleton);
            }
            else if (task.InputType.Equals("Line of integers"))
            {
                skeleton = AddReadLineOfIntegers(genericSkeleton);
            }
            else if (task.InputType.Equals("Integer"))
            {
                skeleton = AddReadInteger(genericSkeleton);
            }
            else if (task.InputType.Equals("Two lines (first integer, second list of integers)"))
            {
                skeleton = AddTwoLinesRead(genericSkeleton);
            }
            else if (task.InputType.Equals("First line says how many lines of integers"))
            {
                skeleton = AddMultiReadLines(genericSkeleton);
            }
            else
            {
                skeleton = genericSkeleton.Skeleton.Replace("{read}", "");
            }
            return(skeleton);
        }
        public async Task <CodeSkeletonDto> GetCodeSkeleton(string userEmail, int taskId, string language)
        {
            if (userEmail != null)
            {
                var solution = _solutionRepository.GetSolution(userEmail, taskId);

                if (solution != null)
                {
                    var languages    = _compiler.GetLanguages();
                    var languageCode = languages.Codes.FirstOrDefault(c => c.Value == solution.Language).Key;

                    if (languageCode.Equals(language.ToLower()) || language.Equals("undefined"))
                    {
                        return new CodeSkeletonDto
                               {
                                   Language = languageCode.Replace(" ", string.Empty),
                                   Skeleton = solution.Source
                               }
                    }
                    ;
                }
            }

            if (language.Equals("undefined"))
            {
                language = "Java";
            }

            /* var umbracoApiUrl = _iconfiguration["UmbracoApiUrl"];
             * var client = new RestClient(umbracoApiUrl);
             *
             * var request = new RestRequest("codeskeleton/get/{language}", Method.GET);
             * request.AddUrlSegment("language", language);
             *
             * TaskCompletionSource<GenericCodeSkeletonDto> taskCompletion = new TaskCompletionSource<GenericCodeSkeletonDto>();
             * client.ExecuteAsync<GenericCodeSkeletonDto>(request, response =>
             * {
             *   if (response.StatusCode != System.Net.HttpStatusCode.OK)
             *       throw new ArgumentException("Error getting code skeleton");
             *   taskCompletion.SetResult(response.Data);
             * });
             *
             * var codeSkeletonDto = await taskCompletion.Task;
             */
            var codeSkeletonDto = new GenericCodeSkeletonDto
            {
                Language = "Java",
                Skeleton = "yoooooo",
            };

            var task = await _taskRepository.GetCachedTaskByIdAsync(taskId);

            var skeleton = GenerateCodeSkeletonForTask(task, codeSkeletonDto);

            return(new CodeSkeletonDto
            {
                Language = language.ToLower().Replace(" ", string.Empty),
                Skeleton = skeleton.Replace("\\\n", "\\n")
            });
        }
Exemple #4
0
        private string AddTwoLinesRead(GenericCodeSkeletonDto skeleton)
        {
            var readLines = skeleton.ReadInteger;

            readLines += "\n" + skeleton.ReadLineOfIntegers;
            var withReadLines = skeleton.Skeleton.Replace("{read}", readLines);

            return(withReadLines);
        }
        public async Task <CodeSkeletonDto> GetCodeSkeleton(LanguageDto languages, string userEmail, int taskId, string language)
        {
            if (userEmail != null)
            {
                var solution = _solutionRepository.GetSolution(userEmail, taskId);

                if (solution != null)
                {
                    var languageCode = languages.Codes.FirstOrDefault(c => c.Value == solution.Language).Key;

                    if (languageCode.Equals(language.ToLower()) || language.Equals("undefined"))
                    {
                        return new CodeSkeletonDto
                               {
                                   Language = languageCode.Replace(" ", string.Empty),
                                   Skeleton = solution.Source
                               }
                    }
                    ;
                }
            }

            if (language.Equals("undefined"))
            {
                language = "Java";
            }

            var codeSkeletonEntity  = _dbContext.CodeSkeletons.FirstOrDefault(x => x.Language.Equals(language, StringComparison.CurrentCultureIgnoreCase));
            var genericCodeSkeleton = new GenericCodeSkeletonDto();

            if (codeSkeletonEntity == null)
            {
                genericCodeSkeleton.Language = language;
                genericCodeSkeleton.Skeleton = string.Empty;
            }
            else
            {
                genericCodeSkeleton.Language = language;
                genericCodeSkeleton.Skeleton = codeSkeletonEntity.Skeleton;
                genericCodeSkeleton.ReadInputIntegerNumberOfLinesOfIntegers = codeSkeletonEntity.ReadInputIntegerNumberOfLinesOfIntegers.Replace("\\n", "\n");
                genericCodeSkeleton.ReadLine           = codeSkeletonEntity.ReadLine.Replace("\\n", "\n");
                genericCodeSkeleton.ReadInteger        = codeSkeletonEntity.ReadInteger.Replace("\\n", "\n");
                genericCodeSkeleton.WriteLine          = codeSkeletonEntity.WriteLine;
                genericCodeSkeleton.ReadLineOfIntegers = codeSkeletonEntity.ReadLineOfIntegers.Replace("\\n", "\n");
            }

            var task = await _taskRepository.GetTaskInputType(taskId);

            var skeleton = GenerateReadSkeleton(task, genericCodeSkeleton);

            return(new CodeSkeletonDto
            {
                Language = language.ToLower().Replace(" ", string.Empty),
                Skeleton = skeleton.Replace("\\\n", "\\n")
            });
        }
Exemple #6
0
        private string AddMultiReadLines(GenericCodeSkeletonDto skeleton)
        {
            var readLines = skeleton.ReadInteger;

            readLines += "\n" + skeleton.ReadInputIntegerNumberOfLinesOfIntegers;

            var withReadLines = skeleton.Skeleton.Replace("{read}", readLines);

            return(withReadLines);
        }
Exemple #7
0
        public string GenerateCodeSkeletonForTask(TaskDto task, GenericCodeSkeletonDto genericSkeleton)
        {
            var skeleton = GenerateReadSkeleton(task, genericSkeleton);

            return(skeleton);
        }