예제 #1
0
        public static ListPaging <T> GetPagingList <T>(IQueryable <T> listAll, int pageNumber, int pageSize)
        {
            ListPaging <T> ls = new ListPaging <T>();

            ls.totalCount = listAll.Count();
            if (pageSize == 0)
            {
                pageSize = listAll.Count() == 0 ? 1 : listAll.Count();
            }

            ls.ListOut = listAll.Skip(pageSize * (pageNumber - 1)).Take(pageSize);


            ls.totalPage = System.Convert.ToInt32(System.Math.Ceiling(ls.totalCount / System.Convert.ToDouble(pageSize)));
            ls.pageStart = ((pageNumber - 1) * pageSize) + 1;
            if (ls.totalPage == pageNumber)
            {
                ls.pageEnd = ls.totalCount;
            }
            else
            {
                ls.pageEnd = ((pageNumber - 1) * pageSize) + pageSize;
            }

            return(ls);
        }
예제 #2
0
        public async Task <IActionResult> List(int page = 1)
        {
            ViewBag.Title = $"Sách";
            ViewBag.List  = true;
            ListPaging <Book> value = await bookRepo.tGetPage(pageSize, page);

            return(View(value));
        }
예제 #3
0
        public async Task <IActionResult> Search(string search, int page = 1)
        {
            ViewBag.Title  = $"Kết quả tìm kiếm: {search}";
            ViewBag.Search = search;
            ListPaging <Book> value = await bookRepo.tGetByNamePage(search, pageSize, page);

            return(View("List", value));
        }
예제 #4
0
        public async Task <IActionResult> SubCat(int id, int page = 1)
        {
            SubCat subcat = await subCatRepo.GetByID(id);

            ViewBag.Title    = $"Loại: {subcat?.Name}";
            ViewBag.SubCatID = id;
            ListPaging <Book> value = await bookRepo.tGetBySubCatPage(id, pageSize, page);

            return(View("List", value));
        }
예제 #5
0
        private async void LoadData(int page)
        {
            ListPaging <Order> orderPaging = await orderRepo.GetPage(pageSize, page);

            if (orderPaging?.list != null)
            {
                orders = new ObservableCollection <Order>(orderPaging.list);
                paging = orderPaging.paging;
                ObservableCollection <int> _pageList = new ObservableCollection <int>();
                for (int i = 1; i <= paging.totalPage; i++)
                {
                    _pageList.Add(i);
                }
                pageList = _pageList;
            }
        }
예제 #6
0
        // GET: /<controller>/
        public async Task <IActionResult> Index(int page = 1)
        {
            User u = HttpContext.Session.GetJson <User>("User");

            if (u != null)
            {
                ListPaging <Order> order = await orderRepo.GetByUserPage(u.ID, pageSize, page);

                return(View(order));
            }
            else
            {
                TempData["Message"] = new[] { "danger", "Vui lòng đăng nhập" };
                return(Redirect("/"));
            }
        }
예제 #7
0
        public void LoadInitComplete()
        {
            if (_listSetting != null)
            {
                IsLoading = false;

                ListThemes = CommonMethods.GetListThemes();
                List <int> lstPage = new List <int>();
                for (int i = 2; i < 11; i++)
                {
                    lstPage.Add(i * 5);
                }
                ListPaging = lstPage;

                Vlu_UserSettings obj = _listSetting.FirstOrDefault(c => c.KeySetting == KeySetting.Theme);
                if (obj == null)
                {
                    obj              = new Vlu_UserSettings();
                    obj.ID           = -1;
                    obj.KeySetting   = KeySetting.Theme;
                    obj.ValueSetting = string.Empty;
                    obj.ModifiedDate = DateTime.Now;
                    SelectedTheme    = ListThemes.FirstOrDefault().Key;
                    _listSetting.Add(obj);
                }
                else
                {
                    SelectedTheme = obj.ValueSetting;
                }

                obj = _listSetting.FirstOrDefault(c => c.KeySetting == KeySetting.PagingSize);
                if (obj == null)
                {
                    obj              = new Vlu_UserSettings();
                    obj.ID           = -1;
                    obj.KeySetting   = KeySetting.PagingSize;
                    obj.ValueSetting = string.Empty;
                    obj.ModifiedDate = DateTime.Now;
                    SelectedPaging   = ListPaging.FirstOrDefault();
                    _listSetting.Add(obj);
                }
                else
                {
                    SelectedPaging = Convert.ToInt32(obj.ValueSetting);
                }
            }
        }
