diff --git a/src/app/action/controllers/ActionMethodController.php b/src/app/action/controllers/ActionMethodController.php index a1b6ea4c032f7ae5eeeac075ef570d72f8b3167d..e435972cbffad428478fe01855d443214129d577 100644 --- a/src/app/action/controllers/ActionMethodController.php +++ b/src/app/action/controllers/ActionMethodController.php @@ -45,6 +45,7 @@ use Resource\controllers\StoreController; use Resource\models\ResModel; use Resource\models\ResourceContactModel; use Respect\Validation\Validator; +use SignatureBook\Infrastructure\Factory\ContinueCircuitActionFactory; use SrcCore\controllers\LogsController; use SrcCore\models\CoreConfigModel; use SrcCore\models\DatabaseModel; @@ -517,6 +518,10 @@ class ActionMethodController ValidatorModel::notEmpty($args, ['resId']); ValidatorModel::intVal($args, ['resId']); + $continueCircuitAction = ContinueCircuitActionFactory::create(); + + $result = $continueCircuitAction->execute($args['resId']); + $listInstance = ListInstanceModel::get([ 'select' => ['listinstance_id', 'item_id'], 'where' => ['res_id = ?', 'difflist_type = ?', 'process_date is null'], diff --git a/src/app/signatureBook/Application/Action/ContinueCircuitAction.php b/src/app/signatureBook/Application/Action/ContinueCircuitAction.php new file mode 100644 index 0000000000000000000000000000000000000000..6aeee6dc9a3b4c500539bdb085fdaecd99646b15 --- /dev/null +++ b/src/app/signatureBook/Application/Action/ContinueCircuitAction.php @@ -0,0 +1,24 @@ +<?php + +namespace SignatureBook\Application\Action; +use SignatureBook\Domain\Port\ListInstanceRepositoryInterface; + +class ContinueCircuitAction +{ + private ListInstanceRepositoryInterface $instanceRepository; +public function __construct(ListInstanceRepositoryInterface $instanceRepository, bool $plugin) +{ + $this->instanceRepository = $instanceRepository; +} + public function execute(int $resId, array $data, string $note): array + { + $listInstance = $this->instanceRepository->getListInstance($resId); + if (empty($listInstance)) { + return ['errors' => ['No available circuit']]; + } + + return []; + } + + +} diff --git a/src/app/signatureBook/Domain/Port/ListInstanceRepositoryInterface.php b/src/app/signatureBook/Domain/Port/ListInstanceRepositoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..12104c5819305445388e8af953bfa7aa1f35c23c --- /dev/null +++ b/src/app/signatureBook/Domain/Port/ListInstanceRepositoryInterface.php @@ -0,0 +1,9 @@ +<?php + +namespace SignatureBook\Domain\Port; + +interface ListInstanceRepositoryInterface +{ + public function getListInstance(int $resId): array; + public function getListInstanceCircuit(array $args): array; +} diff --git a/src/app/signatureBook/Infrastructure/Factory/ContinueCircuitActionFactory.php b/src/app/signatureBook/Infrastructure/Factory/ContinueCircuitActionFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..57b83a244c10b04182213517e524516230056870 --- /dev/null +++ b/src/app/signatureBook/Infrastructure/Factory/ContinueCircuitActionFactory.php @@ -0,0 +1,16 @@ +<?php + +namespace SignatureBook\Infrastructure\Factory; + +use SignatureBook\Application\Action\ContinueCircuitAction; +use SignatureBook\Infrastructure\Repository\ListInstanceRepository; + +class ContinueCircuitActionFactory +{ + public static function create(): ContinueCircuitAction + { + $listInstanceRepository = new ListInstanceRepository(); + + return new ContinueCircuitAction($listInstanceRepository, false); + } +} diff --git a/src/app/signatureBook/Infrastructure/Repository/ListInstanceRepository.php b/src/app/signatureBook/Infrastructure/Repository/ListInstanceRepository.php new file mode 100644 index 0000000000000000000000000000000000000000..a2aad353f286e6030c4af0aacceadf0bbb34f139 --- /dev/null +++ b/src/app/signatureBook/Infrastructure/Repository/ListInstanceRepository.php @@ -0,0 +1,38 @@ +<?php + +namespace SignatureBook\Infrastructure\Repository; + +use Entity\models\ListInstanceModel; + +class ListInstanceRepository implements \ListInstanceRepositoryInterface +{ + + /** + * @param array $args + * @return array + */ + public function getListInstance(int $resId): array + { + return ListInstanceModel::get([ + 'select' => ['listinstance_id', 'item_id'], + 'where' => ['res_id = ?', 'difflist_type = ?', 'process_date is null'], + 'data' => [$resId, 'VISA_CIRCUIT'], + 'orderBy' => ['listinstance_id'], + 'limit' => 1 + ]); + } + + /** + * @param array $args + * @return array + */ + public function getListInstanceCircuit(array $args): array + { + return ListInstanceModel::get([ + 'select' => ['requested_signature', 'item_id', 'listinstance_id'], + 'where' => ['res_id = ?', 'difflist_type = ?', 'process_date is null'], + 'data' => [$args['resId'], 'VISA_CIRCUIT'], + 'orderBy' => ['listinstance_id'] + ]); + } +} diff --git a/test/unitTests/app/signatureBook/Application/Action/ContinueCircuitActionTest.php b/test/unitTests/app/signatureBook/Application/Action/ContinueCircuitActionTest.php new file mode 100644 index 0000000000000000000000000000000000000000..20f45e25dd9fea4b8da623193c16a23d0c783db0 --- /dev/null +++ b/test/unitTests/app/signatureBook/Application/Action/ContinueCircuitActionTest.php @@ -0,0 +1,46 @@ +<?php + +namespace MaarchCourrier\Tests\unitTests\app\signatureBook\Application\Action; + +use MaarchCourrier\Tests\app\signatureBook\Mock\Action\ListInstanceRepositoryMock; +use PHPUnit\Framework\TestCase; +use SignatureBook\Application\Action\ContinueCircuitAction; + + +class ContinueCircuitActionTest extends TestCase +{ + private ListInstanceRepositoryMock $instanceRepository; + private ContinueCircuitAction $continueCircuitAction; + protected function setUp(): void + { + $this->instanceRepository = new ListInstanceRepositoryMock(); + $this->continueCircuitAction = new ContinueCircuitAction($this->instanceRepository, false); + } + + public function testGetListInstanceReturnNothingThenAnErrorIsReturned():void + { + $result = $this->continueCircuitAction->execute(2, [], ''); + + $this->assertSame( + [ + 'errors' => ['No available circuit'] + ], + $result + ); + + } + + public function testGetListInstanceReturnNothingThenAnErrorIs():void + { + $result = $this->instanceRepository->getListInstance(1); + + $this->assertSame( + [ + 'listInstance_id' => 1, + 'item_id' => 19 + ], + $result + ); + + } +} diff --git a/test/unitTests/app/signatureBook/Mock/Action/ListInstanceRepositoryMock.php b/test/unitTests/app/signatureBook/Mock/Action/ListInstanceRepositoryMock.php new file mode 100644 index 0000000000000000000000000000000000000000..551861eb514f534ca63242362e288210c2747e68 --- /dev/null +++ b/test/unitTests/app/signatureBook/Mock/Action/ListInstanceRepositoryMock.php @@ -0,0 +1,33 @@ +<?php + +namespace MaarchCourrier\Tests\app\signatureBook\Mock\Action; + +use SignatureBook\Domain\Port\ListInstanceRepositoryInterface; + +class ListInstanceRepositoryMock implements ListInstanceRepositoryInterface +{ + + /** + * @param int $resId + * @return array + */ + public function getListInstance(int $resId): array + { + if ($resId === 2) { + return []; + } + return [ + 'listInstance_id' => 1, + 'item_id' => 19 + ]; + } + + /** + * @param array $args + * @return array + */ + public function getListInstanceCircuit(array $args): array + { + return []; + } +}