public async Task <IActionResult> GetTopSelling(string LanguageId, [FromQuery] GetProductPaggingRequest request) { request.LanguageId = LanguageId; var products = await _ProductService.GetTopSelling(request); return(Ok(products)); }
public async Task <IActionResult> IndexAsync(int productId) { var paggingRequest = new GetProductPaggingRequest() { LanguageId = languageDefauleId, }; var products = await _productServive.getAllPagging(paggingRequest); var images = await _imageProductServive.GetListImage(productId); var productSelected = products.ResultObject.Items.FindIndex(x => x.Id == productId); if (productSelected != -1) { SwapGeneric <ProductViewModel> .Swap(products.ResultObject.Items, productSelected, 0); } ViewData["categories"] = await GetListCategoryAsync(languageDefauleId); ViewData["products"] = products.ResultObject.Items; ViewData["images"] = images.ResultObject; return(View()); }
public async Task <PagedResult <ProductVm> > GetAllByCategoryId(string languageId, GetProductPaggingRequest request) { //1. Select Join var query = from p in _context.Products join pt in _context.ProductTranslations on p.Id equals pt.ProductId join pic in _context.ProductInCategories on p.Id equals pic.ProductId join c in _context.Categories on pic.CategoryId equals c.Id where pt.LanguageId == languageId select new { p, pt, pic }; //2. Filter if (request.CategoryId.HasValue && request.CategoryId.Value > 0) { query = query.Where(p => p.pic.CategoryId == request.CategoryId); } //3. Paging int totalRow = await query.CountAsync(); var data = await query.Skip((request.pageIndex - 1) *request.pageSize) .Take(request.pageSize) .Select(x => new ProductVm() { Id = x.p.Id, Name = x.pt.Name, DateCreated = x.p.DateCreated, Description = x.pt.Description, Details = x.pt.Details, LanguageId = x.pt.LanguageId, OriginalPrice = x.p.OriginalPrice, Price = x.p.Price, SeoAlias = x.pt.SeoAlias, SeoDescription = x.pt.SeoDescription, SeoTitle = x.pt.SeoTitle, Stock = x.p.Stock, ViewCount = x.p.ViewCount }).ToListAsync(); //4. Select and projection var pagedResult = new PagedResult <ProductVm>() { TotalRecords = totalRow, PageSize = request.pageSize, PageIndex = request.pageIndex, Items = data }; return(pagedResult); }
public async Task <IActionResult> GetByCategoryUrl(string LanguageId, [FromQuery] GetProductPaggingRequest request) { var products = await _ProductService.GetAllByCategoryUrl(request, LanguageId); return(Ok(products)); }
public async Task <ApiResult <PageViewModel <ProductViewModel> > > GetAllByCategoryUrl(GetProductPaggingRequest request, string LanguageId) { //Select var query = from p in _context.Products join img in _context.ProductImages on p.Id equals img.ProductId where img.IsDefault == true join pt in _context.ProductTranslations on p.Id equals pt.ProductId join l in _context.Languages on pt.LanguageId equals l.Id join c in _context.Categories on p.CategoryId equals c.Id join ct in _context.CategoryTranslations on c.Id equals ct.CategoryId where ct.CategoryUrl == request.CategoryUrl && pt.LanguageId == LanguageId select new { p, pt, c, l, img, ct }; //filter if (!String.IsNullOrEmpty(request.Keyword)) { query = query.Where(x => x.pt.Name.Contains(request.Keyword)); } //Pagging int totalRow = await query.CountAsync(); if (request.PageIndex == 0 || request.PageSize == 0) { var data = await query .Select(x => new ProductViewModel() { Id = x.p.Id, Name = x.pt.Name, Created_At = x.p.Created_At, Description = x.pt.Description, LanguageId = x.pt.LanguageId, OriginalPrice = x.p.OriginalPrice, Price = x.p.Price, Stock = x.p.Stock, CategoryId = x.c.Id, ProductUrl = x.pt.ProductUrl, Language = x.l.Name, ImagePath = x.img.ImagePath, categoryUrl = x.ct.CategoryUrl }).ToListAsync(); //Select and projection var pageViewModel = new PageViewModel <ProductViewModel>() { TotalRecords = totalRow, Items = data }; return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel)); } else { var data = await query.Skip((request.PageIndex - 1) *request.PageSize).Take(request.PageSize) .Select(x => new ProductViewModel() { Id = x.p.Id, Name = x.pt.Name, Created_At = x.p.Created_At, Description = x.pt.Description, LanguageId = x.pt.LanguageId, OriginalPrice = x.p.OriginalPrice, Price = x.p.Price, Stock = x.p.Stock, CategoryId = x.c.Id, ProductUrl = x.pt.ProductUrl, Language = x.l.Name, ImagePath = x.img.ImagePath }).ToListAsync(); //Select and projection var pageViewModel = new PageViewModel <ProductViewModel>() { TotalRecords = totalRow, Items = data }; return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel)); } }
public async Task <ApiResult <PageViewModel <ProductViewModel> > > GetTopSelling(GetProductPaggingRequest request) { var query = from OrderDetails in _context.OrderDetails group OrderDetails by new { OrderDetails.ProductId } into g orderby (int?) g.Sum(p => p.Quantity) descending select new { g.Key.ProductId, SL = (int?)g.Sum(p => p.Quantity) } into t join p in _context.Products on t.ProductId equals p.Id join pt in _context.ProductTranslations on p.Id equals pt.ProductId where pt.LanguageId == request.LanguageId join img in _context.ProductImages on p.Id equals img.ProductId where img.IsDefault == true select new { t, pt, img, p }; var data = await query.Take(request.PageSize) .Select(x => new ProductViewModel() { Id = x.p.Id, Name = x.pt.Name, Created_At = x.p.Created_At, Description = x.pt.Description, LanguageId = x.pt.LanguageId, OriginalPrice = x.p.OriginalPrice, Price = x.p.Price, Stock = x.p.Stock, ProductUrl = x.pt.ProductUrl, ImagePath = x.img.ImagePath }).ToListAsync(); var pageViewModel = new PageViewModel <ProductViewModel>() { TotalRecords = request.PageSize, Items = data }; return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel)); }
public Task <ApiResult <PageViewModel <ProductViewModel> > > GetAllByCategoryId(GetProductPaggingRequest request, string LanguageId) { throw new NotImplementedException(); }
public async Task <ApiResult <PageViewModel <ProductViewModel> > > getAllPagging(GetProductPaggingRequest request) { //https://locahost:port/products/?PageIndex=1&pageSize=1&categoryId=1 var response = await _client.GetAsync($"/api/products/{request.LanguageId}"); using (HttpContent content = response.Content) { //convert data content to string using await var data = await content.ReadAsStringAsync(); //If the data is not null, parse(deserialize) the data to a C# object if (data != null) { if (response.IsSuccessStatusCode) { return(JsonConvert.DeserializeObject <ApiResultSuccess <PageViewModel <ProductViewModel> > >(data)); } return(JsonConvert.DeserializeObject <ApiResultErrors <PageViewModel <ProductViewModel> > >(data)); } else { return(null); } } }