//Returns the calendar events that fall in the specified duration
        //Implements Office 365-side paging
        // GET: /Calendar/
        public async Task <ActionResult> Index(int?page)
        {
            var pageNumber = page ?? 1;

            if (page < 1)
            {
                pageNumber = 1;
            }

            //Number of events displayed on one page. Edit pageSize if you like
            int pageSize = 10;

            List <model.CalendarEvent> events = await _calenderOperations.GetTodaysCalendar(NumberOfHoursBefore,
                                                                                            NumberOfHoursAfter,
                                                                                            pageNumber,
                                                                                            pageSize);

            //Store these in the ViewBag so you can use them in the Index view
            ViewBag.Page     = pageNumber;
            ViewBag.NextPage = pageNumber + 1;
            ViewBag.PrevPage = pageNumber - 1;
            ViewBag.LastPage = false;

            if (events.Count == 0)
            {
                ViewBag.LastPage = true;
            }
            return(View(events));
        }
示例#2
0
        //Returns the calendar events that fall in the specified duration
        //Implements Office 365-side paging
        // GET: /Calendar/
        public async Task <ActionResult> Index(int?page)
        {
            ViewBag.O365ServiceOperationFailed = _O365ServiceOperationFailed;

            if (_O365ServiceOperationFailed)
            {
                _O365ServiceOperationFailed = false;
            }

            var pageNumber = page ?? 1;

            if (page < 1)
            {
                pageNumber = 1;
            }

            //Number of events displayed on one page. Edit pageSize if you like
            int pageSize = 10;

            List <model.CalendarEvent> events = new List <model.CalendarEvent>();

            try
            {
                events = await _calenderOperations.GetTodaysCalendar(NumberOfHoursBefore,
                                                                     NumberOfHoursAfter,
                                                                     pageNumber,
                                                                     pageSize);
            }

            catch (AdalException e)
            {
                if (e.ErrorCode == AdalError.FailedToAcquireTokenSilently)
                {
                    //This exception is thrown when either you have a stale access token, or you attempted to access a resource that you don't have permissions to access.
                    throw e;
                }
            }

            //Store these in the ViewBag so you can use them in the Index view
            ViewBag.Page     = pageNumber;
            ViewBag.NextPage = pageNumber + 1;
            ViewBag.PrevPage = pageNumber - 1;
            ViewBag.LastPage = false;

            if ((events != null) && (events.Count == 0))
            {
                ViewBag.LastPage = true;
            }

            ViewBag.NoItemsinService = false;
            if ((events.Count == 0) && (pageNumber == 1))
            {
                ViewBag.NoItemsinService = true;
            }
            return(View(events));
        }
示例#3
0
        /// <summary>
        /// Loads today's calendar event items for the user
        /// </summary>
        /// <returns></returns>
        public async Task <bool> LoadCalendarAsync()
        {
            LoggingViewModel.Instance.Information = string.Empty;
            try
            {
                //Clear out any calendar events added in previous calls to LoadCalendarAsync()
                if (TodaysEvents != null)
                {
                    TodaysEvents.Clear();
                }
                else
                {
                    TodaysEvents = new ObservableCollection <EventViewModel>();
                }

                //Get 24 hours worth of calendar events from Exchange service via API
                List <EventViewModel> events = await _calendarOperations.GetTodaysCalendar(6, 6);

                if (events.Count == 0)
                {
                    LoggingViewModel.Instance.Information = "You have no calendar events today.";
                }
                else
                {
                    //Load today's events into the observable collection that is bound to UI
                    foreach (EventViewModel calendarEvent in events)
                    {
                        TodaysEvents.Add(calendarEvent);
                    }
                }
            }
            catch (Exception ex)
            {
                LoggingViewModel.Instance.Information = "Error on load calender " + ex.Message;
                return(false);
            }
            return(true);
        }