Пример #1
0
        public void SendVolunteerReminders(int id, bool sendall)
        {
            var org = Db.LoadOrganizationById(id);

            DbUtil.Db.CurrentOrgId = id;
            var setting = new Registration.Settings(org.RegSetting, Db, org.OrganizationId);

            setting.org = org;
            var currmembers = (from om in org.OrganizationMembers
                               where (om.Pending ?? false) == false
                               where om.MemberTypeId != CmsData.Codes.MemberTypeCode.InActive
                               where org.Attends.Any(a => (a.MeetingDate <= DateTime.Today.AddDays(7) || sendall) &&
                                                     a.MeetingDate >= DateTime.Today &&
                                                     (a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute) &&
                                                     a.PeopleId == om.PeopleId)
                               select om).ToList();

            var notify = Db.StaffPeopleForOrg(org.OrganizationId);
            var from   = Db.StaffEmailForOrg(org.OrganizationId);

            foreach (var om in currmembers)
            {
                var q = (from a in org.Attends
                         where a.PeopleId == om.PeopleId
                         where a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute
                         where a.MeetingDate >= DateTime.Today
                         orderby a.MeetingDate
                         select a.MeetingDate).ToList();
                if (!q.Any())
                {
                    continue;
                }
                var details = Razor.Parse(@"@model IEnumerable<DateTime>
<blockquote>
    <table>
        <tr>
            <td> Date </td>
            <td> Time </td>
        </tr>
        @foreach (var dt in Model)
        {
            <tr>
                <td>@dt.ToLongDateString()</td>
                <td>@dt.ToLongTimeString()</td>
            </tr>	
        }
    </table>
</blockquote>", q);

                var oname = org.OrganizationName;

                var subject = Util.PickFirst(setting.ReminderSubject, "no subject");
                var message = Util.PickFirst(setting.ReminderBody, "no body");

                string loc = org.Location;
                message = MessageReplacements(Db, om.Person, null, oname, loc, message);

                message = message.Replace("{phone}", org.PhoneNumber.FmtFone7());
                message = message.Replace("{details}", details);

                Db.Email(from, om.Person, subject, message);
            }
            var sb = new StringBuilder(@"
<blockquote>
    <table>
        <tr>
            <td> Date </td>
            <td> Time </td>
        </tr>");

            foreach (var om in currmembers)
            {
                var q = (from a in org.Attends
                         where a.PeopleId == om.PeopleId
                         where
                         a.Commitment == AttendCommitmentCode.Attending ||
                         a.Commitment == AttendCommitmentCode.Substitute
                         where a.MeetingDate >= DateTime.Today
                         where a.MeetingDate <= DateTime.Today.AddDays(7)
                         orderby a.MeetingDate
                         select a.MeetingDate).ToList();
                if (!q.Any())
                {
                    continue;
                }
                foreach (var d in q)
                {
                    sb.AppendFormat("\n<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", om.Person.Name, d.ToLongDateString(), d.ToLongTimeString());
                }
            }
            sb.Append(@"
    </table>
</blockquote>
");
            foreach (var n in notify)
            {
                var organizationName = org.OrganizationName;

                var message = Util.PickFirst(setting.ReminderBody, "no body");

                string location = org.Location;
                message = MessageReplacements(Db, n, null, organizationName, location, message);

                message = message.Replace("{phone}", org.PhoneNumber.FmtFone7());
                message = message.Replace("{details}", sb.ToString());

                Db.Email(from, n, "Reminder Notices sent for " + organizationName, message);
            }
        }
Пример #2
0
        public void SendVolunteerReminders(int id, bool sendall)
        {
            var org     = Db.LoadOrganizationById(id);
            var setting = new Registration.Settings(org.RegSetting, Db, org.OrganizationId);

            setting.org = org;
            var currmembers = from om in org.OrganizationMembers
                              where (om.Pending ?? false) == false
                              where om.MemberTypeId != CmsData.Codes.MemberTypeCode.InActive
                              where org.Attends.Any(a => (a.MeetingDate <= DateTime.Today.AddDays(7) || sendall) &&
                                                    a.MeetingDate >= DateTime.Today &&
                                                    (a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute) &&
                                                    a.PeopleId == om.PeopleId)
                              select om;

            var subject = Util.PickFirst(setting.ReminderSubject, "no subject");
            var message = Util.PickFirst(setting.ReminderBody, "no body");

            if (subject == "no subject" || message == "no body")
            {
                throw new Exception("no subject or body");
            }
            var notify = Db.StaffPeopleForOrg(org.OrganizationId).FirstOrDefault();

            if (notify == null)
            {
                throw new Exception("no notify person");
            }

            foreach (var om in currmembers)
            {
                var q = from a in org.Attends
                        where a.PeopleId == om.PeopleId
                        where a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute
                        where a.MeetingDate >= DateTime.Today
                        orderby a.MeetingDate
                        select a.MeetingDate;
                if (!q.Any())
                {
                    continue;
                }
                var details = Razor.Parse(@"@model IEnumerable<DateTime>
<blockquote>
    <table>
        <tr>
            <td> Date </td>
            <td> Time </td>
        </tr>
        @foreach (var dt in Model)
        {
            <tr>
                <td>@dt.ToLongDateString()</td>
                <td>@dt.ToLongTimeString()</td>
            </tr>	
        }
    </table>
</blockquote>", q);

                var organizationName = org.OrganizationName;

                subject = Util.PickFirst(setting.ReminderSubject, "no subject");
                message = Util.PickFirst(setting.ReminderBody, "no body");

                string location = org.Location;
                message = MessageReplacements(om.Person, null, organizationName, location, message);

                message = message.Replace("{phone}", org.PhoneNumber.FmtFone7());
                message = message.Replace("{details}", details);

                Db.Email(notify.FromEmail, om.Person, subject, message);
            }
        }
Пример #3
0
        public void SendVolunteerReminders(int id, bool sendall)
        {
            var org = Db.LoadOrganizationById(id);
            var setting = new Registration.Settings(org.RegSetting, Db, org.OrganizationId);
            setting.org = org;
            var currmembers = (from om in org.OrganizationMembers
                               where (om.Pending ?? false) == false
                               where om.MemberTypeId != CmsData.Codes.MemberTypeCode.InActive
                               where org.Attends.Any(a => (a.MeetingDate <= DateTime.Today.AddDays(7) || sendall)
                                   && a.MeetingDate >= DateTime.Today
                                   && (a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute)
                                   && a.PeopleId == om.PeopleId)
                               select om).ToList();

            var notify = Db.StaffPeopleForOrg(org.OrganizationId);
            var from = Db.StaffEmailForOrg(org.OrganizationId);

            foreach (var om in currmembers)
            {
                var q = (from a in org.Attends
                         where a.PeopleId == om.PeopleId
                         where a.Commitment == AttendCommitmentCode.Attending || a.Commitment == AttendCommitmentCode.Substitute
                         where a.MeetingDate >= DateTime.Today
                         orderby a.MeetingDate
                         select a.MeetingDate).ToList();
                if (!q.Any())
                    continue;
                var details = Razor.Parse(@"@model IEnumerable<DateTime>
            <blockquote>
            <table>
            <tr>
            <td> Date </td>
            <td> Time </td>
            </tr>
            @foreach (var dt in Model)
            {
            <tr>
                <td>@dt.ToLongDateString()</td>
                <td>@dt.ToLongTimeString()</td>
            </tr>
            }
            </table>
            </blockquote>", q);

                var oname = org.OrganizationName;

                var subject = Util.PickFirst(setting.ReminderSubject, "no subject");
                var message = Util.PickFirst(setting.ReminderBody, "no body");

                string loc = org.Location;
                message = MessageReplacements(Db, om.Person, null, oname, loc, message);

                message = message.Replace("{phone}", org.PhoneNumber.FmtFone7());
                message = message.Replace("{details}", details);

                Db.Email(from, om.Person, subject, message);
            }
            var sb = new StringBuilder(@"
            <blockquote>
            <table>
            <tr>
            <td> Date </td>
            <td> Time </td>
            </tr>");
            foreach (var om in currmembers)
            {
                var q = (from a in org.Attends
                         where a.PeopleId == om.PeopleId
                         where
                             a.Commitment == AttendCommitmentCode.Attending ||
                             a.Commitment == AttendCommitmentCode.Substitute
                         where a.MeetingDate >= DateTime.Today
                         where a.MeetingDate <= DateTime.Today.AddDays(7)
                         orderby a.MeetingDate
                         select a.MeetingDate).ToList();
                if (!q.Any())
                    continue;
                foreach (var d in q)
                    sb.AppendFormat("\n<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>", om.Person.Name, d.ToLongDateString(), d.ToLongTimeString());
            }
            sb.Append(@"
            </table>
            </blockquote>
            ");
            foreach (var n in notify)
            {
                var organizationName = org.OrganizationName;

                var message = Util.PickFirst(setting.ReminderBody, "no body");

                string location = org.Location;
                message = MessageReplacements(Db, n, null, organizationName, location, message);

                message = message.Replace("{phone}", org.PhoneNumber.FmtFone7());
                message = message.Replace("{details}", sb.ToString());

                Db.Email(from, n, "Reminder Notices sent for " + organizationName, message);
            }
        }