Ejemplo n.º 1
0
function cronjobSettimanale()
{
    global $log, $db;
    $ok = true;
    cronjobEsegui("Invio reminder patenti CRI in scadenza nei prossimi 15gg", function () {
        $patenti = TitoloPersonale::inScadenza(2700, 2709, 15);
        // Minimo id titolo, Massimo id titolo, Giorni
        $n = 0;
        $giaInsultati = [];
        foreach ($patenti as $patente) {
            $_v = $patente->volontario();
            if (in_array($_v->id, $giaInsultati)) {
                continue;
                // Il prossimo...
            }
            $giaInsultati[] = $_v->id;
            $m = new Email('patenteScadenza', 'Avviso patente CRI in scadenza');
            $m->a = $_v;
            $m->_NOME = $_v->nome;
            $m->_SCADENZA = date('d-m-Y', $patente->fine);
            $m->invia();
            $n++;
        }
        return "Inviate {$n} notifiche di scadenza patente";
    }, $log, $ok);
    cronjobEsegui("Invio reminder patenti civili in scadenza nei prossimi 15gg", function () {
        $patenti = TitoloPersonale::inScadenza(70, 77, 15);
        // Minimo id titolo, Massimo id titolo, Giorni
        $n = 0;
        $giaInsultati = [];
        foreach ($patenti as $patente) {
            $_v = $patente->volontario();
            if (in_array($_v->id, $giaInsultati)) {
                continue;
                // Il prossimo...
            }
            $giaInsultati[] = $_v->id;
            $m = new Email('patenteScadenzaCivile', 'Avviso patente Civile in scadenza');
            $m->a = $_v;
            $m->_NOME = $_v->nome;
            $m->_SCADENZA = date('d-m-Y', $patente->fine);
            $m->invia();
            $n++;
        }
        return "Inviate {$n} notifiche di scadenza patente civili";
    }, $log, $ok);
    cronjobEsegui("Invio del riepilogo per i presidenti", function () {
        $n = 0;
        foreach (Comitato::elenco() as $comitato) {
            $a = count($comitato->appartenenzePendenti());
            $b = count($comitato->titoliPendenti());
            $c = count($comitato->fototesserePendenti());
            $z = $a + $b + $c;
            if ($z == 0) {
                continue;
            }
            foreach ($comitato->volontariPresidenti() as $presidente) {
                $m = new Email('riepilogoPresidente', "Promemoria: Ci sono {$c} azioni in sospeso");
                $m->a = $presidente;
                $m->_NOME = $presidente->nomeCompleto();
                $m->_COMITATO = $comitato->nomeCompleto();
                $m->_APPPENDENTI = $a;
                $m->_TITPENDENTI = $b;
                $m->_FOTPENDENTI = $c;
                $m->invia();
                $n++;
            }
        }
        return "Inviati {$n} promemoria ai presidenti";
    }, $log, $ok);
    cronjobEsegui("Invio reminder anniversario riserva a breve", function () {
        $n = 0;
        foreach (Riserva::inScadenza() as $r) {
            $n++;
            $m = new Email('promemoriaScadenzaRiserva', "Promemoria: Riserva in scadenza tra pochi giorni");
            $m->a = $r->volontario();
            $m->_NOME = $r->volontario()->nome;
            $m->_SCADENZA = date('d-m-Y', $r->fine);
            $m->invia();
        }
        return "Notificate {$n} riserve in scadenza";
    }, $log, $ok);
    cronjobEsegui("Invio reminder scadenza estensione a breve", function () {
        $n = 0;
        foreach (Estensione::inScadenza() as $e) {
            $n++;
            $m = new Email('promemoriaScadenzaEstensione', "Promemoria: Estensione in scadenza tra pochi giorni");
            $m->a = $e->volontario();
            $m->_NOME = $e->volontario()->nome;
            $m->_COMITATO = $e->appartenenza()->comitato()->nomeCompleto();
            $m->_SCADENZA = date('d-m-Y', $e->appartenenza()->fine);
            $m->invia();
        }
        return "Notificate {$n} estensioni in scadenza";
    }, $log, $ok);
    cronjobEsegui("Controllo aspiranti, promemoria e cancellazione", function () use($db) {
        $n = $c = 0;
        $query = "\n                SELECT  aspiranti.utente,\n                        COUNT(corsibase.geo),\n                        aspiranti.id\n                FROM    aspiranti, corsibase\n                WHERE   utente NOT IN (\n                    SELECT  volontario\n                    FROM    partecipazioniBase\n                    WHERE   stato >= 10\n                )\n                AND         ST_DISTANCE( corsibase.geo, aspiranti.geo ) < aspiranti.raggio\n                AND         corsibase.stato = 30\n                AND         corsibase.inizio >= UNIX_TIMESTAMP()\n                GROUP BY    aspiranti.utente\n            ";
        $query = $db->query($query);
        while ($r = $query->fetch(PDO::FETCH_NUM)) {
            try {
                $u = Utente::id($r[0]);
            } catch (Errore $e) {
                $c++;
                $a = Aspirante::id($r[2]);
                $a->cancella();
                continue;
            }
            $n++;
            $m = new Email('promemoriaCorsiBase', "Entra in CRI: Ci sono {$r[1]} Corsi Base vicino a te");
            $m->a = $u;
            $m->_NOME = $u->nome;
            $m->_NUMERO = $r[1];
            $m->accoda();
        }
        return "Inviati {$n} promemoria ad Aspiranti, cancellati {$c} aspiranti invalidi";
    }, $log, $ok);
    return $ok;
}