commerce_api-8.x-1.x-dev/src/Routing/WishlistIntegrationRoutes.php
src/Routing/WishlistIntegrationRoutes.php
<?php
declare(strict_types=1);
namespace Drupal\commerce_api\Routing;
use Drupal\commerce\PurchasableEntityInterface;
use Drupal\commerce_api\Resource\Wishlist\WishlistAddResource;
use Drupal\commerce_api\Resource\Wishlist\WishlistRemoveItemResource;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
final class WishlistIntegrationRoutes extends RouteProviderBase {
/**
* {@inheritdoc}
*/
protected function buildRoutes(RouteCollection $routes) {
if (!$this->entityTypeManager->hasDefinition('commerce_wishlist')) {
return;
}
$routes->add('commerce_api.wishlists.add', $this->wishlistAdd());
$routes->add('commerce_api.wishlists.remove_item', $this->wishlistRemoveItem());
}
/**
* The wishlist add resource route.
*
* @return \Symfony\Component\Routing\Route
* The route.
*/
protected function wishlistAdd() {
$purchasable_entity_resource_types = $this->getResourceTypeForClassImplementation(PurchasableEntityInterface::class);
$wishlist_item_resource_types = $this->getResourceTypesForEntityType('commerce_wishlist_item');
$route = new Route('/wishlist/add');
$route
->addDefaults([
'_jsonapi_resource' => WishlistAddResource::class,
'_purchasable_entity_resource_types' => $this->getResourceTypeNames($purchasable_entity_resource_types),
'_jsonapi_resource_types' => $this->getResourceTypeNames($wishlist_item_resource_types),
])
->setMethods(['POST']);
return $route;
}
/**
* The wishlist remove item resource route.
*
* @return \Symfony\Component\Routing\Route
* The route.
*/
protected function wishlistRemoveItem() {
$wishlist_item_resource_types = $this->getResourceTypesForEntityType('commerce_wishlist_item');
$route = new Route('/wishlists/{commerce_wishlist}/items');
$route
->addDefaults([
'_jsonapi_resource' => WishlistRemoveItemResource::class,
'_wishlist_item_resource_types' => $this->getResourceTypeNames($wishlist_item_resource_types),
])
->setMethods(['DELETE'])
->setRequirement('_entity_access', 'commerce_wishlist.update');
static::addRouteParameter($route, 'commerce_wishlist', ['type' => 'entity:commerce_wishlist']);
return $route;
}
}
