diff --git a/src/Controller/EmpruntsController.php b/src/Controller/EmpruntsController.php index e377339..ae55044 100755 --- a/src/Controller/EmpruntsController.php +++ b/src/Controller/EmpruntsController.php @@ -199,4 +199,95 @@ class EmpruntsController extends AppController } return $this->redirect(['action' => 'index']); } + + + + /** + * GetConditionForField method + * + * @param unknown $fieldName + * @return string[]|NULL + */ + private function getConditionForField($fieldName) { + $searchFieldName = 's_' . $fieldName; + if ( isset($this->request->data[$searchFieldName]) && ($this->request->data[$searchFieldName] != '')) return ["Suivis.$fieldName LIKE" => '%'.$this->request->data[$searchFieldName].'%']; + return NULL; + } + + public function find() { + + + + $s_site = $this->Emprunts->Sites->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'Sites.nom']); + $s_nomEmprunteur = $this->Emprunts->find('list', [ 'keyField' => 'nom_emprunteur', 'valueField' => 'nom_emprunteur', 'order' => 'nom_emprunteur']); + $s_e_lieu_detail = $this->Emprunts->find('list', [ 'keyField' => 'e_lieu_detail' , 'valueField' => 'e_lieu_detail', 'order' => 'e_lieu_detail', 'conditions' => array('emprunt_interne =' => '1')]); + $materiels = $this->Emprunts->Materiels; + $nom_emprunteur_ext = $this->Emprunts->find('list', [ 'keyField' => 'nom_emprunteur' , 'valueField' => 'nom_emprunteur', 'order' => 'nom_emprunteur', 'conditions' => ['emprunt_interne =' => '0' ]]); + $nom_emprunteur_int = $this->Emprunts->find('list', [ 'keyField' => 'nom_emprunteur' , 'valueField' => 'nom_emprunteur', 'order' => 'nom_emprunteur', 'conditions' => array('emprunt_interne =' => '1' )]); + $s_laboratoire =$this->Emprunts->find('list', [ 'keyField' => 'laboratoire' , 'valueField' => 'laboratoire', 'order' => 'laboratoire' , 'conditions' => array('emprunt_interne =' => '0')]); + $sites = $this->Emprunts->Sites; + + $this->set(compact('s_site','s_nomEmprunteur', 'materiels','s_e_lieu_detail', 'nom_emprunteur_int','nom_emprunteur_ext','s_laboratoire','sites')); + + $resultTri = $this->request->session()->read("resultTri"); + + if ($this->request->is('post')) { + $specificFieldsConditions = NULL; + $nom_emprunteur = NULL; + $periode_interventionRequest = NULL; + if ($this->request->data['s_date_emprunt'] != '') $periode_interventionRequest['Emprunts.date_emprunt >='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->data['s_date_emprunt']))); + if ($this->request->data['s_date_retour_emprunt'] != '') $periode_interventionRequest['Emprunts.date_retour_emprunt <='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->data['s_date_retour_emprunt']))); + if($this->request->data['emprunt_interne'] == true){ + $nom_emprunteur['Emprunts.emprunt_interne =']= true; + if($this->request->data['nom_emprunteur_int'] != '') + $nom_emprunteur['Emprunts.nom_emprunteur =']= $this->request->data['nom_emprunteur_int']; + if($this->request->data['e_lieu_detail'] != '') + $nom_emprunteur['Emprunts.e_lieu_detail =']= $this->request->data['e_lieu_detail']; + if($this->request->data['site'] != '') + $nom_emprunteur['Emprunts.site_id =']= $this->request->data['site']; + }else { + $nom_emprunteur['Emprunts.emprunt_interne =']= false; + + if($this->request->data['nom_emprunteur_ext'] != '') + $nom_emprunteur['Emprunts.nom_emprunteur =']= $this->request->data['nom_emprunteur_ext']; + if($this->request->data['laboratoire'] != '') + $nom_emprunteur['Emprunts.laboratoire =']= $this->request->data['laboratoire']; + } + + /*if($this->request->data['emprunt_interne'] == true) + $nom_emprunteur['Emprunts.emprunt_interne =']= true; + else + $nom_emprunteur['Emprunts.emprunt_interne =']= false;*/ + $specificFieldsConditions = [ + $periode_interventionRequest, + $nom_emprunteur + ]; + + // CONSTRUCTION DE LA REQUETE SQL COMPLETE = $specificFieldsConditions + // by default, no sort + // + $lastResults = $this->Emprunts->find('all' , ['conditions' => $specificFieldsConditions]); + + $this->paginate = ['limit' => 1000]; + $_results = $this->paginate($lastResults); + $this->set(compact('_results')); + + } // end if() + else if (isset($resultTri) && strstr($this->request->here(), 'sort') != false && strstr($this->request->here(), 'direction') != false) { + $findedEmprunts = []; + + foreach($resultTri as $r) { + array_push($findedEmprunts, $r->id); + } + $res = $this->Emprunts->find('all', ['limit' => 1000]); + for($i = 0; $i < sizeof($findedEmprunts); $i++) { + $res->orWhere(['id =' => $findedEmprunts[$i]]); + } + + $this->paginate = ['limit' => 1000]; + $_results = $this->paginate($res); + $this->set(compact('_results')); + + } + } } diff --git a/src/Controller/SuivisController.php b/src/Controller/SuivisController.php index 2124a94..f866c11 100755 --- a/src/Controller/SuivisController.php +++ b/src/Controller/SuivisController.php @@ -27,7 +27,7 @@ class SuivisController extends AppController $action = $this->request->params['action']; if($this->userHasRole('Administration')) return true; - + //Pour un "utilisateur" if (in_array($action, ['edit', 'delete'])) { $id = (int)$this->request->params['pass'][0]; @@ -67,7 +67,7 @@ class SuivisController extends AppController public function index() { $condition = ''; - + $GM = $this->request->query('GM'); $GT = $this->request->query('GT'); @@ -104,13 +104,19 @@ class SuivisController extends AppController public function view($id = null) { $suivi = $this->Suivis->get($id, [ - 'contain' => ['Materiels', 'Documents', 'TypeSuivis', 'GroupesThematiques', 'GroupesMetiers'] + 'contain' => ['Materiels', 'Documents', 'TypeSuivis', 'GroupesThematiques', 'GroupesMetiers','Unites','Fichemetrologiques'] ]); - - $typeDocuments = TableRegistry::get('TypeDocuments'); - $this->set('typeDocuments', $typeDocuments); - - $this->set('suivi', $suivi); + $typeDocuments = TableRegistry::get('TypeDocuments'); + $fichemet= TableRegistry::get('Fichemetrologiques')->find('all',['conditions' => [ 'suivi_id' => $this->passedArgs[0] ] ,'order' => ('id DESC')]); + + if($fichemet == null) + $fiche = null; + else + $fiche = $fichemet->first(); + + $this->set('typeDocuments', $typeDocuments); + $this->set('suivi', $suivi); + $this->set('fiche', $fiche); $this->set('_serialize', ['suivi']); } @@ -124,28 +130,47 @@ class SuivisController extends AppController $suivi = $this->Suivis->newEntity(); if ($this->request->is('post')) { $suivi = $this->Suivis->patchEntity($suivi, $this->request->data); - + if($this->request->data['typemesure']=="1") + $suivi->typemesure="Indirect"; $suivi->panne_resolu = false; if ($this->Suivis->save($suivi)) { $this->Flash->success(__('Le suivi a bien été ajouté.')); return $this->redirect(['controller' => 'Materiels', 'action' => 'view', $this->passedArgs[0]]); } else { $this->Flash->error(__('Le suivi n\'a pas pu être ajouté.')); + return $this->redirect(['controller' => 'Materiels', 'action' => 'view', $this->passedArgs[0]]); } } $materiels = $this->Suivis->Materiels->find('list'); - - $materiel = $this->Suivis->Materiels->find()->where(['id =' => $this->passedArgs[0]])->first(); - + $unite = TableRegistry::get('Unites')->find('list', [ 'keyfield' => 'id', 'valueField' =>'nom']); + $formule = TableRegistry::get('Formules')->find('list', [ 'keyfield' => 'id', 'valueField' =>'formule']); + $formules = TableRegistry::get('Formules')->find('all'); + $metro = TableRegistry::get('Materiels')->find()->select('metrologie')->where(['id =' => $this->passedArgs[0]])->first()['metrologie']; + $variables = TableRegistry::get('Variables')->find('list')->toArray(); + + $materiel = $this->Suivis->Materiels->find()->where(['id =' => $this->passedArgs[0]])->first(); + //$domaineresp= TableRegistry::get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['sur_categorie_id']; + if($metro ==1){ $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); - + }else{ + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'conditions' => [ 'AND' => [['id !=' => '4'] , ['id !=' => '5'], ['id !=' => '6']]]]); + } + $dom= TableRegistry::get('Materiels')->find()->select('sur_categorie_id')->where(['id =' => $materiel->id])->first()['sur_categorie_id']; + $domaines= TableRegistry::get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['sur_categorie_id']; + if($dom == $domaines) + $domaineresp=true; + else + $domaineresp=false; + + $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesThematiques.nom']); $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesMetiers.nom']); - - $this->set(compact('suivi', 'materiels', 'typeSuivis', 'materiel', 'groupesThematiques', 'groupesMetiers')); + + $this->set(compact('variables','formule','formules','unite','domaineresp','suivi', 'materiels', 'typeSuivis', 'materiel', 'groupesThematiques', 'groupesMetiers')); $this->set('_serialize', ['suivi']); } + /** * Edit method * @@ -168,16 +193,33 @@ class SuivisController extends AppController } } $materiels = $this->Suivis->Materiels->find('list'); + $materiel = $this->Suivis->Materiels->find()->where(['id =' => $suivi->materiel_id])->first(); + $unite = TableRegistry::get('Unites')->find('list', [ 'keyfield' => 'id', 'valueField' =>'nom']); $numMateriel = $this->Suivis->Materiels->find()->select('numero_laboratoire')->where(['id =' => $suivi->get('materiel_id')])->first()['numero_laboratoire']; - + $metro = TableRegistry::get('Materiels')->find()->select('metrologie')->where(['id =' => $suivi->materiel_id])->first()['metrologie']; + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); - $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesThematiques.nom']); + $groupesThematiques = $this->Suivis->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesThematiques.nom']); $groupesMetiers = $this->Suivis->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'order' => 'GroupesMetiers.nom']); - $this->set(compact('suivi', 'materiels', 'typeSuivis', 'numMateriel', 'groupesThematiques', 'groupesMetiers')); + if($metro == 1){ + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); + }else{ + $typeSuivis = $this->Suivis->TypeSuivis->find('list', [ 'keyField' => 'id', 'valueField' => 'nom', 'conditions' => [ 'AND' => [['id !=' => '4'] , ['id !=' => '5'], ['id !=' => '6']]]]); + } + $dom= TableRegistry::get('Materiels')->find()->select('sur_categorie_id')->where(['id =' => $suivi->materiel_id])->first()['sur_categorie_id']; + $domaines= TableRegistry::get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->session()->read('authType'))[0]])->first()['sur_categorie_id']; + if($dom == $domaines) + $domaineresp=true; + else + $domaineresp=false; + + $this->set(compact('unite','metro','domaineresp','suivi','materiel', 'materiels', 'typeSuivis', 'numMateriel', 'groupesThematiques', 'groupesMetiers')); $this->set('_serialize', ['suivi']); + + } /** @@ -199,6 +241,8 @@ class SuivisController extends AppController return $this->redirect(['action' => 'index']); } + + /** * GetConditionForField method * @@ -241,8 +285,8 @@ class SuivisController extends AppController if ($this->request->is('post')) { $specificFieldsConditions = NULL; - - $periode_interventionRequest = NULL; + + $periode_interventionRequest = NULL; $date_intervention = NULL; if ($this->request->data['s_periode_controle1'] != '') $periode_interventionRequest['Suivis.date_controle >='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->data['s_periode_controle1']))); if ($this->request->data['s_periode_controle2'] != '') $periode_interventionRequest['Suivis.date_controle <='] = date('Y-m-d', strtotime(str_replace('/', '-', $this->request->data['s_periode_controle2']))); diff --git a/src/Controller/UsersController.php b/src/Controller/UsersController.php index 1b2071f..c69831c 100755 --- a/src/Controller/UsersController.php +++ b/src/Controller/UsersController.php @@ -36,7 +36,7 @@ class UsersController extends AppController if($role == 'Super Administrateur') return true; //Pour tout le monde - if (in_array($action, ['index', 'view', 'getLdapLogin', 'getLdapEmail'])) return true; + if (in_array($action, ['index', 'view', 'getLdapLogin', 'getLdapEmail','indexRecap'])) return true; // Par défaut refuser @@ -79,7 +79,7 @@ class UsersController extends AppController public function index() { $this->paginate = [ - 'contain' => ['GroupesMetiers', 'GroupesThematiques'] + 'contain' => ['GroupesMetiers', 'GroupesThematiques','SurCategories'] ]; $users = $this->paginate($this->Users); @@ -91,7 +91,28 @@ class UsersController extends AppController $this->set(compact('users')); $this->set('_serialize', ['users']); } - + + /** + * Index_recap method + * + * @return \Cake\Network\Response|null + */ + public function indexRecap() + { + $this->paginate = [ + 'contain' => ['GroupesMetiers', 'GroupesThematiques','SurCategories'] + ]; + $users = $this->paginate($this->Users->find('all', ['conditions' => [ 'role =' => 'Responsable' ]])); + + //Affichage informations disponible pour l'utilisateur connecté + $this->myDebug($this->LdapAuth->user()); + + $this->set('nbUsers', $this->Users->find('all', ['conditions' => [ 'role =' => 'Responsable' ]])->count()); + + $this->set(compact('users')); + $this->set('_serialize', ['users']); + } + /** * View method * @@ -102,7 +123,7 @@ class UsersController extends AppController public function view($id = null) { $user = $this->Users->get($id, [ - 'contain' => ['GroupesMetiers', 'GroupesThematiques'] + 'contain' => ['GroupesMetiers', 'GroupesThematiques','SurCategories'] ]); $this->set('user', $user); @@ -123,13 +144,13 @@ class UsersController extends AppController $this->Flash->success(__('L\'utilisateur a bien été ajouté.')); return $this->redirect(['action' => 'view', $user->id]); } else { - $this->Flash->error(__('L\utilisateur n\'a pas pu être ajouté.')); + $this->Flash->error(__('L\'utilisateur n\'a pas pu être ajouté.')); } } $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); $groupesThematiques = $this->Users->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); - - $users = TableRegistry::get('LdapConnections')->getListUsers(); + $sur_categorie = $this->Users->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); + $users = TableRegistry::get('LdapConnections')->getListUsers(); //tri des utilisateurs par nom sort($users); $utilisateurs = []; @@ -137,7 +158,7 @@ class UsersController extends AppController $utilisateurs[$users[$i]] = $users[$i]; } - $this->set(compact('user', 'groupesMetiers', 'utilisateurs', 'groupesThematiques')); + $this->set(compact('user', 'groupesMetiers', 'utilisateurs', 'groupesThematiques','sur_categorie')); $this->set('_serialize', ['user']); } @@ -156,16 +177,16 @@ class UsersController extends AppController if ($this->request->is(['patch', 'post', 'put'])) { $user = $this->Users->patchEntity($user, $this->request->data); if ($this->Users->save($user)) { - $this->Flash->success(__('L\utilisateur a bien été édité.')); + $this->Flash->success(__('L\'utilisateur a bien été édité.')); return $this->redirect(['action' => 'view', $id]); } else { - $this->Flash->error(__('L\utilisateur n\'a pas pu être édité.')); + $this->Flash->error(__('L\'utilisateur n\'a pas pu être édité.')); } } $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); $groupesThematiques = $this->Users->GroupesThematiques->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); - - $this->set(compact('user', 'groupesMetiers', 'groupesThematiques')); + $sur_categorie = $this->Users->SurCategories->find('list', [ 'keyField' => 'id', 'valueField' => 'nom']); + $this->set(compact('user', 'groupesMetiers', 'groupesThematiques','sur_categorie')); $this->set('_serialize', ['user']); } @@ -181,9 +202,9 @@ class UsersController extends AppController $this->request->allowMethod(['post', 'delete']); $user = $this->Users->get($id); if ($this->Users->delete($user)) { - $this->Flash->success(__('L\utilisateur a bien été supprimé.')); + $this->Flash->success(__('L\'utilisateur a bien été supprimé.')); } else { - $this->Flash->error(__('L\utilisateur n\'a pas pu être supprimé.')); + $this->Flash->error(__('L\'utilisateur n\'a pas pu être supprimé.')); } return $this->redirect(['action' => 'index']); } diff --git a/src/Template/Materiels/add.ctp b/src/Template/Materiels/add.ctp index 3484a27..d44a96a 100755 --- a/src/Template/Materiels/add.ctp +++ b/src/Template/Materiels/add.ctp @@ -45,9 +45,13 @@ else {
@@ -76,6 +125,35 @@