Exemplo n.º 1
0
        public void AddVariant(VariantDto dto)
        {
            var variantDomain = new VariantDomain(this, dto);

            Variants.Add(variantDomain);
            AddIntegratedEvent(ProductEventType.VARIANT_ADDED, dto.Id);
            Modify();
        }
Exemplo n.º 2
0
 public void UpdateVariant(VariantDomain variantDomain, VariantDto dto)
 {
     variantDomain.Update(dto);
     if (variantDomain.Modified)
     {
         AddIntegratedEvent(ProductEventType.VARIANT_UPDATED, variantDomain.Id);
         Modify();
     }
 }
Exemplo n.º 3
0
        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;
        }