/// <summary>
        /// Generates the adaptive card string for the unrecognized input.
        /// </summary>
        /// <param name="actionsTeamContext">Team context for the actions</param>
        /// <param name="userStatusForTeam">Enrollment status for the actionsTeamContext for the user</param>
        /// <param name="showAdminActions">Whether to show the admin actions</param>
        /// <returns>The adaptive card for the unrecognized input</returns>
        public static string GetCardJson(TeamContext actionsTeamContext, EnrollmentStatus userStatusForTeam, bool showAdminActions)
        {
            var messageContent = Resources.UnrecognizedInput;

            var card = new AdaptiveCard(new AdaptiveSchemaVersion(1, 0))
            {
                Body = new List <AdaptiveElement>
                {
                    new AdaptiveTextBlock()
                    {
                        Text = messageContent,
                        Wrap = true
                    }
                }
            };

            card.Actions = new List <AdaptiveAction>();

            card.Actions.AddRange(AdaptiveCardHelper.CreateUserActions(actionsTeamContext, userStatusForTeam));

            if (showAdminActions)
            {
                var adminActions = AdaptiveCardHelper.CreateAdminActions(actionsTeamContext);
                card.Actions.AddRange(adminActions);
            }

            return(card.ToJson());
        }
        /// <summary>
        /// Creates the welcome new member card that welcomes the user to a specific team.
        /// </summary>
        /// <param name="teamContext">Team context for the card.</param>
        /// <param name="userStatus">User status</param>
        /// <param name="botInstallerName">The name of the person that installed the bot to the team. Can be empty.</param>
        /// <param name="showAdminActions">Whether to show the admin actions</param>
        /// <returns>The welcome new member card</returns>
        public static AdaptiveCard GetCard(TeamContext teamContext, EnrollmentStatus userStatus, string botInstallerName, bool showAdminActions)
        {
            string introMessagePart1;

            if (string.IsNullOrEmpty(botInstallerName))
            {
                introMessagePart1 = string.Format(Resources.InstallMessageUnknownInstaller, teamContext.TeamName);
            }
            else
            {
                introMessagePart1 = string.Format(Resources.InstallMessageKnownInstaller, botInstallerName, teamContext.TeamName);
            }

            var introMessagePart2 = Resources.InstallMessageBotDescription;
            var introMessagePart3 = showAdminActions ? Resources.InstallMessageInstructionAdmin : Resources.InstallMessageInstruction;
            var suggestedNextStep = showAdminActions ?
                                    string.Format(Resources.InstallMessageSuggestedNextStepAdmin, Resources.MakePairsButtonText) : Resources.InstallMessageSuggestedNextStep;

            var baseDomain          = CloudConfigurationManager.GetSetting("AppBaseDomain");
            var welcomeCardImageUrl = $"https://{baseDomain}/Content/welcome-card-image.png";

            var salutationText = Resources.SalutationTitleText;

            var variablesToValues = new Dictionary <string, string>()
            {
                { "salutationText", salutationText },
                { "welcomeCardImageUrl", welcomeCardImageUrl },
                { "introMessagePart1", introMessagePart1 },
                { "introMessagePart2", introMessagePart2 },
                { "introMessagePart3", introMessagePart3 },
                { "suggestedNextStep", suggestedNextStep },
            };

            var cardBody = AdaptiveCardHelper.ReplaceTemplateKeys(CardTemplate, variablesToValues);
            var card     = AdaptiveCard.FromJson(cardBody).Card;

            if (showAdminActions)
            {
                var adminActions = AdaptiveCardHelper.CreateAdminActions(teamContext);
                card.Actions.AddRange(adminActions);
            }

            var userActions = AdaptiveCardHelper.CreateUserActions(teamContext, userStatus);

            card.Actions.AddRange(userActions);

            return(card);
        }