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 getInputFilter() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getInputFilter', array()); return parent::getInputFilter(); }