public static function saveEmpreendimento()
 {
     date_default_timezone_set('America/Sao_Paulo');
     // Preparando objetos
     $EmpreendimentoTO = new EmpreendimentoTO();
     $EmpreendimentoTO->nome_empreendimento = isset($_POST['nome_empreendimento']) ? $_POST['nome_empreendimento'] : '';
     $EmpreendimentoTO->flg_teste = isset($_POST['flg_teste']) && ((int) $_POST['flg_teste'] == 1 || (int) $_POST['flg_teste'] == 0) ? (int) $_POST['flg_teste'] : NULL;
     $EmpreendimentoTO->qtd_dias_teste = isset($_POST['qtd_dias_teste']) ? $_POST['qtd_dias_teste'] : NULL;
     $EmpreendimentoTO->dta_cadastro = date('Y-m-d H:i:s');
     $EmpreendimentoTO->num_cnpj = isset($_POST['num_cnpj']) ? $_POST['num_cnpj'] : '';
     $EmpreendimentoTO->num_inscricao_estadual = isset($_POST['num_inscricao_estadual']) ? $_POST['num_inscricao_estadual'] : '';
     $EmpreendimentoTO->nme_razao_social = isset($_POST['nme_razao_social']) ? $_POST['nme_razao_social'] : '';
     $EmpreendimentoTO->nme_fantasia = isset($_POST['nme_fantasia']) ? $_POST['nme_fantasia'] : '';
     $EmpreendimentoTO->nme_logradouro = isset($_POST['nme_logradouro']) ? $_POST['nme_logradouro'] : '';
     $EmpreendimentoTO->num_logradouro = isset($_POST['num_logradouro']) ? $_POST['num_logradouro'] : '';
     $EmpreendimentoTO->nme_bairro_logradouro = isset($_POST['nme_bairro_logradouro']) ? $_POST['nme_bairro_logradouro'] : '';
     $EmpreendimentoTO->cod_cidade = isset($_POST['cod_cidade']) ? $_POST['cod_cidade'] : NULL;
     $EmpreendimentoTO->cod_estado = isset($_POST['cod_estado']) ? $_POST['cod_estado'] : NULL;
     $EmpreendimentoTO->cod_regime_tributario = isset($_POST['cod_regime_tributario']) && is_numeric($_POST["cod_regime_tributario"]) ? $_POST['cod_regime_tributario'] : NULL;
     $EmpreendimentoTO->cod_regime_pis_cofins = isset($_POST['cod_regime_pis_cofins']) && is_numeric($_POST["cod_regime_pis_cofins"]) ? $_POST['cod_regime_pis_cofins'] : NULL;
     $EmpreendimentoTO->cod_tipo_empresa = isset($_POST['cod_tipo_empresa']) && is_numeric($_POST["cod_tipo_empresa"]) ? $_POST['cod_tipo_empresa'] : NULL;
     $EmpreendimentoTO->flg_contribuinte_icms = isset($_POST['flg_contribuinte_icms']) ? (int) $_POST['flg_contribuinte_icms'] : 0;
     $EmpreendimentoTO->flg_contribuinte_ipi = isset($_POST['flg_contribuinte_ipi']) ? (int) $_POST['flg_contribuinte_ipi'] : 0;
     $EmpreendimentoTO->cod_zoneamento = isset($_POST['cod_zoneamento']) && is_numeric($_POST["cod_zoneamento"]) ? $_POST['cod_zoneamento'] : NULL;
     $EmpreendimentoTO->num_percentual_credito_simples = isset($_POST['num_percentual_credito_simples']) && is_numeric($_POST["num_percentual_credito_simples"]) ? $_POST['num_percentual_credito_simples'] : NULL;
     $EmpreendimentoTO->num_cep = isset($_POST['num_cep']) ? $_POST['num_cep'] : NULL;
     $EmpreendimentoTO->num_inscricao_estadual_st = isset($_POST['num_inscricao_estadual_st']) ? $_POST['num_inscricao_estadual_st'] : NULL;
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     $UsuarioEmpreendimentoTO->id_usuario = isset($_POST['id_usuario']) ? $_POST['id_usuario'] : '';
     $regime_especial = isset($_POST['regime_especial']) ? $_POST['regime_especial'] : array();
     // Validação de campos obrigatórios
     $validator = new DataValidator();
     $validator->set_msg('O nome do Empreendimento é obrigatório')->set('nome_empreendimento', $EmpreendimentoTO->nome_empreendimento)->is_required();
     $validator->set_msg('O ID do usuario é obrigatório')->set('id_usuario', $UsuarioEmpreendimentoTO->id_usuario)->is_required();
     if ($EmpreendimentoTO->flg_teste == 1) {
         $validator->set_msg('A quantidade de dias para teste é obrigatória')->set('qtd_dias_teste', $EmpreendimentoTO->qtd_dias_teste)->is_required()->set_msg('Este campo é obrigatóriamente numérico')->is_num()->set_msg('Este campo deve ser obrigatóriamente maior que 0 (zero)')->min_value(1, true);
     } else {
         $EmpreendimentoTO->qtd_dias_teste = null;
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     try {
         $EmpreendimentoDao = new EmpreendimentoDao();
         $last_id_empreendimento = $EmpreendimentoDao->saveEmpreendimento($EmpreendimentoTO);
         if (!$last_id_empreendimento) {
             Flight::halt(500, 'erro ao salvar empreendimento');
         } else {
             $RegimeEspecialDao = new RegimeEspecialDao();
             $RegimeEspecialDao->saveRegimeEmpreendimento($regime_especial, $last_id_empreendimento);
             $arrConfigs = array();
             $arrConfigs['id_plano_fechamento_caixa'] = "-1";
             $arrConfigs['id_plano_caixa'] = "-1";
             $arrConfigs['id_fornecedor_movimentacao_caixa'] = "-1";
             $arrConfigs['id_cliente_movimentacao_caixa'] = "-1";
             $arrConfigs['path_logo_rel'] = "-1";
             $arrConfigs['id_produto_debito_anterior_cliente'] = "-1";
             $arrConfigs['id_conta_bancaria_padrao_fechamento_automatico'] = "-1";
             $arrConfigs['id_usuario_venda_vitrine'] = "-1";
             $arrConfigs['time_zone'] = "America/Sao_Paulo";
             // salvar id_cliente_movimentacao_caixa = CLIENTE LOJA FÍSICA
             $cliMovCaixaTO = new ClienteTO();
             $cliMovCaixaTO->nome = "CLIENTE LOJA FÍSICA";
             $cliMovCaixaTO->id_perfil = 6;
             $cliMovCaixaTO->id_empreendimento = $last_id_empreendimento;
             $cliMovCaixaDao = new ClienteDao();
             $last_id_cliMovCaixa = $cliMovCaixaDao->saveCliente($cliMovCaixaTO);
             if (!$last_id_cliMovCaixa) {
                 Flight::halt(500, 'erro ao criar [CLIENTE LOJA FÍSICA] padrão para o empreendimento [$last_id_empreendimento]');
             }
             $UsuarioEmpreendimentoTO->id_usuario = $last_id_cliMovCaixa;
             $UsuarioEmpreendimentoTO->id_empreendimento = $last_id_empreendimento;
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao associar [CLIENTE LOJA FÍSICA] ao empreendimento');
             }
             $arrConfigs['id_cliente_movimentacao_caixa'] = $last_id_cliMovCaixa;
             // salvar id_usuario_venda_vitrine = CLIENTE LOJA VIRTUAL
             $cliVenVitrineTO = new ClienteTO();
             $cliVenVitrineTO->nome = "CLIENTE LOJA VIRTUAL";
             $cliVenVitrineTO->id_perfil = 6;
             $cliVenVitrineTO->id_empreendimento = $last_id_empreendimento;
             $cliVenVitrineDao = new ClienteDao();
             $last_id_cliVenVitrine = $cliVenVitrineDao->saveCliente($cliVenVitrineTO);
             if (!$last_id_cliVenVitrine) {
                 Flight::halt(500, 'erro ao criar [CLIENTE LOJA VIRTUAL] padrão para o empreendimento [$last_id_empreendimento]');
             }
             $UsuarioEmpreendimentoTO->id_usuario = $last_id_cliVenVitrine;
             $UsuarioEmpreendimentoTO->id_empreendimento = $last_id_empreendimento;
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao associar [CLIENTE LOJA VIRTUAL] ao empreendimento');
             }
             $arrConfigs['id_usuario_venda_vitrine'] = $last_id_cliVenVitrine;
             // salvar id_fornecedor_movimentacao_caixa = CLIENTE LOJA FÍSICA
             $forMovCaixaTO = new FornecedorTO();
             $forMovCaixaTO->nome_fornecedor = "FORNECEDOR MOVIMENTACÃO DE CAIXA ";
             $forMovCaixaTO->id_empreendimento = $last_id_empreendimento;
             $forMovCaixaDao = new FornecedorDao();
             $last_id_forMovCaixa = $forMovCaixaDao->saveFornecedor($forMovCaixaTO);
             if (!$last_id_forMovCaixa) {
                 Flight::halt(500, 'erro ao criar [CLIENTE LOJA VIRTUAL] padrão para o empreendimento [$last_id_empreendimento]');
             }
             $arrConfigs['id_fornecedor_movimentacao_caixa'] = $last_id_forMovCaixa;
             // id_produto_debito_anterior_cliente = DÉBITO ANTERIOR
             $prodDebAnteriorTO = new ProdutoTO();
             $prodDebAnteriorTO->nome = "DÉBITO ANTERIOR";
             $prodDebAnteriorDao = new ProdutoDao();
             $last_id_prodDebAnterior = $prodDebAnteriorDao->saveProduto($prodDebAnteriorTO);
             if (!$last_id_prodDebAnterior) {
                 Flight::halt(500, 'erro ao criar [DÉBITO ANTERIOR] padrão para o empreendimento [$last_id_empreendimento]');
             }
             $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO();
             $ProdutoEmpreendimentoTO->id_produto = $last_id_prodDebAnterior;
             $ProdutoEmpreendimentoTO->id_empreendimento = $last_id_empreendimento;
             if (!$prodDebAnteriorDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) {
                 Flight::halt(500, 'Erro ao associar o produto [DÉBITO ANTERIOR] o id_empreendimento');
             }
             $arrConfigs['id_produto_debito_anterior_cliente'] = $last_id_prodDebAnterior;
             // id_conta_bancaria_padrao_fechamento_automatico = CAIXA INTERNO
             $ContaBancariaTO = new ContaBancariaTO();
             $ContaBancariaDao = new ContaBancariaDao();
             $ContaBancariaTO->dsc_conta_bancaria = 'Caixa interno';
             $ContaBancariaTO->id_tipo_conta = 3;
             $ContaBancariaTO->id_empreendimento = $last_id_empreendimento;
             $ContaBancariaTO->id_banco = 104;
             $lastIdContaBancaria = $ContaBancariaDao->saveConta($ContaBancariaTO);
             if (!$lastIdContaBancaria) {
                 Flight::halt(500, 'erro ao criar conta  [CAIXA INTERNO] padrão para fechamento de caixa');
             }
             $arrConfigs['id_conta_bancaria_padrao_fechamento_automatico'] = $lastIdContaBancaria;
             //Cadastrando Plano de contas
             if (!$EmpreendimentoDao->PlanoContaEmpreendimento($last_id_empreendimento)) {
                 Flight::halt(500, 'erro ao criar Plano de contas');
             }
             $arrConfigs['id_plano_caixa'] = $EmpreendimentoDao->getIdPlanoCaixa($last_id_empreendimento);
             $arrConfigs['id_plano_fechamento_caixa'] = $EmpreendimentoDao->getIdPlanoFechamentoCaixa($last_id_empreendimento);
             //Cadastrando cores
             if (!$EmpreendimentoDao->InsertCores($last_id_empreendimento)) {
                 Flight::halt(500, 'erro ao criar cores');
             }
             //Cadastrando chave de configurações
             foreach ($arrConfigs as $key => $value) {
                 $configDao = new ConfiguracaoDao();
                 if (!$configDao->saveKey($key, $value, $last_id_empreendimento)) {
                     Flight::halt(500, 'erro ao criar [$key][$value] padrão para o empreendimento [$last_id_empreendimento]');
                     die;
                 }
             }
             $empreendimento_usuario = array(array('id_usuario' => 222, 'id_empreendimento' => $last_id_empreendimento), array('id_usuario' => 498, 'id_empreendimento' => $last_id_empreendimento));
             foreach ($empreendimento_usuario as $key => $value) {
                 $UsuarioEmpreendimentoTO->id_empreendimento = $value['id_empreendimento'];
                 $UsuarioEmpreendimentoTO->id_usuario = $value['id_usuario'];
                 if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                     Flight::halt(500, 'erro ao vincular usuarios ao empreendimento');
                 }
             }
             Flight::halt(201);
         }
     } catch (Exception $e) {
         Flight::halt(500, $e->getMessage());
     }
 }
 public static function gravarVenda()
 {
     try {
         $conn = Conexao::getInstance();
         if (!$conn->inTransaction()) {
             $conn->beginTransaction();
         }
         $venda = $_POST['venda'];
         $VendaDao = new VendaDao();
         $VendaTO = new VendaTO();
         $VendaTO->id_usuario = isset($venda['id_usuario']) ? $venda['id_usuario'] : NULL;
         $VendaTO->id_cliente = is_numeric($venda['id_cliente']) ? $venda['id_cliente'] : NULL;
         $VendaTO->venda_confirmada = isset($venda['venda_confirmada']) ? $venda['venda_confirmada'] : NULL;
         $VendaTO->id_empreendimento = isset($venda['id_empreendimento']) ? $venda['id_empreendimento'] : NULL;
         $VendaTO->id_status_venda = isset($venda['id_status_venda']) ? $venda['id_status_venda'] : 4;
         $VendaTO->id = isset($venda['id']) ? $venda['id'] : NULL;
         $VendaTO->dta_venda = isset($venda['dta_venda']) ? $venda['dta_venda'] : NULL;
         $VendaTO->vlr_saldo_anterior = isset($venda['vlr_saldo_anterior']) ? $venda['vlr_saldo_anterior'] : NULL;
         if (isset($venda['newCliente'])) {
             $ClienteTO = new ClienteTO();
             $PessoaFisicaTO = new PessoaFisicaTO();
             $PessoaJuridicaTO = new PessoaJuridicaTO();
             $ClienteDao = new ClienteDao();
             $PessoaFisicaDao = new PessoaFisicaDao();
             $PessoaJuridicaDao = new PessoaJuridicaDao();
             $EmpreendimentoDao = new EmpreendimentoDao();
             $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
             $cliente = $venda['newCliente'];
             $empreendimento = $EmpreendimentoDao->getEmpreendimentoById($venda['id_empreendimento']);
             $ClienteTO->nome = NULL;
             $ClienteTO->id_estado = $empreendimento['cod_estado'];
             $ClienteTO->id_cidade = $empreendimento['cod_cidade'];
             $last_id_cliente = $ClienteDao->saveCliente($ClienteTO);
             if ($last_id_cliente) {
                 if ($cliente['tipo_cadastro'] == "pf") {
                     $PessoaFisicaTO->usuarios_id = $last_id_cliente;
                     $PessoaFisicaTO->cpf = $cliente['cpf'];
                     if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                         if ($conn->inTransaction()) {
                             $conn->rollback();
                         }
                         Flight::halt(500, 'Erro ao vincular o cliente ao cpf');
                     }
                 } else {
                     if ($cliente['tipo_cadastro'] == "pj") {
                         $PessoaJuridicaTO->usuarios_id = $last_id_cliente;
                         $PessoaJuridicaTO->cnpj = $cliente['cnpj'];
                         if (!$PessoaJuridicaDao->savePessoaJuridica($PessoaJuridicaTO)) {
                             if ($conn->inTransaction()) {
                                 $conn->rollback();
                             }
                             Flight::halt(500, 'Erro vincular o cliente ao cnpj');
                         }
                     }
                 }
                 $UsuarioEmpreendimentoTO->id_usuario = $last_id_cliente;
                 $UsuarioEmpreendimentoTO->id_empreendimento = $venda['id_empreendimento'];
                 if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                     if ($conn->inTransaction()) {
                         $conn->rollback();
                     }
                     Flight::halt(500, 'erro ao vincular usuario ao empreendimento');
                 }
                 $VendaTO->id_cliente = $last_id_cliente;
             } else {
                 if ($conn->inTransaction()) {
                     $conn->rollback();
                 }
                 Flight::halt(500, 'Erro ao cadastrar o cliente');
             }
         }
         if (empty($VendaTO->id)) {
             $id_venda = $VendaDao->saveVenda($VendaTO);
         } else {
             $id_venda = $VendaTO->id;
             $Conexao = new Conexao();
             $Conexao->update($VendaTO, 'tbl_vendas')->where("id = {$id_venda}")->execute();
             $Conexao->delete('tbl_itens_venda')->where("id_venda = {$id_venda}")->execute();
         }
         if (!$id_venda) {
             if ($conn->inTransaction()) {
                 $conn->rollback();
             }
             Flight::halt(500, 'erro ao inserir venda');
         } else {
             if ($conn->inTransaction()) {
                 $conn->commit();
             }
             $dados = array('id_venda' => $id_venda);
             if (isset($last_id_cliente)) {
                 $dados['id_cliente'] = $last_id_cliente;
             }
             Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode($dados))->send();
         }
     } catch (Exception $e) {
         if ($conn->inTransaction()) {
             $conn->rollback();
         }
         jsonException($e);
     }
 }
 public static function cadastrarCliente()
 {
     try {
         $UsuarioDao = new UsuarioDao();
         $ClienteDao = new ClienteDao();
         $ClienteTO = new ClienteTO();
         $PessoaFisicaTO = new PessoaFisicaTO();
         $PessoaFisicaDao = new PessoaFisicaDao();
         $EmpreendimentoDao = new EmpreendimentoDao();
         $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
         $validator = new DataValidator();
         $ClienteTO->__setAll($_POST);
         $tipo_cadastro = "pf";
         $PessoaFisicaTO->rg = isset($_POST["rg"]) ? $_POST["rg"] : NULL;
         $PessoaFisicaTO->cpf = isset($_POST["cpf"]) ? $_POST["cpf"] : NULL;
         $UsuarioEmpreendimentoTO->id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : array();
         $validator->set_msg('O id_empreendimento é obrigatório')->set('nome', $UsuarioEmpreendimentoTO->id_empreendimento)->is_required();
         if (empty($PessoaFisicaTO->cpf)) {
             $validator->set_msg('O nome do cliente é obrigatório')->set('nome', $ClienteTO->nome)->is_required();
         }
         if (empty($ClienteTO->nome)) {
             $validator->set_msg('O cpf do cliente é obrigatório')->set('cpf', $PessoaFisicaTO->cpf)->is_required();
         }
         if (!empty($ClienteTO->email)) {
             $validator->set_msg('E-mail inválido')->set('email', $ClienteTO->email)->is_email();
         }
         if (!$validator->validate()) {
             Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
             return;
         }
         $Conexao = new Conexao();
         $Conexao::getInstance();
         $Conexao->beginTransaction();
         $last_id = $ClienteDao->saveCliente($ClienteTO);
         if ($last_id) {
             $UsuarioEmpreendimentoTO->id_usuario = $last_id;
             $PessoaFisicaTO->usuarios_id = $last_id;
             if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                 $Conexao->rollback();
                 Flight::halt(500, 'Erro ao cadastrar cpf do cliente');
             }
             $UsuarioEmpreendimentoTO->id_usuario = $last_id;
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 $Conexao->rollback();
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
             $dados_usuario = $UsuarioDao->getUsuario($UsuarioEmpreendimentoTO->id_empreendimento, $last_id);
             Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('usuario' => $dados_usuario)))->send();
         } else {
             $Conexao->rollback();
             Flight::halt(500, 'Erro ao cadastrar o cliente');
         }
     } catch (Exception $e) {
         if (isset($Conexao)) {
             $Conexao->rollback();
         }
         jsonException($e);
     }
 }
 public static function requestSaveUsuario()
 {
     try {
         $usuario = $_POST['usuario'];
         $id_empreendimento = $_POST['id_empreendimento'];
         $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao();
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $PrestaShopDao = new PrestaShopDao($_POST['id_empreendimento']);
         $ClienteDao = new ClienteDao();
         $ClienteTO = new ClienteTO();
         $ClienteTO->nome = getKeyArr($usuario, 'firstname');
         $ClienteTO->apelido = getKeyArr($usuario, 'lastname');
         $ClienteTO->dta_nacimento = getKeyArr($usuario, 'birthday');
         $ClienteTO->email = getKeyArr($usuario, 'email');
         $ClienteTO->flg_tipo = 'cliente';
         $last_id = $ClienteDao->saveCliente($ClienteTO);
         if (!$last_id) {
             throw new Exception('Erro ao salvar usuario', 1);
         }
         $EmpreendimentoDao = new EmpreendimentoDao();
         $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         $UsuarioEmpreendimentoTO->id_empreendimento = $id_empreendimento;
         if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
             throw new Exception('erro ao lincar usuario ao empreendimento');
         }
         $AutenticacaoTO = new AutenticacaoTO();
         $AutenticacaoTO->id_usuario = $last_id;
         $AutenticacaoTO->senha = getKeyArr($usuario, 'passwd');
         $AutenticacaoTO->login = getKeyArr($usuario, 'email');
         if (!empty($AutenticacaoTO->senha) && !empty($AutenticacaoTO->login)) {
             if (!$ClienteDao->saveAutenticacao($AutenticacaoTO)) {
                 throw new Exception('Erro ao inserir Autenticacao');
             }
         }
         $PessoaFisicaDao = new PessoaFisicaDao();
         $PessoaFisicaTO = new PessoaFisicaTO();
         $PessoaFisicaTO->usuarios_id = $last_id;
         $PessoaFisicaTO->rg = NULL;
         $PessoaFisicaTO->cpf = NULL;
         if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
             throw new Exception('Erro ao cadastrar tipo da pessoa (pf,pj)');
         }
         $ConfiguracaoDao = new ConfiguracaoDao();
         $config = $ConfiguracaoDao->getConfiguracoes($id_empreendimento);
         if (isset($config['prestashop_id_perfil_padrao']) && !empty($config['prestashop_id_perfil_padrao'])) {
             $UsuarioPerfilEmpreendimentoDao = new UsuarioPerfilEmpreendimentoDao();
             $UsuarioPerfilEmpreendimentoTO = new UsuarioPerfilEmpreendimentoTO();
             $UsuarioPerfilEmpreendimentoTO->id_empreendimento = $id_empreendimento;
             $UsuarioPerfilEmpreendimentoTO->id_perfil = $config['prestashop_id_perfil_padrao'];
             $UsuarioPerfilEmpreendimentoTO->id_usuario = $last_id;
             $UsuarioPerfilEmpreendimentoDao->saveUsuarioPerfilEmpreendimento($UsuarioPerfilEmpreendimentoTO);
         }
         $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO();
         $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop';
         $ReferenciaIntegracaoTO->tabela = 'tbl_usuarios';
         $ReferenciaIntegracaoTO->id_item = $last_id;
         $ReferenciaIntegracaoTO->id_item_referencia = $usuario['id'];
         $ReferenciaIntegracaoTO->tipo = 'usuario';
         $ReferenciaIntegracaoTO->id_empreendimento = $id_empreendimento;
         if (!$ReferenciaIntegracaoDao->save($ReferenciaIntegracaoTO)) {
             throw new Exception('Erro ao criar referencia no sistema', 1);
         }
     } catch (Exception $e) {
         $log = new KLogger("logs/logErrorPrestaShop.txt", KLogger::DEBUG);
         $log->LogError($e->getMessage() . '- file:' . $e->getFile() . ' - line:' . $e->getLine());
         $log->LogDebug(json_encode($_POST));
         $log->LogJunp();
         Flight::halt(500, $e->getMessage());
     }
 }
 public static function updateCliente()
 {
     $ClienteTO = new stdClass();
     $ClienteDao = new ClienteDao();
     $PessoaJuridicaDao = new PessoaJuridicaDao();
     $PessoaFisicaTO = new PessoaFisicaTO();
     $PessoaJuridicaTO = new PessoaJuridicaTO();
     $validator = new DataValidator();
     $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $where = $_POST['where'];
     foreach ($_POST['campos'] as $key => $value) {
         if ($key != 'cpf' && $key != 'rg') {
             $ClienteTO->{$key} = $value;
         }
     }
     $PessoaFisicaTO->rg = isset($_POST['campos']["rg"]) ? $_POST['campos']["rg"] : "";
     $PessoaFisicaTO->cpf = isset($_POST['campos']["cpf"]) ? $_POST['campos']["cpf"] : "";
     $PessoaFisicaDao = new PessoaFisicaDao();
     $PessoaFisicaTO->usuarios_id = $ClienteTO->id;
     if (!$PessoaFisicaDao->updatePessoaFisica($PessoaFisicaTO)) {
         Flight::halt(500, 'Erro ao atualizar o cliente');
     }
     $validator->set_msg('Campo obrigatório')->set('nome', $ClienteTO->nome)->is_required();
     if (!empty($ClienteTO->email)) {
         $validator->set_msg('Email inválido')->set('email', $ClienteTO->email)->is_email();
     }
     $validator->set_msg('Campo obrigatório')->set('celular', $ClienteTO->celular)->is_required();
     $validator->set_msg('Campo obrigatório')->set('tel_fixo', $ClienteTO->tel_fixo)->is_required();
     if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) {
         $validator->_errors['empreendimentos'][] = 'É obrigatório informar pelo menos um empreendimento';
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     $result = $ClienteDao->ClienteUpdate($ClienteTO, $where);
     $EmpreendimentoDao = new EmpreendimentoDao();
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     $UsuarioEmpreendimentoTO->id_usuario = $ClienteTO->id;
     $EmpreendimentoDao->delAllUsuarioEmp($UsuarioEmpreendimentoTO);
     if ($result) {
         $UsuarioEmpreendimentoTO->id_usuario = $ClienteTO->id;
         foreach ($empreendimentos as $key => $value) {
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
         }
         Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('id' => $ClienteTO->id)))->send();
     } else {
         Flight::halt(500, 'Erro ao atualizar o cliente');
     }
 }
 public static function cadastroRapidoClientePedido()
 {
     $ClienteTO = new ClienteTO();
     $PessoaFisicaTO = new PessoaFisicaTO();
     $PessoaJuridicaTO = new PessoaJuridicaTO();
     $ClienteDao = new ClienteDao();
     $AutenticacaoTO = new AutenticacaoTO();
     $validator = new DataValidator();
     $ClienteTO->nome = isset($_POST["nome"]) ? $_POST["nome"] : "";
     $ClienteTO->status = isset($_POST["status"]) ? $_POST["status"] : "1";
     $ClienteTO->id_perfil = 6;
     $ClienteTO->id_empreendimento = isset($_POST["id_empreendimento"]) ? $_POST["id_empreendimento"] : NULL;
     $ClienteTO->email = isset($_POST["email"]) ? $_POST["email"] : "";
     $ClienteTO->tel_fixo = isset($_POST["tel_fixo"]) ? $_POST["tel_fixo"] : NULL;
     $ClienteTO->celular = isset($_POST["celular"]) ? $_POST["celular"] : NULL;
     $ClienteTO->indicacao = isset($_POST["indicacao"]) ? $_POST["indicacao"] : NULL;
     $ClienteTO->id_como_encontrou = isset($_POST["id_como_encontrou"]) ? $_POST["id_como_encontrou"] : NULL;
     $ClienteTO->id = isset($_POST["id"]) ? $_POST["id"] : NULL;
     $tipo_cadastro = "pf";
     $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $acao_cliente = isset($_POST['acao_cliente']) ? $_POST['acao_cliente'] : 'insert';
     if ($acao_cliente == 'update') {
         $validator->set_msg('O ID do cliente é obrigatório')->set('id', $ClienteTO->id)->is_required();
     }
     $validator->set_msg('O nome do cliente é obrigatório')->set('nome', $ClienteTO->nome)->is_required();
     $validator->set_msg('informe o status do cliente')->set('status', $ClienteTO->status)->is_num();
     $validator->set_msg('E-mail inválido')->set('email', $ClienteTO->email)->is_email();
     $validator->set_msg('O número do Tel. Fixo é obrigatório')->set('tel_fixo', $ClienteTO->tel_fixo)->is_num();
     $validator->set_msg('O codigo do empreendimento é obrigatório')->set('id_empreendimento', $ClienteTO->id_empreendimento)->is_required();
     $validator->set_msg('O perfil é obrigatório')->set('id_perfil', $ClienteTO->id_perfil)->is_required();
     if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) {
         $validator->_errors['empreendimentos'][] = 'É obrigatório informar pelo menos um empreendimento';
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     if ($acao_cliente == 'insert') {
         $last_id = $ClienteDao->saveCliente($ClienteTO);
     }
     if ($acao_cliente == 'update') {
         $last_id = $ClienteDao->updateCliente($ClienteTO);
     }
     $EmpreendimentoDao = new EmpreendimentoDao();
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     if ($last_id && $acao_cliente == "insert") {
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         $EmpreendimentoDao->delAllUsuarioEmp($UsuarioEmpreendimentoTO);
         if ($tipo_cadastro == "pf") {
             $PessoaFisicaDao = new PessoaFisicaDao();
             $PessoaFisicaTO->usuarios_id = $last_id;
             if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                 Flight::halt(500, 'Erro ao cadastrar o cliente PF');
             }
         } else {
             if ($tipo_cadastro == "pj") {
                 $PessoaJuridicaDao = new PessoaJuridicaDao();
                 $PessoaJuridicaTO->usuarios_id = $last_id;
                 if (!$PessoaJuridicaDao->savePessoaJuridica($PessoaJuridicaTO)) {
                     Flight::halt(500, 'Erro ao cadastrar o cliente PJ');
                 }
             }
         }
         $UsuarioEmpreendimentoTO->id_usuario = $last_id;
         foreach ($empreendimentos as $key => $value) {
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
         }
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_cliente' => $last_id)))->send();
     } else {
         if ($last_id == false) {
             Flight::halt(500, 'Erro ao cadastrar o cliente');
         } else {
             Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('id_cliente' => $ClienteTO->id)))->send();
         }
     }
 }
 public static function save($isIndividual)
 {
     $ConfiguracaoDao = new ConfiguracaoDao();
     if ($isIndividual === "true") {
         if ($ConfiguracaoDao->existsKey($_POST['nome'], $_POST['id_empreendimento'])) {
             if (!$ConfiguracaoDao->updateKey($_POST['nome'], $_POST['valor'], $_POST['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao atualizar chave de configuração');
             }
         } else {
             if (!$ConfiguracaoDao->saveKey($_POST['nome'], $_POST['valor'], $_POST['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao cadastrar chave de configuração');
             }
         }
     } else {
         $chaves = isset($_POST['chaves']) ? $_POST['chaves'] : null;
         if ($chaves == null) {
             Flight::halt(406);
         }
         $id_empreendimento = $chaves[0]['id_empreendimento'];
         foreach ($chaves as $key => $value) {
             $nome = isset($value['nome']) ? $value['nome'] : NULL;
             $valor = isset($value['valor']) ? $value['valor'] : NULL;
             $id_empreendimento = isset($value['id_empreendimento']) ? $value['id_empreendimento'] : NULL;
             if ($nome === "id_plano_caixa") {
                 $cfg = $ConfiguracaoDao->getConfiguracoes($id_empreendimento, "id_plano_caixa");
                 if ($cfg && $cfg != null) {
                     $pgtoClienteDao = new PagamentoClienteDao();
                     $pgtoClienteDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_caixa'], $valor);
                     $pgtoFornecedorDao = new PagamentoFornecedorDao();
                     $pgtoFornecedorDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_caixa'], $valor);
                 }
             }
             if ($nome === "id_plano_fechamento_caixa") {
                 $cfg = $ConfiguracaoDao->getConfiguracoes($id_empreendimento, "id_plano_fechamento_caixa");
                 if ($cfg && $cfg != null) {
                     $pgtoClienteDao = new PagamentoClienteDao();
                     $pgtoClienteDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_fechamento_caixa'], $valor);
                     $pgtoFornecedorDao = new PagamentoFornecedorDao();
                     $pgtoFornecedorDao->updatePlanoContaPagamento($id_empreendimento, $cfg['id_plano_fechamento_caixa'], $valor);
                 }
             }
             if ($ConfiguracaoDao->existsKey($nome, $value['id_empreendimento'])) {
                 if (!$ConfiguracaoDao->updateKey($nome, $valor, $id_empreendimento)) {
                     Flight::halt(500, 'erro ao atualizar chave de configuração');
                 }
             } else {
                 if (!$ConfiguracaoDao->saveKey($nome, $valor, $id_empreendimento)) {
                     Flight::halt(500, 'erro ao cadastrar chave de configuração');
                 }
             }
         }
         if (!$ConfiguracaoDao->existsKey('id_fornecedor_movimentacao_caixa', $value['id_empreendimento'])) {
             $FornecedorTO = new FornecedorTO();
             $FornecedorDao = new FornecedorDao();
             $FornecedorTO->nome_fornecedor = 'fornecedor de movimentação de caixa';
             $FornecedorTO->id_empreendimento = $value['id_empreendimento'];
             $id_fornecedor = $FornecedorDao->saveFornecedor($FornecedorTO);
             if ($id_fornecedor) {
                 if (!$ConfiguracaoDao->saveKey('id_fornecedor_movimentacao_caixa', $id_fornecedor, $value['id_empreendimento'])) {
                     Flight::halt(500, 'erro ao cadastrar chave de movimentação');
                 }
             } else {
                 Flight::halt(500, 'erro ao inserir Fornecedor de movimentação');
             }
         }
         if (!$ConfiguracaoDao->existsKey('id_cliente_movimentacao_caixa', $value['id_empreendimento'])) {
             $ClienteTO = new ClienteTO();
             $ClienteDao = new ClienteDao();
             $ClienteTO->nome = 'cliente de movimentação de caixa';
             $id_cliente = $ClienteDao->saveCliente($ClienteTO);
             if (!$id_cliente) {
                 Flight::halt(500, 'erro ao inserir cliente de movimentação');
             }
             $EmpreendimentoDao = new EmpreendimentoDao();
             $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
             $UsuarioEmpreendimentoTO->id_usuario = $id_cliente;
             $UsuarioEmpreendimentoTO->id_empreendimento = $value['id_empreendimento'];
             if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) {
                 Flight::halt(500, 'erro ao lincar usuario ao empreendimento');
             }
             if (!$ConfiguracaoDao->saveKey('id_cliente_movimentacao_caixa', $id_cliente, $value['id_empreendimento'])) {
                 Flight::halt(500, 'erro ao cadastrar chave de movimentação');
             }
         }
     }
     Flight::halt(201);
 }