Example #1
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));
        }
Example #2
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));
        }
Example #3
0
        public void SaveProductOption(ProductOptionDetails productOptionDetails)
        {
            Product        dbProduct       = context.Product.Find(productOptionDetails.OptionProductId);
            ProductOptions dbProductOption = context.ProductOptions.Find(productOptionDetails.OptionId);

            if (dbProductOption == null)
            {
                dbProductOption          = new ProductOptions();
                dbProductOption.OptionId = productOptionDetails.OptionId;
            }

            dbProductOption.OptionName      = productOptionDetails.OptionName;
            dbProductOption.OptionType      = productOptionDetails.OptionType;
            dbProductOption.OptionProductId = productOptionDetails.OptionProductId;
            if (productOptionDetails.OptionParent is null)
            {
                dbProductOption.OptionParentId = null;
            }
            else
            {
                dbProductOption.OptionParentId = ProductOptions.Where(po => po.OptionName == productOptionDetails.OptionParent).Select(po => po.OptionId).FirstOrDefault();
            }

            if (productOptionDetails.ParamCollection != null)
            {
                foreach (ProductOptionDetails.ProductOptionParamsDetails item in productOptionDetails.ParamCollection)
                {
                    var parentOption = context.ProductOptions.Find(dbProductOption.OptionParentId);

                    ProductOptionParams dbParam = context.ProductOptionParams.Find(item.ParameterId);
                    if (dbParam == null)
                    {
                        dbParam             = new ProductOptionParams();
                        dbParam.ParameterId = item.ParameterId;
                    }

                    dbParam.ParameterName    = item.Paramname;
                    dbParam.ParameterPrice   = item.ParamPrice;
                    dbParam.ParameterTooltip = item.ParamTooltip;
                    dbParam.ParameterSale    = item.Sale;
                    dbParam.ParentOptionId   = dbProductOption.OptionId;
                    if (parentOption is null)
                    {
                        dbParam.ParameterParentId = null;
                    }
                    else
                    {
                        dbParam.ParameterParentId = parentOption.ProductOptionParams.Where(p => p.ParameterName == item.ParentParam).Select(p => p.ParameterId).FirstOrDefault();
                    }
                    dbProductOption.ProductOptionParams.Add(dbParam);
                }
            }
            dbProduct.ProductOptions.Add(dbProductOption);
        }