private void RenderWeeklySummary(HtmlTextWriter output) { if (attendance.Count == 0) { return; } int entryIndex = 0; // Variable to hold the current working entry DojoAttendanceEntry entry = attendance[entryIndex]; // Variable to hold first and last class dates to start and stop the loop DojoAttendanceEntry lastEntry = attendance[attendance.Count - 1]; // Variables for holding the first date of each week DateTime currentFirstDayOfWeek = DateManipulator.FirstOfWeek(entry.Class.ClassStart); DateTime previousFirstDayOfWeek = currentFirstDayOfWeek - TimeSpan.FromDays(7); // Set hit counters to -1 to inform loop on first run int beginnerHits = 0; int mudanshaHits = 0; int yudanshaHits = 0; int totalHits = 0; while (entry != lastEntry) { while (entry.Class.ClassStart > currentFirstDayOfWeek) { // Increment Counters totalHits++; if (entry.Rank.ID == 1) { beginnerHits++; } if (entry.Rank.IsMudansha) { mudanshaHits++; } if (entry.Rank.IsYudansha) { yudanshaHits++; } entryIndex++; if (entryIndex < attendance.Count) { entry = attendance[entryIndex]; } else { break; } } renderWeeklySummary(output, this.DefaultRowCssClass, currentFirstDayOfWeek, DateManipulator.LastOfWeek(currentFirstDayOfWeek), beginnerHits, mudanshaHits, yudanshaHits, totalHits); // Reset Counters beginnerHits = 0; mudanshaHits = 0; yudanshaHits = 0; totalHits = 0; currentFirstDayOfWeek = previousFirstDayOfWeek; previousFirstDayOfWeek = currentFirstDayOfWeek - TimeSpan.FromDays(7); } }
/// <summary> /// Calculates a fee and end date for a membership based on the /// provided membership's start date. This will take into account the /// ProRate settings on the membership's parent template. ProRate /// settings can use either the day, the month or the month/day /// combination. This will NOT ProRate memberships that do not have /// a prior membership. /// /// This will add the startup fees for each member at the end. /// </summary> /// <param name="membership">The membership to calculate.</param> private void calcMembership(DojoMembership membership, MembershipBuilder builder) { DateTime now = builder.BuildTime; DojoMember member = membership.member; DojoMembershipTemplate template = membership.MembershipTemplate; if (membership.priorMembership == null) { membership.StartDate = calcDate(now, template.MembershipStart); } else { membership.StartDate = DateManipulator.FirstOfNextDay( membership.PriorMembership.EndDate); } membership.EndDate = calcDate(membership.StartDate, template.MembershipEnd); membership.Fee = template.Fee; if (membership.PriorMembership == null) { // PRO RATE A ================================== if (template.ProRateMonthA > 0 && template.ProRateMonthA <= now.Month) { if (template.ProRateDayA > 0) { if (template.ProRateDayA <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndA); membership.Fee = template.ProRateFeeA; membership.IsProRated = true; } } else { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndA); membership.Fee = template.ProRateFeeA; membership.IsProRated = true; } // PRO RATE B ================================== if (template.ProRateMonthB > 0 && template.ProRateMonthB <= now.Month) { if (template.ProRateDayB > 0) { if (template.ProRateDayB <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndB); membership.Fee = template.ProRateFeeB; membership.IsProRated = true; } } else { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndB); membership.Fee = template.ProRateFeeB; membership.IsProRated = true; } // PRO RATE C ================================== if (template.ProRateMonthC > 0 && template.ProRateMonthC <= now.Month) { if (template.ProRateDayC > 0) { if (template.ProRateDayC <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndC); membership.Fee = template.ProRateFeeC; membership.IsProRated = true; } } else { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndC); membership.Fee = template.ProRateFeeC; membership.IsProRated = true; } } else if (template.ProRateDayC > 0 && template.ProRateDayC <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndC); membership.Fee = template.ProRateFeeC; membership.IsProRated = true; } } else if (template.ProRateDayB > 0 && template.ProRateDayB <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndB); membership.Fee = template.ProRateFeeB; membership.IsProRated = true; } } else if (template.ProRateDayA > 0 && template.ProRateDayA <= now.Day) { membership.EndDate = calcDate(membership.StartDate, template.ProRateEndA); membership.Fee = template.ProRateFeeA; membership.IsProRated = true; } } if (membership.PriorMembership == null) { membership.Fee += template.StartupFee; } }
private void RenderView(HtmlTextWriter output, bool showWeeklyIndex) { // Variables for holding the days of a week DateTime currentIndexDate = DateTime.MinValue; DateTime lastIndexDate = DateTime.MinValue; bool rowflag = false; string rowCssClass; // // Render Records // foreach (DojoAttendanceEntry entry in attendance) { #region Render Indexing // Render Week Headers if (showWeeklyIndex) { // Set the first and last day of week for the current entry currentIndexDate = DateManipulator.FirstOfWeek(entry.Class.ClassStart); if (lastIndexDate != currentIndexDate) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", indexRowCssClass); output.WriteAttribute("colspan", "8"); output.Write(HtmlTextWriter.TagRightChar); output.Write(currentIndexDate.ToLongDateString()); output.Write(" - "); output.Write(DateManipulator.LastOfWeek(currentIndexDate).ToLongDateString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); lastIndexDate = currentIndexDate; } } else { currentIndexDate = entry.Class.ClassStart.Date; if (currentIndexDate != lastIndexDate) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("valign", "top"); output.WriteAttribute("colspan", "4"); output.WriteAttribute("class", indexRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write(currentIndexDate.ToLongDateString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); lastIndexDate = currentIndexDate; } } #endregion // Flip Rowstate if (rowflag) { rowCssClass = this.defaultRowCssClass; } else { rowCssClass = this.alternateRowCssClass; } rowflag = !rowflag; renderEntry(output, rowCssClass, entry); } }
/// <summary> /// Render this control to the output parameter specified. /// </summary> /// <param name="output"> The HTML writer to write out to </param> protected override void RenderContent(HtmlTextWriter output) { EnsureChildControls(); DojoAttendanceEntryFlags[] options = new DojoAttendanceEntryFlags[] { DojoAttendanceEntryFlags.Class, DojoAttendanceEntryFlags.Member, DojoAttendanceEntryFlags.Rank, DojoAttendanceEntryFlags.MemberPrivateContact }; DojoAttendanceEntryManager m = new DojoAttendanceEntryManager(); StringBuilder whereQuery = new StringBuilder(); if (ddMembers.SelectedItem.Value != "-1") { whereQuery.Append("MemberID="); whereQuery.Append(ddMembers.SelectedItem.Value); } if (ddClassDefinitions.SelectedItem.Value != "-1") { if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } if (ddClassDefinitions.SelectedItem.Value == "0") { whereQuery.Append("ParentDefinitionID=null"); } else { whereQuery.Append("ParentDefinitionID="); whereQuery.Append(ddClassDefinitions.SelectedItem.Value); } } if (ddInstructors.SelectedItem.Value != "-1") { if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("kitTessen_Classes.InstructorID="); whereQuery.Append(ddInstructors.SelectedItem.Value); } switch (ddSearchMode.SelectedItem.Text) { case "Today": // today if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(LocalTime.Date); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(LocalTime.Date.AddDays(1)); whereQuery.Append("#)"); break; case "This Month": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date).AddMonths(1)); whereQuery.Append("#)"); break; case "Last Month": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.SubtractMonths(LocalTime.Date, 1)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date)); whereQuery.Append("#)"); break; case "This Week": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfWeek(LocalTime.Date)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.LastOfWeek(LocalTime.Date).AddDays(1)); whereQuery.Append("#)"); break; case "Last Week": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfWeek(LocalTime.Date).Subtract(TimeSpan.FromDays(7))); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.LastOfWeek(LocalTime.Date).Subtract(TimeSpan.FromDays(6))); whereQuery.Append("#)"); break; } attendance = m.GetCollection(whereQuery.ToString(), "ClassStart DESC", options); switch (ddView.SelectedItem.Value) { case "default": RenderView(output, false); break; case "weekly": RenderView(output, true); break; case "weeklysummary": RenderWeeklySummary(output); break; } }
protected override void Render(HtmlTextWriter output) { #region Test for Errors if (clip == null) { RenderException(output, "The requested content could not be found."); return; } if (!adminView) { if (!clip.ParentCatalog.Enabled) { RenderException(output, "The content's requested catalog is disabled."); return; } if (clip.ExpirationDate < DateTime.Now) { RenderException(output, "The requested content is expired."); return; } if (clip.PublishDate > DateTime.Now) { RenderException(output, "The requested content is awaiting publishing."); return; } } #endregion #region Editor Rendering if (userEditor != null && userEditor.Visible) //if (caEditor != null && caEditor.Visible) //if (ftbEditor != null && ftbEditor.Visible) { output.Write("<div style=\"margin-bottom:5px\">Title:</div><div style=\"margin-bottom:5px\">"); tbTitle.RenderControl(output); output.Write("</div><div style=\"margin-bottom:5px\">Description:</div><div style=\"margin-bottom:5px\">"); tbDescription.RenderControl(output); output.Write("</div><div style=\"margin-bottom:5px\">"); userEditor.RenderControl(output); //ftbEditor.RenderControl(output); output.Write("</div><div>"); btSave.RenderControl(output); output.Write(" "); btCancel.RenderControl(output); output.Write("</div>"); return; } #endregion #region Content Rendering if (_contentOnly) { // Resolve home references! Whahoo! output.Write(clip.Body.Replace("=\"~", Page.ResolveUrl("~"))); // Display Edit Link if (btEdit != null && btEdit.Visible) { output.Write("<br>"); btEdit.RenderControl(output); } return; } #endregion // Compile Clip Amns.GreyFox.Content.Support.ContentBuilder b = new Amns.GreyFox.Content.Support.ContentBuilder(clip); b.Compile(); this.renderTextTag(output, _titleCssClass, "h3", clip.Title); if (clip.Authors.Count != 0) { output.WriteBeginTag("h4"); if (_contributorsCssClass != "") { output.WriteAttribute("class", _contributorsCssClass); } output.Write(HtmlTextWriter.TagRightChar); for (int i = 0; i < clip.Authors.Count; i++) { output.Write(clip.Authors[i].Contact.ConstructName("P F L S")); if (i + 1 < clip.Authors.Count) { output.Write(", "); } } output.WriteEndTag("h4"); // Output Dates this.renderTextTag(output, _publishDateCssClass, "h5", clip.PublishDate.ToString("MMMM yyyy")); } output.WriteBeginTag("div"); if (_bodyCssClass != string.Empty) { output.WriteAttribute("class", _bodyCssClass); } output.Write(HtmlTextWriter.TagRightChar); #region Reference, Administrator and Additional Side Panels output.WriteBeginTag("div"); output.WriteAttribute("style", "float:right;"); output.Write(HtmlTextWriter.TagRightChar); #region Reference Panel if (clip.References.Count != 0) { output.WriteBeginTag("table"); output.WriteAttribute("border", "0"); output.WriteAttribute("cellPadding", "5"); output.WriteAttribute("cellSpacing", "0"); output.WriteAttribute("width", "150px"); if (_referenceTableCssClass != string.Empty) { output.WriteAttribute("class", _referenceTableCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); if (_referenceTitleCssClass != string.Empty) { output.WriteAttribute("class", _referenceTitleCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.Write("References"); output.WriteEndTag("td"); output.WriteEndTag("tr"); foreach (DbContentClip reference in clip.References) { output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.WriteBeginTag("a"); if (reference.OverrideUrl != string.Empty) { output.WriteAttribute("href", reference.OverrideUrl); } else { output.WriteAttribute("href", Page.ResolveUrl(string.Format(_linkFormat, reference.ID))); } if (reference.MenuTooltip != string.Empty) { output.WriteAttribute("title", reference.MenuTooltip); } output.Write(HtmlTextWriter.TagRightChar); output.Write(reference.Title); output.WriteEndTag("a"); output.WriteEndTag("td"); output.WriteEndTag("tr"); } output.WriteEndTag("table"); } #endregion #region Administration Panel if (btEdit != null && btEdit.Visible) { output.WriteBeginTag("table"); output.WriteAttribute("border", "0"); output.WriteAttribute("cellPadding", "5"); output.WriteAttribute("cellSpacing", "0"); output.WriteAttribute("width", "150px"); if (_referenceTableCssClass != string.Empty) { output.WriteAttribute("class", _referenceTableCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); if (_referenceTitleCssClass != string.Empty) { output.WriteAttribute("class", _referenceTitleCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.Write("Administration"); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); btEdit.RenderControl(output); output.WriteEndTag("td"); output.WriteEndTag("tr"); #region Hit Counter Display // TODO: Finish Counter int totalHits = 0; int uniqueHits = 0; DbContentHitManager hm = new DbContentHitManager(); DbContentHitCollection hits = hm.GetCollection("RequestContentID=" + clip.ID.ToString(), "RequestDate", null); totalHits = hits.Count; // ================================================= // BAR GRAPH // ================================================= DateTime now = DateTime.Now; DateTime weekStart6 = DateManipulator.FirstOfWeek(now); DateTime weekStart5 = DateManipulator.FirstOfWeek(now.Subtract(TimeSpan.FromDays(7))); DateTime weekStart4 = DateManipulator.FirstOfWeek(now.Subtract(TimeSpan.FromDays(14))); DateTime weekStart3 = DateManipulator.FirstOfWeek(now.Subtract(TimeSpan.FromDays(21))); DateTime weekStart2 = DateManipulator.FirstOfWeek(now.Subtract(TimeSpan.FromDays(28))); DateTime weekStart1 = DateManipulator.FirstOfWeek(now.Subtract(TimeSpan.FromDays(35))); int[] weekCounts = new int[6]; // Count Unique Hits foreach (DbContentHit hit in hits) { if (hit.IsUnique) { if (hit.RequestDate > weekStart1 & hit.RequestDate < weekStart2) { weekCounts[0]++; } if (hit.RequestDate > weekStart2 & hit.RequestDate < weekStart3) { weekCounts[1]++; } if (hit.RequestDate > weekStart3 & hit.RequestDate < weekStart4) { weekCounts[2]++; } if (hit.RequestDate > weekStart4 & hit.RequestDate < weekStart5) { weekCounts[3]++; } if (hit.RequestDate > weekStart5 & hit.RequestDate < weekStart6) { weekCounts[4]++; } if (hit.RequestDate > weekStart6) { weekCounts[5]++; } uniqueHits++; } } int graphWidth = 138; int graphHeight = 100; int graphPadding = 1; int plotWidth = graphWidth - (graphPadding * 2); int plotHeight = graphHeight - (graphPadding * 2); int maxBarHeight = plotHeight; int minBarHeight = 20; int barMargin = 2; int barWidth = 21; // Find Highest Count int maxCount = 0; for (int i = 0; i < weekCounts.Length; i++) { if (weekCounts[i] > maxCount) { maxCount = weekCounts[i]; } } // Find Height per Unit double pixelUnit = Convert.ToDouble(maxBarHeight) / Convert.ToDouble(maxCount); output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.Write("<strong>Hits:</strong>"); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.WriteFullBeginTag("style"); output.WriteLine("#vertgraph { width : " + graphWidth.ToString() + "px; " + "height: " + graphHeight.ToString() + "px; " + "position: relative; " + "padding: " + graphPadding.ToString() + "px; " + "background: #aaaaaa; }"); output.WriteLine("#vertgraph .graph-area { width: " + plotWidth.ToString() + "px; " + "height: " + plotHeight.ToString() + "px; " + "padding: 0; " + "margin: 0; " + "position: relative; " + "overflow: hidden; } "); output.WriteLine("#vertgraph ul { width: " + plotWidth.ToString() + "px; " + "height: " + plotHeight.ToString() + "px; " + "margin: 0; " + "padding: 0; " + "position: absolute; " + "bottom: 0; " + "list-style-type: none; }"); output.Write("#vertgraph ul li { position: absolute; " + "width: " + barWidth.ToString() + "px; " + "height: " + maxBarHeight.ToString() + "px; " + "bottom: 0; " + "padding 0; " + "margin 0; " + "background: no-repeat; " + "writing-mode:tb-rl; " + "text-align: center; " + "font-size: xx-small; " + // "font-weight: bold; " + "vertical-align: middle; " + "color: white; }"); output.WriteLine("#vertgraph li.week1 { background: #999999; left: 0px; }"); output.WriteLine("#vertgraph li.week2 { background: #888888; left: " + ((barMargin + barWidth) * 1).ToString() + "px; }"); output.WriteLine("#vertgraph li.week3 { background: #777777; left: " + ((barMargin + barWidth) * 2).ToString() + "px; }"); output.WriteLine("#vertgraph li.week4 { background: #666666; left: " + ((barMargin + barWidth) * 3).ToString() + "px; }"); output.WriteLine("#vertgraph li.week5 { background: #555555; left: " + ((barMargin + barWidth) * 4).ToString() + "px; }"); output.WriteLine("#vertgraph li.week6 { background: #444444; left: " + ((barMargin + barWidth) * 5).ToString() + "px; }"); output.WriteEndTag("style"); output.WriteBeginTag("div"); output.WriteAttribute("id", "vertgraph"); output.Write(HtmlTextWriter.TagRightChar); output.WriteBeginTag("div"); output.WriteAttribute("id", "graph-area"); output.Write(HtmlTextWriter.TagRightChar); output.WriteFullBeginTag("ul"); int barHeight; double barHeightD = 0; for (int i = 0; i < 6; i++) { barHeightD = Convert.ToDouble(weekCounts[i]) * pixelUnit; if (barHeightD < minBarHeight) { barHeight = minBarHeight; } else if (double.IsNaN(barHeightD)) { barHeight = minBarHeight; } else { barHeight = Convert.ToInt32(barHeightD); } output.WriteBeginTag("li"); output.WriteAttribute("class", "week" + (i + 1).ToString()); output.WriteAttribute("style", "height: " + barHeight + "px;"); output.Write(HtmlTextWriter.TagRightChar); output.Write(weekCounts[i]); output.WriteEndTag("li"); output.WriteLine(); } output.WriteEndTag("ul"); output.WriteEndTag("div"); output.WriteEndTag("div"); output.WriteEndTag("td"); output.WriteEndTag("tr"); // =============================================== // END BAR GRAPH // =============================================== output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.Write("<strong>Unique Hits:</strong><br />"); output.Write(uniqueHits); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.Write("<strong>Total Hits:</strong><br />"); output.Write(totalHits); output.WriteEndTag("td"); output.WriteEndTag("tr"); if (hits.Count > 0) { output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.Write("<strong>Last Hit:</strong><br />"); output.Write(hits[hits.Count - 1].RequestDate.ToString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); } #endregion #region Update Display output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.Write("<strong>Last Updated:</strong><br />"); output.Write(clip.ModifyDate.ToString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); #endregion #region Admin Notices output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); if (!clip.ParentCatalog.Enabled) { output.Write(string.Format("<div><font color=\"ff0000\">Admin Notice: The requested clip's parent catalog '{0}' is disabled.</font></div>", clip.ParentCatalog.Title)); } if (clip.ExpirationDate < DateTime.Now) { output.Write(string.Format("<div><font color=\"ff0000\">Admin Notice: The requested clip expired on {0}.</font></div>", clip.ExpirationDate)); } if (clip.PublishDate > DateTime.Now) { output.Write(string.Format("<div><font color=\"ff0000\">Admin Notice: The requested clip will be published on {0}.</font></div>", clip.PublishDate)); } output.WriteEndTag("td"); output.WriteEndTag("tr"); #endregion output.WriteEndTag("table"); } #endregion #region Gloss Word Panel if (b.FaqCompiled) { output.Write("\r\n" + "<script language=\"javascript\">\r\n" + "function gfx_faqToggle(id) {\r\n" + " q = new getObj(id); \r\n"+ " if(q.style.display == 'block') \r\n"+ " q.style.display = 'none'; \r\n"+ " else \r\n"+ " q.style.display = 'block'; \r\n"+ "}\r\n" + "</script>\r\n"); } if (b.GlossWordsCompiled) { output.Write("\r\n" + "<script language=\"javascript\">\r\n" + "function gfx_glossCopy(id) {\r\n" + " document.getElementById('glosscontainer').innerHTML = \r\n"+ " document.getElementById(id).innerHTML;\r\n"+ "}\r\n" + "</script>\r\n"); output.WriteBeginTag("table"); output.WriteAttribute("border", "0"); output.WriteAttribute("cellPadding", "5"); output.WriteAttribute("cellSpacing", "0"); output.WriteAttribute("width", "150px"); if (_glossTableCssClass != string.Empty) { output.WriteAttribute("class", _glossTableCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); if (_glossTitleCssClass != string.Empty) { output.WriteAttribute("class", _glossTitleCssClass); } output.Write(HtmlTextWriter.TagRightChar); output.Write("Glossary"); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteFullBeginTag("td"); output.WriteBeginTag("div"); output.WriteAttribute("id", "glosscontainer"); output.Write(HtmlTextWriter.TagRightChar); output.Write("Please hover over a keyword to view glossary content."); output.WriteEndTag("div"); output.Write(b.GlossBlock); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteEndTag("table"); } #endregion output.WriteEndTag("div"); #endregion output.Write(b.Output); output.WriteEndTag("div"); // DO NOT RECORD HITS ON ADMIN VIEW OR IF USER HAS ALREADY // HIT THIS PAGE UNIQUELY. if (!adminView & _hitCounterEnabled) { if (Page.Session["GFX_HIT_" + clip.ID.ToString()] == null) { clip.SaveHit(Page.Request, true); Page.Session["GFX_HIT_" + clip.ID.ToString()] = true; } else { clip.SaveHit(Page.Request, false); } } }
/// <summary> /// Render this control to the output parameter specified. /// </summary> /// <param name="output"> The HTML writer to write out to </param> protected override void RenderContent(HtmlTextWriter output) { EnsureChildControls(); StringBuilder whereQuery = new StringBuilder(); DojoClassManager m = new DojoClassManager(); // // Qualify Parent Definition Selection in Query // if (parentDefinitionID == 0) { whereQuery.Append("(ParentDefinitionID=null OR ParentDefinitionID=0) "); } else if (parentDefinitionID > 0) { whereQuery.Append("ParentDefinitionID=" + parentDefinitionID.ToString() + ") "); } // // Qualify Parent Seminar Selection in Query // if (parentSeminarID == 0) { if (whereQuery.Length > 0) { whereQuery.Append("AND (ParentSeminarID=null OR ParentSeminarID=0) "); } else { whereQuery.Append("(ParentSeminarID=null OR ParentSeminarID=0) "); } } else if (parentSeminarID > 0) { whereQuery.Append("(ParentSeminarID=" + parentSeminarID.ToString() + ") "); } switch (ddSearchMode.SelectedItem.Text) { case "Today": // today if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(LocalTime.Date); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(LocalTime.Date.AddDays(1)); whereQuery.Append("#)"); break; case "This Month": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date).AddMonths(1)); whereQuery.Append("#)"); break; case "Last Month": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.SubtractMonths(DateManipulator.FirstOfMonth(LocalTime.Date), 1)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.FirstOfMonth(LocalTime.Date)); whereQuery.Append("#)"); break; case "This Week": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfWeek(LocalTime.Date)); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.LastOfWeek(LocalTime.Date).AddDays(1)); whereQuery.Append("#)"); break; case "Last Week": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateManipulator.FirstOfWeek(LocalTime.Date).Subtract(TimeSpan.FromDays(7))); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateManipulator.LastOfWeek(LocalTime.Date).Subtract(TimeSpan.FromDays(6))); whereQuery.Append("#)"); break; case "This Year": if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("(ClassStart>=#"); whereQuery.Append(DateTime.Parse("1/1/" + LocalTime.Date.Year.ToString())); whereQuery.Append("# AND ClassStart <#"); whereQuery.Append(DateTime.Parse("1/1/" + (LocalTime.Date.Year + 1).ToString())); whereQuery.Append("#)"); break; } if (cbSeminarFilter.Checked) { if (whereQuery.Length > 0) { whereQuery.Append(" AND "); } whereQuery.Append("ParentSeminarID IS NOT NULL"); } DojoClassCollection dojoClassCollection = m.GetCollection(whereQuery.ToString(), "ClassStart ASC", new DojoClassFlags[] { DojoClassFlags.Instructor, DojoClassFlags.InstructorPrivateContact }); bool rowflag = false; string rowCssClass; string currentIndex = string.Empty; string previousIndex = string.Empty; // // Render Records // foreach (DojoClass entry in dojoClassCollection) { #region Index Rows Rendering currentIndex = entry.ClassStart.ToLongDateString(); if (currentIndex != previousIndex) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("valign", "top"); output.WriteAttribute("colspan", "4"); output.WriteAttribute("class", indexRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write(currentIndex); output.WriteEndTag("td"); output.WriteEndTag("tr"); previousIndex = currentIndex; } #endregion if (rowflag) { rowCssClass = this.defaultRowCssClass; } else { rowCssClass = this.alternateRowCssClass; } rowflag = !rowflag; output.WriteBeginTag("tr"); output.WriteAttribute("i", entry.ID.ToString()); output.WriteLine(HtmlTextWriter.TagRightChar); output.Indent++; // // Render Main Representation of Record // output.WriteBeginTag("td"); output.WriteAttribute("valign", "top"); output.WriteAttribute("class", rowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.WriteFullBeginTag("strong"); output.Write(entry.Name); output.WriteEndTag("strong"); output.Write("<br>"); output.Write(entry.Instructor.PrivateContact.FullName); output.WriteEndTag("td"); output.WriteLine(); // // Render Class Start and End Dates // output.WriteBeginTag("td"); output.WriteAttribute("class", rowCssClass); output.WriteAttribute("valign", "top"); output.Write(HtmlTextWriter.TagRightChar); // output.Write(entry.ClassStart.ToLongDateString()); // output.Write("<br />"); output.Write(entry.ClassStart.ToShortTimeString()); output.Write(" - "); output.Write(entry.ClassEnd.ToShortTimeString()); output.WriteEndTag("td"); output.WriteLine(); output.Indent--; output.WriteEndTag("tr"); output.WriteLine(); } }
public void RunScan() { DojoBulkAttendanceEntryManager bulkManager; DojoBulkAttendanceEntryCollection bulkAttendance; DojoAttendanceEntryManager m; DojoAttendanceEntryCollection attendance; double classLength; DateTime dayIndex; double dayWeightedHours; double dayWeightedHoursInRank; DateTime firstDayOfWeek; DateTime lastDayOfWeek; DateTime firstDayOfLastWeek; DateTime lastDayOfLastWeek; bulkManager = new DojoBulkAttendanceEntryManager(); bulkAttendance = bulkManager.GetCollection("MemberID=" + member.iD, string.Empty, null); // Load the attendance entry collection and be sure to sort by ClassStart // so that the system can calculate weighted hours properly. m = new DojoAttendanceEntryManager(); attendance = m.GetCollection("MemberID=" + member.iD, "ClassStart", DojoAttendanceEntryFlags.Class); // Clear Data this.totalBulkHours = 0; this.totalBulkHoursInRank = 0; this.totalHours = 0; this.totalHoursInRank = 0; this.totalWeightedHours = 0; this.totalWeightedHoursInRank = 0; this.totalHoursThisWeek = 0; this.totalHoursLastWeek = 0; classLength = 0; dayIndex = DateTime.MinValue; dayWeightedHours = 0; dayWeightedHoursInRank = 0; firstDayOfWeek = DateManipulator.FirstOfWeek(DateTime.Now); lastDayOfWeek = firstDayOfWeek.Add(new TimeSpan(6, 23, 59, 59, 999)); firstDayOfLastWeek = DateManipulator.FirstOfWeek(DateTime.Now.Subtract(TimeSpan.FromDays(7))); lastDayOfLastWeek = firstDayOfLastWeek.Add(new TimeSpan(6, 23, 59, 59, 999)); // Scan Bulk Hours for (int x = 0; x < bulkAttendance.Count; x++) { totalBulkHours += bulkAttendance[x].Duration.TotalHours; if (bulkAttendance[x].rank.iD == member.rank.iD) { totalBulkHoursInRank += bulkAttendance[x].Duration.TotalHours; } } if (attendance.Count > 0) { dayIndex = attendance[0].Class.ClassStart.Date; } for (int x = 0; x < attendance.Count; x++) { classLength = (attendance[x].Class.ClassEnd - attendance[x].Class.ClassStart).TotalHours; // Total Hours totalHours += classLength; // Total Hours in Rank if (attendance[x].rank.iD == member.rank.iD) { totalHoursInRank += classLength; } // Total Weighted Hours if (attendance[x].Class.ClassStart.Date != dayIndex) { // Add Prior Temporary Values totalWeightedHours += dayWeightedHours; totalWeightedHoursInRank += dayWeightedHoursInRank; // Reset Hours for Day dayWeightedHours = 0; dayWeightedHoursInRank = 0; dayIndex = attendance[x].Class.ClassStart.Date; } dayWeightedHours += classLength; if (attendance[x].rank.iD == member.rank.iD) { dayWeightedHoursInRank += classLength; } if (dayWeightedHours > maxDayHours) { dayWeightedHours = maxDayHours; } if (dayWeightedHoursInRank > maxDayHours) { dayWeightedHoursInRank = maxDayHours; } if (attendance[x].Class.ClassStart >= firstDayOfLastWeek && attendance[x].Class.ClassStart <= lastDayOfLastWeek) { totalHoursLastWeek += classLength; } if (attendance[x].Class.ClassStart >= firstDayOfWeek && attendance[x].Class.ClassStart <= lastDayOfWeek) { totalHoursThisWeek += classLength; } // Update Last Signin if (attendance[x].signinTime > lastSignin) { lastSignin = attendance[x].signinTime; } } // Tally Remaining Temporary Values totalWeightedHours += dayWeightedHours; totalWeightedHoursInRank += dayWeightedHoursInRank; // Find Ninety Day Instructors DateTime maxDate = DateTime.Now; DateTime minDate = maxDate.Subtract(TimeSpan.FromDays(90)); instructor1 = attendance.FindTopInstructor(minDate, maxDate, null); instructor2 = attendance.FindTopInstructor(minDate, maxDate, instructor1); instructor3 = attendance.FindTopInstructor(minDate, maxDate, instructor1, instructor2); }