From 033d01ed6287a807d16951c60a253989959d3116 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Thu, 12 May 2016 15:23:07 +0200 Subject: [PATCH] Recherche dirigeant --- .../controllers/DirigeantController.php | 309 +++++++++++++++++- .../default/scripts/dirigeant/index.phtml | 3 +- .../default/scripts/dirigeant/list.phtml | 112 ++++++- 3 files changed, 421 insertions(+), 3 deletions(-) diff --git a/application/modules/search/controllers/DirigeantController.php b/application/modules/search/controllers/DirigeantController.php index 43acf6ee7..f916bb8a9 100644 --- a/application/modules/search/controllers/DirigeantController.php +++ b/application/modules/search/controllers/DirigeantController.php @@ -21,5 +21,312 @@ class Search_DirigeantController extends Zend_Controller_Action $this->view->assign('form', $form); } - public function listAction(){} + public function listAction() + { + $request = $this->getRequest(); + $params = $request->getParams(); + $type = $request->getParam('type', ''); + $token = $request->getParam('token', null); + $filtre = $request->getParam('filtre', 'tout'); + + $listParams = array('dirNom', 'dirPrenom', 'dirDateNaissJJ', 'dirDateNaissMM', 'dirDateNaissAAAA', 'dirCpVille'); + $rechercheParams = new Scores_Session_Recherche(); + + //Si le formulaire a été soumis alors on enregistre en session et on redirige + if ( !empty($type) ) { + //Vérification si au moins un champs a été saisie + $nbField = count($listParams); + foreach($listParams as $key){ + if(!empty($params[$key])){ + $params[$key] = strip_tags($params[$key]); + } else { + $nbField--; + } + } + if ($nbField==0){ + $this->redirect($this->view->url(array())); + } + + //Redirection + $token = $rechercheParams->save($type, $params); + $this->redirect($this->view->url(array('token'=>$token))); + } + + //On selectionne en session + if (count($rechercheParams->liste())>0){ + $recherche = $rechercheParams->get($token); + $type = $recherche['type']; + $params = $recherche['params']; + } + + $user = new Scores_Utilisateur(); + $this->view->assign('IDENTITE', $user->checkPerm('IDENTITE')); + + //Pagination + $page = $request->getParam('page', 1); + if ( $page <= 0 ) $page = 1; + $nbAffichage = $user->getNbRep(); + $position = ($page - 1 ) * $nbAffichage; + + require_once 'Scores/WsScores.php'; + $ws = new WsScores(); + + // Type de recherche = dirigeants + //$dirNom = preg_replace('/[^0-9A-Z]/', ' ', strtoupper($params['dirNom'])); + //$dirPrenom = preg_replace('/[^0-9A-Z]/', ' ', strtoupper($params['dirPrenom'])); + + $dirNom = $params['dirNom']; + $dirPrenom = $params['dirPrenom']; + + $dirDateNaissJJ = preg_replace('/[^0-9]/', '', $params['dirDateNaissJJ']); + if (intval($dirDateNaissJJ)<0 || intval($dirDateNaissJJ>31)){ + //die('Jour de naissance incorrect !'); + } + $dirDateNaissMM = preg_replace('/[^0-9]/', '', $params['dirDateNaissMM']); + if (intval($dirDateNaissMM)<0 || intval($dirDateNaissMM>31)){ + //die('Mois de naissance incorrect !'); + } + $dirDateNaissAAAA = preg_replace('/[^0-9]/', '', $params['dirDateNaissAAAA']); + $year = date('Y')-18; + if (intval($dirDateNaissAAAA)<0 || intval($dirDateNaissAAAA)>$year){ + //die('Année de naissance incorrecte !'); + } + $dirDateNaiss = $dirDateNaissJJ.'/'.$dirDateNaissMM.'/'.$dirDateNaissAAAA; + if ($dirDateNaiss=='//') $dirDateNaiss = ''; + $dirCpVille = preg_replace('/ +/',' ', preg_replace('/[^0-9A-Z]/', ' ', + strtoupper($params['dirCpVille'])) + ); + /* + if (preg_match('/^([0-9]{2,5})([\D]+)/i', $dirCpVille, $matches)) + { + $dirCp = trim($matches[1]); + $dirVille = trim($matches[2]); + } + else { + $dirVille = trim($dirCpVille); + } + */ + + $criteres = array(); + $criteres['dirNom'] = $dirNom; + $criteres['dirPrenom'] = $dirPrenom; + $criteres['dirDateNaiss'] = $dirDateNaiss; + $criteres['lieuNaiss'] = $dirCpVille; + + $reponse = $ws->searchDir($criteres, $position, $user->getNbRep()); + + $nbReponses = 0; + $nbReponsesTotal = 0; + + if (is_object($reponse) && $reponse !== false) + { + $etabs = $reponse->result->item; + $criteresTexte = ''; + foreach ($criteres as $value){ + if (!empty($value)) $criteresTexte.= $value.' '; + } + $criteresTexte = trim($criteresTexte); + $params['action'] = 'dirigeant'; + foreach ($params as $key => $param) { + $params[$key] = str_replace('/', ' ', $params[$key]); + } + + $criteresLien = $this->view->url($params); + + $liste = array(); + if (count($etabs)>0) { + foreach($etabs as $i => $etab) { + $item = array(); + $item['position'] = ($position)+$i+1; + $item['id'] = $etab->id; + $item['siren'] = $etab->Siren; + $item['siret'] = $etab->Siren.$etab->Nic; + $item['InfoSiret'] = $etab->Siren.' '.$etab->Nic; + $item['InfoNom'] = $etab->Nom; + $item['source'] = $etab->Source; + $item['sourceId'] = $etab->SourceId; + + $nomDetail = ''; + if ($etab->Nom2<>'' || $etab->Enseigne<>'' || $etab->Sigle<>'') { + $nomDetail.= ''; + if ($etab->Nom2!='') $nomDetail.= $etab->Nom2.'
'; + if ($etab->Enseigne<>'') $nomDetail.= 'Enseigne : '.$etab->Enseigne.'    '; + if ($etab->Sigle<>'') $nomDetail.= 'Sigle : '.$etab->Sigle; + $nomDetail.= '

'; + } + $item['InfoNomDetail'] = $nomDetail; + $item['InfoSiret'] = substr($etab->Siren,0,3).' '.substr($etab->Siren,3,3).' '.substr($etab->Siren,6,3).' '.$etab->Nic; + $infoEtab = ''; + + if (null !== $etab->Pays && strtolower($etab->Pays)!='france') { + $infoEtab.= "Etablissement à l'étranger"; + } else { + if ($etab->Siege==1){ + $infoEtab.= 'Établissement siège '; + } elseif ($etab->Siege==2) { + $infoEtab.= 'Établissement principal '; + } else { + $infoEtab.= 'Établissement secondaire '; + } + + if ($etab->Actif==1){ + $infoEtab.= 'actif'; + } else { + $infoEtab.= 'inactif'; + } + + //Etablissement communiqués par le RCS n'ayant pas de NIC à l'INSEE + if (intval($etab->Nic)==0 || intval($etab->Nic)>=99990) { + $infoEtab.=' provisoire'; + } + + if ($etab->Siege!=1 || ($etab->Siege==1 && $etab->Actif!=1)) { + $url = $this->view->url(array( + 'controller'=>'identite', + 'action'=>'fiche', + 'id' => $etab->id, + 'siret' => $etab->Siren, + ), 'default', true); + + if ( $user->checkPerm('IDENTITE') ) { + $infoEtab.= ' (Accès '; + if ($etab->Siege==1) { + $infoEtab.= 'dernier '; + } + $infoEtab.= 'siège)'; + } + } + } + + $item['InfoEtab'] = $infoEtab; + + $adresse = $etab->Adresse; + if ( !empty($etab->Adresse2) ) { + $adresse.= '
'.$etab->Adresse2; + } + if ( !empty($etab->Ville) && intval($etab->CP) > 0) { + $adresse.= '
'.$etab->CP." ".$etab->Ville.""; + } + if (null !== $etab->Pays) { + $adresse.= '
'.$etab->Pays.''; + } + + $item['InfoAdresse'] = $adresse; + + if ( $etab->Actif!=1 ) { + $item['class'] = 'StyleInfoData'; + } else { + $item['class'] = 'StyleInfoDataActif'; + } + + $forme = ''; + if ( trim($etab->FJ)!='' && intval($etab->FJ)!=0 ) + { + $forme = 'Forme : '.$etab->FJLib.' ('.$etab->FJ.')
'; + } + $item['InfoForme'] = $forme; + + $activite = ''; + if (trim($etab->NafEnt)!='') + { + $activite = 'Activité : '.$etab->NafEntLib.' ('.$etab->NafEnt.')
'; + } + $item['InfoActivite'] = $activite; + + $item['InfoDirigeant'] = 'Dirigeant recherché : '; + if ($etab->DirRs!='') { + $item['InfoDirigeant'].= ''.$etab->DirRs.', représenté par '; + } + $item['InfoDirigeant'].= $etab->DirNom .' '. $etab->DirPrenom; + if ( $etab->DirNomUsage != '' && $etab->DirNomUsage != $etab->DirNom) { + $item['InfoDirigeant'].= ' ('. $etab->DirNomUsage . ')'; + } + $item['InfoDirigeant'].= ', '.$etab->DirFonction.'
'; + + //Affichage accès direct aux pages + $liens = array(); + /** + * test en dur clients pour bilans + * @todo client = 34 + * @todo client = 60 + */ + if ($user->getIdClient()==34 || $user->getIdClient()==60) { + $liens[] = array( + 'title' => 'Comptes annuels', + 'href' => $this->view->url(array('controller'=>'pieces', 'action'=>'bilans', + 'siret'=>$etab->Siren.$etab->Nic, 'id'=>$etab->id), 'default', true), + ); + $liens[] = array( + 'title' => 'Actes et status', + 'href' => $this->view->url(array('controller'=>'pieces', 'action'=>'actes', + 'siret'=>$etab->Siren.$etab->Nic, 'id'=>$etab->id), 'default', true), + ); + } + + /** + * test en dur clients pour fiche + * @todo client = 60 + */ + if ($user->getIdClient()==60) { + $liens[] = array( + 'title' => 'Fiche AGS', + 'href' => $this->view->url(array('controller'=>'identite', 'action'=>'fichepc', + 'siret'=>$etab->Siren.$etab->Nic, 'id'=>$etab->id), 'default', true), + ); + } + if (count($liens)>0) { + $item['lien'] = $liens; + } + + $liste[] = $item; + } + } + + } elseif (is_string($reponse)){ + $this->forward('index', 'entreprise', 'search', array_merge( $params, array('message' => $reponse))); + } else { + $this->forward('soap', 'error', 'default'); + } + + $this->view->assign('blockInvestig', $user->checkPerm('INVESTIG')); + + $this->view->assign('blockDirToEntreprise', true); + $this->view->assign('searchDirToEntrepriseTxt', trim($criteres['dirNom'].' '.$criteres['dirPrenom'])); + $this->view->assign('searchDirToEntrepriseLien', $this->view->url(array('module'=>'search', 'controller'=>'entreprise', + 'action'=>'list', 'type'=>'ent', 'raisonSociale'=>trim($criteres['dirNom'].' '.$criteres['dirPrenom'])))); + + $this->view->assign('liste', $liste); + + //Calcul pagination + $nbReponses = $reponse->nbReponses; + $nbReponsesTotal = $reponse->nbReponsesTotal; + if ($nbReponses < $nbReponsesTotal) { + $pageTotal = ceil( $nbReponsesTotal / $nbAffichage ); + $pageCurrent = $page; + $pagePrev = $page - 1; + if ($pagePrev < 1) { + $pagePrev = 1; + } + $pageNext = $page + 1; + if( $pageNext > $pageTotal ) { + $pageNext = $pageTotal; + } + } else { + $pageTotal = $pageCurrent = 1; + } + $this->view->assign('PageTotal', $pageTotal); + $this->view->assign('PagePrev', $pagePrev); + $this->view->assign('PageNext', $pageNext); + $this->view->assign('PageCurrent', $pageCurrent); + + $this->view->assign('nbReponses', empty($nbReponses) ? 0 : $nbReponses); + $this->view->assign('nbReponsesTotal', empty($nbReponsesTotal) ? 0 : $nbReponsesTotal); + + $this->view->assign('token', $token); + + $this->view->assign('criteresTexte', $criteresTexte); + $this->view->assign('criteresLien', $criteresLien); + $this->view->assign('info', $reponse->info); + } } \ No newline at end of file diff --git a/application/modules/search/views/default/scripts/dirigeant/index.phtml b/application/modules/search/views/default/scripts/dirigeant/index.phtml index 444f18fcc..7f3c36440 100644 --- a/application/modules/search/views/default/scripts/dirigeant/index.phtml +++ b/application/modules/search/views/default/scripts/dirigeant/index.phtml @@ -2,7 +2,8 @@

translate("Recherche Dirigeant")?>

-
+ type?> diff --git a/application/modules/search/views/default/scripts/dirigeant/list.phtml b/application/modules/search/views/default/scripts/dirigeant/list.phtml index b3d9bbc7f..e6955eb4c 100644 --- a/application/modules/search/views/default/scripts/dirigeant/list.phtml +++ b/application/modules/search/views/default/scripts/dirigeant/list.phtml @@ -1 +1,111 @@ - + +
+

+ +nbReponsesTotal?> réponsenbReponsesTotal>1){?>s + avec les critères "criteresTexte?>". +PageTotal!=1) {?> +nbReponses?> résultats affichés. Page PageCurrent.'/'.$this->PageTotal.'.';?> + + +filtres) { ?> + + + + +

+
+ +info)) { ?> +
+

+info?>

+
+ + +
    +liste as $item ) { ?> +
  1. + +IDENTITE) {?> + + + + + + + + +
    + + RCS +
    +
    +
    + + + + + + + + 0) {?> +
    Liens : + + + +
  2. + +
+ +PageTotal>1) {?> +
+ +
+ + + + +
+rechCsv) { ?> +filtres as $k => $filtre) { if ( !empty($filtre['select']) ) break; }?> +

+ +Exporter les résultats de la recherche en CSV. +

+ + +blockDirToEntreprise){ ?> +

+Effectuer une recherche entreprise avec les paramètres " +searchDirToEntrepriseTxt?>" +

+ + +blockInvestig) { ?> +

+Si aucun résultat ne correspond à votre recherche. +Cliquez-ici. +

+ + +
+ +
\ No newline at end of file