public IHttpActionResult CodeAnswerCheck(CodeAnswerDTO codeAnswerDTO)
        {
            try
            {
                CSharpCodeProvider provider = new CSharpCodeProvider();
                CompilerParameters cp       = new CompilerParameters
                {
                    GenerateInMemory = true,
                };

                string          code          = codeAnswerDTO.CodeAnswerText;
                CompilerResults compileResult = provider.CompileAssemblyFromSource(cp, code);

                if (compileResult.Errors.Count > 0)
                {
                    codeAnswerDTO.CodeAnswerText = "ERROR\r\n";
                    compileResult.Errors.Cast <CompilerError>().ToList()
                    .ForEach(error => codeAnswerDTO.CodeAnswerText += error.ErrorText + "\r\n");
                    codeAnswerDTO.IsRight = false;
                }
                else
                {
                    codeAnswerDTO.CodeAnswerText = "Compile succeeded \r\n";
                    CodeAnswerTests codeAnswerTests = new CodeAnswerTests();
                    bool            isAnswerRight   = codeAnswerTests.IsAnswerRight(codeAnswerDTO.CardId, compileResult);
                    if (isAnswerRight)
                    {
                        codeAnswerDTO.CodeAnswerText += "Your answer is correct";
                        codeAnswerDTO.IsRight         = true;
                    }
                    else
                    {
                        codeAnswerDTO.CodeAnswerText += "Your answer is uncorrect";
                        codeAnswerDTO.IsRight         = false;
                    }
                }

                return(Ok(codeAnswerDTO));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#2
0
        public JsonResult Compile(CodeRequestDTO codeRequest)
        {
            try
            {
                IOrangeLanguage dstLanguage =
                    compiler.GetConcreteLanguageImplementation(codeRequest.DstLanguage);

                string compiledCode = compiler.Compile(dstLanguage, codeRequest.Code);

                CodeAnswerDTO translatedCode = new CodeAnswerDTO(compiledCode);

                return(Json(translatedCode));
            }
            catch (Exception ex)
            {
                // Log something somewhere ...maybe later
                return(Json(new CodeAnswerDTO("Error", ex.Message)));
            }
        }