Exemple #1
0
        public async Task <BasePagingResponse <OrderDetailsResModel> > GetOrdersAsync(GetOrderReqModel model)
        {
            var result = new BasePagingResponse <OrderDetailsResModel>();
            var query  = _context.Orders.AsNoTracking();

            if (model.Status.HasValue)
            {
                query = query.Where(o => o.Status == model.Status);
            }

            query = CommonFunctions.SortQuery(model, query);

            result.Total = await query.CountAsync();

            if (model.Page.HasValue && model.Page >= 0 && model.PageSize.HasValue && model.PageSize > 0)
            {
                query = query.Skip(model.PageSize.Value * (model.Page.Value - 1)).Take(model.PageSize.Value);
            }

            var orders = await query.ToListAsync();

            result.Items     = _mapper.Map <List <Order>, List <OrderDetailsResModel> >(orders);
            result.Page      = model.Page;
            result.PageSize  = model.PageSize;
            result.TotalPage = (int)Math.Ceiling(result.Total / (double)result.PageSize);

            return(result);
        }
        public async Task <BasePagingResponse <CategoryResModel> > GetCategoriesAsync(GetBrandsReqModel model)
        {
            var result = new BasePagingResponse <CategoryResModel>();

            var query = _context.Categories.AsNoTracking();

            query = CommonFunctions.SortQuery(model, query);

            result.Total = await query.CountAsync();

            if (model.Page.HasValue && model.Page >= 0 && model.PageSize.HasValue && model.PageSize > 0)
            {
                query = query.Skip(model.PageSize.Value * (model.Page.Value - 1)).Take(model.PageSize.Value);
            }

            var categories = await query.ToListAsync();

            // Get all parent categories
            var parentCategories = categories.Where(c => !c.ParentId.HasValue).ToList();

            result.Items = _mapper.Map <List <Category>, List <CategoryResModel> >(parentCategories);

            // Get all child categories
            foreach (var category in result.Items)
            {
                var childCategories = categories.Where(c => c.ParentId == category.Id).ToList();
                category.ChildCategories = _mapper.Map <List <Category>, List <ChildCategoryResModel> >(childCategories);
            }

            result.Page      = model.Page;
            result.PageSize  = model.PageSize;
            result.TotalPage = (int)Math.Ceiling(result.Total / (double)result.PageSize);

            return(result);
        }
Exemple #3
0
        public async Task <BasePagingResponse <ProductResModel> > GetProductsAsync(GetProductsReqModel model)
        {
            var result = new BasePagingResponse <ProductResModel>();

            var query = _context.Products.Include(p => p.Category)
                        .Include(p => p.Brand)
                        .Include(p => p.ProductImages)
                        .AsNoTracking();

            if (model.BrandId.HasValue)
            {
                query = query.Where(p => p.BrandId == model.BrandId);
            }

            if (model.CategoryId.HasValue)
            {
                query = query.Where(p => p.CategoryId == model.CategoryId);
            }

            if (!string.IsNullOrEmpty(model.Name))
            {
                query = query.Where(p => p.Name.ToLower().Contains(model.Name.ToLower()));
            }

            query = CommonFunctions.SortQuery(model, query);

            result.Total = await query.CountAsync();

            if (model.Page.HasValue && model.Page >= 0 && model.PageSize.HasValue && model.PageSize > 0)
            {
                query = query.Skip(model.PageSize.Value * (model.Page.Value - 1)).Take(model.PageSize.Value);
            }

            var products = await query.ToListAsync();

            result.Items     = _mapper.Map <List <Product>, List <ProductResModel> >(products);
            result.Page      = model.Page;
            result.PageSize  = model.PageSize;
            result.TotalPage = (int)Math.Ceiling(result.Total / (double)result.PageSize);

            return(result);
        }
Exemple #4
0
        public async Task <BasePagingResponse <BrandResModel> > GetBrandsAsync(GetBrandsReqModel model)
        {
            var result = new BasePagingResponse <BrandResModel>();

            var query = _context.Brands.AsNoTracking();

            query = CommonFunctions.SortQuery(model, query);

            result.Total = await query.CountAsync();

            if (model.Page.HasValue && model.Page >= 0 && model.PageSize.HasValue && model.PageSize > 0)
            {
                query = query.Skip(model.PageSize.Value * (model.Page.Value - 1)).Take(model.PageSize.Value);
            }

            var brands = await query.ToListAsync();

            result.Items     = _mapper.Map <List <Brand>, List <BrandResModel> >(brands);
            result.Page      = model.Page;
            result.PageSize  = model.PageSize;
            result.TotalPage = (int)Math.Ceiling(result.Total / (double)result.PageSize);

            return(result);
        }