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); }
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); }
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); }