Exemplo n.º 1
0
        //-----------------------
        //-----End of dialog-----
        //-----------------------
        private async Task <DialogTurnResult> EndSearchDialogStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var crmState = await _accessors.CRMStateAccessor.GetAsync(stepContext.Context, () => new CRMState(), cancellationToken);

            var luisState = await _accessors.LuisStateAccessor.GetAsync(stepContext.Context, () => new LuisState(), cancellationToken);

            var userState = await _accessors.LoggedUserAccessor.GetAsync(stepContext.Context, () => new LoggedUserState(), cancellationToken);

            //Finalizing the created opportunity
            crmState.Opportunity.ChangeStatusBasedOnName(OpportunityStatus.Open.Name);
            crmState.Opportunity.OwnerId = userState.LoggedUser.Id;

            var message = string.Empty;

            //Posting the created opportunity
            try
            {
                await _opportunityService.PostOpportunityAsync(userState.LoggedUser.Token, crmState.Opportunity);

                message = $"{ CulturedBot.SayOpportunityWasCreated} {CulturedBot.AskForRequestAgain}";
            }
            catch (OpportunityNotCreatedException ex)
            {
                //TODO add message to resx
                message = "La création de l'opportunité a échoué";
            }

            var activity = MessageFactory.Text(message, message, InputHints.AcceptingInput);

            activity.Locale = CulturedBot.Culture?.Name;
            await stepContext.Context.SendActivityAsync(activity, cancellationToken);

            crmState.ResetOpportunity();
            luisState.ResetAll();
            await _accessors.CRMStateAccessor.SetAsync(stepContext.Context, crmState, cancellationToken);

            await _accessors.LuisStateAccessor.SetAsync(stepContext.Context, luisState, cancellationToken);

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