public SummaryInfo(CMSDataContext db, int pid, int oid) { this.db = db; OrgMember = OrganizationMember.Load(db, pid, oid); if (!OrgMember.OnlineRegData.HasValue()) { return; } // ReSharper disable once UseObjectOrCollectionInitializer Person = new OnlineRegPersonModel0(OrgMember.OnlineRegData, db); Person.setting = db.CreateRegistrationSettings(OrgMember.Organization.RegSettingXml, oid); Handlebars.RegisterHelper("Registrant", Registrant); Handlebars.RegisterHelper("IfShowTransaction", IfShowTransaction); Handlebars.RegisterHelper("IfSupportMissionTrip", IfSupportMissionTrip); Handlebars.RegisterHelper("AskItems", AskItems); Handlebars.RegisterHelper("IfAskAllergies", IfAskAllergies); Handlebars.RegisterHelper("IfAskCheckboxes", IfAskCheckboxes); Handlebars.RegisterHelper("IfAskCoaching", IfAskCoaching); Handlebars.RegisterHelper("IfAskChurch", IfAskChurch); Handlebars.RegisterHelper("IfAskDoctor", IfAskDoctor); Handlebars.RegisterHelper("IfAskDropdown", IfAskDropdown); Handlebars.RegisterHelper("IfAskEmContact", IfAskEmContact); Handlebars.RegisterHelper("IfAskExtraQuestions", IfAskExtraQuestions); Handlebars.RegisterHelper("IfAskGradeOptions", IfAskGradeOptions); Handlebars.RegisterHelper("IfAskHeader", IfAskHeader); Handlebars.RegisterHelper("IfAskInstruction", IfAskInstruction); Handlebars.RegisterHelper("IfAskInsurance", IfAskInsurance); Handlebars.RegisterHelper("IfAskMenu", IfAskMenu); Handlebars.RegisterHelper("IfAskParents", IfAskParents); Handlebars.RegisterHelper("IfAskRequest", IfAskRequest); Handlebars.RegisterHelper("IfAskSize", IfAskSize); Handlebars.RegisterHelper("IfAskSms", IfAskSms); Handlebars.RegisterHelper("IfAskTextQuestions", IfAskTextQuestions); Handlebars.RegisterHelper("IfAskTickets", IfAskTickets); Handlebars.RegisterHelper("IfAskTylenolEtc", IfAskTylenolEtc); Handlebars.RegisterHelper("IfAskYesNoQuestions", IfAskYesNoQuestions); Handlebars.RegisterHelper("IfHasAgeGroups", IfHasAgeGroups); Handlebars.RegisterHelper("MenuItems", MenuItems); Handlebars.RegisterHelper("Checkboxes", Checkboxes); Handlebars.RegisterHelper("TopLabel", (writer, context, args) => { writer.Write(TopLabel); }); Handlebars.RegisterHelper("BottomStyle", (writer, context, args) => { writer.Write(RowStyle); }); PythonEvents.RegisterHelpers(db); }
public Dictionary <Person, string> NoticesToSend() { var leaderNotices = new Dictionary <Person, string>(); const int days = 36; var olist = FetchOrgs().Select(oo => oo.OrganizationId).ToList(); var alist = (from p in DbUtil.Db.RecentAbsents(null, null, days) where olist.Contains(p.OrganizationId) select p).ToList(); var mlist = (from r in DbUtil.Db.LastMeetings(null, null, days) where olist.Contains(r.OrganizationId) select r).ToList(); var plist = (from om in DbUtil.Db.ViewOrganizationLeaders where olist.Contains(om.OrganizationId) group om.OrganizationId by om.PeopleId into leaderlist select leaderlist).ToList(); PythonEvents.RegisterHelpers(DbUtil.Db); var template = HandlebarsDotNet.Handlebars.Compile(Resource1.RecentVisitsAbsents); var sb = new StringBuilder("Notices sent to:</br>\n<table>\n"); foreach (var p in plist) { var leader = DbUtil.Db.LoadPersonById(p.Key); var orgids = p.ToList(); var meetings = (from m in mlist where orgids.Contains(m.OrganizationId) let visitors = DbUtil.Db.OrgVisitorsAsOfDate(m.OrganizationId, m.Lastmeeting, true).ToList() let absents = (from a in alist where a.OrganizationId == m.OrganizationId select a).ToList() let org = DbUtil.Db.LoadOrganizationById(m.OrganizationId) select new { m.MeetingId, m.OrganizationId, LastMeeting = m.Lastmeeting.ToString2("g"), OrgName = Organization.FormatOrgName(m.OrganizationName, m.LeaderName, m.Location), m.LeaderName, ConsecutiveAbsentsThreshold = org.ConsecutiveAbsentsThreshold ?? 2, HasAbsents = absents.Any(), Absents = (from a in absents orderby a.Lastmeeting descending select new { a.PeopleId, a.Consecutive, a.Name2, HasHomePhone = a.HomePhone.HasValue(), HomePhone = a.HomePhone.FmtFone("H"), HasCellPhone = a.CellPhone.HasValue(), CellPhone = a.CellPhone.FmtFone("C"), HasEmail = a.EmailAddress.HasValue(), a.EmailAddress, MostRecentMeeting = a.Mostrecentmeeting.ToString2("d"), a.LeaderName, a.OrganizationName, LastMeeting = a.Lastmeeting.ToString2("d"), }).ToList(), HasVisits = visitors.Any(), Visits = (from a in visitors select new { a.LastName, a.PreferredName, LastAttended = a.LastAttended.ToString2("d"), HasHomePhone = a.HomePhone.HasValue(), HomePhone = a.HomePhone.FmtFone("H"), HasCellPhone = a.CellPhone.HasValue(), CellPhone = a.CellPhone.FmtFone("C"), HasEmail = a.Email.HasValue(), a.Email, }).ToList(), }).ToList(); foreach (var m in meetings) { sb.Append($"<tr><td>{leader.Name}</td><td>{m.OrgName}</td><td>{m.LastMeeting:g}</td></tr>\n"); } leaderNotices.Add(leader, template(meetings)); } sb.Append("</table>\n"); noticelist = sb.ToString(); return(leaderNotices); }