DeletePreferenceAction.php (1533B)
1 <?php 2 3 namespace PartKeepr\AuthBundle\Action; 4 5 use Dunglas\ApiBundle\Action\ActionUtilTrait; 6 use Dunglas\ApiBundle\Exception\RuntimeException; 7 use PartKeepr\AuthBundle\Services\UserPreferenceService; 8 use PartKeepr\AuthBundle\Services\UserService; 9 use PartKeepr\CategoryBundle\Exception\RootNodeNotFoundException; 10 use Symfony\Component\HttpFoundation\Request; 11 12 /** 13 * Returns the tree root node. 14 */ 15 class DeletePreferenceAction 16 { 17 use ActionUtilTrait; 18 19 /** 20 * @var UserService 21 */ 22 private $userService; 23 24 /** 25 * @var UserPreferenceService 26 */ 27 private $userPreferenceService; 28 29 public function __construct( 30 UserService $userService, 31 UserPreferenceService $userPreferenceService 32 ) { 33 $this->userService = $userService; 34 $this->userPreferenceService = $userPreferenceService; 35 } 36 37 /** 38 * Retrieves a collection of resources. 39 * 40 * @param Request $request 41 * 42 * @throws \Exception If the format is invalid 43 * @throws RuntimeException|RootNodeNotFoundException 44 * 45 * @return array|\Dunglas\ApiBundle\Model\PaginatorInterface|\Traversable 46 */ 47 public function __invoke(Request $request) 48 { 49 $user = $this->userService->getUser(); 50 51 if ($request->request->has('preferenceKey')) { 52 $this->userPreferenceService->deletePreference($user, $request->request->get('preferenceKey')); 53 } else { 54 throw new \Exception('Invalid format'); 55 } 56 } 57 }