Beispiel #1
0
        public IHttpActionResult AngularDTQuery(SearchObject searchObject)
        {
            UsersEntities db = new UsersEntities();

            if (searchObject.girdId == 1) //Warannty
            {
                IQueryable <Warranty> a = db.Warranties.AsQueryable();
                var xx = new DbQueryReturn <Warranty>().XXXXXXXXXXXXXX(a, searchObject);
                return(Ok(xx.Content));
            }
            else if (searchObject.girdId == 2)  //User list
            {
                IQueryable <Test> a = db.Tests.AsQueryable();
                var xx = new DbQueryReturn <Test>().XXXXXXXXXXXXXX(a, searchObject);
                return(Ok(xx.Content));
            }
            else
            {
                return(new DbQueryReturn <Test>().XXXXXXXXXXXXXX(null, searchObject));
            }
        }
Beispiel #2
0
        public dynamic XXXXXXXXXXXXXX(IQueryable <T> query, SearchObject searchObject)
        {
            decimal pageSize = 10.0M;
            int     totalPages;

            if (searchObject.searchColName == null)
            {
                searchObject.searchColName = "";
            }

            if (searchObject.searchText == null)
            {
                searchObject.searchText = ""; searchObject.searchColName = "";
            }


            if (searchObject.searchColName.Length > 0)
            {
                var lam = GetExpression <T>(searchObject.searchColName, searchObject.searchText);

                totalPages = (int)Math.Ceiling((double)(query.AsQueryable().Where(lam).Count() / pageSize));
            }
            else
            {
                totalPages = (int)Math.Ceiling((double)(query.Count() / pageSize));
            }


            if (searchObject.pageNo < 1)
            {
                searchObject.pageNo = 1;
            }
            else if (searchObject.pageNo > totalPages)
            {
                searchObject.pageNo = totalPages;
            }
            int startPage, endPage;

            if (totalPages <= 10)
            {
                startPage = 1;
                endPage   = totalPages;
            }
            else
            {
                if (searchObject.pageNo <= 6)
                {
                    startPage = 1;
                    endPage   = 10;
                }
                else if (searchObject.pageNo + 4 >= totalPages)
                {
                    startPage = totalPages - 9;
                    endPage   = totalPages;
                }
                else
                {
                    startPage = searchObject.pageNo - 5;
                    endPage   = searchObject.pageNo + 4;
                }
            }

            int totalItems = query.Count();
            int startIndex = (searchObject.pageNo - 1) * (int)pageSize;
            int endIndex   = Math.Min(startIndex + (int)pageSize - 1, totalItems - 1);
            var pages      = query.Take((endPage + 1) - startPage);

            int c = (endPage + 1) - startPage;

            List <int> a = new List <int>();

            for (int i = 0; i < c; i++)
            {
                a.Add(startPage + i);
            }

            if (searchObject.searchColName.Length > 0)
            {
                var lam = GetExpression <T>(searchObject.searchColName, searchObject.searchText);

                var param           = searchObject.searchColName;
                var propertyInfo    = typeof(T).GetProperty(searchObject.defaultSortColumnName);
                var queryResultPage = query.AsQueryable().Where(lam).ToList().OrderBy(x => propertyInfo.GetValue(x, null)).Skip((int)pageSize * (searchObject.pageNo - 1))
                                      .Take((int)pageSize).ToList();


                return(Ok(new
                {
                    totalItems = totalItems,
                    currentPage = searchObject.pageNo,
                    pageSize = pageSize,
                    totalPages = totalPages,
                    startPage = startPage,
                    endPage = endPage,
                    startIndex = startIndex,
                    endIndex = endIndex,
                    pagedItems = queryResultPage.ToList(),
                    pages = a
                }));
            }
            else
            {
                var param           = searchObject.searchColName;
                var propertyInfo    = typeof(T).GetProperty(searchObject.defaultSortColumnName);
                var queryResultPage = query.ToList().OrderBy(x => propertyInfo.GetValue(x, null)).Skip((int)pageSize * (searchObject.pageNo - 1))
                                      .Take((int)pageSize).ToList();

                //var queryResultPage = query.OrderBy("")
                //  .Skip((int)pageSize * (searchObject.pageNo - 1))
                //  .Take((int)pageSize);



                return(Ok(new
                {
                    totalItems = totalItems,
                    currentPage = searchObject.pageNo,
                    pageSize = pageSize,
                    totalPages = totalPages,
                    startPage = startPage,
                    endPage = endPage,
                    startIndex = startIndex,
                    endIndex = endIndex,
                    pagedItems = queryResultPage.ToList(),
                    pages = a
                }));
            }
        }