public void AddVariant(VariantDto dto) { var variantDomain = new VariantDomain(this, dto); Variants.Add(variantDomain); AddIntegratedEvent(ProductEventType.VARIANT_ADDED, dto.Id); Modify(); }
public void UpdateVariant(VariantDomain variantDomain, VariantDto dto) { variantDomain.Update(dto); if (variantDomain.Modified) { AddIntegratedEvent(ProductEventType.VARIANT_UPDATED, variantDomain.Id); Modify(); } }
private void SetVariants(List <VariantDto> variantDtos) { Variants = Variants ?? new List <VariantDomain>(); List <string> currentVariantIds = Variants.Select(s => s.Id).ToList(); List <string> targetVariantIds = variantDtos.Select(s => s.Id).ToList(); var removedVariantIds = currentVariantIds.Where(w => !targetVariantIds.Contains(w)).ToList(); foreach (var removedVariantId in removedVariantIds) { RemoveVariant(removedVariantId); } foreach (var variantDto in variantDtos) { var variantDomain = Variants.Where(w => w.Id.Equals(variantDto.Id)).SingleOrDefault(); if (variantDomain == null) { AddVariant(variantDto); } else { UpdateVariant(variantDomain, variantDto); } } var newListVariant = new List <VariantDomain>(); for (int i = 0; i < variantDtos.Count; i++) { VariantDomain variantDomain = null; for (int j = 0; j < Variants.Count; j++) { if (!variantDtos[i].Id.Equals(Variants[j].Id)) { continue; } variantDomain = Variants[j]; if (i != j && currentVariantIds.Contains(variantDtos[i].Id)) { AddIntegratedEvent(ProductEventType.VARIANT_INDEX_CHANGED, variantDtos[i].Id); Modify(); } } newListVariant.Add(variantDomain); } Variants = newListVariant; }