public static function getModulosPerfis($cod_perfil)
 {
     $moduloPerfilDao = new ModuloPerfilDao();
     $items = $moduloPerfilDao->getModulosPerfis($cod_perfil);
     if ($items) {
         Flight::json($items);
     } else {
         Flight::halt(404, 'Nenhum modulo x perfil encontrado.');
     }
 }
 public static function save()
 {
     $perfilTO = new PerfilTO();
     $perfilTO->cod_perfil = isset($_POST['cod_perfil']) ? $_POST['cod_perfil'] : "";
     $perfilTO->nme_perfil = isset($_POST['nme_perfil']) ? $_POST['nme_perfil'] : "";
     $perfilTO->flg_ativo = isset($_POST['flg_ativo']) ? $_POST['flg_ativo'] : array();
     $perfilTO->modulos = isset($_POST['modulos']) ? $_POST['modulos'] : array();
     $validator = new DataValidator();
     $validator->set_msg('A Descrição é obrigatória')->set('nme_perfil', $perfilTO->nme_perfil)->is_required();
     if (count($modulos) == 0) {
         $validator->set_msg('Selecione ao menos um módulo')->set('modulos', $perfilTO->modulos)->set_custom_error();
     }
     if (!$validator->validate()) {
         Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
         return;
     }
     try {
         $perfilDao = new PerfilDao();
         if ($cod_perfil === "") {
             $perfilTO->cod_perfil = $perfilDao->savePerfil($perfilTO);
         } else {
             if (!$perfilDao->updatePerfil($perfilTO)) {
                 Flight::halt(500, "Falha ao atualizar o perfil [" . $perfilTO->nme_perfil . "]");
             }
         }
         if ($perfilTO->cod_perfil) {
             $moduloPerfilDao = new ModuloPerfilDao();
             if ($moduloPerfilDao->deleteAllModulosPerfil($perfilTO->cod_perfil)) {
                 foreach ($modus as $key => $modulo) {
                     $moduloPerfilTO = new ModuloPerfilTO();
                     $moduloPerfilTO->cod_modulo = $modulo['cod_modulo'];
                     $moduloPerfilTO->cod_perfil = $perfilTO->cod_perfil;
                     if (!$moduloPerfilDao->saveModuloPerfil($moduloPerfilTO)) {
                         Flight::halt(500, "Falha ao gravar os módulos ao perfil [" . $perfilTO->nme_perfil . "]");
                     }
                 }
             }
         } else {
             Flight::halt(500, "Falha ao salvar o perfil [" . $perfilTO->nme_perfil . "]");
         }
     } catch (PDOException $e) {
         Flight::halt(500, $e->getMessage());
     }
 }
 public static function update()
 {
     try {
         $PerfilUsuarioTO = new PerfilUsuarioTO();
         $PerfilUsuarioDao = new PerfilUsuarioDao();
         $ModuloPerfilTO = new ModuloPerfilTO();
         $ModuloPerfilDao = new ModuloPerfilDao();
         $PerfilUsuarioTO->__setAll($_POST);
         $modulos = isset($_POST['modulos']) ? $_POST['modulos'] : array();
         $empreendimentos = isset($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array();
         $validator = new DataValidator();
         $validator->set_msg('O ID do perfil é obrigatório')->set('nome', $PerfilUsuarioTO->id)->is_required();
         $validator->set_msg('O nome do perfil é obrigatório')->set('nome', $PerfilUsuarioTO->nome)->is_required();
         $validator->set_msg('Deve ser selecionado ao menos um módulo')->set('modulos', count($modulos))->min_value(0);
         $validator->set_msg('Deve ser selecionado ao menos um empreendimento')->set('modulos', count($empreendimentos))->min_value(0);
         if (!$validator->validate()) {
             Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send();
             return;
         }
         $PerfilUsuarioDao->updatePerfil($PerfilUsuarioTO, 'id=' . $PerfilUsuarioTO->id);
         $ModuloPerfilDao->deleteModuloPerfil('id_perfil=' . $PerfilUsuarioTO->id);
         foreach ($modulos as $id_modulo) {
             $ModuloPerfilTO->id_modulo = $id_modulo;
             $ModuloPerfilTO->id_perfil = $PerfilUsuarioTO->id;
             $ModuloPerfilDao->save($ModuloPerfilTO);
         }
         $PerfilUsuarioEmpreendimentoDao = new PerfilUsuarioEmpreendimentoDao();
         $PerfilUsuarioEmpreendimentoDao->deletePerfilUsuarioEmpreendimento('id_perfil=' . $PerfilUsuarioTO->id);
         foreach ($empreendimentos as $empreendimento) {
             $PerfilUsuarioEmpreendimentoTO = new PerfilUsuarioEmpreendimentoTO();
             $empreendimento['id_perfil'] = $PerfilUsuarioTO->id;
             $PerfilUsuarioEmpreendimentoTO->__setAll($empreendimento);
             $PerfilUsuarioEmpreendimentoDao->savePerfilUsuarioEmpreendimento($PerfilUsuarioEmpreendimentoTO);
         }
         Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode(array('id' => $PerfilUsuarioTO->id)))->send();
     } catch (Exception $e) {
         $Conexao = new Conexao();
         $Conexao::getInstance();
         $Conexao->rollback();
         jsonException($e);
     }
 }