예제 #8
0
        public ListPaging <Book> GetPage(int pageSize, int page)
        {
            Paging paging = new Paging()
            {
                totalItem = table.Count(),
                pageSize  = pageSize,
                pageIndex = page
            };
            var book = table.OrderBy(o => o.ID).Skip(pageSize * (page - 1)).Take(pageSize).ToList()
                       .Select(o => new Book(o));
            ListPaging <Book> bookPaging = new ListPaging <Book>()
            {
                list   = book,
                paging = paging
            };

            return(bookPaging);
        }
예제 #9
0
        public ListPaging <Order> GetPage(int pageSize, int page)
        {
            Paging paging = new Paging()
            {
                totalItem = table.Count(),
                pageSize  = pageSize,
                pageIndex = page
            };
            var order = table.OrderBy(o => o.ID).Skip(pageSize * (page - 1)).Take(pageSize).ToList()
                        .Select(o => new Order(o, true));
            ListPaging <Order> bookPaging = new ListPaging <Order>()
            {
                list   = order,
                paging = paging
            };

            return(bookPaging);
        }
예제 #10
0
        private async void LoadData(int page)
        {
            ListPaging <Book> bookPaging = await bookRepo.GetPage(pageSize, page);

            await GetCat_SubCat();

            if (bookPaging?.list != null)
            {
                books  = new ObservableCollection <Book>(bookPaging.list);
                paging = bookPaging.paging;
                ObservableCollection <int> _pageList = new ObservableCollection <int>();
                for (int i = 1; i <= paging.totalPage; i++)
                {
                    _pageList.Add(i);
                }
                pageList = _pageList;
                IsPaging = true;
            }
        }
예제 #11
0
        public static ListPaging GetPaging(IEnumerable <object> data, ListFilter filter)
        {
            var startRecord = (filter.page - 1) * filter.rows;
            var _showing    = data.Skip(startRecord).Take(filter.rows);
            var endRecord   = (startRecord + _showing.Count());
            var pagedData   = new ListPaging
            {
                records = data.Count(),
                pages   = (int)Math.Ceiling(data.Count() / (float)filter.rows),
                rows    = filter.rows,
                page    = filter.page,
                sort    = filter.sort,
                dir     = filter.dir,
                message = data.Any() ? startRecord + "-" + endRecord : "No results found",
                data    = _showing
            };

            return(pagedData);
        }
예제 #12
0
        public ListPaging <Book> tGetByNamePage(string name, int pageSize, int page)
        {
            List <int> itemHide = GetTimeBased();
            var        value    = table.Where(o => !itemHide.Contains(o.ID) && o.Name.Contains(name));
            var        book     = value.OrderBy(o => o.ID).Skip(pageSize * (page - 1)).Take(pageSize).ToList()
                                  .Select(o => new Book(o, true));
            Paging paging = new Paging()
            {
                totalItem = value.Count(),
                pageSize  = pageSize,
                pageIndex = page
            };
            ListPaging <Book> bookPaging = new ListPaging <Book>()
            {
                list   = book,
                paging = paging
            };

            return(bookPaging);
        }
예제 #13
0
        public ListPaging <Book> SearchPage(string name, int pageSize, int page)
        {
            Paging paging = new Paging()
            {
                totalItem = 0,
                pageSize  = pageSize,
                pageIndex = page
            };
            var book = GetByName(name).OrderBy(o => o.ID).Skip(pageSize * (page - 1)).Take(pageSize).ToList()
                       .Select(o => new Book(o));

            paging.totalItem = book.Count();
            ListPaging <Book> bookPaging = new ListPaging <Book>()
            {
                list   = book,
                paging = paging
            };

            return(bookPaging);
        }
예제 #14
0
        private async void SearchBook(int page)
        {
            if (!string.IsNullOrEmpty(txtSearchBook))
            {
                ListPaging <Book> bookPaging = await bookRepo.SearchPage(txtSearchBook, pageSize, page);

                //await GetCat_SubCat();
                if (bookPaging?.list != null)
                {
                    books  = new ObservableCollection <Book>(bookPaging.list);
                    paging = bookPaging.paging;
                    ObservableCollection <int> _pageList = new ObservableCollection <int>();
                    for (int i = 1; i <= paging.totalPage; i++)
                    {
                        _pageList.Add(i);
                    }
                    pageList = _pageList;
                }
            }
        }
