Esempio n. 1
0
 public function validaDatasMovimentacao($dados)
 {
     $dataSaida = DateUtil::criarDataHora($dados['dataSaida'], $dados['horaSaida']);
     $dataRetorno = DateUtil::criarDataHora($dados['dataRetorno'], $dados['horaRetorno']);
     //Caso seja alteração (terá um id) não compara com o próprio registro
     $id = $dados['id'] ? $dados['id'] : 0;
     $qb = $this->createQueryBuilder('m')->where('m.placaVeiculo = :placaVeiculo')->andWhere("m.id != :id ")->andWhere("\n                    :dataSaida between m.dataSaida and m.dataRetorno\n                    or\n                    :dataRetorno between m.dataSaida and m.dataRetorno\n                ")->setParameter('placaVeiculo', $dados[placaVeiculo])->setParameter('dataSaida', $dataSaida)->setParameter('dataRetorno', $dataRetorno)->setParameter('id', $id);
     $trechos = $qb->getQuery()->getResult();
     return $trechos;
 }
Esempio n. 2
0
 public function alterarOcorrencia($dados)
 {
     try {
         $this->validarOcorrencia($dados);
         $this->em->beginTransaction();
         $ocorrencia = $this->em->find("Frota\\Model\\Entity\\Ocorrencia", $dados['id']);
         $ocorrencia->setVeiculo($this->em->getReference("Frota\\Model\\Entity\\Veiculo", $dados['placaVeiculo']));
         $ocorrencia->setHodometro($dados['hodometro']);
         $ocorrencia->setMatriculaResponsavel($this->em->getReference("Frota\\Model\\Entity\\Motorista", $dados['motorista']));
         $ocorrencia->setData(DateUtil::criarDataHora($dados['data'], $dados['hora']));
         $ocorrencia->setLocal($dados['local']);
         $ocorrencia->setObservacao($dados['observacao']);
         if ($dados['usaEcoFrotas']) {
             $ocorrencia->setCnpj($dados['cnpj']);
             $ocorrencia->setCartao($dados['cartao']);
             $ocorrencia->setFatura($dados['fatura']);
             $ocorrencia->setTransacao($dados['transacao']);
         } else {
             $ocorrencia->setCnpj(null);
             $ocorrencia->setCartao(null);
             $ocorrencia->setFatura(null);
             $ocorrencia->setTransacao(null);
         }
         $ocorrencia->setLotacao($this->em->getReference("Frota\\Model\\Entity\\Lotacao", $dados['lotacao']['codigo']));
         // $ocorrencia->setItens(null);
         $this->em->persist($ocorrencia);
         $this->em->flush();
         //Remove os antigos  itens da ocorrencia
         foreach ($ocorrencia->getItens() as $item) {
             $this->em->remove($item);
         }
         $this->em->flush();
         //Inclui os itens da ocorrencia
         foreach ($dados['itens'] as $itemOcorrencia) {
             $item = new ItemOcorrenciaEntity($itemOcorrencia);
             $item->setTipoItemOcorrencia($this->em->getReference("Frota\\Model\\Entity\\TipoItemOcorrencia", $itemOcorrencia['tipoItemOcorrencia']['id']));
             $item->setQuantidade($itemOcorrencia['quantidade']);
             $item->setValorTotal($itemOcorrencia['valorTotal']);
             $item->setValorServico($itemOcorrencia['valorServico']);
             $item->setOcorrencia($ocorrencia);
             $this->em->persist($item);
         }
         $this->em->persist($ocorrencia);
         $this->em->flush();
         $this->em->commit();
     } catch (Exception $exc) {
         if ($this->em->getConnection()->isTransactionActive()) {
             $this->em->rollback();
         }
         throw $exc;
     }
     return $ocorrencia;
 }
