Ejemplo n.º 1
0
        private void Populate(string id)
        {
            DojoMember        m;
            string            validation;
            MembershipBuilder b;

            m = new DojoMember(int.Parse(id));

            // We're going to twist the membership builder to get what we want for faster
            // load times. So what we'll do is load the member into the Load Function
            // then we'll ask the membership builder for the member back. Pretty
            // nifty eh? Why? Because the membership builder loads the member's root
            // and children in one pass. :) :) :)
            b = new MembershipBuilder();
            b.Load(m);                     // MUAHAHAHA! FASTER! USES ROOT MEMBER!
            b.ProcessTrees();              // Required for memberships availability
            b.ProcessHashes();             // Required for memberships availability
            b.pullData(m);

            name.Text    = m.PrivateContact.FullName;
            address.Text = m.PrivateContact.ConstructAddress("<br />");
            validation   = m.PrivateContact.ValidationFlagsToString();
            if (validation.Length != 0)
            {
                address.Text += "<br /><em>" + validation;
            }

            if (m.Parent != null)
            {
                addRow(table, Localization.Strings.ParentMember + " : " + m.Parent.PrivateContact.FullName);
                if (m.Root != null & m.ID != m.Root.ID & m.Parent.ID != m.Root.ID)
                {
                    addRow(table, Localization.Strings.RootMember + " : " + m.Root.PrivateContact.FullName);
                }
            }
            else
            {
                if (m.Root != null & m.Root.ID != m.ID)
                {
                    addRow(table, Localization.Strings.RootMember + " : " + m.Root.PrivateContact.FullName);
                }
            }

            addRow(table, Localization.Strings.MemberType + " : " +
                   (m.MemberType != null ? m.MemberType.Name : Localization.Strings.IllegalValue));

            addRow(table, Localization.Strings.Rank + " : " +
                   string.Format(Localization.Strings.RankFormat,
                                 m.Rank != null ? m.Rank.Name : Localization.Strings.NoRankSpecified,
                                 m.TimeInRank.Hours));

            addRow(table, Localization.Strings.MemberSince + " : " +
                   string.Format(Localization.Strings.MemberSinceFormat,
                                 m.MemberSince, m.TimeInMembership.Hours));

            // ATTENDANCE =========================================================

            int      maxEntries     = 150;
            int      displayEntries = 5;
            DateTime minSearchDate  = DateTime.Now.Subtract(TimeSpan.FromDays(90));

            DojoAttendanceEntryManager    aem        = new DojoAttendanceEntryManager();
            DojoAttendanceEntryCollection attendance =
                aem.GetCollection(maxEntries, "MemberID=" + m.ID.ToString() +
                                  " AND ClassStart>=#" + minSearchDate.ToString() + "#", "ClassStart DESC",
                                  DojoAttendanceEntryFlags.Class);

            DojoMember instructor1 = m.Instructor1;
            DojoMember instructor2 = m.Instructor2;
            DojoMember instructor3 = m.Instructor3;

            if (attendance.Count < displayEntries)
            {
                displayEntries = attendance.Count;
            }

            addRow(table, Localization.Strings.LastSignin + " : " +
                   m.LastSignin.ToShortDateString());

            Table instructorTable = new Table();

            addCells(table, new LiteralControl(Localization.Strings.NinetyDayInstructors), instructorTable);
            if (instructor1 != null)
            {
                addRow(instructorTable, instructor1.PrivateContact.FullName);
            }
            if (instructor2 != null)
            {
                addRow(instructorTable, instructor2.PrivateContact.FullName);
            }
            if (instructor3 != null)
            {
                addRow(instructorTable, instructor3.PrivateContact.FullName);
            }

            Table attendanceTable = new Table();

            foreach (DojoAttendanceEntry a in attendance)
            {
                addRow(attendanceTable, a.Class.Name);
                addRow(attendanceTable, a.Class.ClassStart.ToString("dddd, MMMM d - h:mm tt"));
            }

            // MEMBERSHIPS ========================================================

            membershipsTable = new Table();
            addCells(table, new LiteralControl(Localization.Strings.MembershipsCurrent), membershipsTable);

            availableMembershipsTable = new Table();
            addCells(table, new LiteralControl(Localization.Strings.MembershipsAvailable), availableMembershipsTable);

            DojoMembershipCollection memberships = m.CollateMemberships();

            if (memberships.Count == 0)
            {
                addRow(membershipsTable, Localization.Strings.NoMemberships);
            }
            else
            {
                foreach (DojoMembership membership in memberships)
                {
                    addMembership(membership);
                }
            }

            List <MembershipPackage> packages = b.GetMembershipPackages(m);

            if (packages.Count == 0)
            {
                addRow(availableMembershipsTable, Localization.Strings.NoMemberships);
            }
            else
            {
                foreach (MembershipPackage package in packages)
                {
                    if (package.Memberships.Count == 0)
                    {
                        addRow(availableMembershipsTable, package.TypeTemplate.Name);
                        addRow(availableMembershipsTable, Localization.Strings.NoMemberships);
                    }
                    else
                    {
                        addRow(availableMembershipsTable, package.TypeTemplate.Name, package.TotalFee.ToString("c"));
                        foreach (DojoMembership membership in package.Memberships)
                        {
                            addRow(availableMembershipsTable, membership.MembershipTemplate.Name +
                                   (membership.PriorMembership == null ? " " + Localization.Strings.StartupMembershipAbbreviation : "") +
                                   (membership.IsProRated ? " " + Localization.Strings.ProrateMembershipAbbreviation : ""),
                                   membership.Fee.ToString("c"));
                            addRow(availableMembershipsTable,
                                   string.Format(Localization.Strings.MembershipDates,
                                                 membership.StartDate,
                                                 membership.EndDate), "&nbsp;");
                        }
                    }
                }
            }

            // SECURITY ===========================================================
        }