// Fetch the Questionnaire.
        private async Task FetchQuestionnaire()
        {
            // Send token with Http request
            apiRequestHelper.SetTokenHeader();
            // Send a GET request to the API.
            string apiResponse = await apiRequestHelper.GetRequest(Constants.questionnaireUrl + "/" + questionnaireId);

            if (apiResponse != null)
            {
                // Convert the API response into a JSON object.
                dynamic convertedJson = JsonConvert.DeserializeObject(apiResponse);

                // Save all the answers.
                List <AnswerGetViewModel> answers = new List <AnswerGetViewModel>();
                dynamic answersJson = convertedJson.answers;
                foreach (var answer in answersJson)
                {
                    answers.Add(new AnswerGetViewModel
                    {
                        QuestionId = (int)answer.questionId,
                        Question   = (string)answer.question,
                        Answer     = (string)answer.answer
                    });
                }

                // Create a new object from the questionnaire.
                questionnaire = new QuestionnaireGetViewModel
                {
                    Time      = (DateTime)convertedJson.time,
                    Client_id = (string)convertedJson.client_id,
                    Redflag   = (bool)convertedJson.redflag,
                    Answers   = answers
                };
            }
            else
            {
                DisplayAlert("Error", "Sorry, something went wrong. Please try again later.", "Okay");
            }

            // Update the view.
            UpdateView();
        }
コード例 #2
0
        public QuestionnaireGetViewModel GetViewModel(string language)
        {
            var questionnaire = new QuestionnaireGetViewModel()
            {
                Id        = _questionnaireStoreModel.Id,
                Category  = _questionnaireStoreModel.Category,
                Version   = _questionnaireStoreModel.Version,
                Questions = new Collection <FormlyQuestionGetView>(),
            };

            foreach (var question in _questionnaireStoreModel.Questions)
            {
                var viewModelQuestion = new FormlyQuestionGetView()
                {
                    Id              = question.Id,
                    Key             = question.Name,
                    Type            = question.Type,
                    Version         = question.Version,
                    TemplateOptions = new TemplateOptionsGetView()
                };
                foreach (var template in question.QuestionTemplate)
                {
                    if (String.Equals(template.Language, language, StringComparison.CurrentCultureIgnoreCase))
                    {
                        viewModelQuestion.TemplateOptions.Id              = template.Id;
                        viewModelQuestion.TemplateOptions.Description     = template.Description;
                        viewModelQuestion.TemplateOptions.Label           = template.Label;
                        viewModelQuestion.TemplateOptions.Language        = template.Language;
                        viewModelQuestion.TemplateOptions.Placeholder     = template.Placeholder;
                        viewModelQuestion.TemplateOptions.Type            = template.InputType;
                        viewModelQuestion.TemplateOptions.Multiple        = template.AllowedToSelectMultipleOptions;
                        viewModelQuestion.TemplateOptions.SelectAllOption = template.SelectAllOption;
                        viewModelQuestion.TemplateOptions.Options         = new Collection <FormlyOption>();

                        foreach (var options in template.Options)
                        {
                            var option = new FormlyOption()
                            {
                                Id    = options.Id,
                                Value = options.Value,
                                Label = options.Label
                            };
                            viewModelQuestion.TemplateOptions.Options.Add(option);
                        }

                        viewModelQuestion.ExpressionProperties = new Dictionary <string, string>();
                        questionnaire.Questions.Add(viewModelQuestion);
                    }
                }

                foreach (var questionRule in _questionnaireStoreModel.QuestionRules)
                {
                    foreach (var viewQuestion in questionnaire.Questions)
                    {
                        if (viewQuestion.Key.ToLower() == questionRule.Name.ToLower())
                        {
                            if (questionRule.ExpressionModel.Count != 0)
                            {
                                foreach (var y in questionRule.ExpressionModel)
                                {
                                    viewQuestion.ExpressionProperties.Add(y.Key, y.Expression);
                                }
                            }
                            viewQuestion.HideExpression = questionRule.HideQuestion;
                            viewQuestion.Required       = questionRule.Required;
                        }
                    }
                }
            }
            return(questionnaire);
        }