private void SendEmail(NotificationEmailDefintion defintion) { var emailMessage = new Mandrill.EmailMessage(); emailMessage.from_email = defintion.ConsultantEmail; emailMessage.from_name = defintion.ConsultantName; var newNotificationHtml = ""; var consultantHtml = ""; try { var consultantStream = Assembly.GetExecutingAssembly() .GetManifestResourceStream("Task.Email.Template.ConsultantRow.html"); consultantHtml = new StreamReader(consultantStream).ReadToEnd(); if (defintion.Type == "Phone") { var newContactStream = Assembly.GetExecutingAssembly() .GetManifestResourceStream("Task.Email.Template.NewPhoneCallNotificationTemplate.html"); newNotificationHtml = new StreamReader(newContactStream).ReadToEnd(); } else if (defintion.Type == "Email") { var newContactStream = Assembly.GetExecutingAssembly() .GetManifestResourceStream("Task.Email.Template.NewEmailNotificationTemplate.html"); newNotificationHtml = new StreamReader(newContactStream).ReadToEnd(); } else if (defintion.Type == "Chat") { var newContactStream = Assembly.GetExecutingAssembly() .GetManifestResourceStream("Task.Email.Template.NewChatNotificationTemplate.html"); newNotificationHtml = new StreamReader(newContactStream).ReadToEnd(); } } catch (Exception e) { Console.WriteLine( "Error when accessing embeded resources, NewContactEmail.html and ContactRow.html and ConsultantRow.html, Error Message: " + e); throw; } List <EmailAddress> emailAddresses = new List <EmailAddress>(); EmailAddress emailAddress = new EmailAddress(); emailAddress.email = defintion.UserEmail; emailAddress.name = defintion.UserName; emailAddresses.Add(emailAddress); emailMessage.to = emailAddresses; emailMessage.subject = "Ny Kontakt"; var cosnultantRow = Render.StringToString(consultantHtml, defintion); var htmlMessage = Render.StringToString(newNotificationHtml, defintion); htmlMessage = htmlMessage.Replace("[[ConsultantRow]]", cosnultantRow); emailMessage.html = htmlMessage; emailSender.Send(emailMessage); }
public NotificationEmailDefintion GetDefinition(int contactId, string userId) { var contact = contactRepository.Where(c => c.Id == contactId) .Include(l => l.Client) .Include(l => l.Client.InsideUserSets); var client = contact.First().Client; var insideUser = client.InsideUserSets.FirstOrDefault(u => u.Id == userId && (bool)u.ReceiveEmail); if (insideUser == null) { return(null); } var consultantForUser = adminRepository.Where( a => a.Role.Any(r => r.Name == "consultant") && a.ConsultantsForClients.Any(c => c.Id == client.Id)) .SingleOrDefault(); var defenition = new NotificationEmailDefintion(); var isValidEmailAdress = new Regex(@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", RegexOptions.IgnoreCase); if (isValidEmailAdress.IsMatch(insideUser.Email)) { defenition.Type = contact.First().LeadType; defenition.UserName = client.Name; var contactDetails = GetContactDetails(insideUser.Id, contact.First()); defenition.UserEmail = insideUser.Email; var clientLocalTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); var utcDateTime = contact.First().Date; utcDateTime = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc); var localDateTime = TimeZoneInfo.ConvertTime(utcDateTime, clientLocalTimeZoneInfo).ToString("yyyy-MM-dd HH:mm"); defenition.Date = localDateTime; defenition.InsideUrl = contactDetails.InsideUrl; defenition.From = contactDetails.From; defenition.SubjectOrDuration = contactDetails.SubjectOrDuration; if (consultantForUser != null) { defenition.ConsultantEmail = consultantForUser.Email; defenition.ConsultantPhone = consultantForUser.Phone; defenition.ConsultantName = consultantForUser.Name; if (consultantForUser.ImageUrl != null && !consultantForUser.ImageUrl.Contains("http://")) { defenition.ConsultantImage = "http://inside.helloy.se" + consultantForUser.ImageUrl; } else { defenition.ConsultantImage = consultantForUser.ImageUrl; } } return(defenition); } else { throw new Exception("User meail adress Was Invalid"); } }