From d9273f2d08c6290f2666e6d9ae4a9bb742752a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Chru=C5=9Bciel?= Date: Fri, 25 Jan 2019 18:45:18 +0100 Subject: [PATCH] Revert "Abstract creating commands from requests" --- .travis.yml | 1 + composer.json | 2 +- spec/Parser/CommandRequestParserSpec.php | 50 ------------------- .../AddressBook/RemoveAddressAction.php | 14 +----- .../AddressBook/SetDefaultAddressAction.php | 14 +----- src/Controller/Cart/AddCouponAction.php | 2 - .../Cart/ChangeItemQuantityAction.php | 13 ++--- src/Controller/Cart/DropCartAction.php | 16 ++---- src/Controller/Cart/PickupAction.php | 13 ++--- src/Controller/Cart/PutItemToCartAction.php | 31 ++++-------- src/Controller/Cart/PutItemsToCartAction.php | 5 +- src/Controller/Cart/RemoveCouponAction.php | 13 ++--- .../Cart/RemoveItemFromCartAction.php | 13 ++--- src/Controller/Checkout/AddressAction.php | 21 +++----- .../Checkout/ChoosePaymentMethodAction.php | 20 +++----- .../Checkout/ChooseShippingMethodAction.php | 20 +++----- .../Checkout/CompleteOrderAction.php | 33 ++++-------- .../Customer/RegisterCustomerAction.php | 12 ++--- .../RequestPasswordResettingAction.php | 12 ++--- .../ResendVerificationTokenAction.php | 12 ++--- .../Customer/UpdateCustomerAction.php | 12 ++--- .../Customer/VerifyAccountAction.php | 16 ++---- .../Product/AddReviewByCodeAction.php | 12 ++--- .../Product/AddReviewBySlugAction.php | 12 ++--- src/Exception/CannotParseCommand.php | 13 ----- src/Normalizer/RequestCartTokenNormalizer.php | 6 +-- src/Parser/CommandRequestParser.php | 33 ------------ src/Parser/CommandRequestParserInterface.php | 13 ----- src/Request/AddCouponRequest.php | 2 +- src/Request/AddProductReviewByCodeRequest.php | 6 +-- src/Request/AddProductReviewBySlugRequest.php | 6 +-- src/Request/AddressOrderRequest.php | 33 ------------ src/Request/ChangeItemQuantityRequest.php | 6 +-- src/Request/ChoosePaymentMethodRequest.php | 32 ------------ src/Request/ChooseShippingMethodRequest.php | 32 ------------ src/Request/CommandRequestInterface.php | 14 ------ src/Request/CompleteOrderRequest.php | 32 ------------ src/Request/DropCartRequest.php | 6 +-- .../GenerateResetPasswordTokenRequest.php | 24 --------- src/Request/PickupCartRequest.php | 6 +-- ...tionBasedConfigurableItemToCartRequest.php | 27 +++++----- src/Request/PutSimpleItemToCartRequest.php | 24 ++++----- ...iantBasedConfigurableItemToCartRequest.php | 27 +++++----- src/Request/RegisterCustomerRequest.php | 6 +-- src/Request/RemoveAddressRequest.php | 10 ++-- src/Request/RemoveCouponRequest.php | 6 +-- src/Request/RemoveItemFromCartRequest.php | 6 +-- .../ResendVerificationTokenRequest.php | 6 +-- src/Request/SendResetPasswordTokenRequest.php | 28 ----------- src/Request/SetDefaultAddressRequest.php | 10 ++-- src/Request/UpdateCustomerRequest.php | 6 +-- .../UserEmailBasedCommandRequestInterface.php | 10 ---- src/Request/VerifyAccountRequest.php | 6 +-- src/Resources/config/services.xml | 1 - .../config/services/actions/address_book.xml | 2 - .../config/services/actions/cart.xml | 6 --- .../config/services/actions/checkout.xml | 4 -- .../config/services/actions/customer.xml | 5 -- .../config/services/actions/product.xml | 2 - .../config/services/command_requests.xml | 39 --------------- .../ShopApiExtensionTest.php | 4 +- .../AddProductReviewByCodeRequestTest.php | 3 +- .../AddProductReviewBySlugRequestTest.php | 3 +- .../Request/ChangeItemQuantityRequestTest.php | 3 +- tests/Request/DropCartRequestTest.php | 3 +- tests/Request/PickupCartRequestTest.php | 6 +-- ...BasedConfigurableItemToCartRequestTest.php | 3 +- .../PutSimpleItemToCartRequestTest.php | 3 +- ...BasedConfigurableItemToCartRequestTest.php | 3 +- .../ResendVerificationTokenRequestTest.php | 3 +- tests/Request/UpdateCustomerRequestTest.php | 3 +- tests/Request/VerifyAccountRequestTest.php | 3 +- 72 files changed, 183 insertions(+), 721 deletions(-) delete mode 100644 spec/Parser/CommandRequestParserSpec.php delete mode 100644 src/Exception/CannotParseCommand.php delete mode 100644 src/Parser/CommandRequestParser.php delete mode 100644 src/Parser/CommandRequestParserInterface.php delete mode 100644 src/Request/AddressOrderRequest.php delete mode 100644 src/Request/ChoosePaymentMethodRequest.php delete mode 100644 src/Request/ChooseShippingMethodRequest.php delete mode 100644 src/Request/CommandRequestInterface.php delete mode 100644 src/Request/CompleteOrderRequest.php delete mode 100644 src/Request/GenerateResetPasswordTokenRequest.php delete mode 100644 src/Request/SendResetPasswordTokenRequest.php delete mode 100644 src/Request/UserEmailBasedCommandRequestInterface.php delete mode 100644 src/Resources/config/services/command_requests.xml diff --git a/.travis.yml b/.travis.yml index 594f0f2a0..822c0820f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: php php: + - 7.1 - 7.2 env: diff --git a/composer.json b/composer.json index 5fb550f22..b04c8551f 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "description": "Shop API for Sylius E-Commerce.", "license": "MIT", "require": { - "php": "^7.2", + "php": "^7.1", "sylius/sylius": "^1.1", "league/tactician-bundle": "^1.1", diff --git a/spec/Parser/CommandRequestParserSpec.php b/spec/Parser/CommandRequestParserSpec.php deleted file mode 100644 index c5ce92c21..000000000 --- a/spec/Parser/CommandRequestParserSpec.php +++ /dev/null @@ -1,50 +0,0 @@ -beConstructedWith($commandRequestLocator); - } - - function it_is_command_request_parser(): void - { - $this->shouldImplement(CommandRequestParserInterface::class); - } - - function it_provides_command_request_object_for_command_name( - ServiceLocator $commandRequestLocator, - Request $request, - CommandRequestInterface $commandRequest - ): void { - $commandRequestLocator->has('ValidCommand')->willReturn(true); - - $commandRequestLocator->get('ValidCommand')->willReturn($commandRequest); - $commandRequest->populateData($request)->shouldBeCalled(); - - $this->parse($request, 'ValidCommand')->shouldReturn($commandRequest); - } - - function it_throws_exception_if_command_request_cannot_be_parsed( - ServiceLocator $commandRequestLocator, - Request $request - ): void { - $commandRequestLocator->has('InvalidCommand')->willReturn(false); - - $this - ->shouldThrow(CannotParseCommand::withCommandName('InvalidCommand')) - ->during('parse', [$request, 'InvalidCommand']) - ; - } -} diff --git a/src/Controller/AddressBook/RemoveAddressAction.php b/src/Controller/AddressBook/RemoveAddressAction.php index b39d270b4..154e0ace5 100644 --- a/src/Controller/AddressBook/RemoveAddressAction.php +++ b/src/Controller/AddressBook/RemoveAddressAction.php @@ -8,12 +8,9 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\Component\Core\Model\ShopUserInterface; -use Sylius\ShopApiPlugin\Command\RemoveAddress; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactory; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Sylius\ShopApiPlugin\Provider\LoggedInShopUserProviderInterface; use Sylius\ShopApiPlugin\Request\RemoveAddressRequest; -use Sylius\ShopApiPlugin\Request\UserEmailBasedCommandRequestInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Exception\TokenNotFoundException; @@ -36,23 +33,18 @@ final class RemoveAddressAction /** @var LoggedInShopUserProviderInterface */ private $loggedInUserProvider; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, ValidatorInterface $validator, ValidationErrorViewFactory $validationErrorViewFactory, CommandBus $bus, - LoggedInShopUserProviderInterface $loggedInUserProvider, - CommandRequestParserInterface $commandRequestParser + LoggedInShopUserProviderInterface $loggedInUserProvider ) { $this->viewHandler = $viewHandler; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->bus = $bus; $this->loggedInUserProvider = $loggedInUserProvider; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response @@ -64,9 +56,7 @@ public function __invoke(Request $request): Response return $this->viewHandler->handle(View::create(null, Response::HTTP_UNAUTHORIZED)); } - /** @var UserEmailBasedCommandRequestInterface $removeAddressRequest */ - $removeAddressRequest = $this->commandRequestParser->parse($request, RemoveAddress::class); - $removeAddressRequest->setUserEmail($user->getEmail()); + $removeAddressRequest = new RemoveAddressRequest($request, $user->getEmail()); $validationResults = $this->validator->validate($removeAddressRequest); diff --git a/src/Controller/AddressBook/SetDefaultAddressAction.php b/src/Controller/AddressBook/SetDefaultAddressAction.php index 29ebba576..d327b80e2 100644 --- a/src/Controller/AddressBook/SetDefaultAddressAction.php +++ b/src/Controller/AddressBook/SetDefaultAddressAction.php @@ -8,12 +8,9 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\Component\Core\Model\ShopUserInterface; -use Sylius\ShopApiPlugin\Command\SetDefaultAddress; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Sylius\ShopApiPlugin\Provider\LoggedInShopUserProviderInterface; use Sylius\ShopApiPlugin\Request\SetDefaultAddressRequest; -use Sylius\ShopApiPlugin\Request\UserEmailBasedCommandRequestInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Exception\TokenNotFoundException; @@ -36,23 +33,18 @@ final class SetDefaultAddressAction /** @var LoggedInShopUserProviderInterface */ private $loggedInUserProvider; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, - LoggedInShopUserProviderInterface $loggedInUserProvider, - CommandRequestParserInterface $commandRequestParser + LoggedInShopUserProviderInterface $loggedInUserProvider ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->loggedInUserProvider = $loggedInUserProvider; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response @@ -64,9 +56,7 @@ public function __invoke(Request $request): Response return $this->viewHandler->handle(View::create(null, Response::HTTP_UNAUTHORIZED)); } - /** @var UserEmailBasedCommandRequestInterface $setDefaultAddressRequest */ - $setDefaultAddressRequest = $this->commandRequestParser->parse($request, SetDefaultAddress::class); - $setDefaultAddressRequest->setUserEmail($user->getEmail()); + $setDefaultAddressRequest = new SetDefaultAddressRequest($request, $user->getEmail()); $validationResults = $this->validator->validate($setDefaultAddressRequest); diff --git a/src/Controller/Cart/AddCouponAction.php b/src/Controller/Cart/AddCouponAction.php index f1c75635a..aad65f503 100644 --- a/src/Controller/Cart/AddCouponAction.php +++ b/src/Controller/Cart/AddCouponAction.php @@ -7,7 +7,6 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\AddCoupon; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; use Sylius\ShopApiPlugin\Request\AddCouponRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; @@ -55,7 +54,6 @@ public function __invoke(Request $request): Response if (0 === count($validationResults)) { $addCouponCommand = $addCouponRequest->getCommand(); - assert($addCouponCommand instanceof AddCoupon); $this->bus->handle($addCouponCommand); diff --git a/src/Controller/Cart/ChangeItemQuantityAction.php b/src/Controller/Cart/ChangeItemQuantityAction.php index 80ffb6cbc..8c7a14b4e 100644 --- a/src/Controller/Cart/ChangeItemQuantityAction.php +++ b/src/Controller/Cart/ChangeItemQuantityAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\ChangeItemQuantity; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\ChangeItemQuantityRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -33,28 +32,23 @@ final class ChangeItemQuantityAction /** @var CartViewRepositoryInterface */ private $cartQuery; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CartViewRepositoryInterface $cartQuery, - CommandRequestParserInterface $commandRequestParser + CartViewRepositoryInterface $cartQuery ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->cartQuery = $cartQuery; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $changeItemQuantityRequest = $this->commandRequestParser->parse($request, ChangeItemQuantity::class); + $changeItemQuantityRequest = new ChangeItemQuantityRequest($request); $validationResults = $this->validator->validate($changeItemQuantityRequest); @@ -63,7 +57,6 @@ public function __invoke(Request $request): Response } $changeItemQuantityCommand = $changeItemQuantityRequest->getCommand(); - assert($changeItemQuantityCommand instanceof ChangeItemQuantity); $this->bus->handle($changeItemQuantityCommand); diff --git a/src/Controller/Cart/DropCartAction.php b/src/Controller/Cart/DropCartAction.php index b0204ad8e..92fabc3dc 100644 --- a/src/Controller/Cart/DropCartAction.php +++ b/src/Controller/Cart/DropCartAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\DropCart; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\DropCartRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,31 +27,26 @@ final class DropCartAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $dropCartRequest = $this->commandRequestParser->parse($request, DropCart::class); + $pickupRequest = new DropCartRequest($request); - $validationResults = $this->validator->validate($dropCartRequest); + $validationResults = $this->validator->validate($pickupRequest); if (0 === count($validationResults)) { - $this->bus->handle($dropCartRequest->getCommand()); + $this->bus->handle($pickupRequest->getCommand()); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Cart/PickupAction.php b/src/Controller/Cart/PickupAction.php index 9002d81fc..9debc2061 100644 --- a/src/Controller/Cart/PickupAction.php +++ b/src/Controller/Cart/PickupAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\PickupCart; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\PickupCartRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -33,34 +32,28 @@ final class PickupAction /** @var CartViewRepositoryInterface */ private $cartQuery; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CartViewRepositoryInterface $cartQuery, - CommandRequestParserInterface $commandRequestParser + CartViewRepositoryInterface $cartQuery ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->cartQuery = $cartQuery; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $pickupRequest = $this->commandRequestParser->parse($request, PickupCart::class); + $pickupRequest = new PickupCartRequest($request); $validationResults = $this->validator->validate($pickupRequest); if (0 === count($validationResults)) { $pickupCartCommand = $pickupRequest->getCommand(); - assert($pickupCartCommand instanceof PickupCart); $this->bus->handle($pickupCartCommand); diff --git a/src/Controller/Cart/PutItemToCartAction.php b/src/Controller/Cart/PutItemToCartAction.php index fd8ca57b6..e4e3130fc 100644 --- a/src/Controller/Cart/PutItemToCartAction.php +++ b/src/Controller/Cart/PutItemToCartAction.php @@ -7,13 +7,11 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\PutOptionBasedConfigurableItemToCart; -use Sylius\ShopApiPlugin\Command\PutSimpleItemToCart; -use Sylius\ShopApiPlugin\Command\PutVariantBasedConfigurableItemToCart; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; use Sylius\ShopApiPlugin\Normalizer\RequestCartTokenNormalizerInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; -use Sylius\ShopApiPlugin\Request\CommandRequestInterface; +use Sylius\ShopApiPlugin\Request\PutOptionBasedConfigurableItemToCartRequest; +use Sylius\ShopApiPlugin\Request\PutSimpleItemToCartRequest; +use Sylius\ShopApiPlugin\Request\PutVariantBasedConfigurableItemToCartRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -41,17 +39,13 @@ final class PutItemToCartAction /** @var RequestCartTokenNormalizerInterface */ private $requestCartTokenNormalizer; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, CartViewRepositoryInterface $cartQuery, - RequestCartTokenNormalizerInterface $requestCartTokenNormalizer, - CommandRequestParserInterface $commandRequestParser + RequestCartTokenNormalizerInterface $requestCartTokenNormalizer ) { $this->viewHandler = $viewHandler; $this->bus = $bus; @@ -59,7 +53,6 @@ public function __construct( $this->validationErrorViewFactory = $validationErrorViewFactory; $this->cartQuery = $cartQuery; $this->requestCartTokenNormalizer = $requestCartTokenNormalizer; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response @@ -71,6 +64,7 @@ public function __invoke(Request $request): Response } $commandRequest = $this->provideCommandRequest($request); + $validationResults = $this->validator->validate($commandRequest); if (0 !== count($validationResults)) { @@ -82,12 +76,6 @@ public function __invoke(Request $request): Response } $command = $commandRequest->getCommand(); - assert( - $command instanceof PutSimpleItemToCart || - $command instanceof PutVariantBasedConfigurableItemToCart || - $command instanceof PutOptionBasedConfigurableItemToCart - ); - $this->bus->handle($command); try { @@ -99,21 +87,22 @@ public function __invoke(Request $request): Response } } - private function provideCommandRequest(Request $request): CommandRequestInterface + /** @return PutOptionBasedConfigurableItemToCartRequest|PutSimpleItemToCartRequest|PutVariantBasedConfigurableItemToCartRequest */ + private function provideCommandRequest(Request $request) { $hasVariantCode = $request->request->has('variantCode'); $hasOptionCode = $request->request->has('options'); if (!$hasVariantCode && !$hasOptionCode) { - return $this->commandRequestParser->parse($request, PutSimpleItemToCart::class); + return PutSimpleItemToCartRequest::fromRequest($request); } if ($hasVariantCode && !$hasOptionCode) { - return $this->commandRequestParser->parse($request, PutVariantBasedConfigurableItemToCart::class); + return PutVariantBasedConfigurableItemToCartRequest::fromRequest($request); } if (!$hasVariantCode && $hasOptionCode) { - return $this->commandRequestParser->parse($request, PutOptionBasedConfigurableItemToCart::class); + return PutOptionBasedConfigurableItemToCartRequest::fromRequest($request); } throw new NotFoundHttpException('Variant not found for given configuration'); diff --git a/src/Controller/Cart/PutItemsToCartAction.php b/src/Controller/Cart/PutItemsToCartAction.php index 3f09700eb..f3400ff4e 100644 --- a/src/Controller/Cart/PutItemsToCartAction.php +++ b/src/Controller/Cart/PutItemsToCartAction.php @@ -8,7 +8,6 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Normalizer\RequestCartTokenNormalizerInterface; -use Sylius\ShopApiPlugin\Request\CommandRequestInterface; use Sylius\ShopApiPlugin\Request\PutOptionBasedConfigurableItemToCartRequest; use Sylius\ShopApiPlugin\Request\PutSimpleItemToCartRequest; use Sylius\ShopApiPlugin\Request\PutVariantBasedConfigurableItemToCartRequest; @@ -75,7 +74,6 @@ public function __invoke(Request $request): Response foreach ($request->request->get('items') as $item) { $item['token'] = $token; - $commandRequests[] = $this->provideCommandRequest($item); } @@ -123,7 +121,8 @@ public function __invoke(Request $request): Response } } - private function provideCommandRequest(array $item): CommandRequestInterface + /** @return PutOptionBasedConfigurableItemToCartRequest|PutSimpleItemToCartRequest|PutVariantBasedConfigurableItemToCartRequest */ + private function provideCommandRequest(array $item) { $hasVariantCode = isset($item['variantCode']); $hasOptions = isset($item['options']); diff --git a/src/Controller/Cart/RemoveCouponAction.php b/src/Controller/Cart/RemoveCouponAction.php index 56c917eb2..d548f513c 100644 --- a/src/Controller/Cart/RemoveCouponAction.php +++ b/src/Controller/Cart/RemoveCouponAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\RemoveCoupon; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\RemoveCouponRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -33,34 +32,28 @@ final class RemoveCouponAction /** @var CartViewRepositoryInterface */ private $cartQuery; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CartViewRepositoryInterface $cartQuery, - CommandRequestParserInterface $commandRequestParser + CartViewRepositoryInterface $cartQuery ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->cartQuery = $cartQuery; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $removeCouponRequest = $this->commandRequestParser->parse($request, RemoveCoupon::class); + $removeCouponRequest = new RemoveCouponRequest($request); $validationResults = $this->validator->validate($removeCouponRequest); if (0 === count($validationResults)) { $removeCouponCommand = $removeCouponRequest->getCommand(); - assert($removeCouponCommand instanceof RemoveCoupon); $this->bus->handle($removeCouponCommand); diff --git a/src/Controller/Cart/RemoveItemFromCartAction.php b/src/Controller/Cart/RemoveItemFromCartAction.php index 1f731b9d8..f0cc5d2b4 100644 --- a/src/Controller/Cart/RemoveItemFromCartAction.php +++ b/src/Controller/Cart/RemoveItemFromCartAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\RemoveItemFromCart; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\RemoveItemFromCartRequest; use Sylius\ShopApiPlugin\ViewRepository\Cart\CartViewRepositoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -33,28 +32,23 @@ final class RemoveItemFromCartAction /** @var CartViewRepositoryInterface */ private $cartQuery; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CartViewRepositoryInterface $cartQuery, - CommandRequestParserInterface $commandRequestParser + CartViewRepositoryInterface $cartQuery ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; $this->cartQuery = $cartQuery; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $removeItemFromCartRequest = $this->commandRequestParser->parse($request, RemoveItemFromCart::class); + $removeItemFromCartRequest = new RemoveItemFromCartRequest($request); $validationResults = $this->validator->validate($removeItemFromCartRequest); @@ -63,7 +57,6 @@ public function __invoke(Request $request): Response } $removeItemFromCartCommand = $removeItemFromCartRequest->getCommand(); - assert($removeItemFromCartCommand instanceof RemoveItemFromCart); $this->bus->handle($removeItemFromCartCommand); diff --git a/src/Controller/Checkout/AddressAction.php b/src/Controller/Checkout/AddressAction.php index 03e2b5212..5f80238bc 100644 --- a/src/Controller/Checkout/AddressAction.php +++ b/src/Controller/Checkout/AddressAction.php @@ -8,7 +8,7 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Command\AddressOrder; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Model\Address; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,24 +20,19 @@ final class AddressAction /** @var CommandBus */ private $bus; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - - public function __construct( - ViewHandlerInterface $viewHandler, - CommandBus $bus, - CommandRequestParserInterface $commandRequestParser - ) { + public function __construct(ViewHandlerInterface $viewHandler, CommandBus $bus) + { $this->viewHandler = $viewHandler; $this->bus = $bus; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $commandRequest = $this->commandRequestParser->parse($request, AddressOrder::class); - - $this->bus->handle($commandRequest->getCommand()); + $this->bus->handle(new AddressOrder( + $request->attributes->get('token'), + Address::createFromArray($request->request->get('shippingAddress')), + Address::createFromArray($request->request->get('billingAddress') ?: $request->request->get('shippingAddress')) + )); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Checkout/ChoosePaymentMethodAction.php b/src/Controller/Checkout/ChoosePaymentMethodAction.php index cdd271292..427a18cc0 100644 --- a/src/Controller/Checkout/ChoosePaymentMethodAction.php +++ b/src/Controller/Checkout/ChoosePaymentMethodAction.php @@ -8,7 +8,6 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Command\ChoosePaymentMethod; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,24 +19,19 @@ final class ChoosePaymentMethodAction /** @var CommandBus */ private $bus; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - - public function __construct( - ViewHandlerInterface $viewHandler, - CommandBus $bus, - CommandRequestParserInterface $commandRequestParser - ) { + public function __construct(ViewHandlerInterface $viewHandler, CommandBus $bus) + { $this->viewHandler = $viewHandler; $this->bus = $bus; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $comandRequest = $this->commandRequestParser->parse($request, ChoosePaymentMethod::class); - - $this->bus->handle($comandRequest->getCommand()); + $this->bus->handle(new ChoosePaymentMethod( + $request->attributes->get('token'), + $request->attributes->get('paymentId'), + $request->request->get('method') + )); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Checkout/ChooseShippingMethodAction.php b/src/Controller/Checkout/ChooseShippingMethodAction.php index 974bf8116..d569b7e9f 100644 --- a/src/Controller/Checkout/ChooseShippingMethodAction.php +++ b/src/Controller/Checkout/ChooseShippingMethodAction.php @@ -8,7 +8,6 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Command\ChooseShippingMethod; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -20,24 +19,19 @@ final class ChooseShippingMethodAction /** @var CommandBus */ private $bus; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - - public function __construct( - ViewHandlerInterface $viewHandler, - CommandBus $bus, - CommandRequestParserInterface $commandRequestParser - ) { + public function __construct(ViewHandlerInterface $viewHandler, CommandBus $bus) + { $this->viewHandler = $viewHandler; $this->bus = $bus; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $commandRequest = $this->commandRequestParser->parse($request, ChooseShippingMethod::class); - - $this->bus->handle($commandRequest->getCommand()); + $this->bus->handle(new ChooseShippingMethod( + $request->attributes->get('token'), + $request->attributes->get('shippingId'), + $request->request->get('method') + )); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Checkout/CompleteOrderAction.php b/src/Controller/Checkout/CompleteOrderAction.php index e1f5cd08e..9a96899da 100644 --- a/src/Controller/Checkout/CompleteOrderAction.php +++ b/src/Controller/Checkout/CompleteOrderAction.php @@ -9,7 +9,6 @@ use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Command\CompleteOrder; use Sylius\ShopApiPlugin\Exception\WrongUserException; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Sylius\ShopApiPlugin\Provider\LoggedInShopUserProviderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -25,29 +24,30 @@ final class CompleteOrderAction /** @var LoggedInShopUserProviderInterface */ private $loggedInUserProvider; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, - LoggedInShopUserProviderInterface $loggedInUserProvider, - CommandRequestParserInterface $commandRequestParser + LoggedInShopUserProviderInterface $loggedInUserProvider ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->loggedInUserProvider = $loggedInUserProvider; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $this->setDefaultEmailOnRequestIfNeeded($request); - - $commandRequest = $this->commandRequestParser->parse($request, CompleteOrder::class); + if ($this->loggedInUserProvider->isUserLoggedIn()) { + $defaultEmail = $this->loggedInUserProvider->provide()->getEmail(); + } try { - $this->bus->handle($commandRequest->getCommand()); + $this->bus->handle( + new CompleteOrder( + $request->attributes->get('token'), + $request->request->get('email', $defaultEmail ?? null), + $request->request->get('notes') + ) + ); } catch (WrongUserException $notLoggedInException) { return $this->viewHandler->handle( View::create( @@ -59,15 +59,4 @@ public function __invoke(Request $request): Response return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } - - private function setDefaultEmailOnRequestIfNeeded(Request $request): void - { - if ($this->loggedInUserProvider->isUserLoggedIn()) { - $defaultEmail = $this->loggedInUserProvider->provide()->getEmail(); - } - - if (!$request->request->has('email')) { - $request->request->set('email', $defaultEmail ?? null); - } - } } diff --git a/src/Controller/Customer/RegisterCustomerAction.php b/src/Controller/Customer/RegisterCustomerAction.php index e9f5efb21..53bf23988 100644 --- a/src/Controller/Customer/RegisterCustomerAction.php +++ b/src/Controller/Customer/RegisterCustomerAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\RegisterCustomer; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\RegisterCustomerRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,26 +27,21 @@ final class RegisterCustomerAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $registerCustomerRequest = $this->commandRequestParser->parse($request, RegisterCustomer::class); + $registerCustomerRequest = new RegisterCustomerRequest($request); $validationResults = $this->validator->validate($registerCustomerRequest); diff --git a/src/Controller/Customer/RequestPasswordResettingAction.php b/src/Controller/Customer/RequestPasswordResettingAction.php index f0f9496ba..fa3821137 100644 --- a/src/Controller/Customer/RequestPasswordResettingAction.php +++ b/src/Controller/Customer/RequestPasswordResettingAction.php @@ -9,7 +9,6 @@ use League\Tactician\CommandBus; use Sylius\ShopApiPlugin\Command\GenerateResetPasswordToken; use Sylius\ShopApiPlugin\Command\SendResetPasswordToken; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -21,23 +20,18 @@ final class RequestPasswordResettingAction /** @var CommandBus */ private $bus; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, - CommandBus $bus, - CommandRequestParserInterface $commandRequestParser + CommandBus $bus ) { $this->viewHandler = $viewHandler; $this->bus = $bus; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $this->bus->handle($this->commandRequestParser->parse($request, GenerateResetPasswordToken::class)->getCommand()); - $this->bus->handle($this->commandRequestParser->parse($request, SendResetPasswordToken::class)->getCommand()); + $this->bus->handle(new GenerateResetPasswordToken($request->request->get('email'))); + $this->bus->handle(new SendResetPasswordToken($request->request->get('email'), $request->attributes->get('channelCode'))); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Customer/ResendVerificationTokenAction.php b/src/Controller/Customer/ResendVerificationTokenAction.php index ebfa90384..82df503c7 100644 --- a/src/Controller/Customer/ResendVerificationTokenAction.php +++ b/src/Controller/Customer/ResendVerificationTokenAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\SendVerificationToken; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\ResendVerificationTokenRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,26 +27,21 @@ final class ResendVerificationTokenAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $resendVerificationTokenRequest = $this->commandRequestParser->parse($request, SendVerificationToken::class); + $resendVerificationTokenRequest = new ResendVerificationTokenRequest($request); $validationResults = $this->validator->validate($resendVerificationTokenRequest); diff --git a/src/Controller/Customer/UpdateCustomerAction.php b/src/Controller/Customer/UpdateCustomerAction.php index f67fa8a4c..6a0aaa3f7 100644 --- a/src/Controller/Customer/UpdateCustomerAction.php +++ b/src/Controller/Customer/UpdateCustomerAction.php @@ -8,10 +8,9 @@ use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; use Sylius\Component\Core\Model\ShopUserInterface; -use Sylius\ShopApiPlugin\Command\UpdateCustomer; use Sylius\ShopApiPlugin\Factory\CustomerViewFactoryInterface; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\UpdateCustomerRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -38,17 +37,13 @@ final class UpdateCustomerAction /** @var TokenStorageInterface */ private $tokenStorage; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, ValidatorInterface $validator, CommandBus $bus, ValidationErrorViewFactoryInterface $validationErrorViewFactory, CustomerViewFactoryInterface $customerViewFactory, - TokenStorageInterface $tokenStorage, - CommandRequestParserInterface $commandRequestParser + TokenStorageInterface $tokenStorage ) { $this->viewHandler = $viewHandler; $this->validator = $validator; @@ -56,7 +51,6 @@ public function __construct( $this->validationErrorViewFactory = $validationErrorViewFactory; $this->customerViewFactory = $customerViewFactory; $this->tokenStorage = $tokenStorage; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response @@ -67,7 +61,7 @@ public function __invoke(Request $request): Response Assert::isInstanceOf($user, ShopUserInterface::class); $customer = $user->getCustomer(); - $updateCustomerRequest = $this->commandRequestParser->parse($request, UpdateCustomer::class); + $updateCustomerRequest = new UpdateCustomerRequest($request); $validationResults = $this->validator->validate($updateCustomerRequest, null, 'sylius_customer_profile_update'); diff --git a/src/Controller/Customer/VerifyAccountAction.php b/src/Controller/Customer/VerifyAccountAction.php index 4c892fcbd..c4c9c3d74 100644 --- a/src/Controller/Customer/VerifyAccountAction.php +++ b/src/Controller/Customer/VerifyAccountAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\VerifyAccount; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\VerifyAccountRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,34 +27,29 @@ final class VerifyAccountAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $verifyAccountRequest = $this->commandRequestParser->parse($request, VerifyAccount::class); + $resendVerificationTokenRequest = new VerifyAccountRequest($request); - $validationResults = $this->validator->validate($verifyAccountRequest); + $validationResults = $this->validator->validate($resendVerificationTokenRequest); if (0 !== count($validationResults)) { return $this->viewHandler->handle(View::create($this->validationErrorViewFactory->create($validationResults), Response::HTTP_BAD_REQUEST)); } - $this->bus->handle($verifyAccountRequest->getCommand()); + $this->bus->handle($resendVerificationTokenRequest->getCommand()); return $this->viewHandler->handle(View::create(null, Response::HTTP_NO_CONTENT)); } diff --git a/src/Controller/Product/AddReviewByCodeAction.php b/src/Controller/Product/AddReviewByCodeAction.php index e86a844ed..698ce65d0 100644 --- a/src/Controller/Product/AddReviewByCodeAction.php +++ b/src/Controller/Product/AddReviewByCodeAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\AddProductReviewByCode; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\AddProductReviewByCodeRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,26 +27,21 @@ final class AddReviewByCodeAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $addReviewRequest = $this->commandRequestParser->parse($request, AddProductReviewByCode::class); + $addReviewRequest = new AddProductReviewByCodeRequest($request); $validationResults = $this->validator->validate($addReviewRequest); diff --git a/src/Controller/Product/AddReviewBySlugAction.php b/src/Controller/Product/AddReviewBySlugAction.php index 33f9f3bb7..baee2cece 100644 --- a/src/Controller/Product/AddReviewBySlugAction.php +++ b/src/Controller/Product/AddReviewBySlugAction.php @@ -7,9 +7,8 @@ use FOS\RestBundle\View\View; use FOS\RestBundle\View\ViewHandlerInterface; use League\Tactician\CommandBus; -use Sylius\ShopApiPlugin\Command\AddProductReviewBySlug; use Sylius\ShopApiPlugin\Factory\ValidationErrorViewFactoryInterface; -use Sylius\ShopApiPlugin\Parser\CommandRequestParserInterface; +use Sylius\ShopApiPlugin\Request\AddProductReviewBySlugRequest; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Validator\ValidatorInterface; @@ -28,26 +27,21 @@ final class AddReviewBySlugAction /** @var ValidationErrorViewFactoryInterface */ private $validationErrorViewFactory; - /** @var CommandRequestParserInterface */ - private $commandRequestParser; - public function __construct( ViewHandlerInterface $viewHandler, CommandBus $bus, ValidatorInterface $validator, - ValidationErrorViewFactoryInterface $validationErrorViewFactory, - CommandRequestParserInterface $commandRequestParser + ValidationErrorViewFactoryInterface $validationErrorViewFactory ) { $this->viewHandler = $viewHandler; $this->bus = $bus; $this->validator = $validator; $this->validationErrorViewFactory = $validationErrorViewFactory; - $this->commandRequestParser = $commandRequestParser; } public function __invoke(Request $request): Response { - $addReviewRequest = $this->commandRequestParser->parse($request, AddProductReviewBySlug::class); + $addReviewRequest = new AddProductReviewBySlugRequest($request); $validationResults = $this->validator->validate($addReviewRequest); diff --git a/src/Exception/CannotParseCommand.php b/src/Exception/CannotParseCommand.php deleted file mode 100644 index 06719ad52..000000000 --- a/src/Exception/CannotParseCommand.php +++ /dev/null @@ -1,13 +0,0 @@ -populateData($request); + $pickupRequest = new PickupCartRequest($request); $validationResults = $this->validator->validate($pickupRequest); @@ -40,8 +38,6 @@ public function doNotAllowNullCartToken(Request $request): Request } $pickupCartCommand = $pickupRequest->getCommand(); - assert($pickupCartCommand instanceof PickupCart); - $this->bus->handle($pickupCartCommand); $request->attributes->set('token', $pickupCartCommand->orderToken()); diff --git a/src/Parser/CommandRequestParser.php b/src/Parser/CommandRequestParser.php deleted file mode 100644 index 7bd3c5fd1..000000000 --- a/src/Parser/CommandRequestParser.php +++ /dev/null @@ -1,33 +0,0 @@ -commandRequestLocator = $commandRequestLocator; - } - - public function parse(Request $request, string $commandName): CommandRequestInterface - { - if (!$this->commandRequestLocator->has($commandName)) { - throw CannotParseCommand::withCommandName($commandName); - } - - $commandRequest = $this->commandRequestLocator->get($commandName); - $commandRequest->populateData($request); - - return $commandRequest; - } -} diff --git a/src/Parser/CommandRequestParserInterface.php b/src/Parser/CommandRequestParserInterface.php deleted file mode 100644 index d476038d3..000000000 --- a/src/Parser/CommandRequestParserInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -coupon = $request->request->get('coupon'); } - public function getCommand(): object + public function getCommand(): AddCoupon { return new AddCoupon($this->token, $this->coupon); } diff --git a/src/Request/AddProductReviewByCodeRequest.php b/src/Request/AddProductReviewByCodeRequest.php index 90ddab3e6..c035372ae 100644 --- a/src/Request/AddProductReviewByCodeRequest.php +++ b/src/Request/AddProductReviewByCodeRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\AddProductReviewByCode; use Symfony\Component\HttpFoundation\Request; -class AddProductReviewByCodeRequest implements CommandRequestInterface +class AddProductReviewByCodeRequest { /** @var string */ protected $code; @@ -27,7 +27,7 @@ class AddProductReviewByCodeRequest implements CommandRequestInterface /** @var string */ protected $email; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->code = $request->attributes->get('code'); $this->channelCode = $request->attributes->get('channelCode'); @@ -38,7 +38,7 @@ public function populateData(Request $request): void $this->email = $request->request->get('email'); } - public function getCommand(): object + public function getCommand(): AddProductReviewByCode { return new AddProductReviewByCode($this->code, $this->channelCode, $this->title, $this->rating, $this->comment, $this->email); } diff --git a/src/Request/AddProductReviewBySlugRequest.php b/src/Request/AddProductReviewBySlugRequest.php index f888d40c2..b6aa7cc3b 100644 --- a/src/Request/AddProductReviewBySlugRequest.php +++ b/src/Request/AddProductReviewBySlugRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\AddProductReviewBySlug; use Symfony\Component\HttpFoundation\Request; -class AddProductReviewBySlugRequest implements CommandRequestInterface +class AddProductReviewBySlugRequest { /** @var string */ protected $slug; @@ -27,7 +27,7 @@ class AddProductReviewBySlugRequest implements CommandRequestInterface /** @var string */ protected $email; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->slug = $request->attributes->get('slug'); $this->channelCode = $request->attributes->get('channelCode'); @@ -38,7 +38,7 @@ public function populateData(Request $request): void $this->email = $request->request->get('email'); } - public function getCommand(): object + public function getCommand(): AddProductReviewBySlug { return new AddProductReviewBySlug($this->slug, $this->channelCode, $this->title, $this->rating, $this->comment, $this->email); } diff --git a/src/Request/AddressOrderRequest.php b/src/Request/AddressOrderRequest.php deleted file mode 100644 index 2f9fb1a99..000000000 --- a/src/Request/AddressOrderRequest.php +++ /dev/null @@ -1,33 +0,0 @@ -token = $request->attributes->get('token'); - $this->shippingAddress = Address::createFromArray($request->request->get('shippingAddress')); - $this->billingAddress = Address::createFromArray($request->request->get('billingAddress') ?: $request->request->get('shippingAddress')); - } - - public function getCommand(): object - { - return new AddressOrder($this->token, $this->shippingAddress, $this->billingAddress); - } -} diff --git a/src/Request/ChangeItemQuantityRequest.php b/src/Request/ChangeItemQuantityRequest.php index 2b7f6b8e0..58ba0abca 100644 --- a/src/Request/ChangeItemQuantityRequest.php +++ b/src/Request/ChangeItemQuantityRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\ChangeItemQuantity; use Symfony\Component\HttpFoundation\Request; -class ChangeItemQuantityRequest implements CommandRequestInterface +class ChangeItemQuantityRequest { /** @var string */ protected $token; @@ -18,14 +18,14 @@ class ChangeItemQuantityRequest implements CommandRequestInterface /** @var int */ protected $quantity; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->token = $request->attributes->get('token'); $this->id = $request->attributes->get('id'); $this->quantity = $request->request->getInt('quantity'); } - public function getCommand(): object + public function getCommand(): ChangeItemQuantity { return new ChangeItemQuantity($this->token, $this->id, $this->quantity); } diff --git a/src/Request/ChoosePaymentMethodRequest.php b/src/Request/ChoosePaymentMethodRequest.php deleted file mode 100644 index 25f359799..000000000 --- a/src/Request/ChoosePaymentMethodRequest.php +++ /dev/null @@ -1,32 +0,0 @@ -token = $request->attributes->get('token'); - $this->paymentId = $request->attributes->get('paymentId'); - $this->method = $request->request->get('method'); - } - - public function getCommand(): object - { - return new ChoosePaymentMethod($this->token, $this->paymentId, $this->method); - } -} diff --git a/src/Request/ChooseShippingMethodRequest.php b/src/Request/ChooseShippingMethodRequest.php deleted file mode 100644 index 362e81b1c..000000000 --- a/src/Request/ChooseShippingMethodRequest.php +++ /dev/null @@ -1,32 +0,0 @@ -token = $request->attributes->get('token'); - $this->shippingId = $request->attributes->get('shippingId'); - $this->method = $request->request->get('method'); - } - - public function getCommand(): object - { - return new ChooseShippingMethod($this->token, $this->shippingId, $this->method); - } -} diff --git a/src/Request/CommandRequestInterface.php b/src/Request/CommandRequestInterface.php deleted file mode 100644 index 1666749c2..000000000 --- a/src/Request/CommandRequestInterface.php +++ /dev/null @@ -1,14 +0,0 @@ -token = $request->attributes->get('token'); - $this->email = $request->request->get('email'); - $this->notes = $request->request->get('notes'); - } - - public function getCommand(): object - { - return new CompleteOrder($this->token, $this->email, $this->notes); - } -} diff --git a/src/Request/DropCartRequest.php b/src/Request/DropCartRequest.php index 00c3cdf64..198b40dee 100644 --- a/src/Request/DropCartRequest.php +++ b/src/Request/DropCartRequest.php @@ -7,17 +7,17 @@ use Sylius\ShopApiPlugin\Command\DropCart; use Symfony\Component\HttpFoundation\Request; -class DropCartRequest implements CommandRequestInterface +class DropCartRequest { /** @var string */ protected $token; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->token = $request->attributes->get('token'); } - public function getCommand(): object + public function getCommand(): DropCart { return new DropCart($this->token); } diff --git a/src/Request/GenerateResetPasswordTokenRequest.php b/src/Request/GenerateResetPasswordTokenRequest.php deleted file mode 100644 index 1ef734c17..000000000 --- a/src/Request/GenerateResetPasswordTokenRequest.php +++ /dev/null @@ -1,24 +0,0 @@ -email = $request->request->get('email'); - } - - public function getCommand(): object - { - return new GenerateResetPasswordToken($this->email); - } -} diff --git a/src/Request/PickupCartRequest.php b/src/Request/PickupCartRequest.php index 2f6f0823a..b917ad4c5 100644 --- a/src/Request/PickupCartRequest.php +++ b/src/Request/PickupCartRequest.php @@ -8,7 +8,7 @@ use Sylius\ShopApiPlugin\Command\PickupCart; use Symfony\Component\HttpFoundation\Request; -class PickupCartRequest implements CommandRequestInterface +class PickupCartRequest { /** @var string */ protected $token; @@ -16,7 +16,7 @@ class PickupCartRequest implements CommandRequestInterface /** @var string */ protected $channel; - public function populateData(Request $request): void + public function __construct(Request $request) { if ($request->attributes->has('token')) { @trigger_error('Passing pre-generated cart token for cart pickup is deprecated. Please rely on the autogenerated token.', \E_USER_DEPRECATED); @@ -26,7 +26,7 @@ public function populateData(Request $request): void $this->channel = $request->attributes->get('channelCode'); } - public function getCommand(): object + public function getCommand(): PickupCart { return new PickupCart($this->token, $this->channel); } diff --git a/src/Request/PutOptionBasedConfigurableItemToCartRequest.php b/src/Request/PutOptionBasedConfigurableItemToCartRequest.php index ced949be9..6c4c40523 100644 --- a/src/Request/PutOptionBasedConfigurableItemToCartRequest.php +++ b/src/Request/PutOptionBasedConfigurableItemToCartRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\PutOptionBasedConfigurableItemToCart; use Symfony\Component\HttpFoundation\Request; -class PutOptionBasedConfigurableItemToCartRequest implements CommandRequestInterface +class PutOptionBasedConfigurableItemToCartRequest { /** @var string */ protected $token; @@ -21,26 +21,25 @@ class PutOptionBasedConfigurableItemToCartRequest implements CommandRequestInter /** @var int */ protected $quantity; - public static function fromArray(array $item): self + private function __construct($token, $productCode, $options, $quantity) { - $commandRequest = new self(); - $commandRequest->token = $item['token'] ?? null; - $commandRequest->productCode = $item['productCode'] ?? null; - $commandRequest->options = $item['options'] ?? null; - $commandRequest->quantity = $item['quantity'] ?? null; + $this->token = $token; + $this->productCode = $productCode; + $this->options = $options; + $this->quantity = $quantity; + } - return $commandRequest; + public static function fromArray(array $item): self + { + return new self($item['token'] ?? null, $item['productCode'] ?? null, $item['options'] ?? null, $item['quantity'] ?? null); } - public function populateData(Request $request): void + public static function fromRequest(Request $request): self { - $this->token = $request->attributes->get('token'); - $this->productCode = $request->request->get('productCode'); - $this->options = $request->request->get('options'); - $this->quantity = $request->request->getInt('quantity', 1); + return new self($request->attributes->get('token'), $request->request->get('productCode'), $request->request->get('options'), $request->request->getInt('quantity', 1)); } - public function getCommand(): object + public function getCommand(): PutOptionBasedConfigurableItemToCart { return new PutOptionBasedConfigurableItemToCart($this->token, $this->productCode, $this->options, $this->quantity); } diff --git a/src/Request/PutSimpleItemToCartRequest.php b/src/Request/PutSimpleItemToCartRequest.php index e5d136d19..f4558ed3d 100644 --- a/src/Request/PutSimpleItemToCartRequest.php +++ b/src/Request/PutSimpleItemToCartRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\PutSimpleItemToCart; use Symfony\Component\HttpFoundation\Request; -class PutSimpleItemToCartRequest implements CommandRequestInterface +class PutSimpleItemToCartRequest { /** @var string */ protected $token; @@ -18,24 +18,24 @@ class PutSimpleItemToCartRequest implements CommandRequestInterface /** @var int */ protected $quantity; - public static function fromArray(array $item): self + private function __construct($token, $productCode, $quantity) { - $commandRequest = new self(); - $commandRequest->token = $item['token'] ?? null; - $commandRequest->productCode = $item['productCode'] ?? null; - $commandRequest->quantity = $item['quantity'] ?? null; + $this->token = $token; + $this->productCode = $productCode; + $this->quantity = $quantity; + } - return $commandRequest; + public static function fromArray(array $item): self + { + return new self($item['token'] ?? null, $item['productCode'] ?? null, $item['quantity'] ?? null); } - public function populateData(Request $request): void + public static function fromRequest(Request $request): self { - $this->token = $request->attributes->get('token'); - $this->productCode = $request->request->get('productCode'); - $this->quantity = $request->request->getInt('quantity', 1); + return new self($request->attributes->get('token'), $request->request->get('productCode'), $request->request->getInt('quantity', 1)); } - public function getCommand(): object + public function getCommand(): PutSimpleItemToCart { return new PutSimpleItemToCart($this->token, $this->productCode, $this->quantity); } diff --git a/src/Request/PutVariantBasedConfigurableItemToCartRequest.php b/src/Request/PutVariantBasedConfigurableItemToCartRequest.php index a1afcadc4..697fcff39 100644 --- a/src/Request/PutVariantBasedConfigurableItemToCartRequest.php +++ b/src/Request/PutVariantBasedConfigurableItemToCartRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\PutVariantBasedConfigurableItemToCart; use Symfony\Component\HttpFoundation\Request; -class PutVariantBasedConfigurableItemToCartRequest implements CommandRequestInterface +class PutVariantBasedConfigurableItemToCartRequest { /** @var string */ protected $token; @@ -21,26 +21,25 @@ class PutVariantBasedConfigurableItemToCartRequest implements CommandRequestInte /** @var int */ protected $quantity; - public static function fromArray(array $item): self + private function __construct($token, $productCode, $variantCode, $quantity) { - $commandRequest = new self(); - $commandRequest->token = $item['token'] ?? null; - $commandRequest->productCode = $item['productCode'] ?? null; - $commandRequest->variantCode = $item['variantCode'] ?? null; - $commandRequest->quantity = $item['quantity'] ?? null; + $this->token = $token; + $this->productCode = $productCode; + $this->variantCode = $variantCode; + $this->quantity = $quantity; + } - return $commandRequest; + public static function fromArray(array $item): self + { + return new self($item['token'] ?? null, $item['productCode'] ?? null, $item['variantCode'] ?? null, $item['quantity'] ?? null); } - public function populateData(Request $request): void + public static function fromRequest(Request $request): self { - $this->token = $request->attributes->get('token'); - $this->productCode = $request->request->get('productCode'); - $this->variantCode = $request->request->get('variantCode'); - $this->quantity = $request->request->getInt('quantity', 1); + return new self($request->attributes->get('token'), $request->request->get('productCode'), $request->request->get('variantCode'), $request->request->getInt('quantity', 1)); } - public function getCommand(): object + public function getCommand(): PutVariantBasedConfigurableItemToCart { return new PutVariantBasedConfigurableItemToCart($this->token, $this->productCode, $this->variantCode, $this->quantity); } diff --git a/src/Request/RegisterCustomerRequest.php b/src/Request/RegisterCustomerRequest.php index 4591f9b6c..1223a0a1b 100644 --- a/src/Request/RegisterCustomerRequest.php +++ b/src/Request/RegisterCustomerRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\RegisterCustomer; use Symfony\Component\HttpFoundation\Request; -class RegisterCustomerRequest implements CommandRequestInterface +class RegisterCustomerRequest { /** @var string */ protected $email; @@ -24,7 +24,7 @@ class RegisterCustomerRequest implements CommandRequestInterface /** @var string */ protected $channelCode; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->channelCode = $request->attributes->get('channelCode'); @@ -34,7 +34,7 @@ public function populateData(Request $request): void $this->lastName = $request->request->get('lastName'); } - public function getCommand(): object + public function getCommand(): RegisterCustomer { return new RegisterCustomer($this->email, $this->plainPassword, $this->firstName, $this->lastName, $this->channelCode); } diff --git a/src/Request/RemoveAddressRequest.php b/src/Request/RemoveAddressRequest.php index 628726012..51ed87e52 100644 --- a/src/Request/RemoveAddressRequest.php +++ b/src/Request/RemoveAddressRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\RemoveAddress; use Symfony\Component\HttpFoundation\Request; -class RemoveAddressRequest implements UserEmailBasedCommandRequestInterface +class RemoveAddressRequest { /** @var int|string */ protected $id; @@ -15,17 +15,13 @@ class RemoveAddressRequest implements UserEmailBasedCommandRequestInterface /** @var string */ protected $userEmail; - public function populateData(Request $request): void + public function __construct(Request $request, string $userEmail) { $this->id = $request->attributes->get('id'); - } - - public function setUserEmail(string $userEmail): void - { $this->userEmail = $userEmail; } - public function getCommand(): object + public function getCommand(): RemoveAddress { return new RemoveAddress($this->id, $this->userEmail); } diff --git a/src/Request/RemoveCouponRequest.php b/src/Request/RemoveCouponRequest.php index fca3ca9a7..e49395ddc 100644 --- a/src/Request/RemoveCouponRequest.php +++ b/src/Request/RemoveCouponRequest.php @@ -7,17 +7,17 @@ use Sylius\ShopApiPlugin\Command\RemoveCoupon; use Symfony\Component\HttpFoundation\Request; -class RemoveCouponRequest implements CommandRequestInterface +class RemoveCouponRequest { /** @var string */ protected $token; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->token = $request->attributes->get('token'); } - public function getCommand(): object + public function getCommand(): RemoveCoupon { return new RemoveCoupon($this->token); } diff --git a/src/Request/RemoveItemFromCartRequest.php b/src/Request/RemoveItemFromCartRequest.php index ac0591d68..108910f97 100644 --- a/src/Request/RemoveItemFromCartRequest.php +++ b/src/Request/RemoveItemFromCartRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\RemoveItemFromCart; use Symfony\Component\HttpFoundation\Request; -class RemoveItemFromCartRequest implements CommandRequestInterface +class RemoveItemFromCartRequest { /** @var string */ protected $token; @@ -15,13 +15,13 @@ class RemoveItemFromCartRequest implements CommandRequestInterface /** @var mixed */ protected $id; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->token = $request->attributes->get('token'); $this->id = $request->attributes->get('id'); } - public function getCommand(): object + public function getCommand(): RemoveItemFromCart { return new RemoveItemFromCart($this->token, $this->id); } diff --git a/src/Request/ResendVerificationTokenRequest.php b/src/Request/ResendVerificationTokenRequest.php index 13c8bd61b..b1bb3d3e4 100644 --- a/src/Request/ResendVerificationTokenRequest.php +++ b/src/Request/ResendVerificationTokenRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\SendVerificationToken; use Symfony\Component\HttpFoundation\Request; -class ResendVerificationTokenRequest implements CommandRequestInterface +class ResendVerificationTokenRequest { /** @var string */ protected $email; @@ -15,13 +15,13 @@ class ResendVerificationTokenRequest implements CommandRequestInterface /** @var string */ protected $channelCode; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->email = $request->request->get('email'); $this->channelCode = $request->attributes->get('channelCode'); } - public function getCommand(): object + public function getCommand(): SendVerificationToken { return new SendVerificationToken($this->email, $this->channelCode); } diff --git a/src/Request/SendResetPasswordTokenRequest.php b/src/Request/SendResetPasswordTokenRequest.php deleted file mode 100644 index 380712d0e..000000000 --- a/src/Request/SendResetPasswordTokenRequest.php +++ /dev/null @@ -1,28 +0,0 @@ -email = $request->request->get('email'); - $this->channelCode = $request->attributes->get('channelCode'); - } - - public function getCommand(): object - { - return new SendResetPasswordToken($this->email, $this->channelCode); - } -} diff --git a/src/Request/SetDefaultAddressRequest.php b/src/Request/SetDefaultAddressRequest.php index 20b45f6d2..09a3d5a88 100644 --- a/src/Request/SetDefaultAddressRequest.php +++ b/src/Request/SetDefaultAddressRequest.php @@ -7,7 +7,7 @@ use Sylius\ShopApiPlugin\Command\SetDefaultAddress; use Symfony\Component\HttpFoundation\Request; -class SetDefaultAddressRequest implements UserEmailBasedCommandRequestInterface +class SetDefaultAddressRequest { /** @var mixed */ protected $id; @@ -15,17 +15,13 @@ class SetDefaultAddressRequest implements UserEmailBasedCommandRequestInterface /** @var string */ protected $userEmail; - public function populateData(Request $request): void + public function __construct(Request $request, string $userEmail) { $this->id = $request->attributes->get('id'); - } - - public function setUserEmail(string $userEmail): void - { $this->userEmail = $userEmail; } - public function getCommand(): object + public function getCommand(): SetDefaultAddress { return new SetDefaultAddress($this->id, $this->userEmail); } diff --git a/src/Request/UpdateCustomerRequest.php b/src/Request/UpdateCustomerRequest.php index e903526da..b2571fac8 100644 --- a/src/Request/UpdateCustomerRequest.php +++ b/src/Request/UpdateCustomerRequest.php @@ -8,7 +8,7 @@ use Sylius\ShopApiPlugin\Command\UpdateCustomer; use Symfony\Component\HttpFoundation\Request; -class UpdateCustomerRequest implements CommandRequestInterface +class UpdateCustomerRequest { /** @var string */ protected $firstName; @@ -31,7 +31,7 @@ class UpdateCustomerRequest implements CommandRequestInterface /** @var bool */ protected $subscribedToNewsletter; - public function populateData(Request $request): void + public function __construct(Request $request) { $this->firstName = $request->request->get('firstName'); $this->lastName = $request->request->get('lastName'); @@ -42,7 +42,7 @@ public function populateData(Request $request): void $this->subscribedToNewsletter = $request->request->getBoolean('subscribedToNewsletter') ?? false; } - public function getCommand(): object + public function getCommand(): UpdateCustomer { return new UpdateCustomer($this->firstName, $this->lastName, $this->email, $this->birthday, $this->gender, $this->phoneNumber, $this->subscribedToNewsletter); } diff --git a/src/Request/UserEmailBasedCommandRequestInterface.php b/src/Request/UserEmailBasedCommandRequestInterface.php deleted file mode 100644 index 697dcdd8d..000000000 --- a/src/Request/UserEmailBasedCommandRequestInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -token = $request->request->get('token'); } - public function getCommand(): object + public function getCommand(): VerifyAccount { return new VerifyAccount($this->token); } diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml index e27cf9dd9..01802021e 100644 --- a/src/Resources/config/services.xml +++ b/src/Resources/config/services.xml @@ -13,7 +13,6 @@ - diff --git a/src/Resources/config/services/actions/address_book.xml b/src/Resources/config/services/actions/address_book.xml index b49477d75..b539aa09c 100644 --- a/src/Resources/config/services/actions/address_book.xml +++ b/src/Resources/config/services/actions/address_book.xml @@ -30,7 +30,6 @@ - - diff --git a/src/Resources/config/services/actions/cart.xml b/src/Resources/config/services/actions/cart.xml index 64309476d..3ea87ffff 100644 --- a/src/Resources/config/services/actions/cart.xml +++ b/src/Resources/config/services/actions/cart.xml @@ -18,7 +18,6 @@ - - - - - - - - - - diff --git a/src/Resources/config/services/actions/customer.xml b/src/Resources/config/services/actions/customer.xml index 3bfe11c67..816f91e5a 100644 --- a/src/Resources/config/services/actions/customer.xml +++ b/src/Resources/config/services/actions/customer.xml @@ -11,7 +11,6 @@ - - - - - diff --git a/src/Resources/config/services/actions/product.xml b/src/Resources/config/services/actions/product.xml index 3fdd9cf52..1c73f2d30 100644 --- a/src/Resources/config/services/actions/product.xml +++ b/src/Resources/config/services/actions/product.xml @@ -52,7 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/DependencyInjection/ShopApiExtensionTest.php b/tests/DependencyInjection/ShopApiExtensionTest.php index b5052584e..4a0c00838 100644 --- a/tests/DependencyInjection/ShopApiExtensionTest.php +++ b/tests/DependencyInjection/ShopApiExtensionTest.php @@ -15,11 +15,10 @@ final class ShopApiExtensionTest extends AbstractExtensionTestCase */ public function it_sets_up_parameter_with_attributes_to_serialize(): void { - $this->setParameter('kernel.project_dir', __DIR__.'/../../'); $this->load([ 'included_attributes' => [ 'ATTRIBUTE_CODE', - ] + ], ]); $this->assertContainerBuilderHasParameter('sylius.shop_api.included_attributes', ['ATTRIBUTE_CODE']); @@ -30,7 +29,6 @@ public function it_sets_up_parameter_with_attributes_to_serialize(): void */ public function it_defines_view_classes_parameters(): void { - $this->setParameter('kernel.project_dir', __DIR__.'/../../'); $this->load([]); $nameToClass = [ diff --git a/tests/Request/AddProductReviewByCodeRequestTest.php b/tests/Request/AddProductReviewByCodeRequestTest.php index 53ae2758b..7666683f2 100644 --- a/tests/Request/AddProductReviewByCodeRequestTest.php +++ b/tests/Request/AddProductReviewByCodeRequestTest.php @@ -16,8 +16,7 @@ final class AddProductReviewByCodeRequestTest extends TestCase */ public function it_creates_review_with_author() { - $addReviewRequest = new AddProductReviewByCodeRequest(); - $addReviewRequest->populateData(new Request([], [ + $addReviewRequest = new AddProductReviewByCodeRequest(new Request([], [ 'title' => 'Awesome beer', 'rating' => 5, 'comment' => 'I love this beer', diff --git a/tests/Request/AddProductReviewBySlugRequestTest.php b/tests/Request/AddProductReviewBySlugRequestTest.php index 79ffd7a2a..21461f4fe 100644 --- a/tests/Request/AddProductReviewBySlugRequestTest.php +++ b/tests/Request/AddProductReviewBySlugRequestTest.php @@ -16,8 +16,7 @@ final class AddProductReviewBySlugRequestTest extends TestCase */ public function it_creates_review_with_author() { - $addReviewRequest = new AddProductReviewBySlugRequest(); - $addReviewRequest->populateData(new Request([], [ + $addReviewRequest = new AddProductReviewBySlugRequest(new Request([], [ 'title' => 'Awesome beer', 'rating' => 5, 'comment' => 'I love this beer', diff --git a/tests/Request/ChangeItemQuantityRequestTest.php b/tests/Request/ChangeItemQuantityRequestTest.php index 1413fdf4e..ec6e5fde9 100644 --- a/tests/Request/ChangeItemQuantityRequestTest.php +++ b/tests/Request/ChangeItemQuantityRequestTest.php @@ -16,8 +16,7 @@ final class ChangeItemQuantityRequestTest extends TestCase */ public function it_creates_pickup_cart_command() { - $changeItemQuantityRequest = new ChangeItemQuantityRequest(); - $changeItemQuantityRequest->populateData(new Request([], ['quantity' => 5], [ + $changeItemQuantityRequest = new ChangeItemQuantityRequest(new Request([], ['quantity' => 5], [ 'token' => 'ORDERTOKEN', 'id' => 1, ])); diff --git a/tests/Request/DropCartRequestTest.php b/tests/Request/DropCartRequestTest.php index b589b754f..4f9ea452b 100644 --- a/tests/Request/DropCartRequestTest.php +++ b/tests/Request/DropCartRequestTest.php @@ -16,8 +16,7 @@ final class DropCartRequestTest extends TestCase */ public function it_creates_pickup_cart_command() { - $pickupCartRequest = new DropCartRequest(); - $pickupCartRequest->populateData(new Request([], [], ['token' => 'ORDERTOKEN'])); + $pickupCartRequest = new DropCartRequest(new Request([], [], ['token' => 'ORDERTOKEN'])); $this->assertEquals($pickupCartRequest->getCommand(), new DropCart('ORDERTOKEN')); } diff --git a/tests/Request/PickupCartRequestTest.php b/tests/Request/PickupCartRequestTest.php index d9c16cdbd..f1d41d7f8 100644 --- a/tests/Request/PickupCartRequestTest.php +++ b/tests/Request/PickupCartRequestTest.php @@ -13,8 +13,7 @@ final class PickupCartRequestTest extends TestCase /** @test */ public function it_creates_pickup_cart_command(): void { - $pickupCartRequest = new PickupCartRequest(); - $pickupCartRequest->populateData(new Request([], [], ['channelCode' => 'WEB_GB'])); + $pickupCartRequest = new PickupCartRequest(new Request([], [], ['channelCode' => 'WEB_GB'])); $pickupCartCommand = $pickupCartRequest->getCommand(); @@ -35,8 +34,7 @@ public function it_creates_pickup_cart_command_with_predefined_token_which_also_ }); // Do the test - $pickupCartRequest = new PickupCartRequest(); - $pickupCartRequest->populateData(new Request([], [], ['channelCode' => 'WEB_GB', 'token' => 'ORDERTOKEN'])); + $pickupCartRequest = new PickupCartRequest(new Request([], [], ['channelCode' => 'WEB_GB', 'token' => 'ORDERTOKEN'])); $pickupCartCommand = $pickupCartRequest->getCommand(); diff --git a/tests/Request/PutOptionBasedConfigurableItemToCartRequestTest.php b/tests/Request/PutOptionBasedConfigurableItemToCartRequestTest.php index e654f97cc..df0c27a06 100644 --- a/tests/Request/PutOptionBasedConfigurableItemToCartRequestTest.php +++ b/tests/Request/PutOptionBasedConfigurableItemToCartRequestTest.php @@ -16,8 +16,7 @@ final class PutOptionBasedConfigurableItemToCartRequestTest extends TestCase */ public function it_creates_put_simple_item_to_cart_command_from_request() { - $putConfigurableItemToCartRequest = new PutOptionBasedConfigurableItemToCartRequest(); - $putConfigurableItemToCartRequest->populateData(new Request([], [ + $putConfigurableItemToCartRequest = PutOptionBasedConfigurableItemToCartRequest::fromRequest(new Request([], [ 'productCode' => 'HACKTOBERFEST_TSHIRT_CODE', 'options' => ['LARGE__CODE'], 'quantity' => 4, diff --git a/tests/Request/PutSimpleItemToCartRequestTest.php b/tests/Request/PutSimpleItemToCartRequestTest.php index e2653860c..34c0e89e5 100644 --- a/tests/Request/PutSimpleItemToCartRequestTest.php +++ b/tests/Request/PutSimpleItemToCartRequestTest.php @@ -16,8 +16,7 @@ final class PutSimpleItemToCartRequestTest extends TestCase */ public function it_creates_put_simple_item_to_cart_command_from_request() { - $putSimpleItemToCartRequest = new PutSimpleItemToCartRequest(); - $putSimpleItemToCartRequest->populateData(new Request([], [ + $putSimpleItemToCartRequest = PutSimpleItemToCartRequest::fromRequest(new Request([], [ 'productCode' => 'HACKTOBERFEST_TSHIRT_CODE', 'quantity' => 4, ], ['token' => 'ORDERTOKEN'])); diff --git a/tests/Request/PutVariantBasedConfigurableItemToCartRequestTest.php b/tests/Request/PutVariantBasedConfigurableItemToCartRequestTest.php index e53d5a1c5..eefba7744 100644 --- a/tests/Request/PutVariantBasedConfigurableItemToCartRequestTest.php +++ b/tests/Request/PutVariantBasedConfigurableItemToCartRequestTest.php @@ -16,8 +16,7 @@ final class PutVariantBasedConfigurableItemToCartRequestTest extends TestCase */ public function it_creates_put_simple_item_to_cart_command_from_request() { - $putConfigurableItemToCartRequest = new PutVariantBasedConfigurableItemToCartRequest(); - $putConfigurableItemToCartRequest->populateData(new Request([], [ + $putConfigurableItemToCartRequest = PutVariantBasedConfigurableItemToCartRequest::fromRequest(new Request([], [ 'productCode' => 'HACKTOBERFEST_TSHIRT_CODE', 'variantCode' => 'LARGE_HACKTOBERFEST_TSHIRT_CODE', 'quantity' => 4, diff --git a/tests/Request/ResendVerificationTokenRequestTest.php b/tests/Request/ResendVerificationTokenRequestTest.php index 6768ba40c..9618ea612 100644 --- a/tests/Request/ResendVerificationTokenRequestTest.php +++ b/tests/Request/ResendVerificationTokenRequestTest.php @@ -16,8 +16,7 @@ final class ResendVerificationTokenRequestTest extends TestCase */ public function it_creates_put_simple_item_to_cart_command() { - $putSimpleItemToCartRequest = new ResendVerificationTokenRequest(); - $putSimpleItemToCartRequest->populateData(new Request([], ['email' => 'daffy@the-duck.com'], ['channelCode' => 'WEB_GB'])); + $putSimpleItemToCartRequest = new ResendVerificationTokenRequest(new Request([], ['email' => 'daffy@the-duck.com'], ['channelCode' => 'WEB_GB'])); $this->assertEquals($putSimpleItemToCartRequest->getCommand(), new SendVerificationToken('daffy@the-duck.com', 'WEB_GB')); } diff --git a/tests/Request/UpdateCustomerRequestTest.php b/tests/Request/UpdateCustomerRequestTest.php index 2b229f161..c6233436a 100644 --- a/tests/Request/UpdateCustomerRequestTest.php +++ b/tests/Request/UpdateCustomerRequestTest.php @@ -16,8 +16,7 @@ final class UpdateCustomerRequestTest extends TestCase */ public function it_creates_update_customer_command() { - $updateCustomerRequest = new UpdateCustomerRequest(); - $updateCustomerRequest->populateData(new Request([], [ + $updateCustomerRequest = new UpdateCustomerRequest(new Request([], [ 'firstName' => 'ivan', 'lastName' => 'Mts', 'email' => 'ivan.matas@locastic.com', diff --git a/tests/Request/VerifyAccountRequestTest.php b/tests/Request/VerifyAccountRequestTest.php index 088b741d7..6042cbc32 100644 --- a/tests/Request/VerifyAccountRequestTest.php +++ b/tests/Request/VerifyAccountRequestTest.php @@ -16,8 +16,7 @@ final class VerifyAccountRequestTest extends TestCase */ public function it_creates_put_simple_item_to_cart_command() { - $verifyAccountRequest = new VerifyAccountRequest(); - $verifyAccountRequest->populateData(new Request([], ['token' => 'RANDOMSTRINGAFAFAKASNFJAFAJ'], [])); + $verifyAccountRequest = new VerifyAccountRequest(new Request([], ['token' => 'RANDOMSTRINGAFAFAKASNFJAFAJ'], [])); $this->assertEquals($verifyAccountRequest->getCommand(), new VerifyAccount('RANDOMSTRINGAFAFAKASNFJAFAJ')); }