Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 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);
 }