コード例 #1
0
 public function executeCosa()
 {
     $this->_getAndCheckParlamentare();
     if ($this->carica) {
         $this->id_gruppo_corrente = $this->parlamentare->getGruppoCorrente()->getId();
         $this->incarico = OppChgIncaricoPeer::getIncaricoGruppoCorrente($this->carica->getId(), $this->id_gruppo_corrente);
         $this->acronimo_gruppo_corrente = $this->parlamentare->getGruppoCorrente()->getAcronimo();
         $this->gruppi = OppCaricaHasGruppoPeer::doSelectTuttiGruppiPerCarica($this->carica->getId(), 2);
         $this->circoscrizione = $this->carica->getCircoscrizione();
         // $this->cariche = $this->parlamentare->getAltreCariche();
         // reset sessioni utente filtri e ordinamento
         $this->session = $this->getUser();
         $this->session->getAttributeHolder()->removeNamespace('acts_filter');
         $this->session->getAttributeHolder()->removeNamespace('opp_parlamentare_atti/sort');
         $this->session->getAttributeHolder()->removeNamespace('votes_filter');
         $this->session->getAttributeHolder()->removeNamespace('opp_parlamentare_voti/sort');
         $c = new Criteria();
         $c->addJoin(OppSedutaPeer::ID, OppVotazionePeer::SEDUTA_ID);
         if ($this->carica->getTipoCaricaId() == 1) {
             $ramo = 'C';
         }
         if ($this->carica->getTipoCaricaId() == 4 || $this->carica->getTipoCaricaId() == 5) {
             $ramo = 'S';
         }
         $this->ramo = $ramo == 'C' ? 'camera' : 'senato';
         if ($this->ramo == 'camera') {
             $this->getResponse()->setTitle('On. ' . $this->parlamentare->getNome() . ' ' . $this->parlamentare->getCognome() . ' - cosa fa in parlamento - ' . sfConfig::get('app_main_title'));
             $c->add(OppSedutaPeer::RAMO, 'C');
         } else {
             $this->getResponse()->setTitle('Sen. ' . $this->parlamentare->getNome() . ' ' . $this->parlamentare->getCognome() . ' - cosa fa in parlamento - ' . sfConfig::get('app_main_title'));
             $c->add(OppSedutaPeer::RAMO, 'S');
         }
         $this->response->addMeta('description', 'Come vota, quali atti presenta, a chi è più vicino, quanto è presente, l\'indice di produttività di ' . $this->parlamentare->getNome() . ' ' . $this->parlamentare->getCognome(), true);
         $c->addDescendingOrderByColumn(OppSedutaPeer::DATA);
         $result = OppSedutaPeer::doSelectOne($c);
         $this->ultima_votazione = $result->getData();
         $nparl = OppCaricaPeer::getNParlamentari($ramo);
         $this->presenze = $this->carica->getPresenze();
         $this->assenze = $this->carica->getAssenze();
         $this->missioni = $this->carica->getMissioni();
         $this->nvotazioni = $this->presenze + $this->assenze + $this->missioni;
         $this->presenze_perc = $this->presenze * 100 / $this->nvotazioni;
         $this->assenze_perc = $this->assenze * 100 / $this->nvotazioni;
         $this->missioni_perc = $this->missioni * 100 / $this->nvotazioni;
         $this->presenze_media = OppCaricaPeer::getSomma('presenze', $ramo) / $nparl;
         $this->assenze_media = OppCaricaPeer::getSomma('assenze', $ramo) / $nparl;
         $this->missioni_media = OppCaricaPeer::getSomma('missioni', $ramo) / $nparl;
         $this->nvotazioni_media = $this->presenze_media + $this->assenze_media + $this->missioni_media;
         $this->presenze_media_perc = $this->presenze_media * 100 / $this->nvotazioni_media;
         $this->assenze_media_perc = $this->assenze_media * 100 / $this->nvotazioni_media;
         $this->missioni_media_perc = $this->missioni_media * 100 / $this->nvotazioni_media;
         // calcolo totale ribellioni e presenze ai fini del calcolo delle perc. a partire dai gruppi
         $pres_ribelli = 0;
         $ribellioni = 0;
         foreach ($this->gruppi as $acronimo => $gruppo) {
             $pres_ribelli += $gruppo['presenze'];
             $ribellioni += $gruppo['ribelle'];
         }
         $this->nvoti_validi = $pres_ribelli;
         $pres_ribelli_media = OppCaricaHasGruppoPeer::getSomma('presenze', $ramo) / $nparl;
         $this->ribelli = $ribellioni;
         if ($ribellioni == 0) {
             $this->ribelli_perc = 0;
         } else {
             $this->ribelli_perc = $ribellioni * 100 / $this->nvoti_validi;
         }
         $this->ribelli_media = OppCaricaHasGruppoPeer::getSomma('ribelle', $ramo) / $nparl;
         $this->ribelli_media_perc = $this->ribelli_media * 100 / $pres_ribelli_media;
         // altre cariche da openpolis
         $xml = simplexml_load_file("http://politici.openpolis.it/api/chargeFindByPolitician/3114a2d106054d26c364c4cfff85910f97f7e29a/" . $this->parlamentare->getId());
         $this->descrizione_cariche = array();
         if ($xml) {
             $this->descrizione_cariche = $xml->xpath("//description");
         }
         // da quanti giorni è parlamentare da openpolis
         $xml = simplexml_load_file("http://politici.openpolis.it/api/parlamentareHowDays?id=" . $this->parlamentare->getId());
         $this->giorni = array();
         if ($xml) {
             $giorni = $xml->xpath("//days");
         }
         if ($giorni[0] / 365 >= 2) {
             $durata = intval($giorni[0] / 365) . ' anni e ';
         } elseif ($giorni[0] / 365 >= 1) {
             $durata = 'un anno e ';
         } else {
             $durata = "";
         }
         if ($giorni[0] % 365 > 0) {
             $durata = $durata . $giorni[0] % 365 . " giorni";
         }
         $this->durata = $durata;
     }
 }