/// <summary>
        /// Paging the specified presenter.
        /// </summary>
        /// <param name="presenter">The presenter.</param>
        /// <param name="pageNumber">The page number.</param>
        /// <param name="partialView">The partial view.</param>
        /// <param name="searchType">Type of the search.</param>
        /// <returns>
        /// The Action Result.
        /// </returns>
        public async Task<ActionResult> Paging(VisitorPresenter presenter, string pageNumber, string partialView, string searchType)
        {
            if (presenter != null && !string.IsNullOrEmpty(pageNumber) && !pageNumber.Equals(UndefinedConst) && !string.IsNullOrEmpty(partialView))
            {
                var searchFilter = new SearchFilters();

                var pagingListResult = new ListResult<Alert>();

                if (!string.IsNullOrEmpty(partialView) && string.Equals(partialView, VisitorMessages, StringComparison.OrdinalIgnoreCase))
                {
                    var messages = SessionData.Instance.MessageItems.Items.ToList();
                    var pagingResultMessages = GetPagedResult(pageNumber, messages);
                    if (pagingResultMessages != null && pagingResultMessages.Count > 0)
                    {
                        return this.RetrieveMessageOrAlertView(presenter, out pagingListResult, pagingResultMessages, true);
                    }
                }
                else if (!string.IsNullOrEmpty(partialView) && string.Equals(partialView, VisitorAlerts, StringComparison.OrdinalIgnoreCase))
                {
                    var alerts = SessionData.Instance.AlertItems.Items.ToList();
                    var pagingResultAlerts = GetPagedResult(pageNumber, alerts);
                    if (pagingResultAlerts != null && pagingResultAlerts.Count > 0)
                    {
                        return this.RetrieveMessageOrAlertView(presenter, out pagingListResult, pagingResultAlerts, false);
                    }
                }
                else
                {
                    if (!partialView.Equals(TodaysVisitPartialView, StringComparison.InvariantCultureIgnoreCase) && (presenter.VisitorStatus.VisitorStatusId.Equals(OnboardVisitorStatusValue) || presenter.VisitorStatus.VisitorStatusId.Equals(OffboardVisitorStatusValue)))
                    {
                        var visitorList = SessionData.Instance.VisitorItemListResult.Items.ToList();
                        var pagingResult = GetPagedResult(Convert.ToString(pageNumber), visitorList);
                        if (pagingResult != null && pagingResult.Count > 0)
                        {
                            var visitorListResult = new ListResult<Visitor>();
                            visitorListResult.AssignItems(pagingResult);
                            presenter.AssignVisitorSearchResult(visitorListResult);
                        }
                    }
                    else
                    {
                        if (!partialView.Equals(TodaysVisitPartialView, StringComparison.InvariantCultureIgnoreCase))
                        {
                            searchFilter.ShipTime = BaseController.GenerateLocalDateTime(DateTime.UtcNow).ToString("yyyy-MM-ddTHH:mm:ss");
                        }

                        var pagingPageNumber = Convert.ToInt32(pageNumber) > 0 ? Convert.ToInt32(pageNumber) / ApplicationSettings.MaxPageSize : 1;
                        SetSearchFilterByType(presenter, searchType, searchFilter);
                        var visitorPurpose = SessionData.Instance.MasterData.VisitPurposes.FirstOrDefault(item => item.VisitPurposeId.Equals(presenter.Visit.VisitPurposeId, StringComparison.InvariantCultureIgnoreCase));
                        var vistorType = SessionData.Instance.MasterData.VisitorTypes.FirstOrDefault(item => item.VisitorTypeId.Equals(presenter.VisitorTypeId, StringComparison.InvariantCultureIgnoreCase));

                        if (!string.IsNullOrEmpty(presenter.PersonalDetail.CitizenshipCountryId))
                        {
                            var selectedCitizenShip = presenter.PersonalDetail.CitizenshipCountryId.Split(CommaSeparatorChar).ToList();
                            searchFilter.Citizenship = selectedCitizenShip.Count != 0 && selectedCitizenShip.Count == SessionData.Instance.MasterData.Countries.Count ? string.Empty : presenter.PersonalDetail.CitizenshipCountryId;
                        }

                        searchFilter.VisitPurpose = presenter.Visit != null && !string.IsNullOrEmpty(presenter.Visit.VisitPurposeId) && visitorPurpose != null ? visitorPurpose.VisitPurposeId : string.Empty;
                        searchFilter.VisitorType = !string.IsNullOrEmpty(presenter.VisitorTypeId) && vistorType != null ? vistorType.VisitorTypeId : string.Empty;

                        searchFilter.MaxResult = ApplicationSettings.MaxPageSize;
                        searchFilter.PageNumber = pagingPageNumber > 0 ? pagingPageNumber : 1;

                        var visitors = await this.visitorManager.GetVisitorsAsync(searchFilter);
                        presenter.AssignVisitorSearchResult(visitors);
                    }
                }
            }

            return this.PartialView(partialView, presenter);
        }
 /// <summary>
 /// Extracts the first paged records.
 /// </summary>
 /// <param name="presenter">The presenter.</param>
 private void ExtractOnLoadPagedRecords(VisitorPresenter presenter)
 {
     var maxPaging = DefaultPageSize > SessionData.Instance.VisitorItemListResult.Items.Count ? SessionData.Instance.VisitorItemListResult.Items.Count : DefaultPageSize;
     var pagingResult = SessionData.Instance.VisitorItemListResult.Items.Skip(0).Take(maxPaging - 0).ToList();
     if (pagingResult.Count > 0)
     {
         var pagingItems = new ListResult<Visitor>();
         pagingItems.AssignItems(pagingResult);
         presenter.AssignVisitorSearchResult(pagingItems);
     }
 }