partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

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 }