public async Task OnPostSendEmailAsync() { // Get the list of registered training statuses from the database var registeredList = from i in _context.MasterRecord select i; registeredList = registeredList.Where(x => x.TrainingStatus.Contains("Registered")); // Get the list of in progress training statuses from the database var inProgressList = from i in _context.MasterRecord select i; inProgressList = inProgressList.Where(x => x.TrainingStatus.Contains("In Progress")); // To store the registeredList and inProgressList var toEmailList = new List(); toEmailList.AddRange(registeredList); toEmailList.AddRange(inProgressList); // Get the email matrix list from the database var emailMatrixList = from i in _context.EmailMatrix select i; //var smtp = new SmtpClient(); //smtp.Host = "xxxxxx.xxx.com"; //smtp.Port = 25; //smtp.EnableSsl = false; foreach (var row in toEmailList) { // Send to Staff + Supervisor/Manager if (row.DaysDueDate <= 42 && row.DaysDueDate >= 28) { foreach (var matrix in emailMatrixList) { if (matrix.StaffID.Equals(row.StaffID)) { if (!row.EmailLevelSent.Equals("First Level")) { var message = new MailMessage(); var bodyText = "
" + "

Dear @FirstName @LastName,

" + "

This is a notification to remind you that you have @DaysDueDate days to complete the following online @TrainingTitle training.

" + "

Please remember to complete the training course within the next few days.

" + "

If you do not complete this training within the required time frame, this information will be forwarded to your next level manager.

" + "

Thank you very much,
Kind regards,

" + "

Teena John

" + "
"; var body = bodyText.Replace("@FirstName", row.FirstName).Replace("@LastName", row.LastName).Replace("@DaysDueDate", row.DaysDueDate.ToString()).Replace("@TrainingTitle", row.TrainingTitle.ToString()); if (matrix.StaffEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(row.StaffEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(matrix.ManagerEmail)); } message.From = new MailAddress("notification_noreply@xxx.com"); message.Subject = "Training Notification for " + row.TrainingTitle; if (matrix.ManagerEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); } else if ((matrix.ManagerEmail.Contains("N/A")) || (matrix.ManagerEmail.Contains("NA")) || (matrix.ManagerEmail.Contains("#N/A")) || (matrix.ManagerEmail.Contains("na"))) { message.To.Add(new MailAddress(row.StaffEmail)); } else { ErrorMessage = String.Format("There is an error in this row where Staff ID = {0} in the Email Matrix.", row.StaffID); isError = true; return Page(); } if (!string.IsNullOrEmpty(matrix.InTheLoop)) { message.CC.Add(new MailAddress(matrix.InTheLoop)); } message.Body = string.Format(body); message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Host = "xxxxxx.xxx.com"; smtp.Port = 25; smtp.EnableSsl = false; await smtp.SendMailAsync(message); TempData["MailSent"] = "MailSent"; } Debug.WriteLine("Sending first level email to " + row.FirstName + " " + row.LastName); Debug.WriteLine("CC: " + message.CC.ToString()); row.EmailLevelSent = "First Level"; Debug.WriteLine("First Level email sent to " + row.FirstName); } } } } // Send to Staff + Supervisor/Manager + Next Level Manager else if (row.DaysDueDate <= 27 && row.DaysDueDate >= 14) { foreach (var matrix in emailMatrixList) { if (matrix.StaffID.Equals(row.StaffID)) { if (!row.EmailLevelSent.Equals("Second Level")) { var message = new MailMessage(); var bodyText = "
" + "

Dear @FirstName @LastName,

" + "

This is a notification to remind you that you have @DaysDueDate days to complete the following online @TrainingTitle training.

" + "

Please remember to complete the training course on priority within the next 10 days.

" + "

If you do not complete this training within the required time frame, this information will be forwarded to your Functional SMT in our next follow up.

" + "

Thank you very much,
Kind regards,

" + "

Teena John

" + "
"; var body = bodyText.Replace("@FirstName", row.FirstName).Replace("@LastName", row.LastName).Replace("@DaysDueDate", row.DaysDueDate.ToString()).Replace("@TrainingTitle", row.TrainingTitle.ToString()); if (matrix.StaffEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(row.StaffEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(matrix.ManagerEmail)); } message.From = new MailAddress("notification_noreply@xxx.com"); message.Subject = "Training Notification for " + row.TrainingTitle; if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); } else if ((matrix.ManagerEmail.Contains("N/A")) || (matrix.ManagerEmail.Contains("NA")) || (matrix.ManagerEmail.Contains("#N/A")) || (matrix.ManagerEmail.Contains("na"))) { message.To.Add(new MailAddress(row.StaffEmail)); } else { ErrorMessage = String.Format("There is an error in this row where Staff ID = {0} in the Email Matrix.", row.StaffID); isError = true; return Page(); } if (!string.IsNullOrEmpty(matrix.InTheLoop)) { message.CC.Add(new MailAddress(matrix.InTheLoop)); } message.Body = string.Format(body); message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Host = "xxxxxx.xxx.com"; smtp.Port = 25; smtp.EnableSsl = false; await smtp.SendMailAsync(message); TempData["MailSent"] = "MailSent"; } row.EmailLevelSent = "Second Level"; Debug.WriteLine("Second Level email sent to " + row.FirstName); } } } } // Send to Staff + Supervisor/Manager + Next Level Manager + Functional SMT else if (row.DaysDueDate <= 13 && row.DaysDueDate >= 7) { foreach (var matrix in emailMatrixList) { if (matrix.StaffID.Equals(row.StaffID)) { if (!row.EmailLevelSent.Equals("Third Level")) { var message = new MailMessage(); var bodyText = "
" + "

Dear @FirstName @LastName,

" + "

This is a notification to remind you that you have @DaysDueDate days to complete the following online @TrainingTitle training.

" + "

Please remember to complete the training course as soon as possible.

" + "

If you do not complete this training within the required time frame, this information will be forwarded to your MD/Hub GM in our next follow up.

" + "

Thank you very much,
Kind regards,

" + "

Teena John

" + "
"; var body = bodyText.Replace("@FirstName", row.FirstName).Replace("@LastName", row.LastName).Replace("@DaysDueDate", row.DaysDueDate.ToString()).Replace("@TrainingTitle", row.TrainingTitle.ToString()); if (matrix.StaffEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(row.StaffEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(matrix.ManagerEmail)); } message.From = new MailAddress("notification_noreply@xxx.com"); message.Subject = "Training Notification for " + row.TrainingTitle; if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com") && matrix.ThirdLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); message.CC.Add(new MailAddress(matrix.ThirdLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); } else if ((matrix.ManagerEmail.Contains("N/A")) || (matrix.ManagerEmail.Contains("NA")) || (matrix.ManagerEmail.Contains("#N/A")) || (matrix.ManagerEmail.Contains("na"))) { message.To.Add(new MailAddress(row.StaffEmail)); } else { ErrorMessage = String.Format("There is an error in this row where Staff ID = {0} in the Email Matrix.", row.StaffID); isError = true; return Page(); } if (!string.IsNullOrEmpty(matrix.InTheLoop)) { message.CC.Add(new MailAddress(matrix.InTheLoop)); } message.Body = string.Format(body); message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Host = "xxxxx.xxx.com"; smtp.Port = 25; smtp.EnableSsl = false; await smtp.SendMailAsync(message); TempData["MailSent"] = "MailSent"; } row.EmailLevelSent = "Third Level"; Debug.WriteLine("Third email sent to " + row.FirstName); } } } } // Send to Staff + Supervisor/Manager + Next Level Manager + Functional SMT + MD/Hub GM else if (row.DaysDueDate <= 6) { foreach (var matrix in emailMatrixList) { if (matrix.StaffID.Equals(row.StaffID)) { if (!row.EmailLevelSent.Equals("Fourth Level")) { var message = new MailMessage(); var bodyText = "
" + "

