Implemented draft for ActionManagement

This commit is contained in:
Kevin Frantz
2019-01-27 15:28:25 +01:00
parent f7242f725e
commit 707df1b951
46 changed files with 686 additions and 831 deletions

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Domain\ActionManagement;
use App\Entity\EntityInterface;
use App\Exception\NotSecureException;
use App\Exception\NotValidByFormException;
/**
* @author kevinfrantz
*/
abstract class AbstractAction extends AbstractActionConstructor implements ActionInterface
{
/**
* @return bool
*/
abstract protected function isSecure(): bool;
/**
* @return bool
*/
abstract protected function isValidByForm(): bool;
/**
* Process the routine.
*
* @return EntityInterface|EntityInterface[]|null
*/
abstract protected function proccess();
/**
* @throws \Exception
* {@inheritdoc}
*
* @see \App\Domain\ActionManagement\ActionInterface::execute()
*/
public function execute()
{
if ($this->isSecure()) {
if ($this->isValidByForm()) {
return $this->proccess();
}
throw new NotValidByFormException('The requested Entity is not valid!');
}
throw new NotSecureException("You don't have the permission to execute this action!");
}
}