value === []) { throw new \DomainException('CouponValidityInformations requires at least one CouponValidityInformation.'); } $hasFrance = false; $countries = []; foreach ($this->value as $couponValidityInformation) { if (! $couponValidityInformation instanceof CouponValidityInformation) { throw new \DomainException('Value of CouponValidityInformationArray must be CouponValidityInformation instances.'); } if (isset($countries[$couponValidityInformation->forLocale->name])) { throw new \DomainException(sprintf( 'Only one CouponValidityInformation is allowed per country, duplicate for %s.', $couponValidityInformation->forLocale->name, )); } $countries[$couponValidityInformation->forLocale->name] = true; if ($couponValidityInformation->forLocale === Country::FRANCE) { $hasFrance = true; } } if (! $hasFrance) { throw new \DomainException('CouponValidityInformations requires a CouponValidityInformation for France.'); } } }