public async Task <EmailMessage> PrepareInvalidWorkspaceInviteMail(NotificationDto notification)
        {
            string        notificantEmail = (await _userStorage.FindAsync(u => u.Id == notification.NotificantId)).Email;
            EmailMessage  emailMessage    = new EmailMessage();
            string        mailName        = "InvalidWorkspaceInviteMessage";
            MailConfigDto mailConfigDto   = await _mailConfig.GetConfig(mailName);

            SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId);

            DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1);

            EmailAddress fromAddress = _fromAddress;
            EmailAddress toAddress   = new EmailAddress("", notificantEmail);

            emailMessage.FromAddresses.Add(fromAddress);
            emailMessage.ToAddresses.Add(toAddress);
            emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}";

            ProjectDto project     = notification.NotificationObject as ProjectDto;
            string     htmlContent = activeTemplate.HtmlContent
                                     .Replace("{{projectName}}", project.Name)
                                     .Replace("{{workspaceName}}", project.CommunicationPlatform);
            string plainTextContent = activeTemplate.PlainContent
                                      .Replace("{{projectName}}", project.Name)
                                      .Replace("{{workspaceName}}", project.CommunicationPlatform);

            emailMessage.MailContent.Add("text/html", htmlContent);
            emailMessage.MailContent.Add("text/plain", plainTextContent);


            return(emailMessage);
        }
        public async Task <EmailMessage> PrepareWelcomeMail(NotificationDto notification)
        {
            string        notificantEmail = (await _userStorage.FindAsync(u => u.Id == notification.NotificantId)).Email;
            EmailMessage  emailMessage    = new EmailMessage();
            string        mailName        = "WelcomeMessage";
            MailConfigDto mailConfigDto   = await _mailConfig.GetConfig(mailName);

            SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId);

            DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1);

            EmailAddress fromAddress = _fromAddress;
            EmailAddress toAddress   = new EmailAddress("", notificantEmail);

            emailMessage.FromAddresses.Add(fromAddress);
            emailMessage.ToAddresses.Add(toAddress);
            emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}";
            string htmlContent      = activeTemplate.HtmlContent.Replace("{{currentYear}}", DateTime.Now.Year.ToString());
            string plainTextContent = activeTemplate.PlainContent.Replace("{{currentYear}}", DateTime.Now.Year.ToString());

            emailMessage.MailContent.Add("text/html", htmlContent);
            emailMessage.MailContent.Add("text/plain", plainTextContent);

            return(emailMessage);
        }
        public async Task <EmailMessage> PrepareInitialFeedbackRequestMail(NotificationDto notification)
        {
            UserEntity user = await _userStorage.FindAsync(u => u.Id == notification.NotificantId);

            string notificantEmail = user.Email;

            EmailMessage  emailMessage  = new EmailMessage();
            string        mailName      = "InitialFeedbackRequestMessage";
            MailConfigDto mailConfigDto = await _mailConfig.GetConfig(mailName);

            SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId);

            DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1);

            EmailAddress fromAddress = _fromAddress;
            EmailAddress toAddress   = new EmailAddress("", notificantEmail);

            emailMessage.FromAddresses.Add(fromAddress);
            emailMessage.ToAddresses.Add(toAddress);
            emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}";

            string htmlContent      = activeTemplate.HtmlContent;
            string plainTextContent = activeTemplate.PlainContent;

            emailMessage.MailContent.Add("text/html", htmlContent);
            emailMessage.MailContent.Add("text/plain", plainTextContent);

            return(emailMessage);
        }
        public async Task <EmailMessage> PrepareProjectPostedMail(NotificationDto notification, ProjectDto project)
        {
            UserEntity user = await _userStorage.FindAsync(u => u.Id == notification.NotificantId);

            string notificantEmail = user.Email;

            EmailMessage  emailMessage  = new EmailMessage();
            string        mailName      = "ProjectPostedMessage";
            MailConfigDto mailConfigDto = await _mailConfig.GetConfig(mailName);

            SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId);

            DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1);

            // Get workspace install url
            string workspaceType = project.CommunicationPlatform;
            string installUrl    = await _workspaceAppService.GetInstallUrl(workspaceType);

            EmailAddress fromAddress = _fromAddress;
            EmailAddress toAddress   = new EmailAddress("", notificantEmail);

            emailMessage.FromAddresses.Add(fromAddress);
            emailMessage.ToAddresses.Add(toAddress);
            emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}";

            string htmlContent = activeTemplate.HtmlContent
                                 .Replace("{{workspaceType}}", workspaceType)
                                 .Replace("{{workspaceAppInstallUrl}}", installUrl);
            string plainTextContent = activeTemplate.PlainContent
                                      .Replace("{{workspaceType}}", workspaceType)
                                      .Replace("{{workspaceAppInstallUrl}}", installUrl);

            emailMessage.MailContent.Add("text/html", htmlContent);
            emailMessage.MailContent.Add("text/plain", plainTextContent);

            return(emailMessage);
        }
        public async Task <EmailMessage> PrepareFeedbackMail(NotificationDto notification)
        {
            string        feedbackContent = notification.Content;
            EmailMessage  emailMessage    = new EmailMessage();
            string        mailName        = "FeedbackMessage";
            MailConfigDto mailConfigDto   = await _mailConfig.GetConfig(mailName);

            SendGridTemplateDto template = await _sendGridService.GetMailTemplate(mailConfigDto.TemplateId);

            DTOs.Version activeTemplate = template.Versions.FirstOrDefault(v => v.Active == 1);
            emailMessage = JsonConvert.DeserializeObject <EmailMessage>(AppSettings.FeedbackRecipients);

            EmailAddress fromAddress = _fromAddress;

            emailMessage.FromAddresses.Add(fromAddress);
            emailMessage.Subject = $"{activeTemplate.Subject} {_testEmailIndicator}";
            string htmlContent      = activeTemplate.HtmlContent.Replace("{{feedbackMessage}}", feedbackContent);
            string plainTextContent = activeTemplate.PlainContent.Replace("{{feedbackMessage}}", feedbackContent);

            emailMessage.MailContent.Add("text/html", htmlContent);
            emailMessage.MailContent.Add("text/plain", plainTextContent);

            return(emailMessage);
        }