* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Domain\Address\Command; use PrestaShop\PrestaShop\Core\Domain\Address\Exception\AddressConstraintException; use PrestaShop\PrestaShop\Core\Domain\Address\ValueObject\RequiredFields; /** * Sets required fields for new address when adding */ class SetRequiredFieldsForAddressCommand { /** * @var string[] */ private $requiredFields; /** * @param string[] $requiredFields */ public function __construct(array $requiredFields) { $this->assertContainsOnlyAllowedFields($requiredFields); $this->requiredFields = $requiredFields; } /** * @return string[] */ public function getRequiredFields() { return $this->requiredFields; } /** * Check that all provided fields are allowed. * * @param string[] $requiredFields */ private function assertContainsOnlyAllowedFields(array $requiredFields) { if (empty($requiredFields)) { return; } foreach ($requiredFields as $requiredField) { if (!in_array($requiredField, RequiredFields::ALLOWED_REQUIRED_FIELDS)) { throw new AddressConstraintException(sprintf('Required field %s is invalid. Allowed fields are: %s', $requiredField, implode(',', RequiredFields::ALLOWED_REQUIRED_FIELDS)), AddressConstraintException::INVALID_REQUIRED_FIELDS); } } } }