/// <summary>
        /// This method will get executed once sub category will get selected.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        private async Task OnSubOptionSelected(IDialogContext context, IAwaitable <string> result)
        {
            try
            {
                Trace.TraceInformation("AppAuthDialog::OnSubOptionSelected");
                string optionSelected = await result;

                UserProfile userInfo = context.ConversationData.GetValue <UserProfile>(UserSessionDataKey);
                userInfo.CropSubCategory = optionSelected;
                reservationChoice        = optionSelected;
                context.ConversationData.SetValue <UserProfile>(UserSessionDataKey, userInfo);

                IFarmingOperations ihro = ServiceLocator.GetFarmingOperations();

                IList <string> menuOptions = await ihro.GetSearchOptions(optionSelected);

                if (menuOptions.Count > 0)
                {
                    PromptDialog.Choice(context, OnSearchOptionSelected, menuOptions,
                                        "Please choose Search options to serve you better",
                                        "Not a valid option", 2);
                }
                else
                {
                    await context.PostAsync($"Sorry. I haven't trained in this area yet. ");

                    PostQuery(context);
                }
            }
            catch (TooManyAttemptsException ex)
            {
                string fullError = ex.ToString();
                Trace.TraceError(fullError);

                await context.PostAsync($"Sorry, I don't understand.");

                context.Done(true);
            }
        }