/// <summary>
        /// any changes made here need to be mirrored in getcalendarschedule
        /// </summary>
        /// <param name="id"></param>
        /// <param name="ownerEntity"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public static RDN.Portable.Classes.Controls.Calendar.Calendar GetCalendarScheduleForView(Guid id, CalendarOwnerEntityEnum ownerEntity, DateTime startDate, DateTime endDate, Guid memberId)
        {
            RDN.Portable.Classes.Controls.Calendar.Calendar cal = new RDN.Portable.Classes.Controls.Calendar.Calendar();

            try
            {
                var dc = new ManagementContext();
                var calDb = (from xx in dc.Calendar.Include("CalendarEventsReocurring").Include("CalendarEvents").Include("CalendarEvents.ReocurringEvent").Include("CalendarEvents.PointsForEvent")
                             where xx.CalendarId == id
                             select new
                             {
                                 xx.IsCalendarInUTC,
                                 xx.TimeZone,
                                 xx.TimeZoneSelection,
                                 xx.DisableStartSkatingDays,
                                 xx.DisableBirthdaysFromShowing,
                                 Events = xx.CalendarEvents.Where(x => x.StartDate >= startDate && x.EndDate <= endDate && x.IsRemovedFromCalendar == false),
                                 EventsReocurring = xx.CalendarEventsReocurring.Where(x => (x.EndReocurring >= startDate || x.EndReocurring == null) && x.StartReocurring <= endDate && x.IsRemovedFromCalendar == false),
                             }).FirstOrDefault();

                string baseUrl = VirtualPathUtility.ToAbsolute("~/calendar/event/" + ownerEntity.ToString() + "/" + id.ToString().Replace("-", "") + "/");
                cal.DisableSkatingStartDates = calDb.DisableStartSkatingDays;
                cal.DisableBirthdays = calDb.DisableBirthdaysFromShowing;
                //adds all the events from the database that were in the date range selected.
                foreach (var ev in calDb.Events)
                {
                    try
                    {
                        CalendarEventJson calEvent = new CalendarEventJson();
                        if (ev.Color != null)
                        {
                            var c = Color.FromArgb(ev.Color.ColorIdCSharp);
                            calEvent.backColor = ColorTranslator.ToHtml(c);
                        }
                        calEvent.title = ev.Name;
                        //removes length less than 14 chars 
                        //because the title is too long for the calendar display.
                        if (ev.Name.Length > 14)
                            calEvent.title = calEvent.title.Remove(14);
                        calEvent.id = ev.CalendarItemId;
                        if (ev.ReocurringEvent != null)
                            calEvent.ReocurringId = ev.ReocurringEvent.CalendarItemId;
                        calEvent.url = baseUrl + ev.CalendarItemId.ToString().Replace("-", "");
                        if (!ev.IsInUTCTime)
                        {
                            calEvent.start = ev.StartDate.ToString("o");
                            calEvent.end = ev.EndDate.ToString("o");
                            calEvent.StartDate = ev.StartDate;
                            calEvent.EndDate = ev.EndDate;
                        }
                        else
                        {
                            calEvent.StartDate = ev.StartDate + new TimeSpan(calDb.TimeZone, 0, 0);
                            calEvent.EndDate = ev.EndDate + new TimeSpan(calDb.TimeZone, 0, 0);
                            if (calEvent.StartDate != null)
                                calEvent.start = calEvent.StartDate.ToString("o");
                            if (calEvent.EndDate != null)
                                calEvent.end = calEvent.EndDate.ToString("o");
                        }
                        cal.EventsJson.Add(calEvent);
                    }
                    catch (Exception exception)
                    {
                        ErrorDatabaseManager.AddException(exception, exception.GetType(), additionalInformation: calDb.TimeZone + ":" + ev.StartDate + ":" + ev.EndDate);
                    }
                }
                
                int amount = dc.SaveChanges();
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return cal;
        }
 public static CalendarEventJson DisplayStartDateJson(MemberDisplay member)
 {
     CalendarEventJson calEvent = new CalendarEventJson();
     try
     {
         calEvent.title = "SS:" + member.DerbyName;
         //removes length less than 14 chars 
         //because the title is too long for the calendar display.
         if (calEvent.title.Length > 14)
             calEvent.title = calEvent.title.Remove(14);
         calEvent.id = member.MemberId;
         calEvent.url = VirtualPathUtility.ToAbsolute("~/calendar/started-skating/" + member.MemberId.ToString().Replace("-", "") + "/" + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(member.DerbyName));
         DateTime dt = new DateTime(DateTime.UtcNow.Year, member.StartedSkating.Value.Month, member.StartedSkating.Value.Day);
         calEvent.StartDate = dt;
         calEvent.EndDate = dt;
         calEvent.start = dt.ToString("o");
         calEvent.end = dt.ToString("o");
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return calEvent;
 }