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)); }
public async Task <Tuple <List <ProductDetailViewModel>, int> > SearchByWarehouseAsync(ProductDetailRequestModel request) { BusinessDbContext db = base.Repository.Db as BusinessDbContext; var tuple = await base.SearchAsync(request); var whProducts = db.WarehouseProducts.Where(x => x.ShopId == request.ShopId && x.WarehouseId == request.WarehouseId); var enumerable = from m in tuple.Item1 join wh in whProducts on m.Id equals wh.ProductDetailId into ps from wh in ps.DefaultIfEmpty() select new { ProductDetail = m, Quantity = wh?.OnHand ?? 0 }; foreach (var v in enumerable) { v.ProductDetail.OnHand = v.Quantity; } var list = enumerable.Select(x => x.ProductDetail).ToList(); var tuple1 = new Tuple <List <ProductDetailViewModel>, int>(list, tuple.Item2); return(tuple1); }