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 cadastroRapidoCliente()
 {
     $ClienteTO = new ClienteTO();
     $PessoaFisicaTO = new PessoaFisicaTO();
     $PessoaJuridicaTO = new PessoaJuridicaTO();
     $ClienteDao = new ClienteDao();
     $AutenticacaoTO = new AutenticacaoTO();
     $validator = new DataValidator();
     $UsuarioDao = new UsuarioDao();
     $ClienteTO->nome = isset($_POST["nome"]) ? $_POST["nome"] : NULL;
     $ClienteTO->status = isset($_POST["status"]) ? $_POST["status"] : "1";
     $ClienteTO->id_empreendimento = isset($_POST["id_empreendimento"]) ? $_POST["id_empreendimento"] : NULL;
     $ClienteTO->email = isset($_POST["email"]) ? $_POST["email"] : NULL;
     $ClienteTO->dta_nacimento = isset($_POST["dta_nacimento"]) ? $_POST["dta_nacimento"] : null;
     $ClienteTO->celular = isset($_POST["celular"]) ? $_POST["celular"] : null;
     $PessoaFisicaTO->rg = isset($_POST["rg"]) ? $_POST["rg"] : NULL;
     $PessoaFisicaTO->cpf = isset($_POST["cpf"]) ? $_POST["cpf"] : NULL;
     $PessoaJuridicaTO->razao_social = isset($_POST["razao_social"]) ? $_POST["razao_social"] : NULL;
     $PessoaJuridicaTO->nome_fantasia = isset($_POST["nome_fantasia"]) ? $_POST["nome_fantasia"] : NULL;
     $PessoaJuridicaTO->cnpj = isset($_POST["cnpj"]) ? $_POST["cnpj"] : NULL;
     $PessoaJuridicaTO->inscricao_estadual = isset($_POST["inscricao_estadual"]) ? $_POST["inscricao_estadual"] : NULL;
     $tipo_cadastro = isset($_POST['tipo_cadastro']) ? $_POST['tipo_cadastro'] : NULL;
     $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
     $id_perfil = isset($_POST["id_perfil"]) ? $_POST["id_perfil"] : NULL;
     if (empty($PessoaFisicaTO->cpf)) {
         $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();
     if (!empty($ClienteTO->email)) {
         $validator->set_msg('E-mail inválido')->set('email', $ClienteTO->email)->is_email();
     }
     $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', $id_perfil)->is_required();
     if (empty($ClienteTO->nome)) {
         if ($tipo_cadastro == 'pf') {
             /*$validator->set_msg('O rg é obrigatório')
               ->set('rg' ,$PessoaFisicaTO->rg)
               ->is_required();*/
             $validator->set_msg('A cpf é obrigatória')->set('cpf', $PessoaFisicaTO->cpf)->is_required();
         } elseif ($tipo_cadastro == 'pj') {
             /*$validator->set_msg('A razão social é obrigatório')
             					  ->set('razao_social' ,$PessoaJuridicaTO->razao_social)
             					  ->is_required();
             
             				$validator->set_msg('O nome fantasia é obrigatória')
             					  ->set('nome_fantasia' ,$PessoaJuridicaTO->nome_fantasia)
             					  ->is_required();*/
             $validator->set_msg('O cnpj é obrigatório')->set('cnpj', $PessoaJuridicaTO->cnpj)->is_required();
             /*$validator->set_msg('A incrição estadual é obrigatória')
               ->set('inscricao_estadual' ,$PessoaJuridicaTO->inscricao_estadual)
               ->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;
     }
     $last_id = $ClienteDao->saveCliente($ClienteTO);
     $EmpreendimentoDao = new EmpreendimentoDao();
     $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO();
     $UsuarioEmpreendimentoTO->id_usuario = $last_id;
     $EmpreendimentoDao->delAllUsuarioEmp($UsuarioEmpreendimentoTO);
     if ($last_id) {
         $UsuarioPerfilEmpreendimentoDao = new UsuarioPerfilEmpreendimentoDao();
         $UsuarioPerfilEmpreendimentoTO = new UsuarioPerfilEmpreendimentoTO();
         $UsuarioPerfilEmpreendimentoTO->id_empreendimento = $_POST["id_empreendimento"];
         $UsuarioPerfilEmpreendimentoTO->id_perfil = $id_perfil;
         $UsuarioPerfilEmpreendimentoTO->id_usuario = $last_id;
         $UsuarioPerfilEmpreendimentoDao->saveUsuarioPerfilEmpreendimento($UsuarioPerfilEmpreendimentoTO);
         if ($tipo_cadastro == "pf") {
             $PessoaFisicaDao = new PessoaFisicaDao();
             $PessoaFisicaTO->usuarios_id = $last_id;
             if (!$PessoaFisicaDao->savePessoaFisica($PessoaFisicaTO)) {
                 Flight::halt(500, 'Erro ao cadastrar o cliente');
             }
         } 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');
                 }
             }
         }
         $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');
             }
         }
         $dados_usuario = $UsuarioDao->getUsuario($ClienteTO->id_empreendimento, $last_id);
         Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id' => $last_id, 'dados' => $dados_usuario)))->send();
     } else {
         Flight::halt(500, 'Erro ao cadastrar o clienteeee');
     }
 }