protected void Render(Sling Sling, DateTime dtBeg, DateTime dtEnd) { string[] GroupNames = new string[] { "Female Service Crew", "Male Service Crew" //"Hot Kitchen", //"Cold Kitchen", //"Molly's" }; string[] DayNames = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; try { foreach (string GroupName in GroupNames) { Sling.Group Group = Sling.FindGroupByName(GroupName); if (Group != null) { HtmlGenericControl h = new HtmlGenericControl("h1") { InnerText = string.Format("{0} - Times Unavailable", GroupName) }; phSchedule.Controls.Add(h); HtmlTable tbl = new HtmlTable() { }; phSchedule.Controls.Add(tbl); HtmlTableRow tr = new HtmlTableRow(); tbl.Controls.Add(tr); // headers HtmlTableCell th = new HtmlTableCell("th") { InnerText = "Employee" }; tr.Controls.Add(th); DateTime dt = dtBeg; for (int iDay = 0; iDay < 7; iDay++) { tr.Controls.Add(new HtmlTableCell("th") { InnerHtml = string.Format("{0}<br/> {1}/{2}", DayNames[(int)dt.DayOfWeek], dt.Month, dt.Day) }); dt = dt.AddDays(1); } // employees Sling.SortUsers(Group.Users); foreach (Sling.User User in Group.Users) { tr = new HtmlTableRow(); tbl.Controls.Add(tr); HtmlTableCell tc = new HtmlTableCell() { InnerText = string.Format("{0} {1}", User.FirstName, (User.LastName != null && User.LastName.Length > 0 ? User.LastName[0].ToString() : string.Empty)) }; tr.Controls.Add(tc); // events for the employee dt = dtBeg; for (int iDay = 0; iDay < 7; iDay++) { // one day at a time DateTime dtEndOfDay = dt.AddDays(1); // look for events on the day tc = new HtmlTableCell(); tr.Controls.Add(tc); string Desc = ""; bool fAllDay = false; foreach (Sling.CalendarEvent Event in User.CalendarEvents) { if (Event.Type == cnAvailability && dt.Day == Event.Beg.Day || Event.Type == cnLeave && (dt <= Event.Beg && Event.Beg <= dtEndOfDay || dt <= Event.End && Event.End <= dtEndOfDay || Event.Beg < dt && dtEndOfDay < Event.End)) { if (Event.FullDay || Event.Beg < dt && dtEndOfDay < Event.End) { fAllDay = true; Desc = "All Day"; } else { if (!fAllDay) { Desc += string.Format("{0} - {1}<br/>", (dt <= Event.Beg ? TimeFormat(Event.Beg) : "Midnight"), (Event.End <= dtEndOfDay ? TimeFormat(Event.End) : "Midnight")); } } } } tc.InnerHtml = Desc; dt = dt.AddDays(1); } } } } } catch (Exception Ex) { Err Err = new Err(Ex); Response.Write(Err.Html()); } }