public function finalizarCompra()
 {
     try {
         $dataformat = new dataformat();
         $this->load->library('dataValidator');
         $dataValidator = new dataValidator();
         $this->load->model('produtos/produtosModel');
         $this->load->model('caixa/produtosVendidoModel');
         $this->load->model('caixa/vendasModel');
         $this->load->model('caixa/caixaAbertoModel');
         $this->load->model('caixa/caixasModel');
         $this->load->dao('caixa/caixasDao');
         $formapagamento = $this->http->getRequest('formapagamento');
         $valorrecebido = $dataformat->formatar($this->http->getRequest('valorrecebido'), 'decimal', 'banco');
         if ($formapagamento == formapagamento::DINHEIRO) {
             $dataValidator->set('Valor recebido', $valorrecebido, 'valorrecebido')->is_required();
         }
         //validando os dados de entrada
         if ($dataValidator->validate()) {
             $dataformat = new dataformat();
             $caixa = unserialize($_SESSION['caixa']);
             $caixa->getCaixaAberto()[0]->getVendas()[0]->setDataVenda(date('Y-m-d'));
             $caixa->getCaixaAberto()[0]->getVendas()[0]->setHoraVenda(date('H:i:s'));
             //forma de pagamento escolhido
             if ($formapagamento == formapagamento::DINHEIRO) {
                 $caixa->getCaixaAberto()[0]->getVendas()[0]->pagarComDinheiro();
             } else {
                 if ($formapagamento == formapagamento::CARTAOCREDITO) {
                     $caixa->getCaixaAberto()[0]->getVendas()[0]->pagarComCartaoCredito();
                 } else {
                     if ($formapagamento == formapagamento::CARTAODEBITO) {
                         $caixa->getCaixaAberto()[0]->getVendas()[0]->pagarComCartaoDebito();
                     }
                 }
             }
             //valor pago pelo cliente
             $caixa->getCaixaAberto()[0]->getVendas()[0]->setValorPago($valorrecebido);
             $caixasDao = new caixasDao();
             if ($caixasDao->finalizarCompra($caixa)) {
             }
             $caixa->getCaixaAberto()[0]->setVendas(array(new vendasModel()));
             $_SESSION['caixa'] = serialize($caixa);
             $this->http->response(true);
         } else {
             $this->http->response('Informe o valor pago pelo cliente', 400);
         }
     } catch (Exception $e) {
         $this->http->response($e->getMessageError(), 400);
     }
 }
 public function getJsoncaixa()
 {
     //caixas
     $this->load->dao('caixa/caixasDao');
     $this->load->dao('caixa/iListagemCaixa');
     //usurios
     $this->load->dao('funcionarios/IUsuarios');
     $this->load->dao('funcionarios/consultaUsuarioPorId');
     $this->load->dao('funcionarios/usuariosDao');
     //funcionarios
     $this->load->dao('funcionarios/IListagemFuncionarios');
     $this->load->dao('funcionarios/consultaFuncionarioPorId');
     $this->load->dao('funcionarios/funcionariosDao');
     $caixasDao = new caixasDao();
     $caixas = $caixasDao->listar();
     //echo $caixasDao->listar($caixa);
     foreach ($caixas as $caixa) {
         $caixasDao->listaAberturaCaixa($caixa);
         foreach ($caixa->getCaixaAberto() as $caixaAberto) {
             //USUARIOS DAO -- consultando o usuario pelo id
             $usuariosDao = new usuariosDao();
             $usuariosModel = $usuariosDao->consultar(new consultaUsuarioPorId(), $caixaAberto->getUsuario(), array(status::ATIVO, status::INATIVO));
             if ($usuariosModel != null) {
                 //FUNCIONARIOS DAO -- Consultando o funcionario pelo id
                 $funcionariosDao = new funcionariosDao();
                 $funcionariosModel = $funcionariosDao->consultar(new consultaFuncionarioPorId(), $usuariosModel->getFuncionario(), array(status::ATIVO, status::INATIVO));
                 $usuariosModel->setFuncionario($funcionariosModel);
                 $caixaAberto->setUsuario($usuariosModel);
             }
         }
     }
     $this->load->library('dataformat');
     $dataformat = new dataformat();
     $_arCaixa = array();
     foreach ($caixas as $cx) {
         $aux = array('id' => $cx->getId(), 'codigo' => $cx->getCodigo(), 'ip' => $cx->getIp(), 'acoes' => "", 'linkEditar' => URL . 'caixa/gerenciar/editar/' . $cx->getId(), 'abertos' => array());
         $arrAberturaCaixa = array();
         foreach ($cx->getCaixaAberto() as $OpenBox) {
             $valorUndEstoque = 0;
             $aux2 = array('id' => $OpenBox->getId(), 'dateOpen' => $dataformat->formatar($OpenBox->getDataAbertura(), 'datahora'), 'dateClose' => $dataformat->formatar($OpenBox->getDataFechamento(), 'datahora'), 'user' => html_entity_decode($OpenBox->getUsuario()->getFuncionario()->getNome() . ' ' . $OpenBox->getUsuario()->getFuncionario()->getSobreNome()), 'acoes' => "", 'linkvisualizar' => '', 'itens' => array());
             array_push($aux['abertos'], $aux2);
         }
         array_push($_arCaixa, $aux);
     }
     $this->http->response(json_encode($_arCaixa));
 }