partkeepr

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

commit 1d4d9f32c3cf8953f4488cd3b9ca4116a44aa3a8
parent 1fad00b77df5542996ab2c632cb28c7ca68f9774
Author: Felicitus <felicitus@felicitus.org>
Date:   Mon,  5 Oct 2015 19:27:50 +0200

Moved setDefault to an own action, removed part measurement unit controller, added part measurement unit service

Diffstat:
Asrc/PartKeepr/PartBundle/Action/SetDefaultUnitAction.php | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsrc/PartKeepr/PartBundle/Controller/PartMeasurementUnitController.php | 49-------------------------------------------------
Msrc/PartKeepr/PartBundle/DependencyInjection/PartKeeprPartExtension.php | 1+
Msrc/PartKeepr/PartBundle/Resources/config/actions.xml | 4++++
Asrc/PartKeepr/PartBundle/Resources/config/services.xml | 12++++++++++++
Asrc/PartKeepr/PartBundle/Services/PartMeasurementUnitService.php | 43+++++++++++++++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+), 49 deletions(-)

diff --git a/src/PartKeepr/PartBundle/Action/SetDefaultUnitAction.php b/src/PartKeepr/PartBundle/Action/SetDefaultUnitAction.php @@ -0,0 +1,56 @@ +<?php + + +namespace PartKeepr\PartBundle\Action; + + +use Dunglas\ApiBundle\Action\ActionUtilTrait; +use Dunglas\ApiBundle\Exception\RuntimeException; +use Dunglas\ApiBundle\Model\DataProviderInterface; +use PartKeepr\PartBundle\Entity\PartMeasurementUnit; +use PartKeepr\PartBundle\Services\PartMeasurementUnitService; +use Symfony\Component\HttpFoundation\Request; + +class SetDefaultUnitAction +{ + use ActionUtilTrait; + + /** + * @var PartMeasurementUnitService + */ + private $partMeasurementUnitService; + + /** + * @var DataProviderInterface + */ + private $dataProvider; + + public function __construct (DataProviderInterface $dataProvider, PartMeasurementUnitService $partMeasurementUnitService) { + $this->dataProvider = $dataProvider; + $this->partMeasurementUnitService = $partMeasurementUnitService; + } + + /** + * Retrieves a collection of resources. + * + * @param Request $request The request + * @param int $id The ID of the part + * + * @return array|\Dunglas\ApiBundle\Model\PaginatorInterface|\Traversable + * + * @throws RuntimeException + */ + public function __invoke(Request $request, $id) + { + list($resourceType) = $this->extractAttributes($request); + + /** + * @var PartMeasurementUnit $partMeasurementUnit + */ + $partMeasurementUnit = $this->getItem($this->dataProvider, $resourceType, $id); + + $this->partMeasurementUnitService->setDefault($partMeasurementUnit); + + return $partMeasurementUnit; + } +} diff --git a/src/PartKeepr/PartBundle/Controller/PartMeasurementUnitController.php b/src/PartKeepr/PartBundle/Controller/PartMeasurementUnitController.php @@ -1,48 +0,0 @@ -<?php -namespace PartKeepr\PartBundle\Controller; - -use Doctrine\ORM\EntityManager; -use Dunglas\ApiBundle\JsonLd\Response; -use Nelmio\ApiDocBundle\Tests\Fixtures\Controller\ResourceController; -use Symfony\Component\HttpFoundation\Request; - -class PartMeasurementUnitController extends ResourceController -{ - public function setDefaultAction(Request $request, $id) - { - /** - * @var $em EntityManager - */ - $em = $this->get("doctrine")->getEntityManager(); - - $em->beginTransaction(); - - $resource = $this->getResource($request); - $this->findOrThrowNotFound($resource, $id); - - - - $dql = 'UPDATE PartKeepr\PartBundle\Entity\PartMeasurementUnit pu SET pu.isDefault = :default WHERE pu.id = :id'; - - $em->createQuery($dql) - ->setParameter("id", $id) - ->setParameter( - "default", - true, - \PDO::PARAM_BOOL - )->execute(); - - $dql = 'UPDATE PartKeepr\PartBundle\Entity\PartMeasurementUnit pu SET pu.isDefault = :default WHERE pu.id != :id'; - - $em->createQuery($dql) - ->setParameter("id", $id) - ->setParameter( - "default", - false, - \PDO::PARAM_BOOL - )->execute(); - - $em->commit(); - return new Response(); - } -}- \ No newline at end of file diff --git a/src/PartKeepr/PartBundle/DependencyInjection/PartKeeprPartExtension.php b/src/PartKeepr/PartBundle/DependencyInjection/PartKeeprPartExtension.php @@ -21,5 +21,6 @@ class PartKeeprPartExtension extends Extension { $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('actions.xml'); + $loader->load('services.xml'); } } diff --git a/src/PartKeepr/PartBundle/Resources/config/actions.xml b/src/PartKeepr/PartBundle/Resources/config/actions.xml @@ -20,5 +20,9 @@ <argument type="service" id="partkeepr.userservice" /> <argument type="service" id="doctrine"/> </service> + <service id="partkeepr.part_measurement_unit.set_default" class="PartKeepr\PartBundle\Action\SetDefaultUnitAction"> + <argument type="service" id="api.data_provider"/> + <argument type="service" id="partkeepr.part_measurement_unit_service"/> + </service> </services> </container> diff --git a/src/PartKeepr/PartBundle/Resources/config/services.xml b/src/PartKeepr/PartBundle/Resources/config/services.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" ?> + +<container xmlns="http://symfony.com/schema/dic/services" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> + + <services> + <service id="partkeepr.part_measurement_unit_service" class="PartKeepr\PartBundle\Services\PartMeasurementUnitService"> + <argument type="service" id="doctrine.orm.default_entity_manager"/> + </service> + </services> +</container> diff --git a/src/PartKeepr/PartBundle/Services/PartMeasurementUnitService.php b/src/PartKeepr/PartBundle/Services/PartMeasurementUnitService.php @@ -0,0 +1,43 @@ +<?php + + +namespace PartKeepr\PartBundle\Services; + + +use Doctrine\ORM\EntityManager; +use PartKeepr\PartBundle\Entity\PartMeasurementUnit; + +class PartMeasurementUnitService +{ + private $entityManager; + + public function __construct (EntityManager $entityManager) { + $this->entityManager = $entityManager; + } + + public function setDefault (PartMeasurementUnit $partMeasurementUnit) { + $this->entityManager->beginTransaction(); + + $dql = 'UPDATE PartKeepr\PartBundle\Entity\PartMeasurementUnit pu SET pu.default = :default WHERE pu.id = :id'; + + $this->entityManager->createQuery($dql) + ->setParameter("id", $partMeasurementUnit->getId()) + ->setParameter( + "default", + true, + \PDO::PARAM_BOOL + )->execute(); + + $dql = 'UPDATE PartKeepr\PartBundle\Entity\PartMeasurementUnit pu SET pu.default = :default WHERE pu.id != :id'; + + $this->entityManager->createQuery($dql) + ->setParameter("id", $partMeasurementUnit->getId()) + ->setParameter( + "default", + false, + \PDO::PARAM_BOOL + )->execute(); + + $this->entityManager->commit(); + } +}