public async Task <string> GetApiQnAList()
        {
            string kb  = User.Identity.GetSpecificKnowledgebaseId();
            string key = User.Identity.GetSpecificSubscriptionKeyAzure();
            string uri = User.Identity.GetUriBaseQnA();

            var qnaModels = new QnAListCreate();

            var onlyQuery      = "";
            var metadataString = "";

            var response = await qnaConn.QnaAnswer("", 2, kb, key, uri);

            RootObject datalist = JsonConvert.DeserializeObject <RootObject>(response);

            qnaModels.QnaModelLists.Clear();


            foreach (var list in datalist.qnaDocuments)
            {
                var qnAModel = new QnaQuestionModel
                {
                    IdQna     = list.id,
                    Preguntas = new List <string>()
                };



                foreach (var question in list.questions)
                {
                    onlyQuery = question;
                    qnAModel.Preguntas.Add(question);
                }

                foreach (var metadata in list.metadata)
                {
                    metadataString = metadata.name + ":" + metadata.value;
                }

                qnAModel.Pregunta = onlyQuery;

                qnAModel.Respuesta = list.answer;

                qnAModel.Metadata = metadataString;

                qnaModels.QnaModelLists.Add(qnAModel);
            }

            var jsonConvert = JsonConvert.SerializeObject(qnaModels.QnaModelLists.ToList());

            return(jsonConvert);
        }
        public async Task <JsonResult> SendQuestionAndAnswer(QnaQuestionModel question)
        {
            string        kb             = User.Identity.GetSpecificKnowledgebaseId();
            string        key            = User.Identity.GetSpecificSubscriptionKeyAzure();
            string        uri            = User.Identity.GetUriBaseQnA();
            List <string> listQuery      = new List <string>();
            int           company        = User.Identity.GetCompanyId();
            string        MetadataSelect = "";

            foreach (var datos in question.Preguntas)
            {
                listQuery.Add("'" + datos.ToString() + "'");
            }

            if (question.MetadataSelect == 1)
            {
                MetadataSelect = "{'name': 'feedback', 'value': 'true'}";
            }
            else if (question.MetadataSelect == 2)
            {
                MetadataSelect = "{'name': 'context', 'value': 'ticketca'}";
            }
            else if (question.MetadataSelect == 3)
            {
                MetadataSelect = "{'name': 'autoagent', 'value': 'true'}";
            }
            else
            {
                MetadataSelect = "";
            }

            string addListQuery = string.Join(",", listQuery.ToArray());

            string finalAnswer = @"{'add': {'qnaList': [{'id': 0,'answer': '" + question.Respuesta + "','source': ' QnADataBaseCompany#" + company + "','questions': [" + addListQuery + "],'metadata': [" + MetadataSelect + "]}]}}";

            await qnaConn.QnaAnswer(finalAnswer, 1, kb, key, uri);

            return(Json(new { success = true, message = "Se ha agregado la pregunta correctamente" }, JsonRequestBehavior.AllowGet));
        }
        public async Task <ActionResult> GetData(string Preguntas)
        {
            var qnaModels = new QnAListEdit();
            var onlyQuery = "";

            var     an   = "";
            dynamic json = JsonConvert.DeserializeObject(Preguntas);

            foreach (var item in json)
            {
                an = item;
            }

            int    valueMetadata = 0;
            int    company       = User.Identity.GetCompanyId();
            string kb            = User.Identity.GetSpecificKnowledgebaseId();
            string key           = User.Identity.GetSpecificSubscriptionKey();
            string uri           = User.Identity.GetUriBaseQnA();

            string questionJSON = @"{'question': '" + an + "'}";

            var response = await qnaConn.GetData(questionJSON, kb, key, uri);

            var acceptableAnswers = from answerFinal in response.ToList()
                                    where answerFinal.Score == 100
                                    orderby answerFinal.Score descending
                                    select answerFinal;


            foreach (var list in acceptableAnswers.ToList())
            {
                var qnAModel = new QnaQuestionModel
                {
                    IdQna     = list.Id,
                    Preguntas = new List <string>()
                };

                foreach (var metadata in list.Metadata)
                {
                    string stringMeta = metadata.ToString().Replace("\r\n", string.Empty);

                    if (stringMeta == "{  \"name\": \"feedback\",  \"value\": \"true\"}")
                    {
                        valueMetadata = 1;
                    }
                    else if (stringMeta == "{  \"name\": \"context\",  \"value\": \"ticketca\"}")
                    {
                        valueMetadata = 2;
                    }
                    else if (stringMeta == "{  \"name\": \"autoagent\",  \"value\": \"true\"}")
                    {
                        valueMetadata = 3;
                    }
                    else
                    {
                        valueMetadata = 0;
                    }

                    qnAModel.MetadataSelect = valueMetadata;
                }

                foreach (var question in list.Questions)
                {
                    qnAModel.Preguntas.Add($"<input type='text' id='PreguntasE' name='PreguntasE[]' class='form-control' placeholder='IntenciĆ³n-Entidad' value='{question}'/>");
                }

                qnAModel.Respuesta = list.AnswerText;

                qnaModels.QnaModelListEdit.Add(qnAModel);
            }

            return(View(qnaModels));
        }