Esempio n. 1
0
        public void GetPublishedViewPayload()
        {
            ExTraceGlobals.CalendarCallTracer.TraceDebug((long)this.GetHashCode(), "CalendarViewEventHandler.GetPublishedViewPayload");
            AnonymousSessionContext anonymousSessionContext = base.SessionContext as AnonymousSessionContext;

            if (anonymousSessionContext == null)
            {
                throw new OwaInvalidRequestException("This request can only be sent to Calendar VDir");
            }
            CalendarViewType calendarViewType = (CalendarViewType)base.GetParameter("vt");

            ExDateTime[] array = (ExDateTime[])base.GetParameter("days");
            if (array == null)
            {
                array = new ExDateTime[]
                {
                    DateTimeUtilities.GetLocalTime().Date
                };
            }
            int num = 0;

            if (base.IsParameterSet("dir"))
            {
                num = (int)base.GetParameter("dir");
            }
            if (num != 0)
            {
                CalendarViewEventHandler.MoveDates(array, calendarViewType, num);
            }
            this.ValidateDays(array, calendarViewType, num);
            ExTimeZone exTimeZone = null;

            if (base.IsParameterSet("tz"))
            {
                string text = (string)base.GetParameter("tz");
                if (ExTimeZoneEnumerator.Instance.TryGetTimeZoneByName(text, out exTimeZone))
                {
                    anonymousSessionContext.TimeZone = exTimeZone;
                    this.HttpContext.Response.Cookies["timezone"].Value   = text;
                    this.HttpContext.Response.Cookies["timezone"].Expires = (DateTime)ExDateTime.Now.AddYears(1);
                }
            }
            using (PublishedCalendarAdapter publishedCalendarAdapter = new PublishedCalendarAdapter(anonymousSessionContext))
            {
                publishedCalendarAdapter.LoadData(CalendarUtilities.QueryProperties, array, calendarViewType, exTimeZone);
                CalendarViewPayloadWriter calendarViewPayloadWriter;
                if (calendarViewType == CalendarViewType.Monthly)
                {
                    calendarViewPayloadWriter = new MonthlyViewPayloadWriter(base.SessionContext, this.Writer, array, new CalendarAdapterBase[]
                    {
                        publishedCalendarAdapter
                    });
                }
                else
                {
                    calendarViewPayloadWriter = new DailyViewPayloadWriter(base.SessionContext, this.Writer, array, new CalendarAdapterBase[]
                    {
                        publishedCalendarAdapter
                    });
                }
                base.ResponseContentType = OwaEventContentType.Javascript;
                calendarViewPayloadWriter.Render(0, calendarViewType, Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Off, Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Off);
            }
            if (Globals.ArePerfCountersEnabled)
            {
                OwaSingleCounters.CalendarViewsRefreshed.Increment();
            }
        }
Esempio n. 2
0
        private void RenderPayload(params OwaStoreObjectId[] folderIds)
        {
            ExTraceGlobals.CalendarCallTracer.TraceDebug((long)this.GetHashCode(), "CalendarViewEventHandler.RenderPayload");
            ExDateTime[] array = (ExDateTime[])base.GetParameter("days");
            int          num   = folderIds.Length;

            if (num > 5)
            {
                throw new OwaInvalidRequestException("Too many folders");
            }
            if (num <= 0)
            {
                throw new OwaInvalidRequestException("Must pass at least one folder");
            }
            if (array == null)
            {
                array = new ExDateTime[]
                {
                    DateTimeUtilities.GetLocalTime().Date
                };
            }
            if (array.Length == 0)
            {
                throw new OwaInvalidRequestException("Empty days array is not allowed");
            }
            ReadingPanePosition requestReadingPanePosition = Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Min;

            if (base.IsParameterSet("srp"))
            {
                requestReadingPanePosition = (((bool)base.GetParameter("srp")) ? Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Right : Microsoft.Exchange.Clients.Owa.Core.ReadingPanePosition.Off);
            }
            bool flag = false;

            if (base.IsParameterSet("nvs"))
            {
                flag = (bool)base.GetParameter("nvs");
            }
            CalendarViewType viewType = (CalendarViewType)base.GetParameter("vt");

            using (CalendarAdapterCollection calendarAdapterCollection = new CalendarAdapterCollection(base.UserContext, folderIds, viewType))
            {
                int num2 = 0;
                if (base.IsParameterSet("dir"))
                {
                    num2 = (int)base.GetParameter("dir");
                }
                if (num2 != 0)
                {
                    CalendarViewEventHandler.MoveDates(array, calendarAdapterCollection.ViewType, num2);
                }
                array = CalendarUtilities.GetViewDays(base.UserContext, array, calendarAdapterCollection.ViewType, calendarAdapterCollection.PropertyFolderId, calendarAdapterCollection.FolderViewStates);
                this.ValidateDays(array, calendarAdapterCollection.ViewType, num2);
                CalendarAdapter[]         adapters = calendarAdapterCollection.GetAdapters(array, true);
                CalendarViewPayloadWriter calendarViewPayloadWriter;
                if (calendarAdapterCollection.ViewType == CalendarViewType.Monthly)
                {
                    calendarViewPayloadWriter = new MonthlyViewPayloadWriter(base.UserContext, this.Writer, array, adapters);
                }
                else
                {
                    calendarViewPayloadWriter = new DailyViewPayloadWriter(base.UserContext, this.Writer, array, adapters);
                }
                base.ResponseContentType = OwaEventContentType.Javascript;
                calendarViewPayloadWriter.Render(calendarAdapterCollection.ViewWidth, calendarAdapterCollection.ViewType, calendarAdapterCollection.ReadingPanePosition, requestReadingPanePosition);
                if (!flag)
                {
                    calendarAdapterCollection.SaveViewStates(array);
                }
            }
            if (Globals.ArePerfCountersEnabled)
            {
                OwaSingleCounters.CalendarViewsRefreshed.Increment();
            }
        }