Esempio n. 3
0
 public function validarMovimentacao($dados)
 {
     if (!$dados['placaVeiculo']) {
         throw new ValidacaoException('Veículo não informado!');
     }
     if (!$dados['dataSolicitacao']) {
         throw new ValidacaoException('Data da Solicitação não informada!');
     } else {
         try {
             $dataSolicitacao = DateUtil::criarData($dados['dataSolicitacao']);
             if (!$dataSolicitacao) {
                 throw new ValidacaoException('Data da Solicitação inválida!');
             }
         } catch (Exception $ex) {
             throw new ValidacaoException('Data da Solicitação inválida!');
         }
     }
     if (!$dados['horaSolicitacao']) {
         throw new ValidacaoException('Hora da solicitação não informada!');
     }
     if (!$dados['itinerario']) {
         throw new ValidacaoException('Itinerário não informado!');
     }
     if (!$dados['dataSaida']) {
         throw new ValidacaoException('Data de Saída não informada!');
     } else {
         try {
             $dataSaida = DateUtil::criarData($dados['dataSaida']);
             if (!$dataSaida) {
                 throw new ValidacaoException('Data de Saída inválida!');
             }
         } catch (Exception $ex) {
             throw new ValidacaoException('Data de Saída inválida!');
         }
     }
     if (!$dados['horaSaida']) {
         throw new ValidacaoException('Hora da saída não informada!');
     }
     if (!$dados['dataRetorno']) {
         throw new ValidacaoException('Data de Retorno não informada!');
     } else {
         try {
             $dataRetorno = DateUtil::criarData($dados['dataRetorno']);
             if (!$dataRetorno) {
                 throw new ValidacaoException('Data de Retorno inválida!');
             }
         } catch (Exception $ex) {
             throw new ValidacaoException('Data de Retorno inválida!');
         }
     }
     if (!$dados['horaRetorno']) {
         throw new ValidacaoException('Hora do retorno não informada!');
     }
     if (DateUtil::criarDataHora($dados['dataSolicitacao'], $dados['horaSolicitacao']) > DateUtil::criarDataHora($dados['dataSaida'], $dados['horaSaida'])) {
         throw new ValidacaoException('A Data de Solicitação deve ser igual ou anterior à Data de Saída!');
     }
     if (DateUtil::criarDataHora($dados['dataRetorno'], $dados['horaRetorno']) < DateUtil::criarDataHora($dados['dataSaida'], $dados['horaSaida'])) {
         throw new ValidacaoException('A Data de Retorno deve ser igual ou posterior à Data de Saída!');
     }
     if (DateUtil::criarDataHora($dados['dataSolicitacao'], $dados['horaSolicitacao']) > DateUtil::criarDataHora($dados['dataRetorno'], $dados['horaRetorno'])) {
         throw new ValidacaoException('A Data de Solicitação deve ser igual ou anterior à Data de Retorno!');
     }
     if (!$dados['hodometroSaida']) {
         throw new ValidacaoException('Hodômetro de Saída não informado!');
     }
     if (!$dados['hodometroRetorno']) {
         throw new ValidacaoException('Hodômetro de Retorno não informado!');
     }
     if ($dados['hodometroRetorno'] <= $dados['hodometroSaida']) {
         throw new ValidacaoException('A marcação do Hodômetro de Retorno deve ser maior que a do Hodômetro de Saída!');
     }
     if (!$dados['combustivelInicial']) {
         throw new ValidacaoException('Combustível inicial não informado!');
     }
     if (!$dados['solicitante']) {
         throw new ValidacaoException('Solicitante não informado!');
     }
     if (!$dados['motorista']) {
         throw new ValidacaoException('Motorista não informado!');
     }
     if (!$dados['passageiros'] && !$dados['outrosPassageiros']) {
         throw new ValidacaoException('Nenhum passageiro informado!');
     }
     if ($this->getRepository()->validaDatasMovimentacao($dados)) {
         throw new ValidacaoException('Existe uma movimentação para o veículo no período informado!');
     }
     if ($this->getRepository()->validaHodometrosMovimentacao($dados)) {
         throw new ValidacaoException('Existe uma movimentação para o veículo neste intervalo dos hodômetros!');
     }
 }