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), " "); } } } } // SECURITY =========================================================== }