table('emprunts'); $this->displayField('id'); $this->primaryKey('id'); $this->addBehavior('Timestamp'); $this->belongsTo('Materiels', [ 'foreignKey' => 'materiel_id', 'joinType' => 'INNER' ]); $this->belongsTo('Sites', [ 'foreignKey' => 'site_id' ]); } /** * 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 ->notEmpty('date_emprunt', 'Une date d\'emprunt doit être saisi'); $validator ->notEmpty('date_retour_emprunt', 'Une date de retour doit être saisie'); $validator ->boolean('emprunt_interne') ->allowEmpty('emprunt_interne'); $validator ->notEmpty('nom_emprunteur_int', 'Le champ doit être rempli.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return $context['data']['emprunt_interne']; } }); $validator ->notEmpty('email_emprunteur_int', 'Cet Email n\'est pas valide.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return $context['data']['emprunt_interne']; } }); $validator ->notEmpty('e_lieu_detail', 'Le champ doit être rempli pour un emprunt interne.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return $context['data']['emprunt_interne']; } }) ->add('e_lieu_detail', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); $validator ->notEmpty('laboratoire', 'Le champ doit être rempli pour un emprunt externe.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return !$context['data']['emprunt_interne']; } }) ->add('laboratoire', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); $validator ->notEmpty('nom_emprunteur_ext', 'Le champ doit être rempli.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return !$context['data']['emprunt_interne']; } }); $validator ->notEmpty('email_emprunteur_ext', 'Cet Email n\'est pas valide.', function ($context) { if (isset($context['data']['emprunt_interne'])) { return !$context['data']['emprunt_interne']; /* if (!$context['data']['emprunt_interne']) { return (Validation::email($context['data']['email_emprunteur_ext'])); } */ } }); $validator ->allowEmpty('commentaire') ->add('commentaire', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', '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) { $checkReturnDateIsAfterLoanDate = function ($entity) { $dateEmprunt = $entity->date_emprunt; $dateRetour = $entity->date_retour_emprunt; $dateEmprunt = explode("/", $dateEmprunt); $dateRetour = explode("/", $dateRetour); $dateEmprunt = $dateEmprunt[2].$dateEmprunt[1].$dateEmprunt[0]; $dateRetour = $dateRetour[2].$dateRetour[1].$dateRetour[0]; if ($dateEmprunt > $dateRetour) { return false; } return true; }; $rules->add($checkReturnDateIsAfterLoanDate, [ 'errorField' => 'date_retour_emprunt', 'message' => 'La date de retour doit être postérieure à la date de l\'emprunt.' ]); $rules->add($rules->existsIn(['materiel_id'], 'Materiels')); $rules->add($rules->existsIn(['site_id'], 'Sites')); return $rules; } public function beforeSave($event, $entity, $options) { if (! empty ( $entity->toArray() )) { $name = ''; $email = ''; // EMPRUNT INTERNE ? if ($entity->get('emprunt_interne') == 1) { $name = $entity->get('nom_emprunteur_int'); $email = $entity->get('email_emprunteur_int'); } // EMPRUNT EXTERNE else { $name = $entity->get('nom_emprunteur_ext'); $email = $entity->get('email_emprunteur_ext'); } $entity->set('nom_emprunteur', $name); $entity->set('email_emprunteur', $email); } if(empty($entity->get('date_emprunt'))){ $entity->set('date_emprunt', null); } if(empty($entity->get('date_retour_emprunt'))){ $entity->set('date_retour_emprunt', null); } return true; } }