mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-01-09 22:17:26 +01:00
Implemented setIdentity for RequestedEntity
This commit is contained in:
parent
a7ad02be50
commit
89140837b7
@ -4,13 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
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 Doctrine\ORM\EntityManagerInterface;
|
||||||
use App\Entity\Source\PureSource;
|
|
||||||
use App\Domain\ResponseManagement\SourceRESTResponseManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This controller offers the standart routes for the template.
|
* This controller offers the standart routes for the template.
|
||||||
@ -27,15 +21,6 @@ final class DefaultController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function imprint(EntityManagerInterface $entityManager): Response
|
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,10 +3,29 @@
|
|||||||
namespace App\Domain\RequestManagement\Entity;
|
namespace App\Domain\RequestManagement\Entity;
|
||||||
|
|
||||||
use App\Entity\AbstractEntity;
|
use App\Entity\AbstractEntity;
|
||||||
|
use App\Attribut\SlugAttribut;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
class RequestedEntity extends AbstractEntity implements RequestedEntityInterface
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,19 @@
|
|||||||
namespace App\Domain\RequestManagement\Entity;
|
namespace App\Domain\RequestManagement\Entity;
|
||||||
|
|
||||||
use App\Entity\EntityInterface;
|
use App\Entity\EntityInterface;
|
||||||
|
use App\Attribut\SlugAttributInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* A requested entity containes the stumb attributes to load an entity.
|
||||||
|
*
|
||||||
* @author kevinfrantz
|
* @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;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,6 @@ namespace App\Domain\RequestManagement\Entity;
|
|||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
interface RequestedEntityServiceInterface
|
interface RequestedEntityServiceInterface extends RequestedEntityInterface
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,13 @@ namespace App\Entity;
|
|||||||
use App\Attribut\IdAttribut;
|
use App\Attribut\IdAttribut;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use App\Attribut\VersionAttribut;
|
use App\Attribut\VersionAttribut;
|
||||||
use App\Attribut\SlugAttribut;
|
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
abstract class AbstractEntity implements EntityInterface
|
abstract class AbstractEntity implements EntityInterface
|
||||||
{
|
{
|
||||||
use IdAttribut, VersionAttribut,SlugAttribut;
|
use IdAttribut, VersionAttribut;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Id()
|
* @ORM\Id()
|
||||||
@ -31,21 +29,6 @@ abstract class AbstractEntity implements EntityInterface
|
|||||||
*/
|
*/
|
||||||
protected $version;
|
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()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->version = 0;
|
$this->version = 0;
|
||||||
|
@ -4,11 +4,10 @@ namespace App\Entity;
|
|||||||
|
|
||||||
use App\Attribut\VersionAttributInterface;
|
use App\Attribut\VersionAttributInterface;
|
||||||
use App\Attribut\IdAttributInterface;
|
use App\Attribut\IdAttributInterface;
|
||||||
use App\Attribut\SlugAttributInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
interface EntityInterface extends VersionAttributInterface, IdAttributInterface, SlugAttributInterface
|
interface EntityInterface extends VersionAttributInterface, IdAttributInterface
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ use App\Entity\Meta\Relation\Parent\CreatorRelation;
|
|||||||
use App\Attribut\MemberRelationAttribut;
|
use App\Attribut\MemberRelationAttribut;
|
||||||
use App\Entity\Meta\Relation\Member\MemberRelation;
|
use App\Entity\Meta\Relation\Member\MemberRelation;
|
||||||
use App\Entity\Meta\Relation\Member\MemberRelationInterface;
|
use App\Entity\Meta\Relation\Member\MemberRelationInterface;
|
||||||
|
use App\Attribut\SlugAttribut;
|
||||||
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
@ -47,7 +49,22 @@ use App\Entity\Meta\Relation\Member\MemberRelationInterface;
|
|||||||
*/
|
*/
|
||||||
abstract class AbstractSource extends AbstractEntity implements SourceInterface
|
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
|
* @var CreatorRelationInterface
|
||||||
|
@ -7,10 +7,11 @@ use App\Entity\EntityInterface;
|
|||||||
use App\Attribut\LawAttributInterface;
|
use App\Attribut\LawAttributInterface;
|
||||||
use App\Attribut\CreatorRelationAttributInterface;
|
use App\Attribut\CreatorRelationAttributInterface;
|
||||||
use App\Attribut\MemberRelationAttributInterface;
|
use App\Attribut\MemberRelationAttributInterface;
|
||||||
|
use App\Attribut\SlugAttributInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
interface SourceInterface extends IdAttributInterface, EntityInterface, LawAttributInterface, CreatorRelationAttributInterface, MemberRelationAttributInterface
|
interface SourceInterface extends IdAttributInterface, EntityInterface, LawAttributInterface, CreatorRelationAttributInterface, MemberRelationAttributInterface, SlugAttributInterface
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace tests\Unit\Domain\RequestManagement\Entity;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use App\Domain\RequestManagement\Entity\RequestedEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author kevinfrantz
|
||||||
|
*/
|
||||||
|
class RequestedEntityTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testSetByIdentity(): void
|
||||||
|
{
|
||||||
|
$requestedEntity = new RequestedEntity();
|
||||||
|
$slug = 'test';
|
||||||
|
$requestedEntity->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());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user