예제 #1
0
        public async Task Run(IMapper mapper, IQueryable <TEF> q, DTO.StdCollectionInputs sci)
        {
            var tq = q;

            if (!sci.IncludeDeleted)
            {
                tq = OrmHelper.EqualToProperty <TEF>(tq, "Deleted", false);
            }

            tq = AddSearchParameters(tq, sci);

            TotalCount = tq.Count();

            string sIncludeDeleted = sci.IncludeDeleted ? "true" : "false";

            string QM = sci.Route.IndexOf("?") == -1 ? "?" : "&";

            q = AddSearchParameters(q, sci);

            q = OrmHelper.AddStdCollectionParameters <TEF>(q, sci.Offset, sci.Limit, sci.IncludeDeleted,
                                                           sci.Sort);

            Items = mapper.Map <TDTO[]>(await q.ToArrayAsync());

            ItemCount = Items.Count();

            Paging.Self  = $"{sci.Offset}";
            Paging.First = $"0";

            if (sci.Limit < TotalCount && sci.Limit > 0)
            {
                if (sci.Offset > 0)
                {
                    Paging.Prev = $"{(sci.Offset > 0 ? sci.Offset - sci.Limit : 0)}";
                }

                if (sci.Offset < TotalCount)
                {
                    Paging.Next = $"{(sci.Offset + sci.Limit)}";

                    Paging.Last = $"{(TotalCount - sci.Limit)}";
                }

                if (sci.Offset + sci.Limit >= TotalCount)
                {
                    Paging.Next = null;
                }
            }
        }