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