internal static void RemindExpiries(DateTime dateExpiry) { Organizations orgs = Organizations.GetAll(); foreach (Organization org in orgs) { Participations participations = Participations.GetExpiring(org, dateExpiry); // Mail each expiring member foreach (Participation membership in participations) { try { SendReminderMail(membership); /*PWLog.Write (PWLogItem.Person, membership.PersonId, * PWLogAction.MembershipRenewReminder, * "Mail was sent to " + membership.Person.Mail + * " reminding to renew membership in " + membership.Organization.Name + ".", string.Empty);*/ } catch (Exception ex) { ExceptionMail.Send( new Exception("Failed to create reminder mail for person " + membership.PersonId, ex)); } } } }
public static void RemindExpiriesMail() { // Get expiring Console.WriteLine("Inside RemindExpiriesMail()"); Organizations orgs = Organizations.GetAll(); Dictionary <int, bool> personLookup = new Dictionary <int, bool>(); Dictionary <string, int> dateLookup = new Dictionary <string, int>(); DateTime lowerBound = DateTime.Today; DateTime upperBound = lowerBound.AddDays(31); List <string> failedReminders = new List <string>(); int weekDayInteger = (int)DateTime.Today.DayOfWeek; foreach (Organization org in orgs) { Participations participations = Participations.GetExpiring(org, lowerBound, upperBound); foreach (Participation membership in participations) { if (membership.OrganizationId % 7 != weekDayInteger) { continue; } try { Console.Write("Reminding " + membership.Person.Canonical + " about " + membership.Organization.Name + "."); SendReminderMail(membership); Console.Write("."); /*PWLog.Write (PWLogItem.Person, membership.PersonId, * PWLogAction.MembershipRenewReminder, * "Mail was sent to " + membership.Person.Mail + * " reminding to renew membership in " + membership.Organization.Name + ".", string.Empty);*/ Console.Write("."); string dateString = membership.Expires.ToString("yyyy-MM-dd"); if (!dateLookup.ContainsKey(dateString)) { dateLookup[dateString] = 0; } dateLookup[dateString]++; Console.WriteLine(" done."); } catch (Exception x) { string logText = "FAILED sending mail to " + membership.Person.Mail + " for reminder of pending renewal in " + membership.Organization.Name + "."; failedReminders.Add(membership.Person.Canonical); /*PWLog.Write (PWLogItem.Person, membership.PersonId, * PWLogAction.MembershipRenewReminder, * logText, string.Empty);*/ ExceptionMail.Send(new Exception(logText, x)); } } } string notifyBody = String.Format("Sending renewal reminders to {0} people:\r\n\r\n", personLookup.Count); Console.WriteLine("Sending renewal reminders to {0} people", personLookup.Count); List <string> dateSummary = new List <string>(); int total = 0; foreach (string dateString in dateLookup.Keys) { dateSummary.Add(string.Format("{0}: {1,5}", dateString, dateLookup[dateString])); total += dateLookup[dateString]; } dateSummary.Sort(); foreach (string dateString in dateSummary) { notifyBody += dateString + "\r\n"; Console.WriteLine(dateString); } notifyBody += string.Format("Total sent: {0,5}\r\n\r\n", total); Console.WriteLine("Total sent: {0,5}\r\n\r\n", total); notifyBody += "FAILED reminders:\r\n"; Console.WriteLine("FAILED reminders:"); foreach (string failed in failedReminders) { notifyBody += failed + "\r\n"; Console.WriteLine(failed); } if (failedReminders.Count == 0) { notifyBody += "none.\r\n"; Console.WriteLine("none."); } /* no. just no. we should do a global search for "FromIdentity(1)" * Person.FromIdentity(1).SendOfficerNotice("Reminders sent today", notifyBody, 1); */ }