/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.PreRender"/> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs"/> object that contains the event data.</param> protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); UITools.AddStyleSheetToHeader(UITools.GetHeader(), "$skin/styles/sn-calendar.css"); var myNodeList = new List <MyCalendarEvent>(); foreach (DateTime selectedDate in MyCalendar.SelectedDates) { foreach (var item in CalendarEvents) { var myNewEvent = new MyCalendarEvent { EventText = "", Registering = 2, BrowseContentPath = item.Path }; var eventStartDate = Convert.ToDateTime(item["StartDate"]); var eventEndDate = Convert.ToDateTime(item["EndDate"]); DateTime startDate; DateTime endDate; if (!(eventStartDate <= selectedDate)) { startDate = Convert.ToDateTime(item["StartDate"]); startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0); endDate = Convert.ToDateTime(item["EndDate"]); endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59); eventStartDate = startDate; eventEndDate = endDate; } if (eventStartDate <= selectedDate && selectedDate <= eventEndDate) { var numParticipants = GetNumberOfParticipants(item); var maxParticipants = Convert.ToInt32(item["MaxParticipants"]); string regItemPath; var isSubscribed = IsUserAlreadySubscribed(item, out regItemPath); if (Convert.ToBoolean(item["RequiresRegistration"])) { // Registration needed // Participant text defines the avalaible free spaces for the event var partText = String.Format(SenseNetResourceManager.Current.GetString("EventCalendar", "ParticipantsText"), maxParticipants - numParticipants, maxParticipants); myNewEvent.ParticipantText = partText; if (maxParticipants > numParticipants) { if (isSubscribed) { myNewEvent.Registering = 1; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "AlreadyApplied"); // Unregister URL myNewEvent.BrowseContentPath = regItemPath; } else { myNewEvent.Registering = 0; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "ApplyText"); // Register URL myNewEvent.BrowseContentPath = ((CalendarEvent)item).RegistrationForm.Path; } } else if (numParticipants == maxParticipants) { myNewEvent.Registering = 3; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "FullEventText"); if (isSubscribed) { myNewEvent.Visible = true; // Unregister URL myNewEvent.BrowseContentPath = regItemPath; } else { myNewEvent.Visible = false; } } } else { // Don't need registration myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "DontNeedRegistration"); } if (!(myNodeList.Any(i => i.RelatedNode.Id == item.Id))) { myNewEvent.RelatedNode = item; myNodeList.Add(myNewEvent); } } } } CalendarEventResult.DataSource = myNodeList; this.DataBind(); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.PreRender"/> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs"/> object that contains the event data.</param> protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); UITools.AddStyleSheetToHeader(UITools.GetHeader(), "$skin/styles/sn-calendar.css"); var myNodeList = new List<MyCalendarEvent>(); foreach (DateTime selectedDate in MyCalendar.SelectedDates) { foreach (var item in CalendarEvents) { var myNewEvent = new MyCalendarEvent { EventText = "", Registering = 2, BrowseContentPath = item.Path }; var eventStartDate = Convert.ToDateTime(item["StartDate"]); var eventEndDate = Convert.ToDateTime(item["EndDate"]); DateTime startDate; DateTime endDate; if (!(eventStartDate <= selectedDate)) { startDate = Convert.ToDateTime(item["StartDate"]); startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day, 0, 0, 0); endDate = Convert.ToDateTime(item["EndDate"]); endDate = new DateTime(endDate.Year, endDate.Month, endDate.Day, 23, 59, 59); eventStartDate = startDate; eventEndDate = endDate; } if (eventStartDate <= selectedDate && selectedDate <= eventEndDate) { var numParticipants = GetNumberOfParticipants(item); var maxParticipants = Convert.ToInt32(item["MaxParticipants"]); string regItemPath; var isSubscribed = IsUserAlreadySubscribed(item, out regItemPath); if (Convert.ToBoolean(item["RequiresRegistration"])) { // Registration needed // Participant text defines the avalaible free spaces for the event var partText = String.Format(SenseNetResourceManager.Current.GetString("EventCalendar", "ParticipantsText"), maxParticipants - numParticipants, maxParticipants); myNewEvent.ParticipantText = partText; if (maxParticipants > numParticipants) { if (isSubscribed) { myNewEvent.Registering = 1; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "AlreadyApplied"); //Unregister URL myNewEvent.BrowseContentPath = regItemPath; } else { myNewEvent.Registering = 0; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "ApplyText"); //Register URL myNewEvent.BrowseContentPath = ((CalendarEvent) item).RegistrationForm.Path; } } else if (numParticipants == maxParticipants) { myNewEvent.Registering = 3; myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "FullEventText"); if (isSubscribed) { myNewEvent.Visible = true; //Unregister URL myNewEvent.BrowseContentPath = regItemPath; } else { myNewEvent.Visible = false; } } } else { // Don't need registration myNewEvent.EventText = SenseNetResourceManager.Current.GetString("EventCalendar", "DontNeedRegistration"); } if (!(myNodeList.Any(i => i.RelatedNode.Id == item.Id))) { myNewEvent.RelatedNode = item; myNodeList.Add(myNewEvent); } } } } CalendarEventResult.DataSource = myNodeList; this.DataBind(); }