public function addAction()
 {
     $form = new ReservaSalaForm($this->getEntityManager());
     $form->get('submit')->setAttribute('label', 'Add');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $reservaSala = new ReservaSala();
         $form->setInputFilter($reservaSala->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $reservaSala->populate($form->getData());
             $reservaSala->setDataInicio($this->transformarData($reservaSala->getDataInicio()));
             $reservaSala->setDataFim($this->transformarData($reservaSala->getDataFim()));
             $data = explode("/", $reservaSala->getDataReserva());
             $data = $data['2'] . "-" . $data['1'] . "-" . $data['0'];
             $query = $this->getEntityManager()->createQuery("SELECT u FROM\n                        Sala\\Entity\\ReservaSala u WHERE u.dataReserva LIKE :data");
             $query->setParameters(array('data' => '%' . $data . '%'));
             $dados = $query->getResult();
             foreach ($dados as $dado) {
                 $hora1 = date('H:i:s', strtotime($dado->getDataInicio()->format('H:i:s')));
                 // horário de inicio já cadastrado na data escolhida
                 $hora2 = date('H:i:s', strtotime($dado->getDataFim()->format('H:i:s')));
                 // horário de fim já cadastrado na data escolhida
                 $hora3 = date('H:i:s', strtotime($reservaSala->getDataInicio()->format('H:i:s')));
                 // horário de inicio que eu estou tentando cadastrar
                 $hora4 = date('H:i:s', strtotime($reservaSala->getDataFim()->format('H:i:s')));
                 // horário de fim do que eu estou tentando cadastrar
                 $sala = $dado->getSalaReserva()->getIdsala();
                 $salareservada = $this->getEntityManager()->getRepository('Sala\\Entity\\Sala')->findOneBy(array('idsala' => $reservaSala->getSalaReserva()));
                 // var_dump($hora4); exit();
                 if ($hora3 >= $hora4) {
                     $mensagem = 'Hora inicial deve ser menor que a hora final.';
                     return array('form' => $form, 'mensagem' => $mensagem);
                 } else {
                     if ($hora3 < $hora1 && $hora4 > $hora2 || $hora3 > $hora1 && $hora3 < $hora2 && $hora4 > $hora2 || $hora3 < $hora1 && $hora1 < $hora4 && $hora2 > $hora4 || $hora3 > $hora1 && $hora4 < $hora2 || ($hora1 == $hora3 || $hora2 == $hora4)) {
                         if ($sala == $salareservada->getIdsala()) {
                             $mensagem = 'Horário já ocupado.';
                             return array('form' => $form, 'mensagem' => $mensagem);
                         }
                     }
                 }
             }
             $reservaSala->setDataReserva(new \DateTime($data));
             $sala = $this->getEntityManager()->getRepository('Sala\\Entity\\Sala')->findOneBy(array('idsala' => $reservaSala->getSalaReserva()));
             $reservaSala->setSalaReserva($sala);
             $funcionario = $this->getEntityManager()->getRepository('Funcionario\\Entity\\Funcionario')->findOneBy(array('idfuncionario' => $reservaSala->getFuncionarioReserva()));
             $reservaSala->setFuncionarioReserva($funcionario);
             $professor = $this->getEntityManager()->getRepository('Professor\\Entity\\Professor')->findOneBy(array('idprofessor' => $reservaSala->getProfessorReserva()));
             $reservaSala->setProfessorReserva($professor);
             $this->getEntityManager()->persist($reservaSala);
             $this->getEntityManager()->flush();
             // Redirect to list of albums
             return $this->redirect()->toRoute('reservasala');
         }
     }
     return array('form' => $form);
 }
 /**
  * {@inheritDoc}
  */
 public function setDataFim($dataFim)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDataFim', array($dataFim));
     return parent::setDataFim($dataFim);
 }