public HospitalCaracteristicsFindingDialog(InfoCategorieDialog infoCategorieDialog, HospitalInfoRecognizer luisRecognizer, UserState userState, SelectionHospitalDialog selectionHospitalDialog, ProvinceSelectionDialog provinceSelectionDialog, CommuneSelectionDialog communeSelectionDialog, CategorieSelectionDialog categorieSelectionDialog)
            : base(luisRecognizer, nameof(HospitalCaracteristicsFindingDialog), infoCategorieDialog)
        {
            InitialDialogId = nameof(HospitalCaracteristicsFindingDialog);
            _userState      = userState;
            lesDonnees      = new DonneesExcel();
            lesHopitaux     = new List <Hopitaux>();

            AddDialog(provinceSelectionDialog);
            AddDialog(communeSelectionDialog);
            AddDialog(categorieSelectionDialog);
            AddDialog(selectionHospitalDialog);
            AddDialog(new ChoicePrompt(DialogIds.CaracteristicOptionPrompt));
            AddDialog(new ChoicePrompt(DialogIds.SelectionContinue));
            AddDialog(new TextPrompt(DialogIds.HospitalPrompt, VerificationHospital));
            AddDialog(new WaterfallDialog(InitialDialogId, new WaterfallStep[]
            {
                InstroHospitalCaracteristicsFindingStep,
                AnswerRequestAnalysisStep,
                SelectionProcessStep,
                SelectionProcessConfirmStep,
                RepeatProcessStep,
                ShowResultStep,
            }));
        }
Beispiel #2
0
        private async Task <DialogTurnResult> ShowLocalisationStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            DonneesExcel    lesDonnees = new DonneesExcel();
            List <Hopitaux> lesHopitaux;

            lesHopitaux = lesDonnees.TrouverHopital(hospitalName);

            var localisationType = ((FoundChoice)stepContext.Result).Value;
            var message          = "";

            switch (localisationType)
            {
            case "Préfecture/Province":
                message = "";
                for (int i = 0; i < lesHopitaux.Count; i++)
                {
                    message += $"La province de l'hôpital {hospitalName} est : {lesHopitaux[i].Province}" + "\n";
                }
                await stepContext.Context.SendActivityAsync(MessageFactory.Text(message));

                break;

            case "Ville/Commune":
                message = "";
                for (int i = 0; i < lesHopitaux.Count; i++)
                {
                    message += $"La commune de l'hôpital {hospitalName} est : {lesHopitaux[i].Commune}" + "\n";
                }
                await stepContext.Context.SendActivityAsync(MessageFactory.Text(message));

                break;

            case "Tout":
                message = "";
                for (int i = 0; i < lesHopitaux.Count; i++)
                {
                    message += $"La commune de l'hôpital {hospitalName} est : {lesHopitaux[i].Commune} ; Sa province est : {lesHopitaux[i].Province}" + "\n\n";
                }
                await stepContext.Context.SendActivityAsync(MessageFactory.Text(message));

                break;

            default:
                await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Veuillez entrer un choix valide s'il vous plaît :"));

                return(await ChoiceOptionLocalisationStep(stepContext, cancellationToken));
            }

            return(await stepContext.NextAsync(null, cancellationToken));
        }
 public SelectionHospitalDialog(HospitalInfoRecognizer luisRecognizer, UserState userState, ProvinceSelectionDialog provinceSelectionDialog, CommuneSelectionDialog communeSelectionDialog, CategorieSelectionDialog categorieSelectionDialog, InfoCategorieDialog infoCategorieDialog)
     : base(luisRecognizer, nameof(SelectionHospitalDialog), infoCategorieDialog)
 {
     InitialDialogId = nameof(SelectionHospitalDialog);
     _userState      = userState;
     lesDonnees      = new DonneesExcel();
     lesHopitaux     = new List <Hopitaux>();
     AddDialog(provinceSelectionDialog);
     AddDialog(communeSelectionDialog);
     AddDialog(categorieSelectionDialog);
     AddDialog(new ChoicePrompt(DialogIds.CaracteristicOptionPrompt));
     AddDialog(new WaterfallDialog(InitialDialogId, new WaterfallStep[]
     {
         AnswerRequestAnalysisStep,
         SelectHospitalByCaracteristicsStep,
         ShowSelectionStep,
         EndSelectionStep,
     }));
 }
