//----------------------- //-----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)); }