setTable('suivis'); $this->setDisplayField('id'); $this->setPrimaryKey('id'); $this->addBehavior('Timestamp'); $this->belongsTo('Materiels', [ 'foreignKey' => 'materiel_id', 'joinType' => 'INNER' ]); $this->belongsTo('TypeSuivis', [ 'foreignKey' => 'type_suivi_id' ]); $this->belongsTo('GroupesMetiers', [ 'foreignKey' => 'groupes_metier_id' ]); $this->belongsTo('GroupesThematiques', [ 'foreignKey' => 'groupes_thematique_id' ]); $this->belongsTo('Unites', [ 'foreignKey' => 'unite_id' ]); /* * EP remarque 9/6/17 : il manque peut-etre ceci pour formule_id, sans doute en cours pour le LATMOS ? * $this->belongsTo('Table?', [ * 'foreignKey' => 'formule_id' * ]); */ /* $this->hasMany('Documents', [ 'foreignKey' => 'suivi_id' ]); */ $this->hasMany('Documents') ->setForeignKey('suivi_id') ->setDependent(true); // si le suivi est supprimé, les docs attachés le seront aussi /* $this->hasMany('Fichemetrologiques', [ 'foreignKey' => 'suivi_id' ]); */ $this->hasMany('Fichemetrologiques') ->setForeignKey('suivi_id') ->setDependent(true); // si le suivi est supprimé, les fiches attachées le seront aussi } /** * Default validation rules. * * @param \Cake\Validation\Validator $validator * Validator instance. * @return \Cake\Validation\Validator */ public function validationDefault(Validator $validator) { $validator->integer('id')->allowEmpty('id', 'create'); $validator->integer('materiel_id'); $validator->allowEmpty('date_controle'); $validator->allowEmpty('date_prochain_controle'); $validator->notEmpty('organisme')->add('organisme', 'valid', [ 'rule' => 'check_string', 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table' ]); $validator->numeric('frequence', 'Veuillez saisir des chiffres uniquement.') ->allowEmpty('frequence') ->maxLength('frequence', 8, '8 Chiffres maximum'); $validator->allowEmpty('type_frequence'); $validator->allowEmpty('panne_resolu'); $validator->allowEmpty('commentaire')->add('commentaire', 'valid', [ 'rule' => [ 'check_string_with_some_special_cars' ], 'message' => 'Ce champ contient des caractères interdits', 'provider' => 'table' ]); return $validator; } /** * Returns a rules checker object that will be used for validating * application integrity. * * @param \Cake\ORM\RulesChecker $rules * The rules object to be modified. * @return \Cake\ORM\RulesChecker */ public function buildRules(RulesChecker $rules) { $checkNextDateControlIsAfterDateControl = function ($entity) { $controle = $entity->date_controle; $p_controle = $entity->date_prochain_controle; if (empty($controle) || empty($p_controle)) return true; $prochainControle = $p_controle; $controle = explode("/", $controle); $prochainControle = explode("/", $prochainControle); $controle = $controle[2] . $controle[1] . $controle[0]; $prochainControle = $prochainControle[2] . $prochainControle[1] . $prochainControle[0]; if ($controle > $prochainControle) { return false; } return true; }; $rules->add($checkNextDateControlIsAfterDateControl, [ 'errorField' => 'date_prochain_controle', 'message' => "La date de la prochaine intervention doit être postérieure à la date de l'intervention précédente" ]); $rules->add($rules->existsIn([ 'materiel_id' ], 'Materiels')); $rules->add($rules->existsIn([ 'type_suivi_id' ], 'TypeSuivis')); $rules->add($rules->existsIn([ 'groupes_thematique_id' ], 'GroupesThematiques')); $rules->add($rules->existsIn([ 'groupes_metier_id' ], 'GroupesMetiers')); return $rules; } public function beforeSave($event, $entity, $options) { if (empty($entity->get('date_controle'))) { $entity->set('date_controle', null); } if (empty($entity->get('date_prochain_controle'))) { $entity->set('date_prochain_controle', null); } return true; } }