public async Task <PaggingResult <Song> > GetSongPage(IPaggingQuery query = null) { if (query == null) { query = new PaggingQuery(); } var songsQuery = context.Songs .Include(s => s.GenreSong) .ThenInclude(s => s.Genre) .Include(s => s.Album) .AsNoTracking() .AsQueryable(); var totalItems = songsQuery.Count(); var songsEntities = await songsQuery.ApplayPaging(query).ToArrayAsync(); var paggingResult = new PaggingResult <Song> { CurrentPage = query.Page, PageSize = query.PageSize, TotalItems = totalItems, TResult = mapper.Map <IEnumerable <Song> >(songsEntities) }; return(paggingResult); }
public void SetLinkPaging <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging, HateoasMethodType method) { var link = HateoasHelper.CreateLink(Request, routeName, result, pagging, HateoasType.First, method); if (link != null) { result.Links.Add(link); } link = HateoasHelper.CreateLink(Request, routeName, result, pagging, HateoasType.Previous, method); if (link != null) { result.Links.Add(link); } link = HateoasHelper.CreateLink(Request, routeName, result, pagging, HateoasType.Next, method); if (link != null) { result.Links.Add(link); } link = HateoasHelper.CreateLink(Request, routeName, result, pagging, HateoasType.Last, method); if (link != null) { result.Links.Add(link); } }
public PaggingResult <Blog> GetBlogsPage(BlogQuery query) { var blogsTable = context.Blogs .AsNoTracking() .Where(b => b.IsPublished == query.OnlyPublished); // Apply Ordering blogsTable = blogsTable.OrderByDescending(b => b.PublishedDate); // Convert BlogTable to Blog var blogs = mapper.Map <IEnumerable <Blog> >(blogsTable); // Tag Filter if (query.Tags != null && query.Tags.Any()) { blogs = blogs.Where( b => b.Tags.Any(s => query.Tags .Split(',', StringSplitOptions.RemoveEmptyEntries) .Contains(s, StringComparer.OrdinalIgnoreCase))); } var totalItems = blogs.Count(); // Apply Paging var blogsAfterPagging = blogs.ApplayPaging(query); var paggingResult = new PaggingResult <Blog> { CurrentPage = query.Page, PageSize = query.PageSize, TotalItems = totalItems, TResult = blogsAfterPagging }; return(paggingResult); }
public IActionResult GetUploadedFiles(PaggingQuery query) { PaggingResult <Blob> blogPage = unitOfWork.Blobs.GetBlobPage(query); return(Ok(blogPage)); }
public IActionResult GetBlogsPage(BlogQuery blogQuery) { PaggingResult <Blog> blogPage = unitOfWork.Blogs.GetBlogsPage(blogQuery); return(Ok(blogPage)); }
public IActionResult Pagination(int pageNumber) { PaggingResult <Blog> blogPage = unitOfWork.Blogs.GetBlogsPage(new BlogQuery() { Page = pageNumber }); return(View("Index", blogPage)); }
protected dynamic ItemResult <T>(PaggingResult <T> result) { dynamic expResult = new ExpandoObject(); expResult.Data = new List <T>(); if (result != null) { expResult.Links = result.Links; expResult.Data = result.Data; } return(expResult); }
public virtual R MapperGetById <R>(object id, PaggingCriteria <T> criteria) { try { PaggingResult <T> .InitializeMapper <R>(); var result = this.UnitOfWork.GetRepository <T>().GetById(id, criteria); return(Mapper.Map <T, R>(result)); } catch (Exception ex) { Logging.Error(ex); } return(default(R)); }
public virtual Task <R> MapperGetByIdAsync <R>(object id, PaggingCriteria <T> criteria) { try { PaggingResult <T> .InitializeMapper <R>(); return(Task.FromResult(Mapper.Map <T, R>(this.UnitOfWork.GetRepository <T>().GetById(id, criteria)))); } catch (Exception ex) { Logging.Error(ex); } return(TaskResult(default(R))); }
public virtual PaggingResult <R> MapperGetBy <R>(Expression <Func <T, bool> > clause, PaggingCriteria <T> criteria) { try { int limit = MaxQtyByQueryPage; int offset = 0; if (criteria != null) { limit = criteria.Limit > 0 ? criteria.Limit : limit; offset = criteria.Offset; } var repo = UnitOfWork.GetRepository <T>(); var totalCount = repo.GetByCount(clause); var totalPages = (int)Math.Ceiling((double)totalCount / limit); var items = repo.GetBy(clause, criteria); var result = PaggingResult <R> .Mapper(items, new PageResult() { Count = items.Count, Offset = offset, Limit = limit }, new SummaryResult() { TotalCount = totalCount, TotalPages = totalPages }); return(result); } catch (Exception ex) { Logging.Error(ex); } return(new PaggingResult <R>()); }
public virtual Task <PaggingResult <R> > MapperListAsync <R>(PaggingCriteria <T> criteria) { try { int limit = MaxQtyByQueryPage; int offset = 0; if (criteria != null) { limit = criteria.Limit > 0 ? criteria.Limit : limit; offset = criteria.Offset; } var repo = UnitOfWork.GetRepository <T>(); var totalCount = repo.ListCount(); var totalPages = (int)Math.Ceiling((double)totalCount / limit); var items = repo.List(criteria); var result = PaggingResult <R> .TaskMapper(items, new PageResult() { Count = items.Count, Offset = offset, Limit = limit }, new SummaryResult() { TotalCount = totalCount, TotalPages = totalPages }); return(result); } catch (Exception ex) { Logging.Error(ex); } return(TaskResult(new PaggingResult <R>())); }
public PaggingResult <Blob> GetBlobPage(IPaggingQuery query) { var blobsTable = context.Blobs .AsNoTracking(); // Apply Ordering blobsTable = blobsTable.OrderByDescending(b => b.CreatedDate); // Convert BlobTable to Blob var blobs = mapper.Map <IEnumerable <Blob> >(blobsTable); var totalItems = blobs.Count(); var blobsAfterPagging = blobs.ApplayPaging(query); var paggingResult = new PaggingResult <Blob> { CurrentPage = query.Page, PageSize = query.PageSize, TotalItems = totalItems, TResult = blobsAfterPagging }; return(paggingResult); }
public LinkResult GetLinkCollection <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging, HateoasMethodType method) { return(HateoasHelper.CreateLink(Request, routeName, result, pagging, HateoasType.Collection, method)); }
public static LinkResult CreateLink <T, U>(this HttpRequestMessage request, string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging, HateoasType type, HateoasMethodType method) { if (type == HateoasType.Self) { if (result != null) { if (pagging == null) { return(CreateLink(request, routeName, new Dictionary <string, object>(), HateoasType.Self, false, method)); } else { var routeValues = new Dictionary <string, object>() { { "limit", pagging.Limit }, { "offset", pagging.Offset } }; return(CreateLink(request, routeName, routeValues, HateoasType.Self, false, method)); } } } if (type == HateoasType.Previous) { int offset = (pagging != null ? pagging.Offset : 0); int limit = (pagging != null ? pagging.Limit : PaggingCriteria <T> .MaxQtyByQueryPage); if (offset > 0) { var routeValues = new Dictionary <string, object>() { { "limit", limit }, { "offset", offset - 1 } }; return(CreateLink(request, routeName, routeValues, HateoasType.Previous, false, method)); } } if (type == HateoasType.First) { int offset = (pagging != null ? pagging.Offset : 0); int limit = (pagging != null ? pagging.Limit : PaggingCriteria <T> .MaxQtyByQueryPage); if (offset > 0) { var routeValues = new Dictionary <string, object>() { { "limit", limit }, { "offset", 0 } }; return(CreateLink(request, routeName, routeValues, HateoasType.First, false, method)); } } if (type == HateoasType.Next) { int offset = (pagging != null ? pagging.Offset : 0); int limit = (pagging != null ? pagging.Limit : PaggingCriteria <T> .MaxQtyByQueryPage); if (offset < result.Summary.TotalPages - 1) { var routeValues = new Dictionary <string, object>() { { "limit", limit }, { "offset", offset + 1 } }; return(CreateLink(request, routeName, routeValues, HateoasType.Next, false, method)); } } if (type == HateoasType.Last) { int offset = (pagging != null ? pagging.Offset : 0); int limit = (pagging != null ? pagging.Limit : PaggingCriteria <T> .MaxQtyByQueryPage); if (offset < result.Summary.TotalPages - 1) { var routeValues = new Dictionary <string, object>() { { "limit", limit }, { "offset", result.Summary.TotalPages } }; return(CreateLink(request, routeName, routeValues, HateoasType.Last, false, method)); } } return(null); }
public static LinkResult CreateLink <T, U>(this HttpRequestMessage request, string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging, HateoasType type) { return(CreateLink <T, U>(request, routeName, result, pagging, type, HateoasMethodType.GET)); }
public LinkResult GetLinkCollection <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging) { return(GetLinkCollection(routeName, result, pagging, HateoasMethodType.GET)); }
public void SetLinkPaging <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging) { SetLinkPaging(routeName, result, pagging, HateoasMethodType.GET); }