public PartialViewResult AddOption(ProductOptionsViewModel productOptionViewModel, string optionName, Guid prodId) { Product selectedProduct = EntityRepository.Products.Where(p => p.ProductId == prodId).FirstOrDefault(); TemplateOptions selectedOption = EntityRepository.TemplateOptions.Where(t => t.OptionName == optionName).FirstOrDefault(); ProductOptionDetails option = new ProductOptionDetails { OptionId = Guid.NewGuid(), OptionName = selectedOption.OptionName, OptionType = selectedOption.OptionType, ParentOptionList = new SelectList(selectedProduct.ProductOptions.Select(o => o.OptionName), "Empty"), ParamList = new SelectList(selectedOption.TempOptionParams.Select(p => p.ParameterName), "Empty"), }; foreach (var param in selectedOption.TempOptionParams) { ProductOptionDetails.ProductOptionParamsDetails optionParams = new ProductOptionDetails.ProductOptionParamsDetails { ParameterId = Guid.NewGuid(), Paramname = param.ParameterName, ParamTooltip = param.ParameterTooltip, ParamPrice = param.ParameterPrice, Sale = param.ParameterSale, ParamParentList = new SelectList(Enumerable.Empty <SelectListItem>()) }; if (option.ParamCollection is null) { option.ParamCollection = new List <ProductOptionDetails.ProductOptionParamsDetails>(); } option.ParamCollection.Add(optionParams); } return(PartialView("~/Views/Shared/EditorTemplates/ProductOptionDetails.cshtml", option)); }
public ViewResult ProductOptionsEdit(Guid productId) { var selectedProduct = EntityRepository.Products.Where(p => p.ProductId == productId).FirstOrDefault(); var ProductOptions = EntityRepository.ProductOptions.Where(o => o.OptionProductId == productId); List <ProductOptionDetails> Options = new List <ProductOptionDetails>(); if (ProductOptions.Any()) { foreach (var opt in ProductOptions) { var templateOption = EntityRepository.TemplateOptions.Where(t => t.OptionName == opt.OptionName).FirstOrDefault(); var ParentOpt = selectedProduct.ProductOptions.Where(o => o.OptionId == opt.OptionParentId).FirstOrDefault(); Options.Add(new ProductOptionDetails { OptionId = opt.OptionId, OptionName = opt.OptionName, OptionType = opt.OptionType, ParentOptionList = new SelectList(selectedProduct.ProductOptions.Where(o => o.OptionId != opt.OptionId).Select(o => o.OptionName).Distinct().ToList(), opt.OptionParentId.HasValue ? opt.ProductOptionsParent.OptionName : "Empty"), ParamList = new SelectList(templateOption.TempOptionParams.Select(p => p.ParameterName), "Empty"), ParamCollection = ProductOptionDetails.PopulateParamCollection(opt, selectedProduct.ProductOptions.Where(o => o.OptionId == opt.OptionParentId).SelectMany(p => p.ProductOptionParams).Select(pr => pr.ParameterName), ParentOpt) }); } } ProductOptionsViewModel result = new ProductOptionsViewModel { ProductOptions = Options, TemplateOptionList = new SelectList(EntityRepository.TemplateOptions.Select(o => o.OptionName), "Select Option from templates"), ProductId = productId, ProductName = EntityRepository.Products.Where(p => p.ProductId == productId).FirstOrDefault().ProductName }; return(View(result)); }
public HttpResponseMessage GetOptions(HttpRequestMessage request, Guid productId) { return(CreateHttpResponse(request, () => { var entities = this._productOptionService.GetOptions(productId); var result = new ProductOptionsViewModel() { Items = Mapper.Map <ProductOptionViewModel[]>(entities) }; return request.CreateResponse(HttpStatusCode.OK, result); })); }
public ActionResult SaveProductOption(ProductOptionsViewModel productOptionViewModel) { if (ModelState.IsValid) { List <Guid> userOptionIds = new List <Guid>(); foreach (var productOptionDetails in productOptionViewModel.ProductOptions) { if (productOptionDetails.OptionParent == "Empty") { productOptionDetails.OptionParent = null; } productOptionDetails.OptionProductId = productOptionViewModel.ProductId; EntityRepository.SaveProductOption(productOptionDetails); userOptionIds.Add(productOptionDetails.OptionId); } var dbOptionIds = EntityRepository.ProductOptions.Where(p => p.OptionProductId == productOptionViewModel.ProductId).Select(o => o.OptionId); foreach (var optId in dbOptionIds) { if (!userOptionIds.Contains(optId)) { Remove(optId, "ProductOption"); } } try { EntityRepository.SaveContextAsync(); } catch (Exception ex) { TempData["message"] = string.Format(ex.Message); } finally { TempData["message"] = string.Format("Options has been saved"); } return(RedirectToAction("List", new { type = "Product" })); } else { return(RedirectToAction("List", new { type = "Product" })); } }