Dear @FirstName @LastName,

" + "

This is a notification to remind you that you have @DaysDueDate days to complete the following online @TrainingTitle training.

" + "

Please remember to complete the training course immediately.

" + "

If you do not complete this training within the required time frame, it will impact Consequence Management coming to effect wherein your outbound email will be blocked.

" + "

Thank you very much,
Kind regards,

" + "

Teena

" + "
"; var body = bodyText.Replace("@FirstName", row.FirstName).Replace("@LastName", row.LastName).Replace("@DaysDueDate", row.DaysDueDate.ToString()).Replace("@TrainingTitle", row.TrainingTitle.ToString()); if (matrix.StaffEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(row.StaffEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.To.Add(new MailAddress(matrix.ManagerEmail)); } message.From = new MailAddress("notification_noreply@xxx.com"); message.Subject = "Training Notification for " + row.TrainingTitle; if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com") && matrix.ThirdLevelEmail.Contains("@xxx.com") && matrix.FourthLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); message.CC.Add(new MailAddress(matrix.ThirdLevelEmail)); message.CC.Add(new MailAddress(matrix.FourthLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com") && matrix.ThirdLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); message.CC.Add(new MailAddress(matrix.ThirdLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com") && matrix.SecondLevelEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); message.CC.Add(new MailAddress(matrix.SecondLevelEmail)); } else if (matrix.ManagerEmail.Contains("@xxx.com")) { message.CC.Add(new MailAddress(matrix.ManagerEmail)); } else if ((matrix.ManagerEmail.Contains("N/A")) || (matrix.ManagerEmail.Contains("NA")) || (matrix.ManagerEmail.Contains("#N/A")) || (matrix.ManagerEmail.Contains("na"))) { message.To.Add(new MailAddress(row.StaffEmail)); } else { ErrorMessage = String.Format("There is an error in this row where Staff ID = {0} in the Email Matrix.", row.StaffID); isError = true; return Page(); } if (!string.IsNullOrEmpty(matrix.InTheLoop)) { message.CC.Add(new MailAddress(matrix.InTheLoop)); } message.Body = string.Format(body); message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Host = "xxxxxx.xxx.com"; smtp.Port = 25; smtp.EnableSsl = false; await smtp.SendMailAsync(message); TempData["MailSent"] = "MailSent"; } row.EmailLevelSent = "Fourth Level"; Debug.WriteLine("Fourth Level email sent to " + row.FirstName); } } } } else { continue; } } _context.SaveChanges(); isSuccess = true; return Page(); }