75 lines
1.9 KiB
PHP
Raw Normal View History

<?php
namespace App\Domain\RequestManagement\Action;
2019-01-20 10:41:58 +01:00
use App\Attribut\ActionTypeAttribut;
use App\DBAL\Types\ActionType;
use App\DBAL\Types\Meta\Right\CRUDType;
use App\Domain\RequestManagement\User\RequestedUser;
2019-02-03 01:01:26 +01:00
use App\Domain\RequestManagement\User\RequestedUserInterface;
use App\Domain\UserManagement\UserSourceDirectorInterface;
/**
* @author kevinfrantz
*
* @todo Implement!
*/
class RequestedAction extends RequestedUser implements RequestedActionInterface
{
use ActionTypeAttribut{
setActionType as setActionTypeTrait;
}
/**
* @var array Containes the mapping of non standard actions to a crud
*/
const ACTION_CRUD_MAP = [
ActionType::THREAD => CRUDType::READ,
];
/**
2019-02-12 17:40:38 +01:00
* @todo Optimize this constructor! The UserSourceDirector is not used in this class!
2019-02-03 01:01:26 +01:00
* {@inheritdoc}
*
* @see \App\Domain\RequestManagement\User\RequestedUser::__construct()
*/
2019-02-03 01:01:26 +01:00
public function __construct(UserSourceDirectorInterface $userSourceDirector, RequestedUserInterface $requestedUser)
{
2019-02-03 01:01:26 +01:00
parent::__construct($userSourceDirector, $requestedUser);
}
/**
* {@inheritdoc}
*
2019-01-20 10:41:58 +01:00
* @see \App\Attribut\ActionTypeAttributInterface::setActionType()
*/
public function setActionType(string $actionType): void
{
$this->setActionTypeTrait($actionType);
$this->setRequestedRightCrudType($actionType);
}
/**
* @param string $actionType
*/
private function setRequestedRightCrudType(string $actionType): void
{
$crudType = $this->getCrudType($actionType);
$this->requestedRight->setCrud($crudType);
}
/**
* @param string $actionType
*
* @return string
*/
private function getCrudType(string $actionType): string
{
if (key_exists($actionType, self::ACTION_CRUD_MAP)) {
return self::ACTION_CRUD_MAP[$actionType];
}
return $actionType;
}
}