예제 #15
0
        public ListPaging <Book> tGetByCatPage(int id, int pageSize, int page)
        {
            List <int> itemHide = GetTimeBased();
            var        value    = table.Where(o => !itemHide.Contains(o.ID) && o.bookCat.Select(a => a.CatID).Contains(id));
            var        value2   = table.Where(o => !itemHide.Contains(o.ID) && o.bookSubCat.Select(a => a.SubCat.CatID).Contains(id));
            var        book     = value.Union(value2).OrderBy(o => o.ID).Skip(pageSize * (page - 1)).Take(pageSize).ToList()
                                  .Select(o => new Book(o, true));
            Paging paging = new Paging()
            {
                totalItem = value.Union(value2).Count(),
                pageSize  = pageSize,
                pageIndex = page
            };
            ListPaging <Book> bookPaging = new ListPaging <Book>()
            {
                list   = book,
                paging = paging
            };

            return(bookPaging);
        }
예제 #16
0
        public RequestResponse <InvoiceListItem> GetInvoices(ListPaging pagingdDetails)
        {
            //Validate that entered page size is valid
            if (pagingdDetails.PageSize < 1)
            {
                return new RequestResponse <InvoiceListItem> {
                           Success = false, Message = "Page size must be greater than 0", Data = null
                }
            }
            ;
            //validate that entered page number is valid
            if (pagingdDetails.PageNumber < 1)
            {
                return new RequestResponse <InvoiceListItem> {
                           Success = false, Message = "Page number must be greater than 0", Data = null
                }
            }
            ;
            //list of returned invoices
            var lstData = new List <InvoiceListItem>();
            IEnumerable <Invoice> lstFilteredData = _invoiceRepository.ListAll();
            int recordsCount = 0; //total records number

            //checking if the user entered a search criteria or not to check if any record contains this word
            if (!string.IsNullOrEmpty(pagingdDetails.SearchInput))
            {
                lstFilteredData =
                    _invoiceRepository.Filter(i => i.Description.Contains(pagingdDetails.SearchInput) ||
                                              i.DueDate.ToLongDateString().Contains(pagingdDetails.SearchInput) ||
                                              i.Amount.ToString().Contains(pagingdDetails.SearchInput));
            }
            //checking that the user clicked a column to sort by or not
            if (!string.IsNullOrEmpty(pagingdDetails.SortingColumn))
            {
                switch (pagingdDetails.SortingColumn.ToLower())
                {
                case "id":
                    lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.Id) : lstFilteredData.OrderBy(i => i.Id);
                    break;

                case "amount":
                    lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.Amount) : lstFilteredData.OrderBy(i => i.Amount);
                    break;

                case "description":
                    lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.Description) : lstFilteredData.OrderBy(i => i.Description);
                    break;

                case "duedate":
                    lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.DueDate) : lstFilteredData.OrderBy(i => i.DueDate);
                    break;

                default:
                    lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.Id) : lstFilteredData.OrderByDescending(i => i.Id);
                    break;
                }
            }
            else
            {
                //setting the default sort with id in case no column was selected
                lstFilteredData = pagingdDetails.IsDescending ? lstFilteredData.OrderByDescending(i => i.Id) : lstFilteredData.OrderByDescending(i => i.Id);
            }

            //getting total number of records
            recordsCount = lstFilteredData.Count();
            //getting the number of pages
            var totalPages = (int)Math.Ceiling((double)recordsCount / (double)pagingdDetails.PageSize);

            //making sure that the page number doesn't exceed the total pages number
            if (pagingdDetails.PageNumber > totalPages)
            {
                return new RequestResponse <InvoiceListItem> {
                           Success = false, Message = "Page number can't be greater than Total pages", Data = null
                }
            }
            ;
            var skipValue = pagingdDetails.PageNumber - 1 * pagingdDetails.PageSize; //preparing the skip value
            //preparing the take value - here we're calculating the number of records should be taken to be returned to the user. In case it was the last page, we calculate the number of remaining items only to take them
            var takeValue = (totalPages * pagingdDetails.PageSize) < recordsCount ? pagingdDetails.PageSize : recordsCount - ((pagingdDetails.PageNumber - 1) * pagingdDetails.PageSize);

            //checking if the total records count is bigger than the page size or not to apply the paging
            if (lstFilteredData.Count() > pagingdDetails.PageSize)
            {
                lstFilteredData = lstFilteredData.Skip(skipValue).Take(takeValue);
            }
            //mapping the data from the entity to the Model
            foreach (var item in lstFilteredData)
            {
                lstData.Add(new InvoiceListItem {
                    Id = item.Id, Description = item.Description, Amount = item.Amount, DueDate = item.DueDate, CanEdit = item.State != InvoiceState.Paid
                });
            }

            return(new RequestResponse <InvoiceListItem> {
                Success = true, Message = string.Empty, Data = lstData, PagesNumber = totalPages
            });
        }
예제 #17
0
 public RequestResponse <InvoiceListItem> GetList(ListPaging pagingdDetails)
 {
     return(_invoiceService.GetInvoices(pagingdDetails));
 }