public IActionResult GenerateUserSpecifiedMixedWorksheet([FromBody] MixedWorksheetParameters parameters)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ControllerTryCatchBlocks.ReturnBadRequestOnFailedToGenerateExceptionLoggingAllOthers(logger, () =>
            {
                var questionGenerators = new List <IQuestionGenerator <IQuestion> >();
                foreach (var parameter in parameters.Parameters)
                {
                    if (parameter.QuestionType == "quadratic")
                    {
                        var serialisedParameter = JsonConvert.SerializeObject(parameter.Parameter);
                        var quadraticParameter = JsonConvert.DeserializeObject(serialisedParameter, typeof(QuadraticEquationGeneratorParameters));

                        questionGenerators.Add(new QuadraticEquationGenerator(
                                                   randomIntegerGenerator, (QuadraticEquationGeneratorParameters)quadraticParameter));
                    }
                    else if (parameter.QuestionType == "simultaneous")
                    {
                        var serialisedParameter = JsonConvert.SerializeObject(parameter.Parameter);
                        var simultaneousParameter = JsonConvert.DeserializeObject(serialisedParameter, typeof(LinearSimultaneousEquationsGeneratorParameters));

                        questionGenerators.Add(new LinearSimultaneousEquationsGenerator(
                                                   randomIntegerGenerator, (LinearSimultaneousEquationsGeneratorParameters)simultaneousParameter));
                    }
                }
                BuildAndSendPdf(questionGenerators, parameters.EmailAddress.Address);
                return Ok(ModelState);
            },
                                                                                                        BadRequest, parameters));
        }
Esempio n. 2
0
 public IActionResult GetQuadraticEquation()
 {
     return(ControllerTryCatchBlocks.LoggingAllExceptions(logger, () =>
     {
         var equationGenerator = new QuadraticEquationGenerator(randomIntegerGenerator);
         return Ok(equationGenerator.GenerateQuestionAndAnswer());
     }));
 }
Esempio n. 3
0
        public IActionResult GetPolynomialEquation(int degree)
        {
            var x = ControllerTryCatchBlocks.LoggingAllExceptions(logger, () =>
            {
                var equationGenerator = new PolynomialEquationGenerator(randomIntegerGenerator, new PolynomialEquationGeneratorParameters(degree: degree));
                return(Ok(equationGenerator.GenerateQuestionAndAnswer()));
            });

            return(x);
        }
Esempio n. 4
0
        public IActionResult GetQuadraticEquation([FromBody] QuadraticEquationGeneratorParameters parameters)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ControllerTryCatchBlocks.ReturnBadRequestOnFailedToGenerateExceptionLoggingAllOthers(logger, () =>
            {
                var equationGenerator = new QuadraticEquationGenerator(randomIntegerGenerator, parameters);
                return Ok(equationGenerator.GenerateQuestionAndAnswer());
            },
                                                                                                        BadRequest, parameters));
        }
        private IActionResult GenerateDefaultWorksheet(BasicWorksheetGeneratorparameters parameters, IQuestionGenerator <IQuestion> generator)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ControllerTryCatchBlocks.LoggingAllExceptions(logger, () =>
            {
                var generators = Enumerable.Range(0, parameters.NumberOfQuestions)
                                 .Select(t => generator)
                                 .ToList();

                BuildAndSendPdf(generators, parameters.EmailAddress.Address);
                return Ok(ModelState);
            }, new { parameters, generator }));
        }
        private IActionResult GenerateuserSpecifiedWorksheet <TGeneratorParamaters, TQuestion>(
            WorksheetGeneratorParametersWithCustomParameters <TQuestion, TGeneratorParamaters> worksheetParameters,
            Func <TGeneratorParamaters, IQuestionGenerator <IQuestion> > generatorConstructor)
            where TGeneratorParamaters : IValidatableObject
            where TQuestion : IQuestion
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ControllerTryCatchBlocks.ReturnBadRequestOnFailedToGenerateExceptionLoggingAllOthers(logger, () =>
            {
                var generators =
                    worksheetParameters.QuestionGeneratorParameters
                    .Select(parameter => generatorConstructor(parameter))
                    .ToList();

                BuildAndSendPdf(generators, worksheetParameters.EmailAddress.Address);
                return Ok(ModelState);
            },
                                                                                                        BadRequest, worksheetParameters));
        }