private SpecificationPropertyGroupList GetSpecificationPropertyGroups(Product product) { SpecificationPropertyGroupList specificationPropertyGroups = new SpecificationPropertyGroupList(); foreach (Specification specification in product.Specifications) { foreach (SpecificationPropertyValue specificationPropertyValue in specification.PropertyValues) { PropertyValueDto specificationPropertyValueDto = specificationPropertyValue.MapTo <PropertyValueDto>(); if (specificationPropertyGroups.HasSpecificationProperty(specificationPropertyValue.SpecificationProperty)) { var specificationPropertyGroup = specificationPropertyGroups.GetFromSpecificationProperty(specificationPropertyValue.SpecificationProperty); if (!HasPropertyValueDto(specificationPropertyGroup.SpecificationPropertyValues, specificationPropertyValueDto)) { specificationPropertyGroup.SpecificationPropertyValues.Add(specificationPropertyValueDto); } } else { var specificationPropertyGroup = new SpecificationPropertyGroup() { SpecificationProperty = specificationPropertyValue.SpecificationProperty.MapTo <SpecificationPropertyDto>(), SpecificationPropertyValues = new List <PropertyValueDto>() }; specificationPropertyGroup.SpecificationPropertyValues.Add(specificationPropertyValueDto); specificationPropertyGroups.Add(specificationPropertyGroup); } } } return(specificationPropertyGroups); }
public ProductDto GetProduct(ProductGetInput input) { Product product = _productRespository.Get(input.Id); if (product.Status == ProductStatus.Off) { throw new UserFriendlyException(L("TheProductIsOff")); } ProductDto productDto = product.MapTo <ProductDto>(); SpecificationPropertyGroupList SpecificationPropertyGroupList = GetSpecificationPropertyGroups(product); productDto.SpecificationPropertyGroups = SpecificationPropertyGroupList; return(productDto); }