private ViewDataAdapter.FetchResult GetData(string base64SecureConfiguration, string sortExpression, IDictionary <string, string> customParameters)
        {
            var viewConfiguration       = ConvertSecureStringToViewConfiguration(base64SecureConfiguration);
            var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: Request.RequestContext, portalName: viewConfiguration.PortalName);

            var viewDataAdapter = new ViewDataAdapter(viewConfiguration, dataAdapterDependencies, 1, null, sortExpression, null, null, customParameters: customParameters);

            return(viewDataAdapter.FetchEntities());
        }
        public DataTable Select(int startRowIndex, int maximumRows = -1, Configuration configuration = null)
        {
            if (configuration == null)
            {
                throw new ApplicationException("Invalid ViewObjectDataSource configuration. Please set the Configuration property");
            }

            if (configuration.ViewConfigurations == null || !configuration.ViewConfigurations.Any())
            {
                throw new ApplicationException("Invalid ViewObjectDataSource configuration. Please set the Configuration property");
            }

            var serviceContext     = PortalCrmConfigurationManager.CreateServiceContext(configuration.PortalName);
            var viewParameterValue = HttpContext.Current.Request[configuration.ViewQueryStringParameterName];

            Guid selectedViewId;

            Guid.TryParse(viewParameterValue ?? string.Empty, out selectedViewId);

            var currentViewConfiguration = GetCurrentViewConfiguration(configuration, selectedViewId);

            var view = currentViewConfiguration.GetEntityView(configuration.Views);

            var pageParameterValue           = HttpContext.Current.Request[currentViewConfiguration.PageQueryStringParameterName];
            var searchParameterValue         = HttpContext.Current.Request[currentViewConfiguration.Search.SearchQueryStringParameterName];
            var sortParameterValue           = HttpContext.Current.Request[currentViewConfiguration.SortQueryStringParameterName];
            var filterParameterValue         = HttpContext.Current.Request[currentViewConfiguration.FilterQueryStringParameterName];
            var metadataFilterParameterValue = HttpContext.Current.Request[currentViewConfiguration.FilterSettings.FilterQueryStringParameterName];

            var pageNumber = 1;

            if (!string.IsNullOrEmpty(pageParameterValue))
            {
                int.TryParse(pageParameterValue, out pageNumber);
            }

            var viewDataAdapter = new ViewDataAdapter(currentViewConfiguration, new PortalConfigurationDataAdapterDependencies(configuration.PortalName), pageNumber, searchParameterValue, sortParameterValue, filterParameterValue, metadataFilterParameterValue);

            var result = viewDataAdapter.FetchEntities();

            var records = result.Records;

            TotalRecordCount = result.TotalRecordCount;

            return(records.ToDataTable(serviceContext, view.SavedQuery, false, "r", CultureInfo.InvariantCulture));
        }
        private IActivityCollection FetchActivities(EntityReference regarding, int page = 1, int pageSize = DefaultMaxPageSize, EntityMetadata entityMetadata = null)
        {
            var viewConfiguration = new ViewConfiguration("activitypointer", "savedqueryid", PortalTimelineSavedQueryId, pageSize);

            viewConfiguration.EnableEntityPermissions = true;

            var viewAdapter = new ViewDataAdapter(viewConfiguration, _dependencies,
                                                  page, filter: regarding.Id.ToString(), regarding: regarding);

            viewAdapter.FilterCollection.Add(new Filter
            {
                Type       = LogicalOperator.And,
                Conditions = new List <Condition>
                {
                    new Condition("regardingobjectid", ConditionOperator.Equal, regarding.Id)
                }
            });

            var activityPointerCollection = viewAdapter.FetchEntities();

            var activities = activityPointerCollection.Records.Select(activityPointer => new Activity(activityPointer, regarding));

            return(new ActivityCollection(activities, activityPointerCollection.TotalRecordCount));
        }