Commit 1ebd2368 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- Ajout de clef de configuration pour personnaliser les messages de notification

parent c6dedb1f
Loading
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -49,6 +49,16 @@ return [

        'redirect_internal' => 'unicaen-signature/my-documents',

        //////////////////////////////////// MAILS
        'mail_obs_subject' => '[suivi signature] Document {DOCUMENT}',
        'mail_obs_subject_reject' => "[suivi signature] REJET du document '{DOCUMENT}'",
        'mail_obs_subject_prefix_step' => ' (étape {ETAPE}/{TOTAL_ETAPES})',
        'mail_obs_message' => "Bonjour,\n le document '{DOCUMENT}' a été envoyé pour {SIGN_NOUN} à {TOTAL_RECIPIENTS} destinataire(s)",
        'mail_recipient_subject' => "[signature] Vous avez un document à {SIGN_VERB} - {DOCUMENT}",
        'mail_recipient_message' => "Bonjour,\nVous avez un document '{DOCUMENT}' à {SIGN_VERB} : \n{LINK}\n",
        'mail_recipient_message_previous_steps' => "étapes précédentes : \n",
        'mail_messages_end' => "Merci\n(Ce message est automatique, ne pas répondre)",

        'get_recipients_methods' => [
            [   'key' => \UnicaenSignature\Utils\SignatureConstants::GET_RECIPIENTS_METHOD_FIXED,
                'label' => 'Destinataires fixes',
+3 −0
Original line number Diff line number Diff line
@@ -622,6 +622,9 @@ export default {
  background: white;
  padding: .5em 1em;
  margin: 1em 0;
  h3 {
    margin: 0 0 .3em 0;
  }
}

.buttons-bar {
+79 −0
Original line number Diff line number Diff line
@@ -204,4 +204,83 @@ class SignatureConfigurationService
        return $this->configuration->getConfiguration('unicaen-signature.redirect_internal');
    }

    //////////////////////////////////////////////// MESSAGES
    ///
    const mail_obs_subject = 'unicaen-signature.mail_obs_subject';
    const mail_obs_subject_reject = 'unicaen-signature.mail_obs_subject_reject';
    const mail_obs_subject_prefix_step = 'unicaen-signature.mail_obs_subject_prefix_step';
    const mail_obs_message = 'unicaen-signature.mail_obs_message';
    const mail_recipient_subject = 'unicaen-signature.mail_recipient_subject';
    const mail_recipient_message = 'unicaen-signature.mail_recipient_message';
    const mail_recipient_message_previous_steps = 'unicaen-signature.mail_recipient_message_previous_steps';
    const mail_messages_end = 'unicaen-signature.mail_messages_end';

    public function get_mail_obs_subject():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_obs_subject,
            '[suivi signature] Document {DOCUMENT}');
    }

    public function get_mail_obs_subject_reject() :string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_obs_subject_reject,
            "[suivi] Document '{DOCUMENT}' rejeté");
    }

    public function get_mail_obs_subject_prefix_step():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_obs_subject_prefix_step,
            ' (étape {ETAPE}/{TOTAL_ETAPES})');
    }

    public function get_mail_obs_message():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_obs_message,
            "Bonjour,\n le document '{DOCUMENT}' a été envoyé pour {SIGN_NOUN} à {TOTAL_RECIPIENTS} destinataire(s)");
    }

    public function get_mail_recipient_subject():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_recipient_subject,
            "[signature] Vous avez un document à {SIGN_VERB} - {DOCUMENT}");
    }

    public function get_mail_recipient_message():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_recipient_message,
            "Bonjour, vous avez un document '{DOCUMENT}' à {SIGN_VERB} : \n{LINK}\n");
    }

    public function get_mail_recipient_message_previous_steps():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_recipient_message_previous_steps,
            "étapes précédentes : \n");
    }

    public function get_mail_messages_end():string
    {
        return $this->configuration->getOptionalConfiguration(
            self::mail_messages_end,
            "Merci\n(Ce message est automatique, ne pas répondre)");
    }

    /****
'mail_obs_subject' => '[suivi signature] Document {DOCUMENT }',
'mail_obs_subject_prefix_step' => ' (étape {ETAPE}/{TOTAL_ETAPES})',
'mail_obs_message' => "Bonjour,\n le document '{DOCUMENT}' a été envoyé pour {SIGN_NOUN} à {TOTAL_RECIPIENTS} destinataire(s)",

'mail_recipient_subject' => "[signature] Vous avez un document à {SIGN_VERB} - {DOCUMENT}",
'mail_recipient_message' => "Bonjour, vous avez un document '{DOCUMENT}' à {SIGN_VERB} : \n{LINK_DOCUMENT}\n",
'mail_recipient_message_previous-steps' => "étapes précédentes : \n",


'mail_messages_end' => "Merci\n(Ce message est automatique, ne pas répondre)",
    /****/
}
 No newline at end of file
