public SystemFile[] GetEnterpriseFoldersPaged(int itemId, string filterValue,
            int maximumRows, int startRowIndex, string sortColumn)
        {
            filterValue = filterValue ?? string.Empty;

            folders = ES.Services.EnterpriseStorage.GetEnterpriseFoldersPaged(itemId, false, false, false, filterValue, sortColumn, startRowIndex, maximumRows);

            return folders.PageItems;
        }
        protected static SystemFilesPaged GetEnterpriseFoldersPagedInternal(int itemId, bool loadUsagesData, bool loadWebdavRules, bool loadMappedDrives, string filterValue, string sortColumn, int startRow, int maximumRows)
        {
            SystemFilesPaged result = new SystemFilesPaged();

            try
            {
                // load organization
                Organization org = OrganizationController.GetOrganization(itemId);
                if (org == null)
                {
                    return null;
                }

                if (CheckUsersDomainExistsInternal(itemId, org.PackageId))
                {
                    EnterpriseStorage es = GetEnterpriseStorage(GetEnterpriseStorageServiceID(org.PackageId));

                    DataSet ds = DataProvider.GetEnterpriseFoldersPaged(itemId, "FolderName", string.Format("%{0}%", filterValue), sortColumn, startRow, maximumRows);

                    var esFolders = new List<EsFolder>();

                    ObjectUtils.FillCollectionFromDataView(esFolders, ds.Tables[1].DefaultView);

                    var folders = FillEsFolderEntity(esFolders.Where(x => !string.IsNullOrEmpty(x.FolderName)), org.OrganizationId, org.PackageId, loadUsagesData, loadWebdavRules);

                    if (loadMappedDrives)
                    {
                        Organizations orgProxy = OrganizationController.GetOrganizationProxy(org.ServiceId);

                        List<MappedDrive> mappedDrives = orgProxy.GetDriveMaps(org.OrganizationId).ToList();

                        foreach (SystemFile folder in folders)
                        {
                            var drive = GetFolderMappedDrive(mappedDrives, folder);

                            if (drive != null)
                            {
                                folder.DriveLetter = drive.DriveLetter;
                            }
                        }
                    }

                    result.RecordsCount = (int)ds.Tables[0].Rows[0][0];
                    result.PageItems = folders.Skip(startRow).Take(maximumRows).ToArray();
                }
            }
            catch(Exception e) 
            { /*skip exception*/}

            return result;
        }