public async Task <IActionResult> OnPost()
        {
            try {
                var unparsedTableauInput = FormResolver.ResolveForm(HttpContext.Request.Form);
                var(tableauInput, errorForm) = ConversionService.ParseTableauInput(unparsedTableauInput);

                if (errorForm.HasErrorResponse())
                {
                    ErrorResponseForm = errorForm;
                    return(Page());
                }

                var tableauSolution = TableauSolutionService.ComputeTableauSolution(tableauInput);
                EventService.LogTableauSolution(tableauSolution);

                var userRequest = new AppSolutionRequest()
                {
                    TableauType         = TableauSolutionCategorizer.CategorizeTableauSolution(tableauSolution.SolutionNode),
                    ExpectedTableauType = unparsedTableauInput.ExpectedTableauType,
                    SolutionId          = tableauSolution.SolutionId
                };

                HttpContext.Session.SetString(SolutionName, JsonConvert.SerializeObject(tableauSolution));
                HttpContext.Session.SetString(RequestName, JsonConvert.SerializeObject(userRequest));

                await EventService.CreateAppSolutionRequest(userRequest, HttpContext.User);

                return(RedirectToPage("SolutionView",
                                      new { isSession = true, solutionViewType = SolutionViewType.Text }));
            }
            catch (FormResolverException) {
                return(RedirectToPage("../Error"));
            }
        }
 public TableauRequestModel(FormResolver formResolver)
 {
     FormResolver = formResolver;
 }