Skip to content
Snippets Groups Projects
Commit 60c8b142 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Merge branch 'v0.0.10' into 'master'

- Traitement du CAS : Suppression dans le parapheur entre l'envoi par...

See merge request !6
parents 6cadef41 9ade5e7d
Branches
Tags
1 merge request!6- Traitement du CAS : Suppression dans le parapheur entre l'envoi par...
Pipeline #27782 passed
...@@ -8,10 +8,11 @@ ...@@ -8,10 +8,11 @@
} }
], ],
"bin": [ "bin": [
"unicaen-signature" "bin/unicaen-signature"
], ],
"require": { "require": {
"fightbulc/moment": "^1.30" "fightbulc/moment": "^1.30",
"symfony/console": "^6.0"
}, },
"autoload": { "autoload": {
"psr-0": { "psr-0": {
......
...@@ -2,6 +2,16 @@ ...@@ -2,6 +2,16 @@
## Utilisation des commandes ## Utilisation des commandes
### Console de base
```bash
php vendor/bin/unicaen-signature
```
### Commandes dans votre application (exemple)
Exemple, créer un fichier `bin/commands.php` : Exemple, créer un fichier `bin/commands.php` :
```php ```php
......
...@@ -7,9 +7,9 @@ use Symfony\Component\Console\Input\InputInterface; ...@@ -7,9 +7,9 @@ use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use UnicaenSignature\Entity\Db\Signature; use UnicaenSignature\Entity\Db\Signature;
class SignatureUpdateAllCommand extends SignatureCommandAbstract class SignatureUpdateAllProcessesCommand extends SignatureCommandAbstract
{ {
protected static $defaultName = 'signature:update-all'; protected static $defaultName = 'signature:update-process-all';
protected function configure() protected function configure()
{ {
...@@ -19,12 +19,12 @@ class SignatureUpdateAllCommand extends SignatureCommandAbstract ...@@ -19,12 +19,12 @@ class SignatureUpdateAllCommand extends SignatureCommandAbstract
protected function execute(InputInterface $input, OutputInterface $output): int protected function execute(InputInterface $input, OutputInterface $output): int
{ {
$io = $this->getIO($input, $output); $io = $this->getIO($input, $output);
$headers = ['id', 'label', 'status', 'msg']; $headers = ['id', 'label', 'status', 'msg'];
$rows = []; $rows = [];
foreach ($this->getProcessService()->getProcesses() as $process) { foreach ($this->getProcessService()->getProcesses() as $process) {
$io->text($process);
$msg = "Rien à faire"; $msg = "Rien à faire";
$row = [ $row = [
$process->getId(), $process->getId(),
......
<?php
namespace UnicaenSignature\Command;
use Laminas\ServiceManager\ServiceManager;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use UnicaenSignature\Entity\Db\Signature;
class SignatureUpdateAllSimpleSignatureCommand extends SignatureCommandAbstract
{
protected static $defaultName = 'signature:update-simplesignature-all';
protected function configure()
{
$this
->setDescription("Actualise l'état des signatures");
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = $this->getIO($input, $output);
$headers = ['id', 'label', 'status', 'Parapheur', 'Remote ID', 'doc', 'msg'];
$rows = [];
/** @var Signature $signature */
foreach ($this->getSignatureService()->getSignaturesSimples() as $signature) {
$msg = "Rien à faire";
$row = [
$signature->getId(),
$signature->getLabel(),
$signature->getStatusText(),
$signature->getLetterfileKey(),
$signature->getDocumentRemotekey(),
$signature->getDocumentPath(),
];
$msg = "Rien à faire";
if( $signature->isUpdatable() ){
try {
$this->getSignatureService()->updateStatusSignature($signature);
$msg = "Fait (" . $signature->getStatusText() . ")";
} catch (\Exception $e) {
$msg = 'Error : ' . $e->getMessage();
}
}
$row[] = $msg;
$rows[] = $row;
}
$io->table($headers, $rows);
return self::SUCCESS;
}
}
\ No newline at end of file
...@@ -557,6 +557,11 @@ class Signature ...@@ -557,6 +557,11 @@ class Signature
return $this->getStatus() == self::STATUS_SIGNATURE_DRAFT; return $this->getStatus() == self::STATUS_SIGNATURE_DRAFT;
} }
public function isUpdatable():bool
{
return $this->getStatus() == self::STATUS_SIGNATURE_WAIT;
}
public function isFinished(): bool public function isFinished(): bool
{ {
$deletable = [ $deletable = [
......
...@@ -553,14 +553,33 @@ class SignatureService ...@@ -553,14 +553,33 @@ class SignatureService
$this->getLoggerService()->debug("Actualisation du statut pour '$signature'"); $this->getLoggerService()->debug("Actualisation du statut pour '$signature'");
try { try {
if (!$signature->isFinished()) { if (!$signature->isFinished()) {
$documentSrc = $this->getSignatureConfigurationService()->getDocumentsLocation()
. DIRECTORY_SEPARATOR
. $signature->getDocumentPath();
if( !is_writable($documentSrc) ){
$err = "Impossible de mettre à jour la signature, l'emplacement de dépôt du document n'est pas accessible en écriture";
$this->getLoggerService()->critical("$err : '$documentSrc'");
throw new SignatureException($err);
}
$letterFileStrategy = $this->getLetterfileService()->getLetterFileStrategy( $letterFileStrategy = $this->getLetterfileService()->getLetterFileStrategy(
$signature->getLetterfileKey() $signature->getLetterfileKey()
); );
$infos = $letterFileStrategy->getSignatureInfos($signature); $infos = $letterFileStrategy->getSignatureInfos($signature);
$status = $infos->getStatus(); $status = $infos->getStatus();
$status_remote = $infos->getStatusRemote();
$currentStatus = $signature->getStatusText();
$this->getLoggerService()->debug("Statut en cours '$currentStatus', statut reçu > '$status' ($status_remote)");
$statusChanged = $signature->getStatus() !== $status; $statusChanged = $signature->getStatus() !== $status;
if( $statusChanged ){
$this->getLoggerService()->debug("Le statut a changé > '$status'");
}
$signature->setStatus($status) $signature->setStatus($status)
->setDateUpdate(new \DateTime()); ->setDateUpdate(new \DateTime());
......
...@@ -355,7 +355,7 @@ class EsupLetterfileStrategy implements ILetterfileStrategy ...@@ -355,7 +355,7 @@ class EsupLetterfileStrategy implements ILetterfileStrategy
// On regarde si une personne a refusée // On regarde si une personne a refusée
if (array_key_exists('recipientHasSigned', $returned)) { if (array_key_exists('recipientHasSigned', $returned)) {
foreach ($returned['recipientHasSigned'] as $item) { foreach ($returned['recipientHasSigned'] as $item) {
if ($item['actionType'] == 'refused') { if (array_key_exists('actionType', $item) && $item['actionType'] == 'refused') {
$responseInfos->setForceRefuse(true); $responseInfos->setForceRefuse(true);
} }
} }
...@@ -386,7 +386,8 @@ class EsupLetterfileStrategy implements ILetterfileStrategy ...@@ -386,7 +386,8 @@ class EsupLetterfileStrategy implements ILetterfileStrategy
if (!$responseInfos->isAccepted($email)) { if (!$responseInfos->isAccepted($email)) {
$responseInfos->addRefused($email); $responseInfos->addRefused($email);
} }
} else { }
else {
$responseInfos->addNone($email); $responseInfos->addNone($email);
} }
} }
...@@ -402,8 +403,11 @@ class EsupLetterfileStrategy implements ILetterfileStrategy ...@@ -402,8 +403,11 @@ class EsupLetterfileStrategy implements ILetterfileStrategy
$status_remote = $returned['status']; $status_remote = $returned['status'];
$responseInfos->setStatusRemote($status_remote); $responseInfos->setStatusRemote($status_remote);
// Suppression dans le parapheur
if( $status_remote == 'deleted' ){
$responseInfos->setStatus(Signature::STATUS_SIGNATURE_DELETE);
}
return $responseInfos; return $responseInfos;
} catch (Exception $e) { } catch (Exception $e) {
$msg = "Impossible de charger les informations de la SignRequest '$id' dans ESUP"; $msg = "Impossible de charger les informations de la SignRequest '$id' dans ESUP";
$this->getLoggerService()->critical( $this->getLoggerService()->critical(
......
...@@ -12,6 +12,7 @@ class ResponseInfos ...@@ -12,6 +12,7 @@ class ResponseInfos
{ {
private string $status_remote; private string $status_remote;
private ?int $status = null;
private bool $allSignToComplete; private bool $allSignToComplete;
...@@ -234,6 +235,13 @@ class ResponseInfos ...@@ -234,6 +235,13 @@ class ResponseInfos
public function getStatus(): int public function getStatus(): int
{ {
if( $this->status !== null && in_array($this->status, [
Signature::STATUS_SIGNATURE_DELETE,
Signature::STATUS_SIGNATURE_FULLDELETE,
Signature::STATUS_SIGNATURE_CANCEL
])) {
return $this->status;
}
if ($this->forceRefuse || count($this->recipients_refused)) { if ($this->forceRefuse || count($this->recipients_refused)) {
return Signature::STATUS_SIGNATURE_REJECT; return Signature::STATUS_SIGNATURE_REJECT;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment