public async Task <PagedResultDto <TempProductList> > GetAdvancedTempProducts(GetProductFilterInput input) { var tempquery = _TempProductRepository.GetAll().Where(c => c.Updated == false) .WhereIf( !input.Filter.IsNullOrEmpty(), p => p.ProductCode.Contains(input.Filter) || p.SuspectCode.Contains(input.Filter) || p.Gpcode.Contains(input.Filter) ); var product = from a in tempquery select new TempProductList { IsSelect = false, Id = a.Id, ProductCode = a.ProductCode, ProductName = a.ProductName, SuspectCode = a.SuspectCode, Gpcode = a.Gpcode, Description = a.Description, ProductSpecificationId = 0, ProductSpecificationName = "", Price = a.Price, CreationTime = a.CreationTime, GMTCreationTime = a.CreationTime, Width = (int)a.Width, Height = (int)a.Height, Depth = (int)a.Depth, Dimention = "", BafcoMade = false, CategoryName = "", ScreationTime = a.CreationTime.ToString(), }; var productCount = await product.CountAsync(); var productlist = await product.ToListAsync(); if (input.Sorting == "ProductCode,ProductSpecificationName,SuspectCode,Gpcode,Price,CategoryName,BafcoMade,CreationTime") { productlist = await product .OrderByDescending(a => a.CreationTime) .PageBy(input) .ToListAsync(); } else { productlist = await product .OrderBy(input.Sorting) .PageBy(input) .ToListAsync(); } var productlistoutput = productlist.MapTo <List <TempProductList> >(); foreach (var data in productlistoutput) { var imageqry = _TempProductImageRepository.GetAll().Where(p => p.TemporaryProductId == data.Id).FirstOrDefault(); if (imageqry != null) { data.ProductImage = imageqry.ImageUrl; } var width = ""; var depth = ""; var height = ""; if (data.Width > 0) { width = data.Width.ToString() + " - "; } if (data.Depth > 0) { depth = data.Depth.ToString() + " - "; } if (data.Height > 0) { height = data.Height.ToString(); } data.Dimention = width + "" + depth + "" + height; var quotaion = _quotationProductRepository.GetAll().Where(p => p.TemporaryProductId == data.Id).FirstOrDefault(); if (quotaion != null) { data.IsQuotation = true; } } return(new PagedResultDto <TempProductList>(productCount, productlistoutput)); }
public async Task <PagedResultDto <ProductList> > GetAdvancedProducts(GetProductFilterInput input) { var query = _productRepository.GetAll().Where(p => p.Id == 0); if (input.ProductSpecificationId > 0) { query = _productRepository.GetAll().Where(r => r.ProductSpecificationId == input.ProductSpecificationId); } else if (input.ProductCategoryId > 0) { query = (from p in _productRepository.GetAll() join ps in _ProductSpecificationRepository.GetAll() on p.ProductSpecificationId equals ps.Id join pg in _productGroupRepository.GetAll() on ps.ProductGroupId equals pg.Id join pc in _ProductCategoryRepository.GetAll() on pg.ProductCategoryId equals pc.Id where pc.Id == input.ProductCategoryId select p); } else if (input.ProductCategoryId == -2) { query = _productRepository.GetAll().Where(p => p.ProductSpecificationId == null); } else { query = _productRepository.GetAll(); } query = query .Include(u => u.ProductSpecifications) .WhereIf( !input.Filter.IsNullOrEmpty(), p => p.ProductCode.Contains(input.Filter) || p.SuspectCode.Contains(input.Filter) || p.Gpcode.Contains(input.Filter) || p.ProductName.Contains(input.Filter) || p.ProductSpecifications.ProductGroups.ProductGroupName.Contains(input.Filter) || p.ProductSpecifications.ProductGroups.ProductCategorys.Name.Contains(input.Filter) || p.ProductSpecifications.Name.Contains(input.Filter) ); var product = from a in query select new ProductList { IsSelected = false, Id = a.Id, ProductCode = a.ProductCode, ProductName = a.ProductName, SuspectCode = a.SuspectCode, Gpcode = a.Gpcode, Description = a.Description, ProductSpecificationId = a.ProductSpecificationId, ProductSpecificationName = a.ProductSpecificationId > 0 ? a.ProductSpecifications.Name : "", Price = a.Price, ScreationTime = a.CreationTime.ToString(), Width = a.Width, Height = a.Height, Depth = a.Depth, Dimention = "", BafcoMade = a.ProductSpecificationId > 0 ? a.ProductSpecifications.BafcoMade : false, CategoryName = a.ProductSpecificationId > 0 ? (a.ProductSpecifications.ProductGroups.ProductCategoryId > 0 ? a.ProductSpecifications.ProductGroups.ProductCategorys.Name : "Custom Product") : "Custom Product", IsDiscountable = false }; var productCount = await product.CountAsync(); var productlist = await product.ToListAsync(); if (input.Sorting == "ProductCode,ProductSpecificationName,SuspectCode,Gpcode,Price,CategoryName,BafcoMade,CreationTime") { productlist = await product .OrderByDescending(a => a.CreationTime) .PageBy(input) .ToListAsync(); } else { productlist = await product .OrderBy(input.Sorting) .PageBy(input) .ToListAsync(); } var productlistoutput = productlist.MapTo <List <ProductList> >(); foreach (var data in productlistoutput) { var width = ""; var depth = ""; var height = ""; if (data.Width > 0) { width = data.Width.ToString() + " - "; } if (data.Depth > 0) { depth = data.Depth.ToString() + " - "; } if (data.Height > 0) { height = data.Height.ToString(); } data.Dimention = width + "" + depth + "" + height; var imageqry = _ProductImageRepository.GetAll().Where(p => p.ProductId == data.Id).FirstOrDefault(); if (imageqry != null) { data.ProductImage = imageqry.ImageUrl; } var quotaion = _quotationProductRepository.GetAll().Where(p => p.ProductId == data.Id).FirstOrDefault(); if (quotaion != null) { data.IsQuotation = true; } if (data.ProductSpecificationId > 0) { var Family = (from s in _ProductSpecificationRepository.GetAll() join g in _productGroupRepository.GetAll() on s.ProductGroupId equals g.Id where s.Id == data.ProductSpecificationId select g.prodFamily).FirstOrDefault(); data.IsDiscountable = (bool)(Family.Discount ?? false); } else { data.IsDiscountable = false; } } return(new PagedResultDto <ProductList>(productCount, productlistoutput)); }