Пример #1
0
        public SummaryInfo(CMSDataContext db, int pid, int oid)
        {
            this.db      = db;
            hbContext    = Handlebars.Create();
            OrgMember    = OrganizationMember.Load(db, pid, oid);
            Person       = db.LoadPersonById(pid);
            Organization = db.LoadOrganizationById(oid);
            if (!OrgMember.OnlineRegData.HasValue())
            {
                return;
            }
            // ReSharper disable once UseObjectOrCollectionInitializer
            RegPerson = new OnlineRegPersonModel0(OrgMember.OnlineRegData, db);
            if (RegPerson.PeopleId == 0)
            {
                RegPerson.PeopleId = pid;
                RegPerson.person   = Person;
            }
            RegPerson.setting = db.CreateRegistrationSettings(Organization.RegSettingXml, oid);

            hbContext.RegisterHelper("Registrant", Registrant);
            hbContext.RegisterHelper("IfShowTransaction", IfShowTransaction);
            hbContext.RegisterHelper("IfSupportMissionTrip", IfSupportMissionTrip);
            hbContext.RegisterHelper("AskItems", AskItems);

            hbContext.RegisterHelper("IfAskAllergies", IfAskAllergies);
            hbContext.RegisterHelper("IfAskCheckboxes", IfAskCheckboxes);
            hbContext.RegisterHelper("IfAskCoaching", IfAskCoaching);
            hbContext.RegisterHelper("IfAskChurch", IfAskChurch);
            hbContext.RegisterHelper("IfAskDoctor", IfAskDoctor);
            hbContext.RegisterHelper("IfAskDropdown", IfAskDropdown);
            hbContext.RegisterHelper("IfAskEmContact", IfAskEmContact);
            hbContext.RegisterHelper("IfAskExtraQuestions", IfAskExtraQuestions);
            hbContext.RegisterHelper("IfAskGradeOptions", IfAskGradeOptions);
            hbContext.RegisterHelper("IfAskHeader", IfAskHeader);
            hbContext.RegisterHelper("IfAskInstruction", IfAskInstruction);
            hbContext.RegisterHelper("IfAskInsurance", IfAskInsurance);
            hbContext.RegisterHelper("IfAskPassport", IfAskPassport);
            hbContext.RegisterHelper("IfAskMenu", IfAskMenu);
            hbContext.RegisterHelper("IfAskParents", IfAskParents);
            hbContext.RegisterHelper("IfAskRequest", IfAskRequest);
            hbContext.RegisterHelper("IfAskSize", IfAskSize);
            hbContext.RegisterHelper("IfAskSms", IfAskSms);
            hbContext.RegisterHelper("IfAskTextQuestions", IfAskTextQuestions);
            hbContext.RegisterHelper("IfAskTickets", IfAskTickets);
            hbContext.RegisterHelper("IfAskTylenolEtc", IfAskTylenolEtc);
            hbContext.RegisterHelper("IfAskYesNoQuestions", IfAskYesNoQuestions);

            hbContext.RegisterHelper("IfHasAgeGroups", IfHasAgeGroups);
            hbContext.RegisterHelper("MenuItems", MenuItems);
            hbContext.RegisterHelper("Checkboxes", Checkboxes);

            hbContext.RegisterHelper("TopLabel", (writer, context, args) => { writer.Write(TopLabel); });
            hbContext.RegisterHelper("BottomStyle", (writer, context, args) => { writer.Write(RowStyle); });

            PythonModel.RegisterHelpers(db, handlebars: hbContext);
        }
Пример #2
0
        private IHandlebars RegisterHelpers(PictureDirectoryController ctl)
        {
            var handlebars = PythonModel.RegisterHelpers(DbUtil.Db);

            handlebars.RegisterHelper("SmallUrl", (w, ctx, args) =>
            {
                GetPictureUrl(ctx, w, ctx.SmallId,
                              Picture.SmallMissingMaleId, Picture.SmallMissingFemaleId, Picture.SmallMissingGenericId);
            });
            handlebars.RegisterHelper("MediumUrl", (w, ctx, args) =>
            {
                GetPictureUrl(ctx, w, ctx.MediumId,
                              Picture.MediumMissingMaleId, Picture.MediumMissingFemaleId, Picture.MediumMissingGenericId);
            });
            handlebars.RegisterHelper("ImagePos", (w, ctx, args) => { w.Write(ctx.X != null || ctx.Y != null ? $"{ctx.X ?? 0}% {ctx.Y ?? 0}%" : "top"); });
            handlebars.RegisterHelper("IfAccess", (w, opt, ctx, args) =>
            {
                if (HasAccess)
                {
                    opt.Template(w, (object)ctx);
                }
                else
                {
                    opt.Inverse(w, (object)ctx);
                }
            });
            handlebars.RegisterHelper("PagerTop", (w, ctx, args) => { w.Write(ViewExtensions2.RenderPartialViewToString(ctl, "PagerTop", this)); });
            handlebars.RegisterHelper("PagerBottom", (w, ctx, args) => { w.Write(ViewExtensions2.RenderPartialViewToString(ctl, "PagerBottom", this)); });
            handlebars.RegisterHelper("PagerHidden", (w, ctx, args) => { w.Write(ViewExtensions2.RenderPartialViewToString(ctl, "PagerHidden", this)); });
            handlebars.RegisterHelper("SortBirthday", (w, ctx, args) => { w.Write(SortLink("Birthday")); });
            handlebars.RegisterHelper("SortName", (w, ctx, args) => { w.Write(SortLink("Name")); });
            handlebars.RegisterHelper("CityStateZip", (w, ctx, args) => { w.Write(Util.FormatCSZ4(ctx.City, ctx.St, ctx.Zip)); });
            handlebars.RegisterHelper("BirthDay", (w, ctx, args) =>
            {
                var dob = (string)ctx.DOB;
                w.Write(dob.ToDate().ToString2("m"));
            });
            return(handlebars);
        }
Пример #3
0
        public Dictionary <Person, string> NoticesToSend()
        {
            var leaderNotices = new Dictionary <Person, string>();

            var olist = FetchOrgs().Select(oo => oo.OrganizationId).ToList();

            var cn = new SqlConnection(Util.ConnectionString);

            cn.Open();
            var orgs  = string.Join(",", olist);
            var alist = cn.Query <RecentAbsentsInfo>("RecentAbsentsSP2", new { orgs },
                                                     commandType: CommandType.StoredProcedure, commandTimeout: 600).ToList();

            var mlist = (from r in DbUtil.Db.LastMeetings(orgs)
                         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();

            PythonModel.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,
                    m.Lastmeeting,
                    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.LastAttend descending
                               select new
                    {
                        a.PeopleId,
                        a.Consecutive,
                        a.Name2,
                        HomePhone = a.HomePhone.FmtFone(),
                        CellPhone = a.CellPhone.FmtFone(),
                        a.EmailAddress,
                        a.LeaderName,
                        a.OrganizationName,
                        a.OtherAttends,
                        a.LastAttend
                    }).ToList(),
                    HasVisits = visitors.Any(),
                    Visits = (from a in visitors
                              select new
                    {
                        a.PeopleId,
                        a.LastName,
                        a.PreferredName,
                        a.LastAttended,
                        HomePhone = a.HomePhone.FmtFone(),
                        CellPhone = a.CellPhone.FmtFone(),
                        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);
        }
Пример #4
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();

            PythonModel.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.PeopleId,
                        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);
        }