public string GetSurveySchema()

in certified-connectors/Spring Global/script.csx [109:179]


    public string GetSurveySchema(JObject surveyJson)
    {
        JObject resultJson = new JObject();
        JObject firstLevelJson = new JObject();
        firstLevelJson["type"] = "object";
        firstLevelJson["description"] = $"Survey execution (object)";

        JObject resultBodyJson = new JObject();
        SetSimpleProperty(resultBodyJson, "Id", "Execution Id", "Execution Id", "string", null);
        SetSimpleProperty(resultBodyJson, "SurveyId", "Surver Id", "Surver Id", "string", null);
        SetSimpleProperty(resultBodyJson, "SurveyName", "Survey name", "Survey name", "string", null);
        SetSimpleProperty(resultBodyJson, "Date", "Execution date", "Execution date", "string", "date-time");
        SetSimpleProperty(resultBodyJson, "UserId", "User Id", "User Id", "string", null);

        List<JToken> questions = surveyJson.SelectTokens("$..parameters[:10000]").ToList();
        int i = 0;

        foreach (JObject question in questions)
        {
            i++;
            int order = i;
            string questionText = question.Value<string>("name");
            string questionType = (string)question.SelectToken("parameterType.code");
            SetSimpleProperty(resultBodyJson, $"Question{order}", $"Question {order} Text", questionText, "string", null);

            switch (questionType)
            {
                case "CHR":
                    SetSimpleProperty(resultBodyJson, $"Answer{order}", $"Question {order} Answer (Text)", questionText, "string", null);
                    break;
                case "NUM":
                    SetSimpleProperty(resultBodyJson, $"Answer{order}", $"Question {order} Answer (Numeric)", questionText, "number", null);
                    break;
                case "SCO":
                    SetSimpleProperty(resultBodyJson, $"Answer{order}", $"Question {order} Answer (Scale)", questionText, "integer", null);
                    break;
                case "RAD":
                    JObject answerJson1 = SetSimpleProperty(resultBodyJson, $"Answer{order}", $"Question {order} Answer (Single Choice)", questionText, "object", null);
                    JObject radJson = new JObject();
                    SetSimpleProperty(radJson, "id", $"Selected choice id", questionText, "string", null);
                    SetSimpleProperty(radJson, "text", $"Selected choice title", questionText, "string", null);
                    answerJson1["properties"] = radJson;
                    break;
                case "CHK":
                    JObject answerJson2 = SetSimpleProperty(resultBodyJson, $"Answer{order}", $"Question {order} Answer (Checkbox)", questionText, "object", null);

                    JObject answerJson2Options = new JObject();
                    JArray optionsJson = (JArray)question["options"];

                    int optionNumber = 0;
                    foreach (JObject optionJson in optionsJson)
                    {
                        optionNumber++;
                        string optionText = optionJson.Value<string>("text");
                        SetSimpleProperty(answerJson2Options, $"Option{optionNumber}Text", $"Option {optionNumber} text", $"{optionText}{Environment.NewLine}{questionText}", "string", null);
                        SetSimpleProperty(answerJson2Options, $"Option{optionNumber}Checked", $"Option {optionNumber} is selected",$"Is selected '{optionText}'{Environment.NewLine}{questionText}", "boolean", null);
                        SetSimpleProperty(answerJson2Options, $"Option{optionNumber}Id", $"Option {optionNumber} id", $"Option {optionNumber} ID{Environment.NewLine}{questionText}", "boolean", null);
                    }

                    answerJson2["properties"] = answerJson2Options;
                    break;
                //case "IMG":
                default:
                    break;
            }
        }

        firstLevelJson["properties"] = resultBodyJson;
        resultJson["schemaDefinition"] = firstLevelJson;
        return resultJson.ToString();
    }