define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', false);
require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
sfContext::getInstance();
print "Fetching data... \n";
$c = new Criteria();
$c->setOffset(3013213);
$c->setLimit(600000);
$votazioni = OppVotazioneHasPoliticoPeer::doSelect($c);
foreach ($votazioni as $votazione) {
    echo "votazione: " . $votazione->getVotazioneId() . " politico: " . $votazione->getPoliticoId() . "\n";
    $c1 = new Criteria();
    $c1->add(OppVotazionePeer::ID, $votazione->getVotazioneId(), Criteria::EQUAL);
    $vot = OppVotazionePeer::doSelectOne($c1);
    $c2 = new Criteria();
    $c2->add(OppSedutaPeer::ID, $vot->getSedutaId(), Criteria::EQUAL);
    $seduta = OppSedutaPeer::doSelectOne($c2);
    $senatori_a_vita = array("1529", "1606", "1719", "1519", "1682", "1456", "1524");
    $c3 = new Criteria();
    $c3->add(OppCaricaPeer::POLITICO_ID, $votazione->getPoliticoId());
    if (!in_array($votazione->getPoliticoId(), $senatori_a_vita)) {
        $c3->add(OppCaricaPeer::LEGISLATURA, $seduta->getLegislatura());
    }
    $carica = OppCaricaPeer::doSelectOne($c3);
    $votazioneCarica = new OppVotazioneHasCarica();
    $votazioneCarica->setVotazioneId($votazione->getVotazioneId());
    $votazioneCarica->setCaricaId($carica->getId());
    $votazioneCarica->setVoto($votazione->getVoto());
    $votazioneCarica->save();
<?php

define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', false);
require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
sfContext::getInstance();
if ($argv[1]) {
    print "elaborazione votazione: " . $argv[1] . "...\n";
    $c = new Criteria();
    $c->add(OppVotazionePeer::ID, $argv[1], Criteria::EQUAL);
    $votazione = OppVotazionePeer::doSelectOne($c);
    if ($votazione) {
        $c = new Criteria();
        $c->add(OppSedutaPeer::ID, $votazione->getSedutaId(), Criteria::EQUAL);
        $seduta = OppSedutaPeer::doSelectOne($c);
        $c = new Criteria();
        $crit0 = $c->getNewCriterion(OppGruppoRamoPeer::RAMO, $seduta->getRamo());
        $crit1 = $c->getNewCriterion(OppGruppoRamoPeer::DATA_INIZIO, $seduta->getData(), Criteria::LESS_EQUAL);
        $crit2 = $c->getNewCriterion(OppGruppoRamoPeer::DATA_FINE, $seduta->getData(), Criteria::GREATER_THAN);
        $crit3 = $c->getNewCriterion(OppGruppoRamoPeer::DATA_FINE, NULL, Criteria::ISNULL);
        $crit2->addOr($crit3);
        $crit0->addAnd($crit1);
        $crit0->addAnd($crit2);
        $c->add($crit0);
        $gruppi_votazione = OppGruppoRamoPeer::doSelect($c);
        foreach ($gruppi_votazione as $gruppo) {
            $gr = OppGruppoPeer::retrieveByPk($gruppo->getGruppoId());
            $voto_gruppo = OppVotazionePeer::doSelectVotoGruppo($votazione->getId(), $gr->getNome());
            $c = new Criteria();
 public static function doSelectVotoGruppo($votazione_id, $gruppo)
 {
     $c = new Criteria();
     $c->add(OppVotazionePeer::ID, $votazione_id);
     $votazione = OppVotazionePeer::doSelectOne($c);
     $data_votazione = $votazione->getOppSeduta()->getData();
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(OppVotazioneHasCaricaPeer::VOTO);
     $c->addAsColumn('CONT', 'COUNT(*)');
     $c->addJoin(OppVotazioneHasCaricaPeer::CARICA_ID, OppCaricaPeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, OppVotazionePeer::ID, Criteria::INNER_JOIN);
     //$c->addJoin(OppVotazionePeer::SEDUTA_ID, OppSedutaPeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppCaricaPeer::ID, OppCaricaHasGruppoPeer::CARICA_ID, Criteria::INNER_JOIN);
     $c->addJoin(OppCaricaHasGruppoPeer::GRUPPO_ID, OppGruppoPeer::ID, Criteria::INNER_JOIN);
     $c->add(OppVotazioneHasCaricaPeer::VOTO, 'Assente', Criteria::NOT_EQUAL);
     $cton1 = $c->getNewCriterion(OppVotazioneHasCaricaPeer::VOTO, 'Favorevole', Criteria::EQUAL);
     $cton2 = $c->getNewCriterion(OppVotazioneHasCaricaPeer::VOTO, 'Contrario', Criteria::EQUAL);
     $cton1->addOr($cton2);
     $cton3 = $c->getNewCriterion(OppVotazioneHasCaricaPeer::VOTO, 'Astenuto', Criteria::EQUAL);
     $cton1->addOr($cton3);
     $c->add($cton1);
     $c->add(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, $votazione_id, Criteria::EQUAL);
     $c->add(OppGruppoPeer::NOME, $gruppo, Criteria::EQUAL);
     $c->add(OppCaricaHasGruppoPeer::DATA_INIZIO, $data_votazione, Criteria::LESS_EQUAL);
     $cton4 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, $data_votazione, Criteria::GREATER_EQUAL);
     $cton5 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, null, Criteria::ISNULL);
     $cton4->addOr($cton5);
     $c->add($cton4);
     $c->addGroupByColumn(OppVotazioneHasCaricaPeer::VOTO);
     $c->addDescendingOrderByColumn('CONT');
     $c->setLimit(2);
     $rs = OppCaricaPeer::doSelectRS($c);
     $voto = 'nv';
     $voti = array();
     $i = 0;
     while ($rs->next()) {
         $voti[$i] = array('voto' => $rs->getString(1), 'numero' => $rs->getInt(2));
         $i++;
     }
     if (count($voti) > 1 && $voti[0]['numero'] != $voti[1]['numero'] || count($voti) == 1) {
         $voto = $voti[0]['voto'];
     }
     return $voto;
 }