예제 #1
0
        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));
        }
예제 #2
0
        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);
            }));
        }
예제 #4
0
        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" }));
            }
        }