SetDefaultUnitAction.php (1523B)
1 <?php 2 3 namespace PartKeepr\PartBundle\Action; 4 5 use Dunglas\ApiBundle\Action\ActionUtilTrait; 6 use Dunglas\ApiBundle\Exception\RuntimeException; 7 use Dunglas\ApiBundle\Model\DataProviderInterface; 8 use PartKeepr\PartBundle\Entity\PartMeasurementUnit; 9 use PartKeepr\PartBundle\Services\PartMeasurementUnitService; 10 use Symfony\Component\HttpFoundation\Request; 11 12 class SetDefaultUnitAction 13 { 14 use ActionUtilTrait; 15 16 /** 17 * @var PartMeasurementUnitService 18 */ 19 private $partMeasurementUnitService; 20 21 /** 22 * @var DataProviderInterface 23 */ 24 private $dataProvider; 25 26 public function __construct(DataProviderInterface $dataProvider, PartMeasurementUnitService $partMeasurementUnitService) 27 { 28 $this->dataProvider = $dataProvider; 29 $this->partMeasurementUnitService = $partMeasurementUnitService; 30 } 31 32 /** 33 * Retrieves a collection of resources. 34 * 35 * @param Request $request The request 36 * @param int $id The ID of the part 37 * 38 * @throws RuntimeException 39 * 40 * @return array|\Dunglas\ApiBundle\Model\PaginatorInterface|\Traversable 41 */ 42 public function __invoke(Request $request, $id) 43 { 44 list($resourceType) = $this->extractAttributes($request); 45 46 /** 47 * @var PartMeasurementUnit 48 */ 49 $partMeasurementUnit = $this->getItem($this->dataProvider, $resourceType, $id); 50 51 $this->partMeasurementUnitService->setDefault($partMeasurementUnit); 52 53 return $partMeasurementUnit; 54 } 55 }