From 13bf203fe42182faaacca226e39ab21803097bc5 Mon Sep 17 00:00:00 2001 From: Qaisyousuf Date: Tue, 5 Aug 2025 17:59:13 +0200 Subject: [PATCH] Configure Danish response emails and optimize survey email template for inbox delivery --- .../Implemnetation/QuestionnaireRepository.cs | 5 - .../QuestionnaireResponseController.cs | 192 ++++++++++++------ 2 files changed, 127 insertions(+), 70 deletions(-) diff --git a/Services/Implemnetation/QuestionnaireRepository.cs b/Services/Implemnetation/QuestionnaireRepository.cs index 2d8a170..09e7130 100644 --- a/Services/Implemnetation/QuestionnaireRepository.cs +++ b/Services/Implemnetation/QuestionnaireRepository.cs @@ -2,11 +2,6 @@ using Microsoft.EntityFrameworkCore; using Model; using Services.Interaces; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Services.Implemnetation { diff --git a/Web/Controllers/QuestionnaireResponseController.cs b/Web/Controllers/QuestionnaireResponseController.cs index 7e5297e..b34883d 100644 --- a/Web/Controllers/QuestionnaireResponseController.cs +++ b/Web/Controllers/QuestionnaireResponseController.cs @@ -113,7 +113,6 @@ namespace Web.Controllers { bool hasSubmitted = _context.Responses.Any(r => r.QuestionnaireId == questionnaire.Id && r.UserEmail == questionnaire.Email); - var cetZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"); var cetTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cetZone); var response = new Response @@ -125,89 +124,152 @@ namespace Web.Controllers ResponseDetails = questionnaire.Questions.Select(q => new ResponseDetail { QuestionId = q.Id, - QuestionType=q.Type, - // Handle TextResponse based on question type - TextResponse = (q.Type == QuestionType.Open_ended || q.Type == QuestionType.Text || q.Type==QuestionType.Slider) - ? string.Join(" ", q.SelectedText) // Ensure SelectedText is appropriately used based on question type + QuestionType = q.Type, + TextResponse = (q.Type == QuestionType.Open_ended || q.Type == QuestionType.Text || q.Type == QuestionType.Slider) + ? string.Join(" ", q.SelectedText) : null, ResponseAnswers = q.SelectedAnswerIds .Select(aid => new ResponseAnswer { AnswerId = aid }) - .ToList() // Ensure that the list is initialized correctly + .ToList() }).ToList() }; - _context.Responses.Add(response); _context.SaveChanges(); - var subject = $"Thank You for Your Feedback, {questionnaire.UserName}!"; + + // ✅ PERSONAL SUBJECT LINE (like survey invitation) + var subject = $"Tak for din besvarelse, {questionnaire.UserName}"; + var toEmail = questionnaire.Email; - string emailBody = $@" - - - - - -
-

Hey {questionnaire.UserName.ToUpper()},

-
{subject}
-

Thank you so much for taking the time to provide us with your valuable feedback!

-

If you have any more thoughts to share or need assistance, please don't hesitate to reach out. You can email us directly at seo@seosoft.dk, and we'll be more than happy to help.

+ // ✅ SIMPLE, PROFESSIONAL EMAIL BODY + string emailBody = GenerateThankYouEmailBody(questionnaire.UserName); -

Thank you once again, {questionnaire.UserName}, for helping us make SeoSoft ApS even better. We truly value your support and participation.

- - -
-

Søren Eggert Lundsteen Olsen
- Seosoft ApS
-


- Hovedgaden 3 - Jordrup
- Kolding 6064
- Denmark

- -
- - "; - - - // Call the SendConfirmationEmailAsync method to send the email - var emailSend = new EmailToSend(toEmail, subject, emailBody); + // ✅ SAME HEADERS AS SURVEY INVITATION (Primary Inbox Optimized) + var emailSend = new EmailToSend(toEmail, subject, emailBody) + { + Headers = new Dictionary + { + { "X-Priority", "1" }, + { "Importance", "High" }, + { "List-Unsubscribe", "" }, + { "List-Unsubscribe-Post", "List-Unsubscribe=One-Click" }, + { "X-Microsoft-Classification", "Personal" } + } + }; _emailServices.SendConfirmationEmailAsync(emailSend); - TempData["UserName"] = questionnaire.UserName; - _hubContext.Clients.All.SendAsync("ReceiveNotification", questionnaire.UserName, questionnaire.Email); return RedirectToAction(nameof(ThankYou)); + } + // ✅ COMPLETE CORRECTED METHOD: Danish Thank You Email Body + private static string GenerateThankYouEmailBody(string userName) + { + return $@" + + + + + + Tak for dit svar + + + +
+
+ Nærværskonsulenterne ApS +
+ +
+

Kære {userName},

+ +

Vi har modtaget din besvarelse. Tak for din tid, {userName}.

+ +

Har du spørgsmål, er du velkommen til at kontakte os på kontakt@nvkn.dk.

+
+ + +
+

Med venlig hilsen,
+ Nærværskonsulenterne ApS

+
+ +
+

Nærværskonsulenterne ApS
+ Brødemosevej 24A
+ 3300 Frederiksværk
+ Danmark

+
+ +
+ + +
+ +"; } [HttpGet]