public IActionResult Get(long id) { var productTemplate = _productTemplateRepository .Query() .Include(x => x.ProductAttributes).ThenInclude(x => x.ProductAttribute).ThenInclude(x => x.Group) .FirstOrDefault(x => x.Id == id); var model = new ProductTemplateFrom { Id = productTemplate.Id, Name = productTemplate.Name, Attributes = productTemplate.ProductAttributes.Select( x => new ProductAttributeVm() { Id = x.ProductAttributeId, Name = x.ProductAttribute.Name, GroupName = x.ProductAttribute.Group.Name }).ToList() }; return(Json(model)); }
public IActionResult Post([FromBody] ProductTemplateFrom model) { if (!ModelState.IsValid) { return(new BadRequestObjectResult(ModelState)); } var productTemplate = new ProductTemplate { Name = model.Name }; foreach (var attributeVm in model.Attributes) { productTemplate.AddAttribute(attributeVm.Id); } _productTemplateRepository.Add(productTemplate); _productAttributeRepository.SaveChange(); return(Ok()); }
public IActionResult Put(long id, [FromBody] ProductTemplateFrom model) { if (!ModelState.IsValid) { return(new BadRequestObjectResult(ModelState)); } var productTemplate = _productTemplateRepository .Query() .Include(x => x.ProductAttributes) .FirstOrDefault(x => x.Id == id); productTemplate.Name = model.Name; foreach (var attribute in model.Attributes) { if (productTemplate.ProductAttributes.Any(x => x.ProductAttributeId == attribute.Id)) { continue; } productTemplate.AddAttribute(attribute.Id); } var deletedAttributes = productTemplate.ProductAttributes.Where(attr => !model.Attributes.Select(x => x.Id).Contains(attr.ProductAttributeId)); foreach (var deletedAttribute in deletedAttributes) { deletedAttribute.ProductTemplate = null; _productTemplateProductAttributeRepository.Remove(deletedAttribute); } _productAttributeRepository.SaveChange(); return(Ok()); }
public IActionResult Get(long id) { var productTemplate = productTemplateRepository .Query() .Include(x => x.ProductAttributes).ThenInclude(x => x.ProductAttribute).ThenInclude(x => x.Group) .FirstOrDefault(x => x.Id == id); var model = new ProductTemplateFrom { Id = productTemplate.Id, Name = productTemplate.Name, Attributes = productTemplate.ProductAttributes.Select( x => new ProductAttributeVm() { Id = x.ProductAttributeId, Name = x.ProductAttribute.Name, GroupName = x.ProductAttribute.Group.Name }).ToList() }; return Json(model); }