コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }