/// <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();
        }
Ejemplo n.º 2
0
        /// <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();
        }