Esempio n. 1
0
        public async Task <IActionResult> Survey(SendSurveyModel survey)
        {
            if (ModelState.IsValid)
            {
                var tunnel = await _ngrok.GetTunnelsAsync();

                var actionUrl = tunnel.Where(i => i.Proto == "https").Select(i => i.PublicUrl).FirstOrDefault();

                string cardJsonPath = Path.Combine(_env.ContentRootPath, "assets", "adaptive-card.json");
                string cardJson     = await System.IO.File.ReadAllTextAsync(cardJsonPath, Encoding.UTF8);

                var parsedAdaptiveCard = AdaptiveCard.FromJson(cardJson);

                var cardActionSets = parsedAdaptiveCard.Card.Body.Where(i => i.Type == "ActionSet").Cast <AdaptiveActionSet>();
                foreach (var cardActionSet in cardActionSets)
                {
                    var actionFeedback = cardActionSet.Actions.Where(i => i.Title == "Submit Feedback" && i.Type == "Action.Http").FirstOrDefault();
                    if (actionFeedback != null)
                    {
                        actionFeedback.AdditionalProperties["url"] = $"{actionUrl}/api/card";
                    }
                }

                string htmlTemplatePath = Path.Combine(_env.ContentRootPath, "assets", "email-body.html");
                string htmlTemplate     = await System.IO.File.ReadAllTextAsync(htmlTemplatePath, Encoding.UTF8);

                await _email.SendActionCardAsync(htmlTemplate, parsedAdaptiveCard.Card.ToJson(), survey.UserName, survey.UserPassword, survey.Recipients);
            }
            return(View());
        }