Commit 165b4d6d authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- Commande de rappel

 - Colonne description en TEXT pour éviter les dépassement de chaine
parent 3a9ded23
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -92,6 +92,8 @@ return [
            'stdout' => false
        ],

        'recall_days' => 4,

        'vite_mode' => 'prod',

        'documents_path' => '/tmp',
+10 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace UnicaenSignature\Command;

use Laminas\ServiceManager\ServiceManager;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use UnicaenSignature\Entity\Db\Signature;

@@ -14,6 +15,7 @@ class SignatureUpdateAllSimpleSignatureCommand extends SignatureCommandAbstract
    protected function configure()
    {
        $this
            ->addOption('dateref', 'd', InputOption::VALUE_OPTIONAL, 'Date de référence')
            ->setDescription("Actualise l'état des signatures");
    }

@@ -46,10 +48,18 @@ class SignatureUpdateAllSimpleSignatureCommand extends SignatureCommandAbstract
            $row[] = $msg;
            $rows[] = $row;
        }

        $dateRef = $input->getOption('dateref');
        $date = new \DateTime();
        if( $dateRef ){
            $date = new \DateTime($dateRef);
        }

        if( $rows ){
            $io->table($headers, $rows);
        }

        $this->getSignatureService()->recallSignatures($date);

        return self::SUCCESS;
    }
+19 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ class Signature

    /**
     * @var string|null
     * @ORM\Column(type="string", nullable=true)
     * @ORM\Column(type="text", nullable=true)
     */
    private ?string $description;

@@ -148,6 +148,14 @@ class Signature
     */
    private ?DateTime $dateUpdate;

    /**
     * Date du dernier rappel
     *
     * @var ?DateTime
     * @ORM\Column(type="datetime", nullable=true)
     */
    private ?DateTime $dateRecall;

    /**
     * @var string
     * @ORM\Column (type="string", nullable=false)
@@ -781,4 +789,14 @@ class Signature
    {
        return implode(', ', $this->getValidatedBy());
    }

    public function getDateRecall(): ?DateTime
    {
        return $this->dateRecall;
    }

    public function setDateRecall(?DateTime $dateRecall): void
    {
        $this->dateRecall = $dateRecall;
    }
}
 No newline at end of file
+5 −0
Original line number Diff line number Diff line
@@ -66,6 +66,11 @@ class SignatureConfigurationService
        return $this->configuration->getConfiguration('unicaen-signature.documents_mimes');
    }

    public function getRecallDays() :int
    {
        return $this->configuration->getConfiguration('unicaen-signature.recall_days');
    }

    public function getLoggerConfiguration(): array
    {
        return $this->configuration->getConfiguration('unicaen-signature.logger');
+31 −0
Original line number Diff line number Diff line
@@ -734,6 +734,37 @@ class SignatureService
        return false;
    }

    public function recallSignatures(\DateTime $dateRef = new \DateTime()) :void
    {
        $days_beetween_recalls = $this->getSignatureConfigurationService()->getRecallDays();
        if( $days_beetween_recalls <= 0 ){
            return;
        }

        $signatures = $this->getSignatureRepository()->getSignaturesUpdatable();
        /** @var Signature $signature */
        foreach ($signatures as $signature) {
            $from = $signature->getDateRecall() ? $signature->getDateRecall() : $signature->getDateCreated();
            $daysSinceLastRecall = $dateRef->diff($from)->days;
            if( $daysSinceLastRecall >= $days_beetween_recalls ){
                $this->recallSignature($signature);
            }
        }
    }

    public function recallSignature(Signature $signature) :void
    {
        echo " #### $signature \n";
        foreach ($signature->getRecipients() as $recipient) {
            if( !$recipient->isDone() ){
                $this->notificationRecipientSend($recipient);
            }
        }
        $signature->setDateRecall(new \DateTime());
        $this->getObjectManager()->persist($signature);
        $this->getObjectManager()->flush();
    }

    public function observersNotifications(array $events): void
    {
    }