Commit f9939efa authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Merge branch 'v0.0.5' into 'master'

signatures internes pour une personne

See merge request !1
parents f27fc21a 18f78092
Loading
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -53,13 +53,14 @@ class SignatureController extends AbstractActionController
    public function myDocumentsAction(): ViewModel
    {
        try {
            return new ViewModel([
            $datas = [
                'signatureRecipients' => $this->getSignatureService()
                    ->getSignaturesRecipientsByEmail(
                        $this->getSignatureService()->getSignatureConfigurationService(
                        )->getCurrentUserMail()
                    ),
                                 ]);
            ];
            return new ViewModel($datas);
        } catch (Exception $e) {
            $this->flash()->addErrorMessage($e->getMessage());
            return new ViewModel(['signatures' => []]);
+35 −11
Original line number Diff line number Diff line
@@ -12,16 +12,40 @@ class SignatureRecipientRepository extends EntityRepository
     */
    public function getForEmail(string $email) :array
    {
        $status = [Signature::STATUS_SIGNATURE_WAIT,Signature::STATUS_SIGNATURE_SIGNED,Signature::STATUS_SIGNATURE_REJECT];

        return $this->createQueryBuilder('sr')
            ->leftJoin( 'sr.signature', 's')
            ->where('sr.status IN(:status) AND sr.email = :email')
            ->setParameters([
                'status' => $status,
                'email' => $email,
            ])
            ->getQuery()
            ->getResult();
        return $this->getRecipientSignatures(
            $email,
            [Signature::STATUS_SIGNATURE_WAIT,Signature::STATUS_SIGNATURE_SIGNED,Signature::STATUS_SIGNATURE_REJECT]
        );
    }

    /**
     * @return Signature[]
     */
    public function getRecipientSignatures(string|null $email = null, array|null $status = null, string|null $letterfile = null ) :array
    {
        $params = [];
        $qb = $this->createQueryBuilder('sr')
            ->leftJoin( 'sr.signature', 's');

        if( $email ){
            $qb->andWhere('sr.email = :email');
            $params['email'] = $email;
        }

        if( $status ){
            $qb->andWhere('sr.status IN (:status)');
            $params['status'] = $status;
        }

        if( $letterfile ){
            $qb->andWhere('s.letterfile_key = :letterfile');
            $params['letterfile'] = $letterfile;
        }

        if( $params ){
            $qb->setParameters($params);
        }

        return $qb->getQuery()->getResult();
    }
}
 No newline at end of file
+30 −0
Original line number Diff line number Diff line
@@ -37,4 +37,34 @@ class SignatureRepository extends EntityRepository
            ->getQuery()
            ->getResult();
    }

    public function getSignatures(string|null $recipient_mail = null, string|null $letterfile = null, array|null $status = []) {
        $params = [];
        $qb = $this->createQueryBuilder('s')
            ->leftJoin('s.recipients', 'r');

        if( $recipient_mail ){
            $qb->where('r.email = :recipient_mail');
            $params['recipient_mail'] = $recipient_mail;
        }

        if( $letterfile ){
            $qb->where('s.letterfile_key = :letterfile_key');
            $params['letterfile_key'] = $letterfile;
        }

        if( $status ){
            $qb->where('s.status IN (status)');
            $params['status'] = $status;
        }

        if( $params ){
            $qb->setParameters($params);
        }

        $qb->orderBy('s.dateUpdate', 'DESC')
            ->getQuery();

        return $qb->getResult();
    }
}
 No newline at end of file
+16 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace UnicaenSignature\Service;
use DoctrineModule\Persistence\ProvidesObjectManager;
use UnicaenSignature\Entity\Db\Signature;
use UnicaenSignature\Entity\Db\SignatureRecipient;
use UnicaenSignature\Entity\Repository\SignatureRepository;
use UnicaenSignature\Utils\SignatureException;

