public async void SendNotification(StudentDataEntry entry, bool created) { if (string.IsNullOrEmpty(entry.Student.NotificationEmail)) { return; } var user = database.Users .Include(u => u.Groups) .ThenInclude(g => g.GradeLevel) .Single(u => u.Id == entry.Student.Id); if (!CanSendNotification(user.Groups.Single(g => g.GroupType == GroupType.Class).GradeLevel, entry, created)) { return; } var settings = databaseProperties.GetProperty <EmailSettings>(); var body = await partialToStringRenderer.RenderPartialToStringAsync("EmailPage", new EmailPage { Text = $"{entry} was added" }); var message = new MimeMessage(); message.From.Add(new MailboxAddress("SmartGrade", settings.SenderAddress)); message.To.Add(new MailboxAddress(string.Empty, entry.Student.NotificationEmail)); message.Subject = "Test Header"; message.Body = new TextPart("html") { Text = body }; ThreadPool.QueueUserWorkItem(o => SendEmail(message)); }
private static bool CanSendNotification(GradeLevel gradeLevel, StudentDataEntry entry, bool created) { if (entry is Grade && created && !gradeLevel.EmailOnGradeAdded || entry is Grade && !created && !gradeLevel.EmailOnGradeDeleted || entry is Absence && created && !gradeLevel.EmailOnAbsenceAdded || entry is Absence && !created && !gradeLevel.EmailOnAbsenceDeleted || entry is Disciplinary && created && !gradeLevel.EmailOnDisciplinaryAdded || entry is Disciplinary && !created && !gradeLevel.EmailOnDisciplinaryDeleted) { return(false); } return(true); }