Beispiel #4
0
        private async Task <DialogTurnResult> ShowHospitalStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            if (((FoundChoice)stepContext.Result).Value.Equals("Oui"))
            {
                List <Hopitaux> lesHopitaux = new List <Hopitaux>();
                DonneesExcel    lesDonnees  = new DonneesExcel();
                lesHopitaux = lesDonnees.TrouverLocalisation(localisation);
                string message = "";
                for (int i = 0; i < lesHopitaux.Count; i++)
                {
                    message += lesHopitaux[i].Nom_Etab + " \n ";
                }
                await stepContext.Context.SendActivityAsync(MessageFactory.Text($"Voici les hôpitaux concernés"), cancellationToken);

                await stepContext.Context.SendActivityAsync(MessageFactory.Text($"{message}"), cancellationToken);

                return(await stepContext.NextAsync(null, cancellationToken));
            }
            return(await stepContext.EndDialogAsync(null, cancellationToken));
        }
        private async Task <DialogTurnResult> InstroHospitalCaracteristicsFindingStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            DonneesExcel donneesExcel = new DonneesExcel();

            if (stepContext.Options != null)
            {
                //Enregistrement du Nom d'Hôpital Détecté
                hospitalName = "";
                var hospitalNameDetected = (String[])stepContext.Options;
                for (int i = 0; i < hospitalNameDetected.Length; i++)
                {
                    hospitalName += hospitalNameDetected[i];
                }
            }

            if (String.IsNullOrEmpty(hospitalName))
            {
                // Asking Hospital Name
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text("Veuillez entrer le nom de l'hôpital."),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais le nom de l'hôpital entré n'est pas enregistré dans notre base de donnée. Veuillez s'il vous plaît entrer un nom valide."),
                };

                return(await stepContext.PromptAsync(DialogIds.HospitalPrompt, promptOptions, cancellationToken));
            }
            else if (!donneesExcel.ExistHopital(hospitalName))
            {
                // Asking Hospital Name.
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text($"L'Hôpital {hospitalName} n'existe pas dans notre base de donnée. Veuillez entrer un nom d'Hôpital valide"),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais cet hôpital ou centre de santé n'est pas enregistré dans notre base de donnée. Veuillez s'il vous plaît entrer une localisation valide."),
                };
                return(await stepContext.PromptAsync(DialogIds.HospitalPrompt, promptOptions, cancellationToken));
            }

            return(await stepContext.NextAsync(hospitalName, cancellationToken));
        }
        private async Task <DialogTurnResult> IntroInfoCategorieStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            DonneesExcel donneesExcel = new DonneesExcel();

            if (stepContext.Options != null)
            {
                //Récupération de la catégorie identifiée
                categorie = "";
                var CategorieDetected = (String[])stepContext.Options;
                for (int i = 0; i < CategorieDetected.Length; i++)
                {
                    categorie += CategorieDetected[i];
                }
            }

            if (String.IsNullOrEmpty(categorie))
            {
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text("Veuillez entrer l'acronyme de la catégorie sur laquelle vous voulez vous informer."),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais cette catégorie n'est pas enregistrée dans notre base de donnée. Veuillez s'il vous plaît entrer une catégorie valide."),
                };

                return(await stepContext.PromptAsync(DialogIds.notifyCategoriePrompt, promptOptions, cancellationToken));
            }
            else if (!donneesExcel.ExistCategorie(categorie))
            {
                // Asking Localisation.
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text($"La catégorie {categorie} n'existe pas dans notre base de donnée. Veuillez entrer une catégorie valide"),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais cette catégorie n'est pas enregistrée dans notre base de donnée. Veuillez s'il vous plaît entrer une catégorie valide."),
                };
                return(await stepContext.PromptAsync(DialogIds.notifyCategoriePrompt, promptOptions, cancellationToken));
            }

            return(await stepContext.NextAsync(categorie, cancellationToken));
        }
Beispiel #7
0
        private async Task <DialogTurnResult> IntroHospitalFindingStep(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            DonneesExcel donneesExcel = new DonneesExcel();

            if (stepContext.Options != null)
            {
                localisation = "";
                var localisationDetected = (String[])stepContext.Options;
                for (int i = 0; i < localisationDetected.Length; i++)
                {
                    localisation += localisationDetected[i];
                }
            }

            if (String.IsNullOrEmpty(localisation))
            {
                // Asking Localisation.
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text("Veuillez entrer une province, préfecture ou ville."),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais la localisation entrée n'est pas enregistrée dans notre base de donnée. Veuillez s'il vous plaît entrer une localisation valide."),
                };
                return(await stepContext.PromptAsync(DialogIds.localisationPrompt, promptOptions, cancellationToken));
            }
            else if (!donneesExcel.ExistLocalisationHopital(localisation))
            {
                // Asking Localisation.
                var promptOptions = new PromptOptions
                {
                    Prompt      = MessageFactory.Text($"La localisation {localisation} n'existe pas dans notre base de donnée. Veuillez entrer une localisation valide"),
                    RetryPrompt = MessageFactory.Text("Je suis désolé, mais la localisation entrée n'est pas enregistrée dans notre base de donnée. Veuillez s'il vous plaît entrer une localisation valide."),
                };
                return(await stepContext.PromptAsync(DialogIds.localisationPrompt, promptOptions, cancellationToken));
            }

            return(await stepContext.NextAsync(localisation, cancellationToken));
        }
Beispiel #8
0
        private static Task <bool> VerificationHospital(PromptValidatorContext <string> promptContext, CancellationToken cancellationToken)
        {
            var donneesExcel = new DonneesExcel();

            return(Task.FromResult(promptContext.Recognized.Succeeded && donneesExcel.ExistHopital(promptContext.Recognized.Value)));
        }