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); } }
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); } }
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); } }