예제 #1
0
        public virtual OperationResult ListItems(
            int?pageNumber, int?pageSize, string sortCol, string sortDir, string searchTerms)
        {
            var result = new OperationResult();

            sortCol = sortCol ?? "Name";
            sortDir = sortDir ?? "ASC";

            string[] searchKeywords = !searchTerms.IsNullOrWhiteSpace() ? searchTerms.Split(',') : new string[] { };
            result.AddResultObject("keywords", searchKeywords);

            int totalNumberOfRecords;
            int totalNumberOfPages;
            int offset;
            int offsetUpperBound;

            var list = FindAllEntitiesByCriteria(
                pageNumber,
                pageSize,
                out totalNumberOfRecords,
                sortCol,
                sortDir,
                out offset,
                out offsetUpperBound,
                out totalNumberOfPages,
                result,
                BuildSearchFilterPredicate(searchKeywords));

            result.AddResultObject("list", list);
            return(result);
        }
        public OperationResult ListItems(
            int?pageNumber, int?pageSize, string sortCol, string sortDir, string searchTerms)
        {
            var result = new OperationResult();

            int pageIndex  = pageNumber ?? 1;
            int sizeOfPage = pageSize ?? 10;

            sortCol     = sortCol ?? "Name";
            sortDir     = sortDir ?? "ASC";
            searchTerms = searchTerms.IsNullOrWhiteSpace() ? string.Empty: searchTerms;

            int totalNumberOfRecords;
            int totalNumberOfPages;
            int offset;
            int offsetUpperBound;

            var list = FindAllEntitiesByCriteria(
                pageNumber,
                pageSize,
                out totalNumberOfRecords,
                sortCol,
                sortDir,
                out offset,
                out offsetUpperBound,
                out totalNumberOfPages,
                result,
                searchTerms);

            result.AddResultObject("list", list);
            result.AddResultObject("searchTerms", searchTerms);
            result.AddResultObject("sortCol", sortCol);
            result.AddResultObject("sortDir", sortDir);
            return(result);
        }
예제 #3
0
        protected virtual IEnumerable <TEntity> FindAllEntitiesByCriteria(
            int?pageNumber,
            int?pageSize,
            out int totalRecords,
            string sortColumn,
            string sortDirection,
            out int offset,
            out int offsetUpperBound,
            out int totalNumberOfPages,
            OperationResult result,
            ExpressionStarter <TEntity> searchPredicate)
        {
            if (Repository == null)
            {
                throw new Exception(nameof(Repository));
            }
            if (sortColumn.IsNullOrWhiteSpace())
            {
                Error.ArgumentNull(nameof(sortColumn));
            }
            if (sortDirection.IsNullOrWhiteSpace())
            {
                Error.ArgumentNull(nameof(sortDirection));
            }

            int pageIndex  = pageNumber ?? 1;
            int sizeOfPage = pageSize ?? 10;

            string[] keywords = result.ObjectsDictionary["keywords"] as string[];

            var items = Repository.FindAllEntitiesByCriteria(
                pageIndex, sizeOfPage, out totalRecords, sortColumn, sortDirection, searchPredicate);

            totalNumberOfPages = (int)Math.Ceiling((double)totalRecords / sizeOfPage);

            offset           = (pageIndex - 1) * sizeOfPage + 1;
            offsetUpperBound = offset + (sizeOfPage - 1);
            if (offsetUpperBound > totalRecords)
            {
                offsetUpperBound = totalRecords;
            }

            result.AddResultObject("sortCol", sortColumn);
            result.AddResultObject("sortDir", sortDirection);
            result.AddResultObject("offset", offset);
            result.AddResultObject("pageIndex", pageIndex);
            result.AddResultObject("sizeOfPage", sizeOfPage);
            result.AddResultObject("offsetUpperBound", offsetUpperBound);
            result.AddResultObject("totalNumberOfRecords", totalRecords);
            result.AddResultObject("totalNumberOfPages", totalNumberOfPages);
            result.AddResultObject("searchTerms", string.Join(",", keywords.Select(i => i.ToString())));

            return(items);
        }
        protected override IEnumerable <Artist> FindAllEntitiesByCriteria(
            int?pageNumber,
            int?pageSize,
            out int totalRecords,
            string sortColumn,
            string sortDirection,
            out int offset,
            out int offsetUpperBound,
            out int totalNumberOfPages,
            OperationResult result,
            params string[] keywords)
        {
            if (_artistsRepository == null)
            {
                throw new Exception(nameof(_artistsRepository));
            }
            if (sortColumn.IsNullOrWhiteSpace())
            {
                Error.ArgumentNull(nameof(sortColumn));
            }
            if (sortDirection.IsNullOrWhiteSpace())
            {
                Error.ArgumentNull(nameof(sortDirection));
            }

            int pageIndex  = pageNumber ?? 1;
            int sizeOfPage = pageSize ?? 10;

            var items = _artistsRepository.FindAllEntitiesByCriteria(
                pageIndex, sizeOfPage, out totalRecords, sortColumn, sortDirection, keywords);

            totalNumberOfPages = (int)Math.Ceiling((double)totalRecords / sizeOfPage);

            offset           = (pageIndex - 1) * sizeOfPage + 1;
            offsetUpperBound = offset + (sizeOfPage - 1);
            if (offsetUpperBound > totalRecords)
            {
                offsetUpperBound = totalRecords;
            }

            result.AddResultObject("offset", offset);
            result.AddResultObject("pageIndex", pageIndex);
            result.AddResultObject("sizeOfPage", sizeOfPage);
            result.AddResultObject("offsetUpperBound", offsetUpperBound);
            result.AddResultObject("totalNumberOfRecords", totalRecords);
            result.AddResultObject("totalNumberOfPages", totalNumberOfPages);

            return(items);
        }