Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        public IActionResult GetUploadedFiles(PaggingQuery query)
        {
            PaggingResult <Blob> blogPage =
                unitOfWork.Blobs.GetBlobPage(query);

            return(Ok(blogPage));
        }
Exemple #5
0
        public IActionResult GetBlogsPage(BlogQuery blogQuery)
        {
            PaggingResult <Blog> blogPage =
                unitOfWork.Blogs.GetBlogsPage(blogQuery);

            return(Ok(blogPage));
        }
Exemple #6
0
        public IActionResult Pagination(int pageNumber)
        {
            PaggingResult <Blog> blogPage =
                unitOfWork.Blogs.GetBlogsPage(new BlogQuery()
            {
                Page = pageNumber
            });

            return(View("Index", blogPage));
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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)));
        }
Exemple #10
0
        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>());
        }
Exemple #11
0
        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>()));
        }
Exemple #12
0
        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);
        }
Exemple #13
0
 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));
 }
Exemple #16
0
 public LinkResult GetLinkCollection <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging)
 {
     return(GetLinkCollection(routeName, result, pagging, HateoasMethodType.GET));
 }
Exemple #17
0
 public void SetLinkPaging <T, U>(string routeName, PaggingResult <T> result, PaggingCriteria <U> pagging)
 {
     SetLinkPaging(routeName, result, pagging, HateoasMethodType.GET);
 }