* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\OrderReturnState\CommandHandler; use OrderReturnState; use PrestaShop\PrestaShop\Core\Domain\OrderReturnState\Command\AddOrderReturnStateCommand; use PrestaShop\PrestaShop\Core\Domain\OrderReturnState\CommandHandler\AddOrderReturnStateHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\OrderReturnState\Exception\OrderReturnStateException; use PrestaShop\PrestaShop\Core\Domain\OrderReturnState\ValueObject\OrderReturnStateId; /** * Handles command that adds new order return state * * @internal */ final class AddOrderReturnStateHandler extends AbstractOrderReturnStateHandler implements AddOrderReturnStateHandlerInterface { /** * {@inheritdoc} */ public function handle(AddOrderReturnStateCommand $command) { $orderReturnState = new OrderReturnState(); $this->fillOrderReturnStateWithCommandData($orderReturnState, $command); $this->assertRequiredFieldsAreNotMissing($orderReturnState); if (false === $orderReturnState->validateFields(false)) { throw new OrderReturnStateException('Order status contains invalid field values'); } $orderReturnState->add(); return new OrderReturnStateId((int) $orderReturnState->id); } private function fillOrderReturnStateWithCommandData(OrderReturnState $orderReturnState, AddOrderReturnStateCommand $command) { $orderReturnState->name = $command->getLocalizedNames(); $orderReturnState->color = $command->getColor(); } }