Esempio n. 1
0
        public async Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (!int.TryParse(bindingContext.ValueProvider.GetValue("id").FirstValue, out int productId))
            {
                throw new Exception("The product id was not provided");
            }

            var editModel = new OpenProductConfigurationEditModel
            {
                Features = productRepository.GetProductFeatures(productId)
            };

            for (int i = 0; i < editModel.Features.Count; i++)
            {
                BaseFeature   feature       = editModel.Features[i];
                ModelMetadata modelMetadata = modelMetadataProvider.GetMetadataForType(feature.GetType());
                IModelBinder  modelBinder   = modelBinderFactory.CreateBinder(new ModelBinderFactoryContext
                {
                    Metadata   = modelMetadata,
                    CacheToken = modelMetadata
                });

                string modelName = $"{bindingContext.BinderModelName}.Features[{i}]".TrimStart('.');
                using (var scope = bindingContext.EnterNestedScope(modelMetadata, modelName, modelName, feature))
                {
                    await modelBinder.BindModelAsync(bindingContext);
                }
            }

            bindingContext.Result = ModelBindingResult.Success(editModel);
        }
        public JsonResult GetGramsBySupportId([FromServices] IProductService productService, string supportId, int sectionId)
        {
            OpenProductConfigurationEditModel product = productService.GetProductForEditing(1);
            var feat = (SupportFeature)product.Features.Where(w => w.FeatureId == "SUPPORT" && w.SectionId == sectionId).First();

            return(Json(feat.Options.Where(g => g.SupportId == supportId).Select(g => g.Grams).ToArray()));
        }
        public JsonResult GetSelectSize([FromServices] IProductService productService, int id, int value)
        {
            OpenProductConfigurationEditModel product = productService.GetProductForEditing(id);
            var feat          = (OpenFinalSizeFeature)product.Features.Where(w => w.FeatureId == "FINAL_FTO").First();
            var selectedValue = feat.Options.Where(w => w.ID == value).First();

            return(Json(selectedValue));
        }
        //public IActionResult Index()
        //{
        //    return View();
        //}

        public IActionResult Edit([FromServices] IProductService productService, int id)
        {
            OpenProductConfigurationEditModel product = productService.GetProductForEditing(id);

            return(View(product));
        }