Changeset 3328


Ignore:
Timestamp:
Nov 25, 2013, 3:46:16 AM (7 years ago)
Author:
roux
Message:

add list organismes and list députés by organisme in API

Location:
cpc/trunk/project/apps/frontend
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/config/routing.yml.example

    r3303 r3328  
    207207  url: /profession/
    208208  param: {module: parlementaire, action: listProfession}
     209list_parlementaires_groupe_api:
     210  url: /groupe/:acro/:format
     211  param: {module: api, action: listParlementairesGroupe}
    209212list_parlementaires_groupe:
    210213  url: /groupe/:acro
    211214  param: {module: parlementaire, action: listGroupe}
     215list_parlementaires_organisme_api:
     216  url: /organisme/:orga/:format
     217  param: {module: api, action: listParlementaires}
    212218list_parlementaires_organisme:
    213219  url: /organisme/:slug
    214220  param: {module: parlementaire, action: listOrganisme}
     221list_organismes_api:
     222  url: /organismes/:type/:format
     223  param: {module: api, action: listOrganismes}
    215224
    216225photo_parlementaire:
  • cpc/trunk/project/apps/frontend/modules/api/actions/actions.class.php

    r3303 r3328  
    132132  }
    133133
    134   public function executeListParlementaires(sfWebRequest $request)
    135   {
     134  public function executeListOrganismes(sfWebRequest $request) {
     135    $type = $request->getParameter('type');
     136    $this->forward404Unless($type == "extra" || $type == "groupes" || $type == "parlementaire" || $type == "groupe");
     137    $query = Doctrine::getTable('Organisme')->createQuery('o')
     138      ->innerJoin('o.ParlementaireOrganisme po')
     139      ->where('o.type = ?', $type)
     140      ->groupBy('o.id')
     141      ->orderBy('o.nom');
     142    $orgas = $query->execute();
     143    $this->champs = array();
     144    $this->res = array('organismes' => array());
     145    $this->breakline = 'organisme';
     146    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
     147    foreach($orgas as $o) {
     148      $orga = array();
     149      $orga['id'] = $o->id * 1;
     150      $orga['slug'] = $o->slug;
     151      $orga['nom'] = $o->nom;
     152      $orga['type'] = $o->type;
     153      $orga['url_nosdeputes'] = url_for('@list_parlementaires_organisme?slug='.$orga['slug'], 'absolute=true');
     154      $orga['url_nosdeputes_api'] = url_for('@list_parlementaires_organisme_api?format='.$request->getParameter('format').'&orga='.$orga['slug'], 'absolute=true');
     155      if ($request->getParameter('format') == 'csv')
     156       foreach(array_keys($orga) as $key)
     157        if (!isset($this->champs[$key]))
     158         $this->champs[$key] = 1;
     159      $this->res['organismes'][] = array('organisme' => $orga);
     160    }
     161    myTools::templatize($this, $request, 'nosdeputes.fr_organismes'.date('Y-m-d'));
     162  }
     163
     164  public function executeListParlementairesGroupe(sfWebRequest $request) {
     165    $acro = strtolower($request->getParameter('acro'));
     166    $nom = Organisme::getNomByAcro($acro);
     167    $this->forward404Unless($nom);
     168    $orga = Doctrine::getTable('Organisme')->findOneByNom($nom);
     169    $this->forward404Unless($orga);
     170    $request->setParameter('orga', $orga->slug);
     171    $this->executeListParlementaires($request);
     172  }
     173
     174  public function executeListParlementaires(sfWebRequest $request) {
    136175    $query = Doctrine::getTable('Parlementaire')->createQuery('p');
    137176    if ($request->getParameter('current') == true) {
     
    144183      $this->multi['site'] = 1;
    145184    }
     185    $orga = $request->getParameter('orga');
     186    if ($orga) {
     187      $this->forward404Unless(Doctrine::getTable('Organisme')->findOneBySlug($orga));
     188      $query->leftJoin('p.ParlementaireOrganisme po, po.Organisme o')
     189        ->addWhere('o.slug = ?', $orga)
     190        ->addOrderBy('po.importance DESC, p.nom_de_famille');
     191    }
    146192    $deputes = $query->execute();
    147193    $this->champs = array();
     
    149195    $this->breakline = 'depute';
    150196    foreach($deputes as $dep) {
    151       $depute = $this->getParlementaireArray($dep, $request->getParameter('format'), ($request->getParameter('current') == true ? 1 : 2));
     197      $depute = $this->getParlementaireArray($dep, $request->getParameter('format'), ($orga || $request->getParameter('current') == true ? 1 : 2));
     198      if ($orga)
     199        $depute['fonction'] = $dep['ParlementaireOrganisme'][0]['fonction'];
    152200      if ($request->getParameter('format') == 'csv')
    153201       foreach(array_keys($depute) as $key)
Note: See TracChangeset for help on using the changeset viewer.