diff --git a/application/symfony/src/Controller/DefaultController.php b/application/symfony/src/Controller/DefaultController.php index 8769c39..fcbc606 100644 --- a/application/symfony/src/Controller/DefaultController.php +++ b/application/symfony/src/Controller/DefaultController.php @@ -4,13 +4,7 @@ namespace App\Controller; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; -use App\DBAL\Types\SystemSlugType; -use App\Entity\Meta\Right; -use App\DBAL\Types\Meta\Right\LayerType; -use App\DBAL\Types\Meta\Right\CRUDType; use Doctrine\ORM\EntityManagerInterface; -use App\Entity\Source\PureSource; -use App\Domain\ResponseManagement\SourceRESTResponseManager; /** * This controller offers the standart routes for the template. @@ -27,15 +21,6 @@ final class DefaultController extends AbstractController */ public function imprint(EntityManagerInterface $entityManager): Response { - $requestedSource = new PureSource(); - $requestedSource->setSlug(SystemSlugType::IMPRINT); - $requestedRight = new Right(); - $requestedRight->setSource($requestedSource); - $requestedRight->setLayer(LayerType::SOURCE); - $requestedRight->setCrud(CRUDType::READ); - $sourceResponseManager = new SourceRESTResponseManager($this->getUser(), $entityManager, $requestedRight, $this->getViewHandler()); - - return $sourceResponseManager->getResponse(); } /** diff --git a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntity.php b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntity.php index 2289ecf..63ea10f 100644 --- a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntity.php +++ b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntity.php @@ -3,10 +3,29 @@ namespace App\Domain\RequestManagement\Entity; use App\Entity\AbstractEntity; +use App\Attribut\SlugAttribut; /** * @author kevinfrantz */ class RequestedEntity extends AbstractEntity implements RequestedEntityInterface { + use SlugAttribut; + + /** + * {@inheritdoc} + * + * @see \App\Domain\RequestManagement\Entity\RequestedEntityInterface::setIdentity() + */ + public function setIdentity($identity): void + { + if (is_numeric($identity)) { + $this->setId($identity); + $this->slug = null; + + return; + } + $this->setSlug($identity); + $this->id = null; + } } diff --git a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityInterface.php b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityInterface.php index a51625d..63bde68 100644 --- a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityInterface.php +++ b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityInterface.php @@ -3,10 +3,19 @@ namespace App\Domain\RequestManagement\Entity; use App\Entity\EntityInterface; +use App\Attribut\SlugAttributInterface; /** + * A requested entity containes the stumb attributes to load an entity. + * * @author kevinfrantz */ -interface RequestedEntityInterface extends EntityInterface +interface RequestedEntityInterface extends EntityInterface, SlugAttributInterface { + /** + * Sets the slug or the id. + * + * @param string|int $identity + */ + public function setIdentity($identity): void; } diff --git a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityServiceInterface.php b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityServiceInterface.php index e3f0e72..8593bf6 100644 --- a/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityServiceInterface.php +++ b/application/symfony/src/Domain/RequestManagement/Entity/RequestedEntityServiceInterface.php @@ -5,6 +5,6 @@ namespace App\Domain\RequestManagement\Entity; /** * @author kevinfrantz */ -interface RequestedEntityServiceInterface +interface RequestedEntityServiceInterface extends RequestedEntityInterface { } diff --git a/application/symfony/src/Entity/AbstractEntity.php b/application/symfony/src/Entity/AbstractEntity.php index dde3b62..fbdb2bd 100644 --- a/application/symfony/src/Entity/AbstractEntity.php +++ b/application/symfony/src/Entity/AbstractEntity.php @@ -5,15 +5,13 @@ namespace App\Entity; use App\Attribut\IdAttribut; use Doctrine\ORM\Mapping as ORM; use App\Attribut\VersionAttribut; -use App\Attribut\SlugAttribut; -use Symfony\Component\Validator\Constraints as Assert; /** * @author kevinfrantz */ abstract class AbstractEntity implements EntityInterface { - use IdAttribut, VersionAttribut,SlugAttribut; + use IdAttribut, VersionAttribut; /** * @ORM\Id() @@ -31,21 +29,6 @@ abstract class AbstractEntity implements EntityInterface */ protected $version; - /** - * System slugs should be writen in UPPER CASES - * Slugs which are defined by the user are checked via the assert. - * - * @ORM\Column(type="string",length=30,nullable=true,unique=true) - * @Assert\Regex(pattern="/^[a-z]+$/") - * - * @todo Check out if a plugin can solve this purpose; - * - * @see https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md - * - * @var string - */ - protected $slug; - public function __construct() { $this->version = 0; diff --git a/application/symfony/src/Entity/EntityInterface.php b/application/symfony/src/Entity/EntityInterface.php index 53ea25b..315db38 100644 --- a/application/symfony/src/Entity/EntityInterface.php +++ b/application/symfony/src/Entity/EntityInterface.php @@ -4,11 +4,10 @@ namespace App\Entity; use App\Attribut\VersionAttributInterface; use App\Attribut\IdAttributInterface; -use App\Attribut\SlugAttributInterface; /** * @author kevinfrantz */ -interface EntityInterface extends VersionAttributInterface, IdAttributInterface, SlugAttributInterface +interface EntityInterface extends VersionAttributInterface, IdAttributInterface { } diff --git a/application/symfony/src/Entity/Source/AbstractSource.php b/application/symfony/src/Entity/Source/AbstractSource.php index 4b369a4..d852da5 100644 --- a/application/symfony/src/Entity/Source/AbstractSource.php +++ b/application/symfony/src/Entity/Source/AbstractSource.php @@ -15,6 +15,8 @@ use App\Entity\Meta\Relation\Parent\CreatorRelation; use App\Attribut\MemberRelationAttribut; use App\Entity\Meta\Relation\Member\MemberRelation; use App\Entity\Meta\Relation\Member\MemberRelationInterface; +use App\Attribut\SlugAttribut; +use Symfony\Component\Validator\Constraints as Assert; /** * @author kevinfrantz @@ -47,7 +49,22 @@ use App\Entity\Meta\Relation\Member\MemberRelationInterface; */ abstract class AbstractSource extends AbstractEntity implements SourceInterface { - use LawAttribut,CreatorRelationAttribut, MemberRelationAttribut; + use LawAttribut,CreatorRelationAttribut, MemberRelationAttribut, SlugAttribut; + + /** + * System slugs should be writen in UPPER CASES + * Slugs which are defined by the user are checked via the assert. + * + * @ORM\Column(type="string",length=30,nullable=true,unique=true) + * @Assert\Regex(pattern="/^[a-z]+$/") + * + * @todo Check out if a plugin can solve this purpose; + * + * @see https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/sluggable.md + * + * @var string + */ + protected $slug; /** * @var CreatorRelationInterface diff --git a/application/symfony/src/Entity/Source/SourceInterface.php b/application/symfony/src/Entity/Source/SourceInterface.php index 0c3c523..4dc43a6 100644 --- a/application/symfony/src/Entity/Source/SourceInterface.php +++ b/application/symfony/src/Entity/Source/SourceInterface.php @@ -7,10 +7,11 @@ use App\Entity\EntityInterface; use App\Attribut\LawAttributInterface; use App\Attribut\CreatorRelationAttributInterface; use App\Attribut\MemberRelationAttributInterface; +use App\Attribut\SlugAttributInterface; /** * @author kevinfrantz */ -interface SourceInterface extends IdAttributInterface, EntityInterface, LawAttributInterface, CreatorRelationAttributInterface, MemberRelationAttributInterface +interface SourceInterface extends IdAttributInterface, EntityInterface, LawAttributInterface, CreatorRelationAttributInterface, MemberRelationAttributInterface, SlugAttributInterface { } diff --git a/application/symfony/tests/Unit/Domain/RequestManagement/Entity/RequestedEntityTest.php b/application/symfony/tests/Unit/Domain/RequestManagement/Entity/RequestedEntityTest.php new file mode 100644 index 0000000..11dce78 --- /dev/null +++ b/application/symfony/tests/Unit/Domain/RequestManagement/Entity/RequestedEntityTest.php @@ -0,0 +1,25 @@ +setIdentity($slug); + $this->assertEquals($slug, $requestedEntity->getSlug()); + $this->assertFalse($requestedEntity->hasId()); + $id = 123; + $requestedEntity->setIdentity($id); + $this->assertEquals($id, $requestedEntity->getId()); + $this->assertFalse($requestedEntity->hasSlug()); + } +}