mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 03:07:58 +00:00 
			
		
		
		
	Implemented OptionalGetParameterService
This commit is contained in:
		@@ -93,17 +93,17 @@ final class MVCRoutineService implements MVCRoutineServiceInterface
 | 
				
			|||||||
        if (!$this->actionType) {
 | 
					        if (!$this->actionType) {
 | 
				
			||||||
            if ($this->requestedActionService->hasRequestedEntity() && $this->requestedActionService->getRequestedEntity()->hasIdentity()) {
 | 
					            if ($this->requestedActionService->hasRequestedEntity() && $this->requestedActionService->getRequestedEntity()->hasIdentity()) {
 | 
				
			||||||
                //READ VIEW
 | 
					                //READ VIEW
 | 
				
			||||||
                $this->requestedActionService->setActionType(ActionType::READ);
 | 
					//                 $this->requestedActionService->setActionType(ActionType::READ);
 | 
				
			||||||
                if ($this->secureRequestedRightCheckerService->check($this->requestedActionService)) {
 | 
					                if ($this->secureRequestedRightCheckerService->check($this->requestedActionService)) {
 | 
				
			||||||
                    $read = $this->actionHandlerService->handle();
 | 
					                    $read = $this->actionHandlerService->handle();
 | 
				
			||||||
                    $this->actionTemplateDataStore->setData(ActionType::READ, $read);
 | 
					                    $this->actionTemplateDataStore->setData(ActionType::READ, $read);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                $this->requestedActionService->setActionType(ActionType::UPDATE);
 | 
					//                 $this->requestedActionService->setActionType(ActionType::UPDATE);
 | 
				
			||||||
                //UPDATE VIEW
 | 
					                //UPDATE VIEW
 | 
				
			||||||
                if ($this->secureRequestedRightCheckerService->check($this->requestedActionService)) {
 | 
					//                 if ($this->secureRequestedRightCheckerService->check($this->requestedActionService)) {
 | 
				
			||||||
                    $updateForm = $this->requestedActionFormBuilderService->createByService()->getForm()->createView();
 | 
					//                     $updateForm = $this->requestedActionFormBuilderService->createByService()->getForm()->createView();
 | 
				
			||||||
                    $this->actionTemplateDataStore->setData(ActionType::UPDATE, $updateForm);
 | 
					//                     $this->actionTemplateDataStore->setData(ActionType::UPDATE, $updateForm);
 | 
				
			||||||
                }
 | 
					//                 }
 | 
				
			||||||
                //DELETE VIEW
 | 
					                //DELETE VIEW
 | 
				
			||||||
                //EXECUTE VIEW
 | 
					                //EXECUTE VIEW
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Infinito\Domain\ParameterManagement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Symfony\Component\HttpFoundation\RequestStack;
 | 
				
			||||||
 | 
					use Symfony\Component\HttpFoundation\Request;
 | 
				
			||||||
 | 
					use Infinito\Exception\UnvalidParameterException;
 | 
				
			||||||
 | 
					use Infinito\Exception\NotDefinedException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					final class OptionalGetParameterService implements OptionalGetParameterServiceInterface
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var Request
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $currentRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param string $key
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws UnvalidParameterException If the parameter is not valid
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function validateParameter(string $key): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (in_array($key, self::OPTIONAL_PARAMETERS)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        throw new UnvalidParameterException("Parameter <<$key>> isn't valid.");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param RequestStack $requestStack
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private function setCurrentRequest(RequestStack $requestStack): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->currentRequest = $requestStack->getCurrentRequest();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private function validateCurrentRequestKeys(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->currentRequest->query->keys() as $key) {
 | 
				
			||||||
 | 
					            $this->validateParameter($key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param RequestStack $requestStack
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function __construct(RequestStack $requestStack)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->setCurrentRequest($requestStack);
 | 
				
			||||||
 | 
					        $this->validateCurrentRequestKeys();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * {@inheritdoc}
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @see \Infinito\Domain\ParameterManagement\OptionalGetParameterServiceInterface::hasParameter()
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function hasParameter(string $key): bool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->validateParameter($key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $this->currentRequest->query->has($key);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * {@inheritdoc}
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @see \Infinito\Domain\ParameterManagement\OptionalGetParameterServiceInterface::getParameter()
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getParameter(string $key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->validateParameter($key);
 | 
				
			||||||
 | 
					        if ($this->hasParameter($key)) {
 | 
				
			||||||
 | 
					            return $this->currentRequest->get($key);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        throw new NotDefinedException("The parameter <<$key>> is not defined!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Infinito\Domain\ParameterManagement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * This interface offers a service to manage all optional get parameters.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					interface OptionalGetParameterServiceInterface
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const VERSION_PARAMETER = 'version';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const EXECUTE_PARAMETER = 'execute';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const VIEW_PARAMETER = 'view';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const CLASS_PARAMETER = 'class';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const FRAME_PARAMETER = 'frame';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const SCHEMA_PARAMETER = 'schema';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var array|string[]
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    const OPTIONAL_PARAMETERS = [
 | 
				
			||||||
 | 
					        self::VERSION_PARAMETER,
 | 
				
			||||||
 | 
					        self::VIEW_PARAMETER,
 | 
				
			||||||
 | 
					        self::CLASS_PARAMETER,
 | 
				
			||||||
 | 
					        self::FRAME_PARAMETER,
 | 
				
			||||||
 | 
					        self::SCHEMA_PARAMETER,
 | 
				
			||||||
 | 
					        self::EXECUTE_PARAMETER,
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param string $key
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return bool True if the version parameter in the request is set
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function hasParameter(string $key): bool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param string $key
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return mixed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function getParameter(string $key);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Infinito\Exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class UnvalidParameterException extends \Exception
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace tests\Unit\Domain\ParameterManagement;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use PHPUnit\Framework\TestCase;
 | 
				
			||||||
 | 
					use Symfony\Component\HttpFoundation\Request;
 | 
				
			||||||
 | 
					use Symfony\Component\HttpFoundation\RequestStack;
 | 
				
			||||||
 | 
					use Infinito\Domain\ParameterManagement\OptionalGetParameterServiceInterface;
 | 
				
			||||||
 | 
					use Infinito\Domain\ParameterManagement\OptionalGetParameterService;
 | 
				
			||||||
 | 
					use Infinito\Exception\UnvalidParameterException;
 | 
				
			||||||
 | 
					use Infinito\Exception\NotDefinedException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author kevinfrantz
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class OptionalGetParameterServiceTest extends TestCase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var Request
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $currentRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var RequestStack
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $requestStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @var OptionalGetParameterServiceInterface
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private $optionalGetParameterService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function setUp(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->currentRequest = new Request();
 | 
				
			||||||
 | 
					        $this->requestStack = $this->createMock(RequestStack::class);
 | 
				
			||||||
 | 
					        $this->requestStack->method('getCurrentRequest')->willReturn($this->currentRequest);
 | 
				
			||||||
 | 
					        $this->optionalGetParameterService = new OptionalGetParameterService($this->requestStack);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testConstructor(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException(UnvalidParameterException::class);
 | 
				
			||||||
 | 
					        $this->currentRequest->query->set('asdwgwe', 'adasa');
 | 
				
			||||||
 | 
					        new OptionalGetParameterService($this->requestStack);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testHasAndGetParameter(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach (OptionalGetParameterServiceInterface::OPTIONAL_PARAMETERS as $key) {
 | 
				
			||||||
 | 
					            $this->assertFalse($this->optionalGetParameterService->hasParameter($key));
 | 
				
			||||||
 | 
					            $this->currentRequest->query->set($key, 'adasa');
 | 
				
			||||||
 | 
					            $this->assertTrue($this->optionalGetParameterService->hasParameter($key));
 | 
				
			||||||
 | 
					            $this->assertEquals('adasa', $this->optionalGetParameterService->getParameter($key));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this->expectException(UnvalidParameterException::class);
 | 
				
			||||||
 | 
					        $this->optionalGetParameterService->getParameter('12312312asdas');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function testSetParameterException(): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->expectException(NotDefinedException::class);
 | 
				
			||||||
 | 
					        $this->optionalGetParameterService->getParameter(OptionalGetParameterServiceInterface::VERSION_PARAMETER);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user