Exemple #1
0
 public function registrar_inscricao()
 {
     $this->areaTitle = "Chamada para Trabalhos";
     $this->breadcrumb = array("Principal" => SYS_BASE_URL, "Participe" => SYS_BASE_URL . 'participe', "Confirmação de Inscrição");
     $insc = new Inscricoes();
     $insc->nome = $_POST['nome'];
     $insc->sobrenome = $_POST['sobrenome'];
     $insc->rg = $_POST['rg'];
     $insc->email = $_POST['email'];
     $insc->website = $_POST['site'];
     $insc->cidade = $_POST['cidade'];
     if ($insc->save()) {
         $viewData['pessoa'] = $insc->toArray();
         $viewData['mainContent'] = $this->loadView('principal/confirma_inscricao', $viewData);
     } else {
         print "Problema ao executar a operação!";
     }
 }
 private static function showForm($action)
 {
     // Postando?
     if (count($_POST) > 0) {
         /* @var $inscricao Inscricao */
         $inscricao = Inscricoes::getInstance()->getById(get_query_var('avaliacao') / 13);
         /* @var $evento Evento */
         $questionario = $inscricao->evento()->getQuestionarioAvaliacao();
         $perguntas = $questionario->getPerguntas();
         $jaRespondeu = $inscricao->hasAvaliacaoResposta(1);
         $mensagem = null;
         foreach ($perguntas as $pergunta) {
             $resp = trim($_POST['input_' . $pergunta->id]);
             //                var_dump($resp);
             if ($pergunta->obrigatoria && $resp == '') {
                 setFlashError("Por favor, responda as perguntas obrigatórias (marcadas com *)");
                 break;
             }
             if ($resp != '') {
                 $resposta = Respostas::getInstance()->createResposta($pergunta, $inscricao, $resp);
                 $mensagem .= $pergunta->titulo . ': ' . $resp . '<br>';
             }
         }
         if (!hasFlashError()) {
             setFlash("sucesso");
             // Enviar email com respostas
             //                $mensagem="Respostas:<br><br>".$mensagem;
             //                $inscricao->evento()->organizador()->enviarEmail(
             //                    $inscricao->evento()->organizador()->email,
             //                    "Resposta - ".$questionario->titulo." - ".$inscricao->evento()->titulo." - ". $inscricao->pessoa()->nome,
             //                    $mensagem
             //                );
             // Creditar o gamification
             if (TGO_EVENTO_GAMIFICATION === true && !$jaRespondeu) {
                 Gamification::getInstance()->broadcast('event_feedback', $inscricao->id_pessoa, $inscricao);
             }
         }
     } else {
         // Obter inscrição
         $inscricao = Inscricoes::getInstance()->getById(get_query_var('avaliacao') / 13);
         if ($inscricao == null) {
             die("Inscrição não localizada");
         }
         // Validar inscrição
         if ($inscricao->confirmado != '1') {
             die("Inscrição não confirmada");
         }
     }
     return 'avaliacao.php';
 }
 function column_title($item)
 {
     /* @var $inscricao Inscricao */
     $inscricao = $this->itemsObj[$item['id']];
     $link = $inscricao->getLinkPagamento();
     if ($inscricao->pessoa() == null) {
         return "Inscrição sem pessoa?";
     }
     // Começar retorno
     $return = '<a href="admin.php?page=Pessoas&action=view&id=' . $item['id_pessoa'] . '">' . PLib::capitalize_name($inscricao->pessoa->nome, 35) . '</a><br>
     <img src="' . $inscricao->pessoa()->getPictureUrl(80) . '" style="width:80px; margin-right: 8px; float:left;">';
     $return .= '</b> ';
     // Ações
     $actions = array('link' => '<a href="' . $link . '" target=_blank>Link Wizard</a>', 'edit' => '<a href="admin.php?page=Inscricoes&action=edit&id=' . $item['id'] . '">Editar</a>');
     if (PLib::coalesce($inscricao->confirmado, 0) == 0) {
         $actions['delete'] = '<a href="admin.php?page=Inscricoes&action=delete&id=' . $item['id'] . '&id_evento=' . $item['id_evento'] . '">Excluir</a>';
     }
     // Contar inscrições
     $inscricoes = count(Inscricoes::getInstance()->getByPessoa($item['id_pessoa']));
     if ($inscricoes == 1) {
         $inscricoes = "*";
     } else {
         $inscricoes = "({$inscricoes})";
     }
     $return .= $inscricoes . '<br>Ticket: ' . $item['id'];
     $return .= '<br>Inscrição: ' . Plib::date_relative($item['data_inscricao'], true) . " (" . PLib::days_between_dates($item['data_inscricao']) . " dias)";
     if ($item['id_preco'] != "") {
         $return .= '<br>Categoria: ' . $inscricao->categoria()->titulo;
     }
     if ($item['id_preco'] != "") {
         $return .= '<br>Lote: ' . $inscricao->preco()->titulo;
     }
     if ($inscricao->valor_inscricao) {
         $return .= '<br>Valor Inscrição: ' . PLib::format_cash($inscricao->valor_inscricao);
     }
     //        if ($item['codigo_gateway']){
     //$return.= '<br>'.$item['codigo_gateway'];
     //        }
     $return = '<div class=list_inscricoes_title>' . $return . '</div>';
     $return .= ' ' . $this->row_actions($actions);
     return $return;
 }
 public static function dispatcher()
 {
     header('Access-Control-Allow-Origin: *');
     header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
     header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
     error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_STRICT);
     $app = new \Slim\Slim();
     \Slim\Slim::registerAutoloader();
     $app->contentType('application/json; charset=utf-8');
     $app->config('debug', true);
     //        echo "<pre>";
     if (WP_DEBUG) {
         $root = strtolower($app->request()->getRootUri()) . '/api';
     } else {
         $root = "/api";
     }
     //        var_dump($root);
     //            $root = "/api";
     //            $root = strtolower($app->request()->getRootUri()) . '/api';
     //        else
     //        $root = "/api";
     //        var_dump($root);
     //        $root = null;
     //        $root = var_dump($app->request()->getRootUri());
     //        die();
     //        });
     //        var_dump($app->request->headers);
     $app->hook('slim.before.dispatch', function () use($app) {
         // Conferir se é url que exige autenticação
         $req = $_SERVER['REQUEST_URI'];
         if (strpos($req, '/autenticar/') !== false) {
             return;
         }
         $headers = self::request_headers();
         //            var_dump($headers);die();
         $app = \Slim\Slim::getInstance();
         $erro = null;
         $api_user_id = $headers['X-API-USER-ID'];
         $api_token = $headers['X-API-TOKEN'];
         if ($api_user_id == null || $api_token == null) {
             $erro = "É preciso informar X-API-USER-ID e X-API-TOKEN no header.";
         } else {
             // Sanitizar user_id
             /* @var $pessoa Pessoa */
             $pessoa = Pessoas::getInstance()->getById($api_user_id);
             // Sanitizar token
             if ($pessoa == null) {
                 $erro = 'Não te encontramos em nossa base de dados...';
             } else {
                 if (md5($pessoa->id . '_' . $pessoa->password) != $api_token) {
                     $erro = 'Password inválido';
                 }
             }
         }
         if ($erro) {
             $app->response->headers['X-Authenticated'] = 'False';
             $app->halt('401', '{"error":{"text": "' . $erro . '" }}');
         }
     });
     $app->group($root, function () use($app) {
         // '/'
         $app->get('/', function () use($app) {
             echo json_encode(array("bem vindo", "a API"));
         });
         // Autenticate
         $app->post('/autenticar/', function () use($app) {
             // Obter pessoa, e usuário
             $email = $_POST['email'];
             $password = $_POST['password'];
             if ($email == '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                 echo json_encode(array('Erro' => 'Informe um endereço de email válido.'));
                 return;
             }
             /* @var $pessoa Pessoa */
             $pessoa = Pessoas::getInstance()->getByEmail($email);
             if ($pessoa == null) {
                 echo json_encode(array('Erro' => 'Não te encontramos em nossa base de dados...'));
                 return;
             }
             // Validar senha, antes de mais nada
             // @TODO Buscar user do wordpress que seja esta pessoa e verificar se está ativo, senão, é pessoa normal
             // Aqui, só pode ser um participante do grupo ou inscrito em algum evento
             $nPessoa = ControllerApi::decoratePessoa($pessoa);
             $return = array('pessoa' => $nPessoa);
             $return = PLib::object_to_array($return);
             //                    $return = PLib::array_utf8_encode($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
             return;
         });
         $app->group('/gamification', function () use($app) {
             $app->get('/ranking', function () use($app) {
                 $ranking = Gamification::getInstance()->getUsersPointsRanking(300);
                 //                    var_dump($ranking);
                 $nRanking = ControllerApi::decorateRanking($ranking);
                 echo json_encode($nRanking);
             });
             $app->get('/user/:id', function ($id) use($app) {
                 $pessoa = ControllerApi::getPessoa($id, true);
                 if ($pessoa) {
                     /* @var $gamification Gamification */
                     $gamification = Gamification::getInstance();
                     $gamification->setUserId($id);
                     $nPessoa = ControllerApi::decorateUserGamification($pessoa);
                     $badges = $gamification->getBadges();
                     $nBadges = ControllerApi::decorateBadges($badges);
                     $return = array('user' => $nPessoa, 'badge' => $nBadges);
                     $return = PLib::object_to_array($return);
                     echo json_encode($return, JSON_NUMERIC_CHECK);
                 }
             });
         });
         // '/'
         $app->get('/notificacao/', function () use($app) {
             die("notificação");
         });
         // Retorna uma inscrição
         $app->get('/inscricao/:idInscricao/simples/', function ($idInscricao) use($app) {
             if (strlen($idInscricao) > 10) {
                 $transactionId = $idInscricao;
                 $inscricao = Inscricoes::getInstance()->callbackPagamento(1, $transactionId);
                 if (get_class($inscricao) != 'Inscricao') {
                     $erro = 'Transação não identificada..';
                 }
             } else {
                 /* @var $inscricao Inscricao */
                 $inscricao = Inscricoes::getInstance()->getById($idInscricao);
                 if ($inscricao == null) {
                     $erro = 'Inscrição não localizada (' . $idInscricao . ')';
                 }
             }
             if ($erro) {
                 echo json_encode(array('erro' => $erro));
             } else {
                 if ($erro == null) {
                     if ($inscricao->confirmado == true) {
                         $mensagem = "wizard_fim_pagamento_confirmado";
                     } else {
                         $mensagem = "wizard_fim_pagamento_aguardando_confirmacao";
                     }
                     $mensagem = Mensagens::getInstance()->get($mensagem, $inscricao->evento(), $inscricao->pessoa(), $inscricao, true);
                     $nInscricao = array('confirmado' => $inscricao->confirmado, 'mensagem' => $mensagem);
                     $return = array('inscricao' => $nInscricao);
                     $nInscrito = PLib::object_to_array($return);
                     echo json_encode($nInscrito, JSON_NUMERIC_CHECK);
                 }
             }
         });
         // Redireciona para URL de pagamento no gateway - Por enquanto só funciona pro devfest
         $app->get('/inscricao/:idInscricao/pagar/', function ($idInscricao) use($app) {
             /* @var $inscricao Inscricao */
             $inscricao = Inscricoes::getInstance()->getById($idInscricao);
             if ($inscricao == null) {
                 echo json_encode(array('erro' => 'Inscrição não localizada (' . $idInscricao . ')'));
                 return;
             }
             $urlRetorno = BASE_URL . '/confirmacao?ticket=' . $inscricao->id * 333;
             $url = \lib\PagSeguroUtil::getUrlPagamento($inscricao, $urlRetorno);
             $return = array('url' => $url);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Retorna dados de uma pessoa
         $app->get('/pessoa/:idPessoa/', function ($idPessoa) use($app) {
             $pessoa = ControllerApi::getPessoa($idPessoa, true);
             if ($pessoa) {
                 $nPessoa = ControllerApi::decoratePessoa($pessoa);
                 $return = array('pessoa' => $nPessoa);
                 //                $return = PLib::array_utf8_encode($return);
                 $return = PLib::object_to_array($return);
                 echo json_encode($return, JSON_NUMERIC_CHECK);
             }
         });
         // Retorna as inscrições de uma pessoa
         $app->get('/pessoa/:idPessoa/inscricoes/', function ($idPessoa) use($app) {
             $pessoa = ControllerApi::getPessoa($idPessoa, true);
             if ($pessoa) {
                 // Obter inscrições da pessoa
                 $inscricoes = Inscricoes::getInstance()->getByPessoa($pessoa->id);
                 $nInscricoes = array();
                 if ($inscricoes == null) {
                     echo json_encode(array('mensagem' => 'Sem inscrições desta pessoa'));
                     return;
                 }
                 foreach ($inscricoes as $inscricao) {
                     $nInscricoes[] = ControllerApi::decorateInscricaoTeceiros($inscricao);
                 }
                 $return = array('inscricoes' => $nInscricoes);
                 $return = PLib::object_to_array($return);
                 echo json_encode($return, JSON_NUMERIC_CHECK);
             }
         });
         // Realiza uma inscrição
         $app->post('/inscrever/:idEvento/', function ($idEvento) use($app) {
             $idPessoa = $_POST['id_pessoa'];
             $nome = trim(ucfirst($_POST['nome']));
             $email = trim(strtolower($_POST['email']));
             $cpf = trim($_POST['cpf']);
             $celular = PLib::only_numbers($_POST['celular']);
             if (strpos($celular, '55') === 0) {
                 $celular = substr($celular, 2);
             }
             /* @var $evento Evento */
             $evento = Eventos::getInstance()->getById($idEvento);
             if ($evento == null) {
                 echo json_encode(array('erro' => 'Evento não localizado na base de dados (' . $idEvento . ')'));
                 return;
             }
             $validacao = PLib::coalesce($evento->validacao_pessoa, 'email');
             if ($idPessoa == null && ($nome == null || $celular == null || $email == null || ${$validacao} == null)) {
                 echo json_encode(array('erro' => 'Envie todos os dados (' . $nome . $email . $celular . ').' . print_r($_POST, true)));
                 return;
             }
             if ($idPessoa == null && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                 echo json_encode(array('erro' => 'Email inválido'));
                 return;
             }
             if ($idPessoa == null && strlen($celular) < 8) {
                 echo json_encode(array('erro' => 'Celular inválido'));
                 return;
             }
             // Mesmo sem id de pessoa, tentar encontrar pessoa por email
             if ($idPessoa == null) {
                 $pessoa = Pessoas::getInstance()->getByMd5($email);
                 if ($pessoa != null) {
                     $idPessoa = $pessoa->id;
                 }
             }
             //                $validacao='cpf';
             //                if ($validacao=='cpf' && $cpf!=null && !PLib::validade_cpf($cpf)){
             //                    echo json_encode(array('erro' => 'CPF inválido ('.$cpf.')'));
             //                    return;
             //                }
             // Incluir pessoa
             /* @var $pessoa Pessoa */
             if ($idPessoa == null) {
                 /* @var $pessoa Pessoa */
                 $pessoa = new Pessoa();
                 $pessoa->nome = $nome;
                 $pessoa->email = $email;
                 $pessoa->celular = $celular;
                 if ($validacao == 'cpf') {
                     $pessoa->cpf = PLib::str_mask(PLib::only_numbers($cpf), '###.###.###-##');
                 }
                 //                    PLib::var_dump($pessoa);
                 $pessoa = Pessoas::getInstance()->insert($pessoa);
             } else {
                 $pessoa = Pessoas::getInstance()->getById($idPessoa);
                 if ($nome != null && strlen($nome) > 2) {
                     $pessoa->nome = $nome;
                 }
                 if ($celular != null && strlen($celular) > 2) {
                     $pessoa->celular = $celular;
                 }
                 $pessoa->save();
             }
             // Extras? Pegar do post.... xeu pensar - ter como limitar e tal.. como tornar mais seguro?
             $extras = array();
             foreach ($_POST as $key => $value) {
                 if ($key == 'id_pessoa' || $key == 'nome' || $key == 'cpf' || $key == 'celular' || $key == 'email') {
                     continue;
                 }
                 $extra = array('titulo' => $key, 'valor' => $value);
                 $extras[$key] = $extra;
             }
             if (count($extras) > 0) {
                 $pessoa->setExtras($extras);
                 $pessoa->save();
             }
             //PLib::var_dump($pessoa->getExtrasArray());
             //PLib::var_dump($pessoa);die();
             $idPessoa = $pessoa->id;
             // Verificar se já está inscrita.... hum, tem algumas situações aqui
             $inscricao = Inscricoes::getInstance()->getByEventoPessoaConfirmado($idEvento, $idPessoa);
             if ($inscricao != null) {
                 echo json_encode(array('erro' => "Você já está inscrito e confirmado para este evento!"));
                 return;
             }
             // Já salvar registro de inscrição
             $inscricao = Inscricoes::getInstance()->certificarInscricao($evento, $pessoa, $evento->confirmacao == "preinscricao");
             $nInscrito = ControllerApi::decorateInscricao($inscricao);
             $return = array('inscricao' => $nInscrito);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Return "current" events
         $app->get('/eventos/', function () use($app) {
             $eventos = Eventos::getInstance()->getAll();
             if ($eventos == null) {
                 echo json_encode(array('erro' => 'Nenhum evento registrado....'));
                 return;
             }
             $events = array();
             /* @var $evento Evento */
             foreach ($eventos as $evento) {
                 if ($evento->preInscricao()) {
                     continue;
                 }
                 $nEvento = ControllerApi::decorateEvento($evento, false);
                 $events[] = $nEvento;
             }
             $events = PLib::object_to_array($events);
             echo json_encode($events, JSON_NUMERIC_CHECK);
         });
         // Return "current" events
         $app->get('/eventos/futuros/', function () use($app) {
             $eventos = Eventos::getInstance()->getAcontecendoFuturos();
             if ($eventos) {
                 $events = array();
                 /* @var $evento Evento */
                 foreach ($eventos as $evento) {
                     $nEvento = ControllerApi::decorateEvento($evento, false);
                     $events[] = $nEvento;
                 }
                 $events = PLib::object_to_array($events);
                 echo json_encode($events, JSON_NUMERIC_CHECK);
             }
         });
         // Return "current" events
         $app->get('/eventos/atual/', function () use($app) {
             $evento = ControllerApi::getEventoAtual();
             if ($evento == null) {
                 echo json_encode(array('erro' => 'Não existe um evento atual'));
                 return;
             }
             $evento = ControllerApi::decorateEvento($evento, false);
             $events = PLib::object_to_array($evento);
             echo json_encode($events, JSON_NUMERIC_CHECK);
         });
         // Return "current" events
         $app->get('/eventos/terceiros/', function () use($app) {
             // Obter eventos de outros sites de eventos
             //                $sites = array(
             //                );
             //                $eventosArray = array();
             //                foreach ($sites as $site) {
             //                    //  Initiate curl
             //                    $ch = curl_init();
             //                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
             //                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             //                    curl_setopt($ch, CURLOPT_URL, $site . '/api/eventos/futuros/');
             //                    $result = curl_exec($ch);
             //                    curl_close($ch);
             ////                    var_dump($result);
             //                    if ($result) {
             //                        $eventosJson = json_decode($result, true);
             ////                        var_dump($eventosJson);
             //                        if ($eventosJson) {
             //                            foreach ($eventosJson as $evento) {
             ////                                $evento = Eventos::getInstance()->populate($evento);
             //                                $eventosArray[] = $evento;
             //                            }
             //                        } else {
             //                            echo "nune " . $site;
             //                        }
             //                    } else {
             ////                        echo "none ".$site;
             //                    }
             //                }
             //                // Ordernar
             ////                var_dump($eventosArray);
             //                usort($eventosArray, 'ControllerApi::ordem');
             ////                Eventos::getInstance()->ordenar($eventosArray,true);
             ////                $eventosReturn=array();
             ////                foreach($eventosArray as $evento) {
             ////                    $eventosReturn[]= ControllerApi::decorateEvento($evento, false);
             ////                }
             //
             //                $eventosReturn = PLib::object_to_array($eventosArray);
             //                echo json_encode($eventosReturn, JSON_NUMERIC_CHECK);
         });
         // Retorna um evento e seus dados
         $app->get('/evento/:idEvento/', function ($idEvento) use($app) {
             $evento = Eventos::getInstance()->getById($idEvento);
             if ($evento == null) {
                 echo json_encode(array('erro' => 'Evento não localizado na base de dados (' . $idEvento . ')'));
                 return;
             }
             $nEvento = ControllerApi::decorateEvento($evento, true);
             $events = PLib::object_to_array($nEvento);
             echo json_encode($events, JSON_NUMERIC_CHECK);
         });
         // Retorna os inscritos no evento
         $app->get('/inscritos/:idEvento/', function ($idEvento) use($app) {
             $inscritos = Inscricoes::getInstance()->getByEvento($idEvento, null, "ev_pessoas.nome");
             //                var_dump($inscritos);
             $registrations = array();
             /* @var $inscrito Inscricao */
             foreach ($inscritos as $inscrito) {
                 $nInscrito = ControllerApi::decorateInscricao($inscrito);
                 $registrations[] = $nInscrito;
             }
             $registrations = PLib::object_to_array($registrations);
             echo json_encode($registrations, JSON_NUMERIC_CHECK);
         });
         // Dá presença a um inscrito
         $app->post('/inscricao/self_chekin/', function () use($app) {
             /* @var $inscricao Inscricao */
             $inscricao = null;
             $identificacao = $_POST['identificacao'];
             // email - ou id_evento-id_inscricao-id_pessoa
             if (substr_count($identificacao, '-') === 2) {
                 $id_evento = substr($identificacao, 0, strpos($identificacao, '-'));
                 $id_inscricao = substr($identificacao, strpos($identificacao, '-') + 1);
                 $id_pessoa = substr($id_inscricao, strpos($identificacao, '-') + 1);
                 $id_inscricao = substr($id_inscricao, 0, strpos($identificacao, '-'));
                 //                    var_dump($id_evento);
                 //                    var_dump($id_inscricao);
                 //                    var_dump($id_pessoa);
                 $inscricao = Inscricoes::getInstance()->getById($id_inscricao);
                 if ($inscricao == null) {
                     echo json_encode(array('erro' => 'Inscrição não localizada...'));
                     return;
                 } else {
                     if ($inscricao->id_pessoa != $id_pessoa) {
                         echo json_encode(array('erro' => 'As informações não batem! Inscrição X Pessoa'));
                         return;
                     } else {
                         if ($inscricao->id_evento != $id_evento) {
                             echo json_encode(array('erro' => 'As informações não batem! Inscrição X Evento'));
                             return;
                         }
                     }
                 }
             } else {
                 if (filter_var($identificacao, FILTER_VALIDATE_EMAIL) !== false) {
                     //                    $evento =
                     $evento = ControllerApi::getEventoAtual();
                     if ($evento == null) {
                         echo json_encode(array('erro' => 'Não existe um evento atual'));
                         return;
                     }
                     $pessoa = Pessoas::getInstance()->getByEmail(strtolower(trim($identificacao)));
                     if ($pessoa == null) {
                         echo json_encode(array('erro' => 'Não te encontramos em nossa base de dados (' . $identificacao . ')'));
                         return;
                     }
                     $inscricao = Inscricoes::getInstance()->getByEventoPessoa($evento->id, $pessoa->id);
                     if ($inscricao == null) {
                         echo json_encode(array('erro' => 'Você não se inscreveu pra este evento!'));
                         return;
                     }
                 } else {
                     echo json_encode(array('erro' => 'Do que você está falando afinal?'));
                     return;
                 }
             }
             // Fazer - retornar
             $inscricao->presenca();
             $nInscrito = ControllerApi::decorateInscricao($inscricao, true);
             $return = PLib::object_to_array($nInscrito);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Setar dados da inscrição - por enquanto apenas categoria
         $app->post('/inscricao/:idInscricao/', function ($idInscricao) use($app) {
             /* @var $inscricao Inscricao */
             $inscricao = Inscricoes::getInstance()->getById($idInscricao);
             if ($inscricao == null) {
                 echo json_encode(array('erro' => 'Inscrição não localizada na base de dados (' . $idInscricao . ')'));
                 return;
             }
             // Categoria - Como bloquear mudar a categoria? Depois de que momento não pode mudar mais?
             $id_categoria = $_POST['id_categoria'];
             $inscricao->setCategoria($id_categoria);
             $inscricao->save();
             $return = array('inscricao' => $inscricao);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Retorna uma inscrição
         $app->get('/inscricao/:idInscricao/', function ($idInscricao) use($app) {
             /* @var $inscricao Inscricao, e o evento referente */
             $inscricao = Inscricoes::getInstance()->getById($idInscricao);
             if ($inscricao == null) {
                 echo json_encode(array('erro' => 'Inscrição não localizada na base de dados (' . $idInscricao . ')'));
                 return;
             }
             $nInscrito = ControllerApi::decorateInscricao($inscricao, true);
             $nInscrito = PLib::object_to_array($nInscrito);
             echo json_encode($nInscrito, JSON_NUMERIC_CHECK);
         });
         // Confirma um inscrito
         $app->post('/inscricao/:idInscricao/confirmar/', function ($idInscricao) use($app) {
             /* @var $inscricao Inscricao */
             $inscricao = Inscricoes::getInstance()->getById($idInscricao);
             if ($inscricao == null) {
                 echo json_encode(array('erro' => 'Inscrição não localizada na base de dados (' . $idInscricao . ')'));
                 return;
             }
             // Se evento pago, verificar se informações vieram no post
             if ($inscricao->valor_inscricao > 0 && $_POST['forma_pagamento'] == null) {
                 $return = array('erro' => 'É preciso informar a forma de pagamento da insrição.');
             } else {
                 if ($inscricao->valor_inscricao > 0 && $_POST['id_pessoa_confirmacao'] == null) {
                     $return = array('erro' => 'É preciso informar a pessoa que está confirmando o pagamento.');
                 } else {
                     if ($_POST['id_pessoa_confirmacao'] == null) {
                         $return = array('erro' => 'É preciso informar a pessoa que está confirmando a inscrição.');
                     } else {
                         if (Pessoas::getInstance()->getById($_POST['id_pessoa_confirmacao'])->id_user == null) {
                             $return = array('erro' => 'O usuário confirmando precisa ser um admin.');
                         } else {
                             $inscricao->id_pessoa_confirmacao = $_POST['id_pessoa_confirmacao'];
                             if ($inscricao->confirmado != 1) {
                                 $inscricao = $inscricao->confirmar($_POST['forma_pagamento'], $inscricao->valor_inscricao);
                             }
                             $nInscrito = ControllerApi::decorateInscricao($inscricao, true);
                             $nEvento = ControllerApi::decorateEvento($inscricao->evento(), true);
                             $return = array('evento' => $nEvento, 'inscricao' => $nInscrito);
                         }
                     }
                 }
             }
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Dá presença a um inscrito
         $app->get('/inscricao/:idInscricao/presente/', function ($idInscricao) use($app) {
             /* @var $inscricao Inscricao */
             $inscricao = Inscricoes::getInstance()->getById($idInscricao);
             if ($inscricao == null) {
                 echo json_encode(array('erro' => 'Inscrição não localizada na base de dados (' . $idInscricao . ')'));
                 return;
             }
             $inscricao = $inscricao->presenca();
             $nInscrito = ControllerApi::decorateInscricao($inscricao, true);
             $nEvento = ControllerApi::decorateEvento($inscricao->evento(), true);
             $return = array('evento' => $nEvento, 'inscricao' => $nInscrito);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Atualiza dados de uma pessoa
         $app->post('/pessoa/:identificacao/', function ($identificacao) use($app) {
             /* @var $pessoa Pessoa */
             $identificacao = urldecode($identificacao);
             $pessoa = Pessoas::getInstance()->getByMd5($identificacao);
             if ($pessoa == null) {
                 echo json_encode(array('erro' => 'Pessoa nao localizada na base de dados (' . $identificacao . ')'));
                 return;
             }
             // Extras?
             $extras = $_POST['extras'];
             if ($extras) {
                 foreach ($extras as $chave => $valor) {
                     $pessoa->setExtra($chave, ucfirst($chave), $valor);
                 }
                 $pessoa->save();
             }
             $pessoa = Pessoas::getInstance()->getByMd5($identificacao);
             $nPessoa = ControllerApi::decoratePessoa($pessoa);
             $return = array('pessoa' => $nPessoa);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         // Obter todas pessoas
         $app->get('/pessoas/todas/', function () use($app) {
             /* @var $pessoas Pessoa[] */
             $pessoas = Pessoas::getInstance()->getAll();
             $return = array();
             foreach ($pessoas as $pessoa) {
                 if ($pessoa->getCountConfirmados()) {
                     $return[] = ControllerApi::decoratePessoa($pessoa);
                 }
             }
             $return = array('pessoas' => $return);
             $return = PLib::object_to_array($return);
             echo json_encode($return, JSON_NUMERIC_CHECK);
         });
         //            $app->get('/reset/', function () use ($app) {
         //                // Zera todos os dados do site...
         //                if (DB_NAME == 'emjf_wpjf' || DB_NAME == 'emjf') {
         //                    /* @var $wpdb wpdb */
         //                    $sql = "UPDATE ev_inscricoes SET confirmado=NULL, data_pagamento=NULL, data_confirmacao=NULL, valor_pago=NULL, taxa_cobranca=NULL, valor_liquido=NULL,codigo_pagamento=NULL, formapagamento_pagseguro=NULL,presente=NULL,status_gateway=NULL,forma_pagamento_gateway=NULL,codigo_gateway=NULL,data_atualizacao_gateway=NULL,vencido=NULL,data_vencido=NULL,data_cancelamento=NULL,forma_pagamento=NULL,id_situacao=NULL";
         //                    $return = array('sucesso' => 'Dados resetados');
         //                    echo json_encode($return, JSON_NUMERIC_CHECK);
         //                } else {
         //                    $return = array('erro' => 'Ops.. aqui não pode!');
         //                    echo json_encode($return, JSON_NUMERIC_CHECK);
         //                }
         //            });
     });
     $app->run();
 }
$exibirTitulo = false;
$exibirResumo = false;
$exibirResumo = $template == 3;
$exibirTitulo = $template == 3;
// Ter evento em mãos
$evento = get_the_evento();
//var_dump($evento);
// Postando
if (count($_POST) > 0) {
    // Sanitizar e validar entrada de dados
    $dados = false;
    $erro = null;
    $avancar = false;
    // Etapa 1
    if ($etapa == 1) {
        $result = Inscricoes::getInstance()->aplicarTicket($evento, $_POST['ticket']);
        if ($result !== true) {
            $erro = $result;
        } else {
            $etapa = $etapa + 1;
        }
    }
    // Etapa 2
    if ($etapa == 2) {
        $nome = sanitize_text_field($_POST['nome']);
        if (!$nome) {
            $erro = "Informe seu nome";
        }
        $dados = $nome != null;
    }
}
 /**
  * Retorna se a pessoa está inscrito no evento informado
  */
 public function hasInscricaoEventoConfirmado($idEvento)
 {
     return Inscricoes::getInstance()->getByEventoPessoaConfirmado($idEvento, $this->id) != null;
 }
<?php

use lib\PagSeguroUtil;
use TiagoGouvea\PLib;
$perguntas = Perguntas::getInstance()->getByQuestionario(1);
$inscritosAvaliacao = Inscricoes::getInstance()->getPresentesComAvaliacao($evento->id);
?>
<div class="wrap">
    <?php 
menuEvento($evento, 'evento-inscricoes', null, 'Avaliações');
?>
    <div id="poststuff">

        <?php 
require_once 'avaliacoes_resumo.php';
?>

        <div id="postbox-container-2" class="postbox-container">
            <div id="postexcerpt" class="postbox ">
                <h3 class="hndle"><span>Avaliações</span></h3>
                <div class="inside">
                    <table width="100%">
                        <tr>
                            <th>Pessoa</th>
                            <?php 
foreach ($perguntas as $pergunta) {
    ?>
                                <th><?php 
    echo $pergunta->titulo;
    ?>
</th>
function template_include_evento($template_path)
{
    // O conteudo é um post type tgo_evento
    if (get_post_type() == 'tgo_evento') {
        if (is_single()) {
            // Obter o evento
            // É uma inscrição?
            if (get_query_var('inscricao') != null) {
                if ($_GET['cancelar'] != null) {
                    // Cancelando inscrição, validar pessoa na url
                    /* @var $inscricao Inscricao */
                    $inscricao = Inscricoes::getInstance()->getById($_GET['ticket']);
                    if ($inscricao->id_pessoa != $_GET['cancelar']) {
                        die;
                    }
                    $inscricao->cancelar();
                } else {
                    // Chamar wizard da inscrição (outra classe)
                    $etapa = $_POST['etapa'];
                    // Instanciar Wizard
                    $idEvento = get_the_ID();
                    $ticket = $_GET['ticket'];
                    $wizard = new WizardInscricao($idEvento, $ticket);
                    //                var_dump($etapa);
                    if ($etapa != '' && $etapa >= 1) {
                        $evento = get_the_evento();
                        if ($evento->fb_conversion_track) {
                            add_action('wp_head', 'getEventoFacebookPixel');
                        }
                        if ($evento->tw_conversion_track) {
                            add_action('wp_head', 'getEventoTwConversionTrack');
                        }
                    }
                    return PLUGINPATH . '/templates/wizard-inscricao.php';
                }
            } else {
                if (get_query_var('servico') && get_query_var('ticket') != null) {
                    // Serviço de pagamento externo
                    ControllerInscricoes::direcionarServicoPagamento(get_query_var('servico'), get_query_var('ticket'));
                    return;
                } else {
                    if (is_avaliacao()) {
                        $template = ControllerQuestionarios::dispatcher('responder');
                    } else {
                        if (is_certificado()) {
                            ControllerInscricoes::certificado(get_query_var('certificado') / 13);
                            return;
                        } else {
                            if (get_query_var('mobile') != null) {
                                $template = 'mobile.php';
                            } else {
                                if (get_query_var('aplicarDesconto') != null) {
                                    // Chamar form para aplicar desconto
                                    $template = 'wizard-desconto.php';
                                } else {
                                    if (get_query_var('set_meio_pagamento') != null) {
                                        // Setar meio de pagamento
                                        ControllerInscricoes::setMeioPagamento($_SESSION['id_inscricao'], $_GET['set_meio_pagamento']);
                                        return;
                                    } else {
                                        $template = 'single-tgo_evento.php';
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if ($template) {
                $template_path = templateLocate($template);
            }
            if ($template_path == null) {
                die("Sem template ({$template}) para inclusão.");
            }
        }
    }
    return $template_path;
}
 public static function import()
 {
     die("Ops! Apagar tudo?");
     try {
         $gamification = Gamification::getInstance();
         echo "<H1>Importando dados...</H1>";
         // Resetar Gamification
         $gamification->clearAllData();
         // Modelo GDG
         // Obter todos usuários
         // Obter eventos de 1 de agosto em diante
         $eventos = Eventos::getInstance()->getPassados();
         foreach ($eventos as $evento) {
             if (strtotime($evento->data) < strtotime('2015-08-01')) {
                 continue;
             }
             // Obter todas presenças - pontuar
             echo "Evento {$evento->id} - {$evento->titulo} - {$evento->data} - ";
             $inscricoes = Inscricoes::getInstance()->getPresentes($evento->id);
             echo count($inscricoes) . " presentes <br>";
             foreach ($inscricoes as $inscricao) {
                 //                    if ($inscricao->id_pessoa!=23) continue;
                 /* @var @inscricao Inscricao */
                 $gamification->setUserId($inscricao->id_pessoa);
                 $dino = false;
                 $inicio = $evento->data . ($evento->hora ? " " . $evento->hora : '');
                 // Clean Code
                 if ($evento->id == 1065) {
                     //                        var_dump("dino?");
                     // Dino?
                     if ($inscricao->pessoa()->getCountConfirmadoAntesCleanCode() > 0) {
                         $gamification->executeEvent('before_gamification', $inscricao, $inicio);
                         $dino = true;
                     }
                 }
                 // Primeira presença?
                 if (!$dino && $inscricao->pessoa()->getCountPresentes() == 1 && $inscricao->pessoa()->getCountConfirmados() <= 2) {
                     $gamification->executeEvent('first_presence', $inscricao, $inicio);
                 } else {
                     // Só esteve presente, pontuar
                     $gamification->executeEvent('event_presence', $inscricao, $inicio);
                 }
                 // Se respondeu pesquisa, pontuar
                 if ($inscricao->hasAvaliacao()) {
                     $gamification->executeEvent('event_feedback', $inscricao, $inscricao->getAvaliacaoResposta(1)->dat_resposta);
                 }
             }
         }
         // The End
         echo "<br>Gamification points fully updated!<br>";
         self::showLevelRanking();
     } catch (Exception $e) {
         echo "Exception: " . $e->getMessage();
     }
 }
 private static function showFormSms($filter, Evento $evento)
 {
     // Postando?
     if (count($_POST) > 0) {
         $mensagem = nl2br($_POST['mensagem']);
         // Enviar emails
         if ($filter == 'confirmados') {
             $inscritos = Inscricoes::getInstance()->getConfirmados($evento->id);
         } else {
             if ($filter == 'naoConfirmados') {
                 //$inscritos = Inscricao::obterPorEventoNaoConfirmados($evento->id);
             } else {
                 if ($filter == 'rejeitados') {
                     //$inscritos = Inscricao::obterPorEventoRejeitados($evento->id);
                 }
             }
         }
         $subTitulo = $filter;
         echo "<h2>Envio de SMS para {$subTitulo}</h2><br>";
         $enviados = 0;
         foreach ($inscritos as $inscrito) {
             /* @var $inscrito Inscricao */
             if ($inscrito->pessoa()->celular == null) {
                 continue;
             }
             $mensagemEnviar = Mensagens::getInstance()->substituirVariaveis($mensagem, $evento, $inscrito->pessoa(), $inscrito);
             $mensagemEnviar = stripslashes($mensagemEnviar);
             $enviado = $evento->organizador()->enviarSms($inscrito->pessoa()->celular, $mensagemEnviar);
             if ($enviado) {
                 echo "SMS enviado para " . $inscrito->pessoa()->nome . ' (' . $inscrito->pessoa()->celular . ')<Br>';
                 $enviados++;
             } else {
                 echo "Erro ao enviar email SMS " . $inscrito->pessoa()->nome . ' (' . $inscrito->pessoa()->celular . ')<Br>';
             }
         }
         echo "<br><br>SMS enviado para {$enviados} pessoas.<br><br>";
     } else {
         $subTitulo = $filter;
         $titulo = "SMS para {$subTitulo} no " . $evento->titulo;
         require_once PLUGINPATH . '/view/comunicacao/form_sms.php';
     }
 }
 public static function setMeioPagamento($id_inscricao, $set_meio_pagamento)
 {
     /* @var $inscricao Inscricao */
     $inscricao = Inscricoes::getInstance()->getById($id_inscricao);
     $inscricao->meio_pagamento = ucfirst($set_meio_pagamento);
     $inscricao->evento()->organizador()->enviarEmail($inscricao->evento()->organizador()->email, 'Meio de Pagamento - Inscrição: ' . $id_inscricao . ' - ' . $set_meio_pagamento, Mensagens::getInstance()->get('email_definido_meio_pagamento_organizador', $inscricao->evento(), $inscricao->pessoa(), $inscricao));
 }
 public function callbackPagamento($id_integracao, $transaction_id)
 {
     //echo "<h1>$transaction_id</h1>";
     //?transaction_id=42E40F60-032A-4590-A357-D067CAA5858F
     // Validar o pagamento
     // Incluir PagSeguro
     include_once PLUGINPATH . '/vendor/PagSeguro/PagSeguroLibrary.php';
     // Obter a transação retornada
     // Verificar situação
     /* @var $integracao Integracao */
     $integracao = Integracoes::getInstance()->getById($id_integracao);
     $credentials = new PagSeguroAccountCredentials($integracao->client, $integracao->token);
     $transaction = PagSeguroTransactionSearchService::searchByCode($credentials, $transaction_id);
     $inscricao = Inscricoes::getInstance()->processarTransacaoPagSeguro($transaction);
     return $inscricao;
 }
 /**
  * Obtem a quantidade de participantes na fila de espera
  */
 public function qtdFilaEspera()
 {
     return PLib::coalesce(Inscricoes::getInstance()->getFilaEsperaCount($this->id), 0);
 }
 /**
  * Save current record
  * @return null
  */
 public function save()
 {
     return Inscricoes::getInstance()->save($this->id, $this);
 }
<?php

get_header();
/* @var $inscricao Inscricao */
if (round(get_query_var('avaliacao') / 13) != get_query_var('avaliacao') / 13) {
    die;
}
$inscricao = Inscricoes::getInstance()->getById(get_query_var('avaliacao') / 13);
if ($inscricao == null) {
    die;
}
if ($inscricao->id_evento != get_the_evento()->id) {
    die;
}
/* @var $evento Evento */
$questionario = $inscricao->evento()->getQuestionarioAvaliacao();
$perguntas = $questionario->getPerguntas();
?>
    <div class="center pull-left" style="margin-bottom:20px;">
        <div id="content" class="clearfix">
            <h1><?php 
the_title();
?>
</h1>

            <p>&nbsp;</p>
            <?php 
if (hasFlash()) {
    ?>
                <p>Ótimo <?php 
    echo ucfirst(mb_strtolower($inscricao->pessoa()->primeiro_nome()));
 /**
  *  http://url/crontab/hora/
  */
 public static function hora()
 {
     require 'wp-includes/pluggable.php';
     // Eventos futuros
     $eventos = Eventos::getInstance()->getFuturos();
     /* @var $evento Evento */
     foreach ($eventos as $evento) {
         // Apenas eventos pagos
         if ($evento->pago != 'pago' || $evento->preInscricao()) {
             continue;
         }
         echo "<h1>{$evento->titulo}</h1>";
         // Notificar inscrições ainda não pagas
         $inscricoesVencer = Inscricoes::getInstance()->getPagueAgora($evento->id);
         //            var_dump($inscricoesVencer);
         //            \TiagoGouvea\PLib::var_dump($inscricoesVencer);
         if (count($inscricoesVencer) > 0) {
             /* @var $inscricao Inscricao */
             foreach ($inscricoesVencer as $inscricao) {
                 if ($inscricao->pre_inscricao) {
                     continue;
                 }
                 echo "Pedir que confirme agora " . $inscricao->id . "<br>";
                 $inscricao->confirmeAgora();
             }
         }
         // Notificar inscrições vencidas por hora
         $inscricoesVencer = Inscricoes::getInstance()->getVencerHora($evento->id);
         //            var_dump($inscricoesVencer);
         //            \TiagoGouvea\PLib::var_dump($inscricoesVencer);
         if (count($inscricoesVencer) > 0) {
             /* @var $inscricao Inscricao */
             foreach ($inscricoesVencer as $inscricao) {
                 if ($inscricao->pre_inscricao) {
                     continue;
                 }
                 echo "Vencer " . $inscricao->id . "<br>";
                 $inscricao->vencer();
             }
         }
     }
 }
<div class="wrap">
    <?php 
use TiagoGouvea\PLib;
//menuEvento($evento,'evento-view');
?>

    <div id="poststuff">
        <?php 
// Inscritos
$arquivo = get_stylesheet_directory() . '/list_inscritos_' . $evento->id . '.php';
if (file_exists($arquivo)) {
    require_once $arquivo;
} else {
    if ($inscritos == null) {
        $inscritos = Inscricoes::getInstance()->getByEvento($evento->id);
    }
    $arquivo = PLUGINPATH . '/view/admin/list_inscritos.php';
    require_once $arquivo;
}
?>
    </div>

</div>
        <div id="postbox-container-2" class="postbox-container">
            <div id="postexcerpt" class="postbox ">
                <h3 class="hndle"><span>Inscrições</span></h3>

                <div class="inside">
                    <table width="100%">
                        <tr>
                            <th>Nome</th>
                            <th>Forma Pagamento</th>
                            <th>Valor Pago</th>
                            <th>Valor líquido</th>
                            <th>Situação</th>
                        </tr>
                        <?php 
$inscritos = Inscricoes::getInstance()->getByEvento($evento->id, 'confirmado=1', 'forma_pagamento, nome');
// Totalizadores
$valorDisponivel = 0;
$valorAReceber = 0;
/* @var $inscrito Inscricao */
foreach ($inscritos as $inscrito) {
    if ($inscrito->status_gateway == 4) {
        $valorDisponivel = $valorDisponivel + PLib::coalesce($inscrito->valor_liquido, $inscrito->valor_pago);
    } else {
        if ($inscrito->status_gateway == 3) {
            $valorAReceber = $valorAReceber + PLib::coalesce($inscrito->valor_liquido, $inscrito->valor_pago);
        }
    }
    echo "<tr>\n                                    <td>" . $inscrito->pessoa()->nome . '</td>
                                    <td>' . $inscrito->titulo_forma_pagamento() . '</td>
                                    <td>' . PLib::format_cash($inscrito->valor_pago) . '</td>