public FloorPackController(FloorPackSettings floorPackSettings, ISettingService settingService, IProductService productService, IFloorPackService floorPackService, IPriceFormatter priceFormatter) { _floorPackSettings = floorPackSettings; _settingService = settingService; _productService = productService; _floorPackService = floorPackService; _priceFormatter = priceFormatter; }
public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.Result is RedirectToRouteResult) { RedirectToRouteResult result = filterContext.Result as RedirectToRouteResult; IProductService productService = EngineContext.Current.Resolve <IProductService>(); //ProductVariant productVariant = null; int productVariantId = 0; if (filterContext.ActionDescriptor.ControllerDescriptor.ControllerType == typeof(ProductController) && filterContext.ActionDescriptor.ActionName.Equals("Create", StringComparison.InvariantCultureIgnoreCase)) { Product product = null; if (result.RouteValues.ContainsKey("Id")) { int productId = Convert.ToInt32(result.RouteValues["Id"]); product = productService.GetProductById(productId); } else { product = productService.GetAllProducts(true) .OrderByDescending(p => p.Id).FirstOrDefault(); } if (product != null) { productVariantId = product.ProductVariants.FirstOrDefault().Id; } //productVariant = product.ProductVariants.FirstOrDefault(); } else if (filterContext.ActionDescriptor.ControllerDescriptor.ControllerType == typeof(ProductVariantController)) { if (filterContext.ActionDescriptor.ActionName.Equals("Create", StringComparison.InvariantCultureIgnoreCase)) { if (result.RouteValues.ContainsKey("Controller") && result.RouteValues["Controller"].ToString() .Equals("Product", StringComparison.InvariantCultureIgnoreCase)) { int productId = Convert.ToInt32(result.RouteValues["Id"]); Product product = productService.GetProductById(productId); productVariantId = product.ProductVariants.OrderByDescending(pv => pv.Id) .FirstOrDefault().Id; //productVariant = product.ProductVariants.OrderByDescending(pv => pv.Id) // .FirstOrDefault(); } else { productVariantId = Convert.ToInt32(result.RouteValues["Id"]); //productVariant = productService.GetProductVariantById(productVariantId); } } else if (filterContext.ActionDescriptor.ActionName.Equals("Edit", StringComparison.InvariantCultureIgnoreCase)) { var requestRouteVales = filterContext.Controller.ControllerContext .RouteData.Values; productVariantId = Convert.ToInt32(requestRouteVales["Id"]); //productVariant = productService.GetProductVariantById(productVariantId); } } if (productVariantId > 0) { IFloorPackService floorPackService = EngineContext.Current .Resolve <IFloorPackService>(); FloorPackRecord record = floorPackService.GetByProductVariantId(productVariantId); NameValueCollection form = filterContext.HttpContext.Request.Form; decimal m2PerPack = 0; decimal.TryParse(form["M2PerPack"], out m2PerPack); if (record == null) { record = new FloorPackRecord(); } record.ProductVariantId = productVariantId; record.M2PerPack = m2PerPack; if (record.Id == 0) { floorPackService.Insert(record); } else { floorPackService.Update(record); } } } base.OnActionExecuted(filterContext); }