// 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(); }
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); }