private async Task <DialogTurnResult> MostrarOpciones(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            List <string> EstablecimientoSubclaseList = new List <string>();

            EstablecimientoSubclaseDTO establecimientoSubClaseDTO = new EstablecimientoSubclaseDTO()
            {
                co_establecimiento_clase    = "",
                co_establecimiento_subclase = "",
                no_establecimiento_subclase = "",
                fl_inactivo = "0"
            };

            EstablecimientoSubClaseClient establecimientoSubClaseClient = new EstablecimientoSubClaseClient();
            var result = establecimientoSubClaseClient.GetAllAsync(establecimientoSubClaseDTO);

            if (result.error_number == 0)
            {
                foreach (EstablecimientoSubclaseDTO item in result.Data)
                {
                    EstablecimientoSubclaseList.Add(item.no_establecimiento_subclase);
                }
            }

            var options = EstablecimientoSubclaseList.ToList();

            var promptOptions = new PromptOptions
            {
                Prompt  = MessageFactory.Text("Por favor seleccione una **Sub-Clase de Establecimiento**:"),
                Choices = ChoiceFactory.ToChoices(options),
                Style   = ListStyle.List
            };

            // Prompt the user for a choice.
            return(await stepContext.PromptAsync(nameof(ChoicePrompt), promptOptions, cancellationToken));
        }
        private async Task <DialogTurnResult> SetEstablecimientoSubclase(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var choice = (FoundChoice)stepContext.Result;

            if (choice.Value == ExitOption)
            {
                await stepContext.Context.SendActivityAsync(MenuBot.Buttons(0, "En que te puedo ayudar?\n\n puedes utilizar los botones de la parte inferior."), cancellationToken);

                return(await stepContext.EndDialogAsync(cancellationToken : cancellationToken));
            }

            stepContext.Values["co_establecimiento_clase"] = CodigoList[choice.Index];
            stepContext.Values["no_establecimiento_clase"] = choice.Value;


            EstablecimientoSubclaseDTO establecimientoSubClaseDTO = new EstablecimientoSubclaseDTO()
            {
                co_establecimiento_clase    = CodigoList[choice.Index],
                co_establecimiento_subclase = "",
                no_establecimiento_subclase = "",
                fl_inactivo = "0"
            };

            CodigoList.Clear();
            DescripcionList.Clear();

            EstablecimientoSubClaseClient establecimientoSubClaseClient = new EstablecimientoSubClaseClient();
            var result = establecimientoSubClaseClient.GetAllAsync(establecimientoSubClaseDTO);

            if (result.error_number == 0)
            {
                foreach (EstablecimientoSubclaseDTO item in result.Data)
                {
                    CodigoList.Add(item.co_establecimiento_subclase);
                    DescripcionList.Add(item.no_establecimiento_subclase);
                }
            }
            CodigoList.Add("0");
            DescripcionList.Add(ExitOption);

            var options = DescripcionList.ToList();

            var promptOptions = new PromptOptions
            {
                Prompt  = MessageFactory.Text("Por favor seleccione una **Sub-Clase de Establecimiento**:"),
                Choices = ChoiceFactory.ToChoices(options),
                Style   = ListStyle.List
            };

            // Prompt the user for a choice.
            return(await stepContext.PromptAsync(nameof(ChoicePrompt), promptOptions, cancellationToken));
        }