public IActionResult InsertLocalizedProperty([FromBody] LocalizedProperty model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //var entity = model.ToEntity(); var entity = model; entity.Id = 0; _localizedEntityService.InsertLocalizedProperty(entity); return(NoContent()); }
public virtual int CopyAttributeOptions(ProductVariantAttribute productVariantAttribute, int productAttributeOptionsSetId, bool deleteExistingValues) { Guard.NotNull(productVariantAttribute, nameof(productVariantAttribute)); Guard.NotZero(productVariantAttribute.Id, nameof(productVariantAttribute.Id)); Guard.NotZero(productAttributeOptionsSetId, nameof(productAttributeOptionsSetId)); if (deleteExistingValues) { var existingValues = productVariantAttribute.ProductVariantAttributeValues.ToList(); if (!existingValues.Any()) { existingValues = GetProductVariantAttributeValues(productVariantAttribute.Id).ToList(); } existingValues.Each(x => DeleteProductVariantAttributeValue(x)); } var result = 0; var attributeOptions = _productAttributeOptionRepository.TableUntracked .Where(x => x.ProductAttributeOptionsSetId == productAttributeOptionsSetId) .ToList(); if (!attributeOptions.Any()) { return(result); } // Do not insert already existing values (identified by name field). var existingValueNames = new HashSet <string>(_productVariantAttributeValueRepository.TableUntracked .Where(x => x.ProductVariantAttributeId == productVariantAttribute.Id) .Select(x => x.Name) .ToList()); Picture picture = null; ProductVariantAttributeValue productVariantAttributeValue = null; var pictureIds = attributeOptions.Where(x => x.PictureId != 0).Select(x => x.PictureId).Distinct().ToArray(); var pictures = _pictureService.GetPicturesByIds(pictureIds, true).ToDictionarySafe(x => x.Id); using (_localizedEntityService.BeginScope()) { foreach (var option in attributeOptions) { if (existingValueNames.Contains(option.Name)) { continue; } productVariantAttributeValue = option.Clone(); productVariantAttributeValue.PictureId = 0; productVariantAttributeValue.ProductVariantAttributeId = productVariantAttribute.Id; // Copy picture. if (option.PictureId != 0 && pictures.TryGetValue(option.PictureId, out picture)) { var pictureBinary = _pictureService.LoadPictureBinary(picture); var newPicture = _pictureService.InsertPicture( pictureBinary, picture.MimeType, picture.SeoFilename, picture.IsNew, picture.Width ?? 0, picture.Height ?? 0, picture.IsTransient ); productVariantAttributeValue.PictureId = newPicture.Id; } // No scope commit, we need new entity id. _productVariantAttributeValueRepository.Insert(productVariantAttributeValue); ++result; // Copy localized properties too. var optionProperties = _localizedEntityService.GetLocalizedProperties(option.Id, "ProductAttributeOption"); foreach (var property in optionProperties) { _localizedEntityService.InsertLocalizedProperty(new LocalizedProperty { EntityId = productVariantAttributeValue.Id, LocaleKeyGroup = "ProductVariantAttributeValue", LocaleKey = property.LocaleKey, LocaleValue = property.LocaleValue, LanguageId = property.LanguageId }); } } } return(result); }
public virtual int CopyAttributeOptions(ProductVariantAttribute productVariantAttribute, int productAttributeOptionsSetId, bool deleteExistingValues) { Guard.NotNull(productVariantAttribute, nameof(productVariantAttribute)); Guard.NotZero(productVariantAttribute.Id, nameof(productVariantAttribute.Id)); Guard.NotZero(productAttributeOptionsSetId, nameof(productAttributeOptionsSetId)); if (deleteExistingValues) { var existingValues = productVariantAttribute.ProductVariantAttributeValues.ToList(); if (!existingValues.Any()) { existingValues = GetProductVariantAttributeValues(productVariantAttribute.Id).ToList(); } existingValues.Each(x => DeleteProductVariantAttributeValue(x)); } var result = 0; var attributeOptions = _productAttributeOptionRepository.TableUntracked .Where(x => x.ProductAttributeOptionsSetId == productAttributeOptionsSetId) .ToList(); if (!attributeOptions.Any()) { return(result); } // Do not insert already existing values (identified by name field). var existingValueNames = new HashSet <string>(_productVariantAttributeValueRepository.TableUntracked .Where(x => x.ProductVariantAttributeId == productVariantAttribute.Id) .Select(x => x.Name) .ToList()); using (_localizedEntityService.BeginScope()) { foreach (var option in attributeOptions) { if (existingValueNames.Contains(option.Name)) { continue; } var pvav = option.Clone(); pvav.ProductVariantAttributeId = productVariantAttribute.Id; // No scope commit, we need new entity id. _productVariantAttributeValueRepository.Insert(pvav); ++result; // Copy localized properties too. var optionProperties = _localizedEntityService.GetLocalizedProperties(option.Id, "ProductAttributeOption"); foreach (var property in optionProperties) { _localizedEntityService.InsertLocalizedProperty(new LocalizedProperty { EntityId = pvav.Id, LocaleKeyGroup = "ProductVariantAttributeValue", LocaleKey = property.LocaleKey, LocaleValue = property.LocaleValue, LanguageId = property.LanguageId }); } } } return(result); }
/// <summary> /// Inserts a localized property /// </summary> /// <param name="localizedProperty">Localized property</param> public void InsertLocalizedProperty(LocalizedProperty localizedProperty) { _localizedEntityService.InsertLocalizedProperty(localizedProperty); }