public async Task <ProductDetailResponseModel> ProductDetail(long id) { ProductDetailResponseModel response = null; var productTask = _productService.GetById(id); var product = await productTask; if (product != null) { response = new ProductDetailResponseModel { Id = product.ProductId, ProductName = product.ProductName, ThumbnailUrl = product.ThumnailUrl, CategoryId = product.CategoryId, CategoryName = product.Category.CategoryName, ProductBrandName = product.ProductBrand.ProductBrandName, ProductStatusId = product.ProductStatusId, ProductStatusName = product.ProductStatus.ProductStatusName, Price = product.Price, Stock = product.Stock, ViewCount = product.ViewCount, Description = product.Description, }; response.ProductColors = product.ProductColors .Select(x => new ProductColorModel { ColorId = x.ColorId, ColorName = x.Color.ColorName, Price = x.Price, ProductColorId = x.ProductColorId, ProductId = x.ProductId, }) .ToList(); var storeAvailableTask = _productService.GetStoreAvailableForProductId(id); response.StoreAvailables = await storeAvailableTask; //var productBranchesList = _productService.GetProductBranches(id); //response.GetProductBranches = productBranchesList; var productImagesTask = _productService.GetImagesForProductId(id); response.Images = (await productImagesTask) .Select(x => new ProductImageModel { ProductImageId = x.ProductImageId, ProductImageUrl = x.ProductImageUrl, ProductId = x.ProductId, }) .ToList(); } return(response); }
public ActionResult ProductSearch(ProductDetailRequestModel model, string returnUrl) { model.ProductId = Convert.ToInt32(Request.Form["ProductDropDown"]); model.ProgramId = Convert.ToInt32(Request.Form["ProgramDropDown"]); if (!ModelState.IsValid) { return(View(model)); } // Calling WCF service. RateCalculatorServiceClient proxy = new RateCalculatorServiceClient(); var res = new ProductDetailResponseModel(); try { var result = proxy.GetLowerestProductRate(model.ProductId, model.ProgramId, model.StartDate, model.EndtDate); // calling directly from UI without wcf service layer. working fine. //var result = _productDetailBAL.GetLowerestProductRate(model.ProductId, model.ProgramId, model.StartDate, model.EndtDate); ViewBag.showResult = result != null ? true : false; if (ViewBag.showResult) { res.ProductName = result.ProductName; res.ProgramName = result.ProgramName; res.LowerestRate = result.LowerstProductRate; res.StartDate = result.StartDate; res.EndtDate = result.EndDate; } } catch (Exception ex) { } finally { proxy.Close(); } return(View("_SearchResults", res)); }