2017-06-27 1 views
0

J'ai besoin que lorsque j'ajoute une réservation selon la date que l'utilisateur choisit, ma fonction add() me valide si à cette date il n'y a pas de réservation précédente ... J'ai une table de réservation qui a le champ FROM (ymd) et HASTA (Ymd) alors je pensais que j'utiliserais la fonction check_in_range ($ start_date, $ end_date, $ date_to_valuate) Et c'est ce que j'essaye de faire mais ça me bloque et maintenant je suis perdu c'est ma fonction add() dans mon reservationscontroller.phpj'ai besoin de comparer une date en utilisant la fonction check_in_range()

public function add() 
{ 
    $reserva = $this->Reservas->newEntity(); 
    $res = 'SELECT desde,hasta FROM reservas'; 
    $arr = $this->Reservas->ExQuery($res); 

    if ($this->request->is('post')) { 
     $reserva = $this->Reservas->patchEntity($reserva, $this->request->getData()); 
     if($arr==null){ 
      // $this->log('keria salvar1', LOG_DEBUG); 
     if ($this->Reservas->save($reserva)) { 
      //$this->log('salvas con arreglo vacio', LOG_DEBUG); 
      $this->Flash->success(__('La habitación ha sido reservada.')); 

      return $this->redirect(['controller' => 'reservas', 'action' => 'index']); 
     }} 
     if($arr!=null){ 
      for ($i = 0; $i < count($arr); $i++) { 
       $start_date = $arr[$i]['desde']; 
       $end_date = $arr[$i]['hasta']; 
       $fecha_a_evaluar = date("Y-m-d"); 

       if ($this->check_in_range($start_date, $end_date, $fecha_a_evaluar)) { 
        // $this->log('error fecha', LOG_DEBUG); 
        $this->Flash->error(__('ya existe reserva en esa fecha')); 

       } 
        if ($this->Reservas->save($reserva)) { 
         // $this->log('salvo', LOG_DEBUG); 
         $this->Flash->success(__('La habitación ha sido reservada.')); 
         return $this->redirect(['controller' => 'reservas', 'action' => 'index']); 
        } 

          }} 
          $this->Flash->error(__('La habitación no ha podido ser reservada')); 
         // $this->log('final1', LOG_DEBUG); 
        } 
     // $this->Flash->error(__('La habitación no ha podido ser reservada')); 
     //$this->log('final2', LOG_DEBUG); 


    $habitaciones = $this->Reservas->Habitaciones->find('list', ['limit' => 200]); 
    $this->set(compact('reserva', 'habitaciones')); 
    $this->set('_serialize', ['reserva']); 
} 

et dans mon appcontroler c'est le code de la fonction

function check_in_range($start_date, $end_date, $evaluame) { 
    $start_ts = strtotime($start_date); 
    $end_ts = strtotime($end_date); 
    $user_ts = strtotime($evaluame); 
    return (($user_ts >= $start_ts) && ($user_ts <= $end_ts) && ($user_ts === $start_ts)); } 

Je suis désespéré et coincé

Répondre

0

en raison de:

return (($user_ts >= $start_ts) && ($user_ts <= $end_ts) && ($user_ts === $start_ts)); } 

check_in_range ne retourne vrai lorsque les trois arguments ($start_date, $end_date, $evaluame) sont égaux