public async Task <IActionResult> SearchQuick([FromQuery] PaginationFilterQuickSeach filter) { var route = Request.Path.Value; var model = await _userService.SearchQuick(filter.SearchString, filter.PageNumber, filter.PageSize); var pagedReponse = PaginationHelper.CreatePagedReponse <UserModel>(model.entities, model.PaginationFilter, model.totalRecords, _uriService, route); return(Ok(pagedReponse)); }
public Uri GetPageUri(PaginationFilterQuickSeach filter, string route) { var _enpointUri = new Uri(string.Concat(_baseUri, route)); var modifiedUri = QueryHelpers.AddQueryString(_enpointUri.ToString(), "SearchString", filter.SearchString.ToString()); modifiedUri = QueryHelpers.AddQueryString(modifiedUri, "pageNumber", filter.PageNumber.ToString()); modifiedUri = QueryHelpers.AddQueryString(modifiedUri, "pageSize", filter.PageSize.ToString()); return(new Uri(modifiedUri)); }
public async Task <GetAllWithPaging <UserModel, PaginationFilterQuickSeach> > SearchQuick(string searchString, int PageNumber, int PageSize) { var validFilter = new PaginationFilterQuickSeach(searchString, PageNumber, PageSize); var users = await _userRepository.SearchQuick(searchString); var usersModel = _mapper.Map <List <UserModel> >(users); var totalRecords = usersModel.Count(); var pagedData = usersModel .Skip((validFilter.PageNumber - 1) * validFilter.PageSize) .Take(validFilter.PageSize) .ToList(); var result = new GetAllWithPaging <UserModel, PaginationFilterQuickSeach>(validFilter, pagedData, totalRecords); return(result); }
public static PagedResponse <List <T> > CreatePagedReponse <T>(List <T> pagedData, PaginationFilterQuickSeach validFilter, int totalRecords, IUriService uriService, string route) { var respose = new PagedResponse <List <T> >(pagedData, validFilter.PageNumber, validFilter.PageSize); var totalPages = ((double)totalRecords / (double)validFilter.PageSize); int roundedTotalPages = Convert.ToInt32(Math.Ceiling(totalPages)); respose.NextPage = validFilter.PageNumber >= 1 && validFilter.PageNumber < roundedTotalPages ? uriService.GetPageUri(new PaginationFilterQuickSeach(validFilter.SearchString, validFilter.PageNumber + 1, validFilter.PageSize), route) : null; respose.PreviousPage = validFilter.PageNumber - 1 >= 1 && validFilter.PageNumber <= roundedTotalPages ? uriService.GetPageUri(new PaginationFilterQuickSeach(validFilter.SearchString, validFilter.PageNumber - 1, validFilter.PageSize), route) : null; respose.FirstPage = uriService.GetPageUri(new PaginationFilterQuickSeach(validFilter.SearchString, 1, validFilter.PageSize), route); respose.LastPage = uriService.GetPageUri(new PaginationFilterQuickSeach(validFilter.SearchString, roundedTotalPages, validFilter.PageSize), route); respose.TotalPages = roundedTotalPages; respose.TotalRecords = totalRecords; return(respose); }