diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php index 64ada47c7..3116e3b62 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessage.php @@ -18,6 +18,7 @@ final readonly class PdfSignedMessage { public function __construct( public readonly int $signatureId, - public readonly string $content + public readonly int $signatureZoneIndex, + public readonly string $content, ) {} } diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php index 5cb31de96..720bc000f 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandler.php @@ -55,6 +55,7 @@ final readonly class PdfSignedMessageHandler implements MessageHandlerInterface $this->storedObjectManager->write($storedObject, $message->content); $signature->setState(EntityWorkflowSignatureStateEnum::SIGNED)->setStateDate($this->clock->now()); + $signature->setZoneSignatureIndex($message->signatureZoneIndex); $this->entityManager->flush(); $this->entityManager->clear(); } diff --git a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php index 4af4a9504..892b944b7 100644 --- a/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php +++ b/src/Bundle/ChillDocStoreBundle/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializer.php @@ -40,7 +40,7 @@ final readonly class PdfSignedMessageSerializer implements SerializerInterface throw new MessageDecodingFailedException('Invalid character found in the base64 encoded content'); } - $message = new PdfSignedMessage($decoded['signatureId'], $content); + $message = new PdfSignedMessage($decoded['signatureId'], $decoded['signatureZoneIndex'], $content); return new Envelope($message); } @@ -55,6 +55,7 @@ final readonly class PdfSignedMessageSerializer implements SerializerInterface $data = [ 'signatureId' => $message->signatureId, + 'signatureZoneIndex' => $message->signatureZoneIndex, 'content' => base64_encode($message->content), ]; diff --git a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php index eb2142175..471dc8f9a 100644 --- a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php +++ b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageHandlerTest.php @@ -57,9 +57,10 @@ class PdfSignedMessageHandlerTest extends TestCase // we simply call the handler. The mocked StoredObjectManager will check that the "write" method is invoked once // with the content "1234" - $handler(new PdfSignedMessage(10, $expectedContent)); + $handler(new PdfSignedMessage(10, 99, $expectedContent)); self::assertEquals('signed', $signature->getState()->value); + self::assertEquals(99, $signature->getZoneSignatureIndex()); } private function buildSignatureRepository(EntityWorkflowStepSignature $signature): EntityWorkflowStepSignatureRepository diff --git a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php index d9d600254..1321390f5 100644 --- a/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php +++ b/src/Bundle/ChillDocStoreBundle/Tests/Service/Signature/Driver/BaseSigner/PdfSignedMessageSerializerTest.php @@ -26,7 +26,7 @@ class PdfSignedMessageSerializerTest extends TestCase public function testDecode(): void { $asString = <<<'JSON' - {"signatureId": 0, "content": "dGVzdAo="} + {"signatureId": 0, "signatureZoneIndex": 10, "content": "dGVzdAo="} JSON; $actual = $this->buildSerializer()->decode(['body' => $asString]); @@ -36,12 +36,13 @@ class PdfSignedMessageSerializerTest extends TestCase self::assertInstanceOf(PdfSignedMessage::class, $message); self::assertEquals("test\n", $message->content); self::assertEquals(0, $message->signatureId); + self::assertEquals(10, $message->signatureZoneIndex); } public function testEncode(): void { $envelope = new Envelope( - new PdfSignedMessage(0, "test\n") + new PdfSignedMessage(0, 10, "test\n") ); $actual = $this->buildSerializer()->encode($envelope); @@ -52,7 +53,7 @@ class PdfSignedMessageSerializerTest extends TestCase self::assertEquals([], $actual['headers']); self::assertEquals(<<<'JSON' - {"signatureId":0,"content":"dGVzdAo="} + {"signatureId":0,"signatureZoneIndex":10,"content":"dGVzdAo="} JSON, $actual['body']); }