<commit_before><?php

class DSSendMailRappelTask extends sfBaseTask
{

    protected $debug = false;
    protected $periode = null;

    protected function configure()
    {
        // // add your own arguments here
        $this->addArguments(array(
            new sfCommandArgument('periode', sfCommandArgument::REQUIRED, "Période"),
            new sfCommandArgument('identifiant', sfCommandArgument::REQUIRED, "Identifiant de l'établissement"),
            new sfCommandArgument('type_ds', sfCommandArgument::REQUIRED, 'Type de la DS'),
        ));

        $this->addOptions(array(
            new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'civa'),
            new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'prod'),
            new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'default'),
            new sfCommandOption('dryrun', null, sfCommandOption::PARAMETER_REQUIRED, 'Dry Run', false),
        ));

        $this->namespace = 'ds';
        $this->name = 'send-mail-rappel';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
The [ds:send-brouillons] task envoie du mail de rappel
Call it with:

  [php symfony ds:send-brouillons|INFO]
EOF;
    }

    protected function execute($arguments = array(), $options = array())
    {
        $databaseManager = new sfDatabaseManager($this->configuration);
        $connection = $databaseManager->getDatabase($options['connection'])->getConnection();
        sfContext::createInstance($this->configuration);
        set_time_limit(0);

        $etablissement = EtablissementClient::getInstance()->find($arguments['identifiant']);

        if(!$etablissement) {
            $etablissement = EtablissementClient::getInstance()->findByIdentifiant($arguments['identifiant']);
        }

        if(!$etablissement) {
            $etablissement = EtablissementClient::getInstance()->findByCvi($arguments['identifiant']);
        }

        if(!$etablissement) {
            echo "Établissement non trouvé : ".$arguments['identifiant']."\n";
            return;
        }

        if(!preg_match("/[C]*(67|68)/", $etablissement->_id)) {
            return;
        }

        if(!$etablissement->isActif()) {
            return;
        }

        if(!$etablissement->hasDroit('teledeclaration_ds_'.$arguments['type_ds'])) {
            return;
        }
        $ds = DSCivaClient::getInstance()->findPrincipaleByEtablissementAndPeriode($arguments['type_ds'], $etablissement, $arguments['periode']);

        if(!$ds) {
            $this->sendMailOubli($etablissement, $options['dryrun']);
            return;
        }

        if($ds->exist("date_depot_mairie") && $ds->get("date_depot_mairie")) {
            echo "Il s'agit d'une DS papier : ".$ds->_id."\n";
            return;
        }

        if($ds->isValideeTiers()) {
            //echo "La DS est déjà validée : ".$ds->_id."\n";
            return;
        }

        $this->sendMailValidation($etablissement, $ds, $options['dryrun']);
    }

    public function sendMailValidation($etablissement, $ds, $dryrun) {
        $email = $ds->declarant->get('email');
        $message = Swift_Message::newInstance()
            ->setFrom(array(sfConfig::get('app_email_from') => sfConfig::get('app_email_from_name')))
            ->setReplyTo(array(sfConfig::get('app_email_reply_to')))
            ->setTo($email)
            ->setSubject("RAPPEL DS au 31 juillet ".date('Y'))
            ->setBody("Bonjour,

Vous avez commencé à saisir en ligne votre Déclaration de Stocks ".date('Y')." sur le site VinsAlsace.pro, mais ne l'avez pas encore validée.

Nous vous rappelons que vous devez impérativement la valider AVANT le 10 septembre MIDI.

Pour terminer la saisie, cliquez sur le lien suivant : <https://declaration.vinsalsace.pro>


Cordialement,

<NAME>");

        try {
            if(!$email) {
                throw new sfException("Pas de mail");
            }
            if($dryrun) {
                throw new sfException("Dry run");
            }
            $this->getMailer()->send($message);
        } catch (Exception $e) {
            echo "L'envoi du mail validation a échoué (".$email."): ".$e->getMessage()." (".$ds->_id.")\n";
            return false;
        }

        echo "Mail validation envoyé (".$email.") : ".$ds->_id."\n";
        sleep(1);
    }

    public function sendMailOubli($etablissement, $dryrun) {
        $email = $etablissement->getEmailTeledeclaration();
        $message = Swift_Message::newInstance()
        ->setFrom(array(sfConfig::get('app_email_from') => sfConfig::get('app_email_from_name')))
        ->setReplyTo(array(sfConfig::get('app_email_reply_to')))
        ->setTo($email)
        ->setSubject("RAPPEL DS au 31 juillet ".date('Y'))
        ->setBody("Bonjour,

La Déclaration de Stocks \"Papier\" a définitivement disparue depuis 2017 et vous devez donc désormais télé-déclarer votre Stock sur le Portail du CIVA.

A ce jour nous n'avons pas enregistré de saisie pour la déclaration au 31 Juillet ".date('Y').".

Nous vous rappelons que vous devez impérativement télé-déclarer votre Stock AVANT le 10 septembre MIDI.

ATTENTION: Si votre Stock est NEANT, un arrêté du 18 Juillet dernier vous exempte de déposer une Déclaration de Stocks.
Dans ce cas-là, pour éviter qu'on ne vous relance, merci de me le signaler en réponse à ce mail.

Sinon, vous pouvez effectuer la saisie en cliquant sur le lien suivant <https://declaration.vinsalsace.pro>


Cordialement,

<NAME>
");

        try {
            if(!$email) {
                throw new sfException("Pas de mail");<commit_msg>Mail de rappel de la DS<commit_after><?php

class DSSendMailRappelTask extends sfBaseTask
{

    protected $debug = false;
    protected $periode = null;

    protected function configure()
    {
        // // add your own arguments here
        $this->addArguments(array(
            new sfCommandArgument('periode', sfCommandArgument::REQUIRED, "Période"),
            new sfCommandArgument('identifiant', sfCommandArgument::REQUIRED, "Identifiant de l'établissement"),
            new sfCommandArgument('type_ds', sfCommandArgument::REQUIRED, 'Type de la DS'),
        ));

        $this->addOptions(array(
            new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'civa'),
            new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'prod'),
            new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'default'),
            new sfCommandOption('dryrun', null, sfCommandOption::PARAMETER_REQUIRED, 'Dry Run', false),
        ));

        $this->namespace = 'ds';
        $this->name = 'send-mail-rappel';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
The [ds:send-brouillons] task envoie du mail de rappel
Call it with:

  [php symfony ds:send-brouillons|INFO]
EOF;
    }

    protected function execute($arguments = array(), $options = array())
    {
        $databaseManager = new sfDatabaseManager($this->configuration);
        $connection = $databaseManager->getDatabase($options['connection'])->getConnection();
        sfContext::createInstance($this->configuration);
        set_time_limit(0);

        $etablissement = EtablissementClient::getInstance()->find($arguments['identifiant']);

        if(!$etablissement) {
            $etablissement = EtablissementClient::getInstance()->findByIdentifiant($arguments['identifiant']);
        }

        if(!$etablissement) {
            $etablissement = EtablissementClient::getInstance()->findByCvi($arguments['identifiant']);
        }

        if(!$etablissement) {
            echo "Établissement non trouvé : ".$arguments['identifiant']."\n";
            return;
        }

        if(!preg_match("/[C]*(67|68)/", $etablissement->_id)) {
            return;
        }

        if(!$etablissement->isActif()) {
            return;
        }

        if(!$etablissement->hasDroit('teledeclaration_ds_'.$arguments['type_ds'])) {
            return;
        }
        $ds = DSCivaClient::getInstance()->findPrincipaleByEtablissementAndPeriode($arguments['type_ds'], $etablissement, $arguments['periode']);

        if(!$ds) {
            $this->sendMailOubli($etablissement, $options['dryrun']);
            return;
        }

        if($ds->exist("date_depot_mairie") && $ds->get("date_depot_mairie")) {
            echo "Il s'agit d'une DS papier : ".$ds->_id."\n";
            return;
        }

        if($ds->isValideeTiers()) {
            //echo "La DS est déjà validée : ".$ds->_id."\n";
            return;
        }

        $this->sendMailValidation($etablissement, $ds, $options['dryrun']);
    }

    public function sendMailValidation($etablissement, $ds, $dryrun) {
        $email = $ds->declarant->get('email');
        $message = Swift_Message::newInstance()
            ->setFrom(array(sfConfig::get('app_email_from') => sfConfig::get('app_email_from_name')))
            ->setReplyTo(array(sfConfig::get('app_email_reply_to')))
            ->setTo($email)
            ->setSubject("RAPPEL DS au 31 juillet ".date('Y'))
            ->setBody("Bonjour,

Vous avez commencé à saisir en ligne votre Déclaration de Stocks ".date('Y')." sur le site VinsAlsace.pro, mais ne l'avez pas encore validée.

Nous vous rappelons que vous devez impérativement la valider AVANT le 10 septembre MINUIT.

Pour terminer la saisie, cliquez sur le lien suivant : <https://declaration.vinsalsace.pro>


Cordialement,

<NAME>");

        try {
            if(!$email) {
                throw new sfException("Pas de mail");
            }
            if($dryrun) {
                throw new sfException("Dry run");
            }
            $this->getMailer()->send($message);
        } catch (Exception $e) {
            echo "L'envoi du mail validation a échoué (".$email."): ".$e->getMessage()." (".$ds->_id.")\n";
            return false;
        }

        echo "Mail validation envoyé (".$email.") : ".$ds->_id."\n";
        sleep(1);
    }

    public function sendMailOubli($etablissement, $dryrun) {
        $email = $etablissement->getEmailTeledeclaration();
        $message = Swift_Message::newInstance()
        ->setFrom(array(sfConfig::get('app_email_from') => sfConfig::get('app_email_from_name')))
        ->setReplyTo(array(sfConfig::get('app_email_reply_to')))
        ->setTo($email)
        ->setSubject("RAPPEL DS au 31 juillet ".date('Y'))
        ->setBody("Bonjour,

La Déclaration de Stocks \"Papier\" a définitivement disparue depuis 2017 et vous devez donc désormais télé-déclarer votre Stock sur le Portail du CIVA.

A ce jour nous n'avons pas enregistré de saisie pour la déclaration au 31 juillet ".date('Y').".

Nous vous rappelons que vous devez impérativement télé-déclarer votre Stock AVANT le 10 septembre MINUIT.

ATTENTION: Si votre Stock est NEANT, un arrêté du 18 Juillet dernier vous exempte de déposer une Déclaration de Stocks.
Dans ce cas-là, pour éviter qu'on ne vous relance, merci de me le signaler en réponse à ce mail.

Sinon, vous pouvez effectuer la saisie en cliquant sur le lien suivant <https://declaration.vinsalsace.pro>


Cordialement,

<NAME>
");

        try {
            if(!$email) {
                throw new sfException("Pas de mail");
{'fraction_non_alphanumeric': 0.13842398884239887, 'fraction_numerical': 0.0038354253835425384, 'mean_word_length': 2.865566037735849, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 99, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2362226', 'n_tokens_mistral': 3554, 'n_tokens_neox': 3508, 'n_words': 788}