+19 −18
Original line number Diff line number Diff line
@@ -666,7 +666,7 @@ class SignatureService

                if ($signature->getStatus() == Signature::STATUS_SIGNATURE_REJECT) {

                    $subject = "[suivi] étape $step/$steps du Document {DOCUMENT} rejetée";
                    $subject = $this->getSignatureConfigurationService()->get_mail_obs_subject_reject();

                    $events[] = [
                        'spot' => 'signature',
@@ -999,27 +999,31 @@ class SignatureService
        // Obtenir le lien
        $link = $signatureRecipient->getUrlDocument();

        $subject = "[signature] Vous avez un document à {SIGN_VERB} - {DOCUMENT}";
        $message = "Bonjour, vous avez un document '{DOCUMENT}' à {SIGN_VERB} : $link\n";
        $subject = $this->getSignatureConfigurationService()->get_mail_recipient_subject();
        $message = $this->getSignatureConfigurationService()->get_mail_recipient_message();
        $datas = [
            '{LINK}' => $link
        ];
        if( $signatureRecipient->getSignature()->getProcessStep() ){
            $subject .= " (étape {ETAPE}/{TOTAL_ETAPES})";
            $subject .= $this->getSignatureConfigurationService()->get_mail_obs_subject_prefix_step();

            $previousSteps = $signatureRecipient->getSignature()->getProcessStep()->getProcess()->previousSteps();
            if( count($previousSteps) ){
                $message .= "étapes précédentes : \n";
                $message .= $this->getSignatureConfigurationService()->get_mail_recipient_message_previous_steps();
                // Calcule des étapes
                foreach ($signatureRecipient->getSignature()->getProcessStep()->getProcess()->previousSteps() as $step) {
                    $message .= " - ". $step->getMessage() . "\n";
                }
            }
        }
        $message .= "Merci\n(Ce message est automatique, ne pas répondre)";
        $message .= $this->getSignatureConfigurationService()->get_mail_messages_end();

        $this->sendNotificationTo(
            $signatureRecipient->getEmail(),
            $subject,
            $message,
            $signatureRecipient->getSignature()
            $signatureRecipient->getSignature(),
            $datas
        );
    }

@@ -1029,10 +1033,9 @@ class SignatureService
        if( $signature->isNotifiableObserver() ) {
            $nbrRecipients = count($signature->getRecipients());

            $subject = "[suivi signature] Document '{DOCUMENT} envoyé pour {SIGN_NOUN}";
            $subject = $this->getSignatureConfigurationService()->get_mail_obs_subject();
            if( $signature->getProcessStep() ){
                $this->getLoggerService()->debug("SUBJECT -> Ajout étape");
                $subject .= " (étape {ETAPE}/{TOTAL_ETAPES})";
                $subject .= $this->getSignatureConfigurationService()->get_mail_obs_subject_prefix_step();
            }

            //$url = $this->forgeLink('unicaen-signature/my-documents', []);
@@ -1040,8 +1043,7 @@ class SignatureService
                $this->sendNotificationTo(
                    $observer->getEmail(),
                    $subject,
                    "Bonjour,\n le document '{DOCUMENT}' a été envoyé pour {SIGN_NOUN} à $nbrRecipients destinataire(s)"
                    ,
                    $this->getSignatureConfigurationService()->get_mail_obs_message(),
                    $signature
                );
            }
@@ -1052,23 +1054,22 @@ class SignatureService
        string $email,
        string $subject,
        string $message,
        Signature $signature
        Signature $signature,
        array $datas = []
    ): void {
        $datas = [
            '{RECIPIENT}' => 'NO-RECIPIENT',
        ];

        $datas['{DOCUMENT}'] = $signature->getContextShort() ?: 'Document';
        $datas['{SIGN_NOUN}'] = $signature->getNoun();
        $datas['{SIGN_VERB}'] = $signature->getVerb();
        $datas['{SIGN_PARTICIPLE}'] = $signature->getParticiple();
        $datas['{LINK}'] = "LINK TO BUILD";
        $datas['{TOTAL_RECIPIENTS}'] = count($signature->getRecipients());

        if ($signature->getProcessStep()) {
            $datas['{ETAPE}'] = $signature->getProcessStep()->getOrder();
            $datas['{TOTAL_ETAPES}'] = count($signature->getProcessStep()->getProcess()->getSteps());
        }

        $this->getLoggerService()->info(json_encode($datas));

        $find = array_keys($datas);
        $replace = array_values($datas);