confLabinvent; $role = TableRegistry::get('Users')->find()->where(['username' => $user[$configuration->authentificationType_ldap][0]])->first()['role']; $action = $this->request->getAttribute('params')['action']; if($this->userHasRole('Administration')) return true; if($this->userHasRole('Responsable') && $action == 'fichemetro') return true; //Pour un "utilisateur" if (in_array($action, ['edit', 'delete'])) { $id = (int)$this->request->getAttribute('params')['pass'][0]; if($this->isOwnedBy($id, $user['sn'][0].' '.$user['givenname'][0])) return true; if($role == 'Responsable' && $this->isRespGroup($id, $user[$configuration->authentificationType_ldap][0])) return true; } return parent::isAuthorized($user); */ return true; } /** * Index method * * @return \Cake\Network\Response|null */ public function index() { $this->paginate = [ 'contain' => ['Suivis'] ]; $fichemetrologiques = $this->paginate($this->Fichemetrologiques->find('all')); $nbFichemetrologique = $this->Fichemetrologiques->find('all')->count(); $this->set(compact('fichemetrologiques','nbFichemetrologique')); $this->set('_serialize', ['fichemetrologique']); } /** * View method * * @param string|null $id Fichemetrologique id. * @return \Cake\Network\Response|null * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $fichemetrologique = $this->Fichemetrologiques->get($id, [ 'contain' => ['Suivis'] ]); $unite = TableRegistry::get('Unites')->find()->select('nom')->where(['id ='=> $fichemetrologique->suivi->unite_id])->first()['nom']; $this->set('unite',$unite); $this->set('fichemetrologique', $fichemetrologique); $this->set('_serialize', ['fichemetrologique']); } /** * Add method * * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. */ public function add() { $fichemetrologique = $this->Fichemetrologiques->newEntity(); $numunite= TableRegistry::get('Suivis')->find()->select('unite_id')->where(['id ='=> $this->request->getAttribute('params')['pass'][0]])->first()['unite_id']; $unite = TableRegistry::get('Unites')->find()->select('nom')->where(['id ='=> $numunite])->first()['nom']; $symbole= TableRegistry::get('Unites')->find()->select('symbole')->where(['id ='=> $numunite])->first()['symbole']; $resol = TableRegistry::get('Suivis')->find()->select('resolution')->where(['id ='=> $this->request->getAttribute('params')['pass'][0]])->first()['resolution']; $suivi = TableRegistry::get('Suivis')->find()->where(['id ='=> $this->request->getAttribute('params')['pass'][0]])->first(); if ($this->request->is('post')) { $fichemetrologique = $this->Fichemetrologiques->patchEntity($fichemetrologique, $this->request->getData,['associated' => 'Mesures']); if($fichemetrologique->resolution == 0) $fichemetrologique->resolution = 'numerique'; else $fichemetrologique->resolution = 'cadran'; if($fichemetrologique->etatmateriel == 0) $fichemetrologique->etatmateriel = 'Neuf'; else if($fichemetrologique->etatmateriel == 1) $fichemetrologique->etatmateriel = 'RAS'; else $fichemetrologique->etatmateriel = 'dégradé'; $suivis = TableRegistry::get('Suivis')->get($this->request->getAttribute('params')['pass'][0], [ 'contain' => [] ]); if($suivi->date_prochain_controle !== null){ if($suivis->date_prochain_controle< $fichemetrologique->datefiche){ $fichemetrologique->retard='RAS'; } else{ $fichemetrologique->retard='OUI'; } } else{ $fichemetrologique->retard='RAS'; } if ($this->Fichemetrologiques->save($fichemetrologique)) { $suivis->conforme = $fichemetrologique->conformeEMTstandart; $suivis->date_controle = $fichemetrologique->datefiche; $datecontrole = $fichemetrologique->datefiche; $valfrequence = $suivis->frequence; if($suivis->type_frequence == '/ Jours') $type_freque= ' day'; else if($suivis->type_frequence == '/ Mois') $type_freque= ' month'; else if($suivis->type_frequence == '/ Ans') $type_freque= ' year'; else $type_freque=' week'; $suivis->date_prochain_controle = date('Y-m-d',strtotime('+'.$valfrequence.' '.$type_freque ,strtotime(date('Y-m-d')))); TableRegistry::get('Suivis')->save($suivis); $this->Flash->success(__('La fiche metrologique a bien été ajouté.')); return $this->redirect(['controller' => 'Suivis', 'action' => 'view', $fichemetrologique->suivi_id]); } else { $this->Flash->error(__('La fiche metrologique n\'a pas pu être ajouté.')); } } $this->set(compact('suivi','resol','unite','symbole','fichemetrologique')); $this->set('_serialize', ['fichemetrologique']); } /** * Edit method * * @param string|null $id Fichemetrologique id. * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. * @throws \Cake\Network\Exception\NotFoundException When record not found. */ public function edit($id = null) { $fichemetrologique = $this->Fichemetrologiques->get($id, [ 'contain' => [] ]); if ($this->request->is(['patch', 'post', 'put'])) { $fichemetrologique = $this->Fichemetrologiques->patchEntity($fichemetrologique, $this->request->data); if($fichemetrologique->typemesure == 0) $fichemetrologique->typemesure = 'direct'; else $fichemetrologique->typemesure = 'indirect'; if($fichemetrologique->resolution == 0) $fichemetrologique->resolution = 'numerique'; else $fichemetrologique->resolution = 'cadran'; if ($this->Fichemetrologiques->save($fichemetrologique)) { $this->Flash->success(__('La fichemetrologique a bien été édité.')); return $this->redirect(['action' => 'view', $id]); } else { $this->Flash->error(__('La fichemetrologique n\'a pas pu être édité.')); } } /* $this->getView()->loadHelper('GoogleCharts.GoogleCharts'); $chart = new GoogleCharts(); $chart->type("LineChart"); //Options array holds all options for Chart API $chart->options(['title' => 'Recent Scores']); $chart->columns([ //Each column key should correspond to a field in your data array 'event_date' => [ //Tells the chart what type of data this is 'type' => 'string', //The chart label for this column 'label' => 'Date' ], 'score' => [ 'type' => 'number', 'label' => 'Score', //Optional NumberFormat pattern 'format' => '#,###' ] ]); $mesures = $this->Mesure->find('list', ['conditions' => [ 'fichemetrologique_id =' => $fichemetrologique->id]] ); //Loop through our data and creates data rows //Data will be added to rows based on the column keys above (event_date, score). //If there are missing fields in your data or the keys do not match, then this will not work. foreach($mesures as $mesure) { $chart->addRow($round); } //You can also use this way to loop through data and creates data rows: foreach($rounds as $round) { $chart->addRow([ 'event_date' => $round['event_date'], 'score' => $round['score'] ]); } //You can also manually add rows: $chart->addRow([ 'event_date' => '1/1/2012', 'score' => 55 ]); */ $this->set(compact('fichemetrologique','chart')); $this->set('_serialize', ['fichemetrologique']); } /* * Delete method * * @param string|null $id Fichemetrologique id. * @return \Cake\Network\Response|null Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $fichemetrologique = $this->Fichemetrologiques->get($id); if ($this->Fichemetrologiques->delete($fichemetrologique)) { $this->Flash->success(__('La fiche metrologique a bien été supprimé.')); } else { $this->Flash->error(__('La fiche metrologique n\'a pas pu être supprimé.')); } return $this->redirect(['controller' => 'Suivis', 'action' => 'view', $fichemetrologique->suivi_id]); } }