Added logic draft and optimized rights

This commit is contained in:
Kevin Frantz
2018-09-21 13:15:59 +02:00
parent fb6cf53785
commit a4fdb07cb6
8 changed files with 226 additions and 3 deletions

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Entity;
use App\Logic\Result\ResultInterface;
use App\Logic\Operation\OperationInterface;
use App\Logic\Operation\OperandInterface;
use Doctrine\Common\Collections\ArrayCollection;
/**
*
* @author kevinfrantz
*
*/
abstract class AbstractOperation extends AbstractSource implements OperationInterface
{
/**
* The result MUST NOT be saved via Doctrine!
* @var ResultInterface
*/
protected $result;
/**
* @var ArrayCollection|OperandInterface[]
*/
protected $operands;
public function getResult(): ResultInterface
{
return $this->result;
}
public function setOperators(ArrayCollection $operands): void
{
$this->operands = $operands;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Entity;
use App\Logic\Operation\OperandInterface;
use App\Logic\Result\Result;
/**
*
* @author kevinfrantz
*
*/
class AndOperation extends AbstractOperation
{
public function process(): void
{
if($this->operands->isEmpty()){
throw new \Exception("Operands must be defined!");
}
$this->result = new Result();
/**
* @var OperandInterface $operand
*/
foreach ($this->operands->toArray() as $operand){
if(!$operand->getResult()->getBool()){
$this->result->setAll(false);
return;
}
}
$this->result->setAll(true);
}
}