class InternalLetterfileService
@@ -16,19 +17,33 @@ class InternalLetterfileService
        SignatureConfigurationServiceAwareTrait,
        SignatureServiceAwareTrait;

    /**
     * @return SignatureRepository
     */
    protected function getSignatureRepository() :SignatureRepository {
        return $this->getObjectManager()->getRepository(Signature::class);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////

    /**
     * @return Signature[]
     */
    public function getSignaturesInternal() :array
    public function getSignaturesInternal( string $userEmail ) :array
    {
        return [];
    }

    /**
     * Retourne les documents à viser dans le parapheur interne.
     *
     * @param string $user_mail
     * @return array
     */
    public function getDocumentsUser(string $user_mail) :array
    {
        $email = $this->getSignatureConfigurationService()->getCurrentUserMail();
        $signatures = $this->getSignatureRepository()->getSignaturesInternal($user_mail, 'internal');
    }

    /**
+47 −3
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ use UnicaenSignature\Entity\Db\SignatureFlowStep;
use UnicaenSignature\Entity\Db\SignatureRecipient;
use UnicaenSignature\Entity\Repository\ProcessRepository;
use UnicaenSignature\Entity\Repository\SignatureFlowRepository;
use UnicaenSignature\Entity\Repository\SignatureRecipientRepository;
use UnicaenSignature\Entity\Repository\SignatureRepository;
use UnicaenSignature\Event\SignatureEvent;
use UnicaenSignature\Formatter\ObjectFormatter;
@@ -49,6 +50,12 @@ class SignatureService
        return $this->getObjectManager()->getRepository(Process::class);
    }

    protected function getSignatureRecipientRepository(): SignatureRecipientRepository
    {
        return $this->getObjectManager()
            ->getRepository(SignatureRecipient::class);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///// LISTES

@@ -123,9 +130,33 @@ class SignatureService
    public function getSignaturesRecipientsByEmail(?string $email): array
    {
        if ($email) {
            return $this->getObjectManager()
                ->getRepository(SignatureRecipient::class)
                ->getForEmail($email);
            return $this->getSignatureRecipientRepository()->getRecipientSignatures(
                $email,
                [
                    Signature::STATUS_SIGNATURE_WAIT,
                    Signature::STATUS_SIGNATURE_SIGNED,
                    Signature::STATUS_SIGNATURE_REJECT
                ]
            );
        }
        throw new SignatureException("Impossible de charger vos documents");
    }

    /**
     * @param string|null $email
     * @return SignatureRecipient[]
     */
    public function getSignaturesRecipientsByEmailWaiting(?string $email, string|null $letterfile = null): array
    {
        if ($email) {
            $this->getLoggerService()->debug("Get with letterfile '$letterfile'");
            return $this->getSignatureRecipientRepository()->getRecipientSignatures(
                $email,
                [
                    Signature::STATUS_SIGNATURE_WAIT
                ],
                $letterfile
            );
        }
        throw new SignatureException("Impossible de charger vos documents");
    }
@@ -211,10 +242,13 @@ class SignatureService
            'id'          => $signatureFlow->getId(),
            'label'       => $signatureFlow->getLabel(),
            'description' => $signatureFlow->getDescription(),
            //'missing_recipients' => false,
            'doc_url'     => $urlDocPreview,
            'steps'       => []
        ];

        $missing_recipients = false;

        $letterfiles = $this->getSignatureConfigurationService()->getLetterFiles();


@@ -237,6 +271,7 @@ class SignatureService
            $currentStep['level_in_letterfile'] = $levels[$step->getLevel()]['key_in_letterfile'];
            $currentStep['allSignToComplete'] = true;
            $currentStep['editable'] = false;
            $currentStep['missing_recipients'] = false;
            $currentStep['dynamicRecipients'] = is_callable($method['getRecipients']);
            $currentStep['recipients'] = [];

@@ -249,8 +284,17 @@ class SignatureService
                $currentStep['recipients'] = $step->getOptions()['recipients'];
            }

            if (count($currentStep['recipients']) == 0) {
                $missing_recipients = true;
                $currentStep['missing_recipients'] = true;
            }

            $out['signatureflow']['steps'][] = $currentStep;
        }


        $out['signatureflow']['missing_recipients'] = $missing_recipients;

        return $out;
    }