コード例 #1
0
 $texto .= "\nMétodo: " . $metodo;
 $queryNotificacao = $conexao->prepare("INSERT INTO Notificacao \n                                                (titulo, texto, chaveAluno, lida) VALUES (?, ?, ?, 0)");
 $dados = array("Pagamento recebido", $texto, $idAluno);
 $queryNotificacao->execute($dados);
 if ($sucesso) {
     $conexao->commit();
     //Se a inscrição foi paga, atualiza desconto
     if ($pagamentos[date("Y")][0]['fechado']) {
         require_once dirname(__FILE__) . "/entidades/Aluno.php";
         $aluno = new Aluno("");
         $aluno->setNumeroInscricao($idAluno);
         $aluno->recebeAlunoId($host, $db, $usuario, $senhaBD);
         $indicador = new Aluno("");
         $indicador->setNumeroInscricao($aluno->getIdIndicador());
         $indicador->recebeAlunoId($host, $db, $usuario, $senhaBD);
         $indicador->atualizaDesconto($host, $db, $usuario, $senhaBD);
         $sucessoNotificacao = false;
         if ($aluno->getIdIndicador()) {
             //faremos 10 tentativas para notificar o aluno , se todas falharem
             //mostramos que não foi possível notificar o aluno
             for ($i = 0; $i < 10 && !$sucessoNotificacao; $i++) {
                 //gera notificação para o indicador que ele recebeu 10% de desconto
                 //nas próximas parcelas
                 $conexao->beginTransaction();
                 $titulo = "Desconto por indicação";
                 $texto = "Você recebeu 10% de desconto por ter indicado ";
                 $texto .= "o(a) aluno(a) : " . $aluno->getNome();
                 $textoQuery = "INSERT INTO Notificacao(titulo,texto,chaveAluno)\n                                                            VALUES (:titulo, :texto,:idIndicador)";
                 $query = $conexao->prepare($textoQuery);
                 $query->bindParam(":titulo", $titulo, PDO::PARAM_STR);
                 $query->bindParam(":texto", $texto, PDO::PARAM_STR);
コード例 #2
0
ファイル: Aluno.php プロジェクト: homeopatias/sysadmin
 public function atualizar($host, $bd, $usuario, $senha)
 {
     // Cria conexão com o banco
     $conexao = null;
     try {
         $conexao = new PDO("mysql:host={$host};dbname={$bd};charset=utf8", $usuario, $senha);
     } catch (PDOException $e) {
         echo $e->getMessage();
     }
     //Pega o status e o indicador atual do aluno no banco-------------------------
     $comando = "SELECT status, idIndicador FROM Aluno WHERE numeroInscricao = ?";
     $query = $conexao->prepare($comando);
     $query->bindParam(1, $this->numeroInscricao, PDO::PARAM_INT);
     $query->execute();
     $linha = $query->fetch();
     $statusAnterior = $linha["status"];
     $indicadorAnterior = $linha["idIndicador"];
     //----------------------------------------------------------------------------
     $comando = "UPDATE Usuario SET nome = :nome, cpf = :cpf, email = :email, login = :login\n                    WHERE id = :id";
     $query = $conexao->prepare($comando);
     // Usamos as TRANSACTIONs do MySql para garantir que caso haja
     // algum erro, as tabelas continuem consistentes
     $conexao->beginTransaction();
     $query->bindParam(":nome", $this->nome, PDO::PARAM_STR);
     $query->bindParam(":cpf", $this->cpf, PDO::PARAM_STR);
     $query->bindParam(":email", $this->email, PDO::PARAM_STR);
     $query->bindParam(":login", $this->login, PDO::PARAM_STR);
     $query->bindParam(":id", $this->id, PDO::PARAM_INT);
     $sucessoUsuario = $query->execute();
     $comando = "UPDATE Aluno SET status = :status, idIndicador = :indicador, \n                    telefone = :telefone, telefone2 = :telefone2, telefone3 = :telefone3,\n                    escolaridade = :escolaridade, \n                    curso = :curso ,numeroInscricao = :numInsc,\n                    cep = :cep, rua = :rua, numero = :numero, complemento = :complemento ,\n                    cidade = :cidade, estado = :estado, bairro = :bairro, pais = :pais ,\n                    tipo_curso = :tipo_curso, modalidade_curso= :modalidade_curso, \n                    tipo_cadastro = :tipo_cadastro, ativo = :ativo, recebeEmail = :recebeemail,\n                    observacao = :observacao\n\n                    WHERE numeroInscricao = :numInsc";
     $query = $conexao->prepare($comando);
     $query->bindParam(":status", $this->status, PDO::PARAM_STR);
     if ($this->idIndicador === "") {
         $query->bindValue(":indicador", null, PDO::PARAM_INT);
     } else {
         $query->bindParam(":indicador", $this->idIndicador, PDO::PARAM_INT);
     }
     $query->bindParam(":telefone", $this->telefone, PDO::PARAM_STR);
     $query->bindParam(":telefone2", $this->telefone2, PDO::PARAM_STR);
     $query->bindParam(":telefone3", $this->telefone3, PDO::PARAM_STR);
     $query->bindParam(":numInsc", $this->numeroInscricao, PDO::PARAM_INT);
     $query->bindParam(":escolaridade", $this->escolaridade, PDO::PARAM_STR);
     $query->bindParam(":curso", $this->curso, PDO::PARAM_STR);
     $query->bindParam(":cep", $this->cep, PDO::PARAM_INT);
     $query->bindParam(":rua", $this->rua, PDO::PARAM_STR);
     $query->bindParam(":numero", $this->numero, PDO::PARAM_INT);
     $query->bindParam(":complemento", $this->complemento, PDO::PARAM_STR);
     $query->bindParam(":cidade", $this->cidade, PDO::PARAM_STR);
     $query->bindParam(":estado", $this->estado, PDO::PARAM_STR);
     $query->bindParam(":bairro", $this->bairro, PDO::PARAM_STR);
     $query->bindParam(":pais", $this->pais, PDO::PARAM_STR);
     $query->bindParam(":tipo_curso", $this->tipoCurso, PDO::PARAM_STR);
     $query->bindParam(":modalidade_curso", $this->modalidadeCurso, PDO::PARAM_STR);
     $query->bindParam(":tipo_cadastro", $this->tipoCadastro, PDO::PARAM_STR);
     $query->bindParam(":ativo", $this->ativo, PDO::PARAM_STR);
     $query->bindParam(":recebeemail", $this->recebeEmail);
     $query->bindParam(":observacao", $this->observacao);
     $sucessoAluno = $query->execute();
     //Tratamento de desconto de alunos indicadores
     //Primeiro checamos se o aluno pagou a inscição deste ano (se gerou desconto)
     $comando = "SELECT EXISTS(\n                        SELECT Pg.numParcela\n                        FROM PgtoMensalidade Pg, Aluno A, Usuario U,Matricula M, Cidade C\n                        WHERE A.idUsuario     = U.id \n                        AND M.chaveAluno      = A.numeroInscricao \n                        AND M.chaveCidade     = C.idCidade\n                        AND C.ano             = YEAR(CURDATE()) \n                        AND Pg.chaveMatricula = M.idMatricula \n                        AND Pg.numParcela     = 0\n                        AND Pg.numParcela     = 0 \n                        AND Pg.fechado        = 1 \n                        AND A.numeroInscricao = ?\n                        ) as existe";
     $query = $conexao->prepare($comando);
     $query->bindParam(1, $this->numeroInscricao, PDO::PARAM_INT);
     $query->setFetchMode(PDO::FETCH_ASSOC);
     $query->execute();
     $atualizaDescontosAntigo = 0;
     $linha = $query->fetch();
     $emDia = $linha["existe"];
     if ($emDia) {
         //Estas variáveis armazenam se será necessário atualizar ou não os descontos do
         //anterior e/ou do novo
         //Se o aluno ja pagou a inscrição deste ano, checa se será necessário remover o
         //desconto do indicador, se possuir indicador
         //checa se ele possui indicador e se não possuir, se agora possui
         if ($indicadorAnterior != null || $this->idIndicador != null) {
             //O usuário mudou de id de indicador, remove o desconto do anterior e soma
             //ao novo
             if ($indicadorAnterior != $this->idIndicador) {
                 //Só será necessário mudar o desconto de um aluno válido
                 if ($indicadorAnterior != null) {
                     $atualizaDescontosAntigo = true;
                 }
             }
         }
     }
     $sucessoAluno = $sucessoAluno && $this->atualizaDesconto($host, $bd, $usuario, $senha);
     //--------------------------------------------------------------------------
     if ($sucessoUsuario && $sucessoAluno) {
         // deu tudo certo, atualizamos o aluno
         $conexao->commit();
         if ($atualizaDescontosAntigo) {
             require_once dirname(__FILE__) . "/../entidades/Aluno.php";
             $indicadorAntigo = new Aluno();
             $indicadorAntigo->setNumeroInscricao($indicadorAnterior);
             $indicadorAntigo->recebeAlunoId($host, $bd, $usuario, $senha);
             $indicadorAntigo->atualizaDesconto($host, $bd, $usuario, $senha);
         }
         if ($this->idIndicador != null) {
             require_once dirname(__FILE__) . "/../entidades/Aluno.php";
             $indicadorNovo = new Aluno();
             $indicadorNovo->setNumeroInscricao($this->idIndicador);
             $indicadorNovo->recebeAlunoId($host, $bd, $usuario, $senha);
             $sucesso = $indicadorNovo->atualizaDesconto($host, $bd, $usuario, $senha);
             $sucessoNotificacao = false;
             //faremos 10 tentativas para notificar o aluno , se todas falharem
             //mostramos que não foi possível notificar o aluno
             for ($i = 0; $i < 10 && !$sucessoNotificacao; $i++) {
                 //gera notificação para o indicador que ele recebeu 10% de desconto
                 //nas próximas parcelas
                 $conexao->beginTransaction();
                 $titulo = "Desconto por indicação";
                 $texto = "Por uma correção do sistema, um aluno corrigiu corrigiu seu indicador para";
                 $texto .= " aluno correto, seu desconto de 10% foi removido das próximas parcelas";
                 $textoQuery = "INSERT INTO Notificacao(titulo,texto,chaveAluno)\n                                    VALUES (:titulo, :texto,:idIndicador)";
                 $query = $conexao->prepare($textoQuery);
                 $query->bindParam(":titulo", $titulo, PDO::PARAM_STR);
                 $query->bindParam(":texto", $texto, PDO::PARAM_STR);
                 $query->bindParam(":idIndicador", $indicadorNovo->getNumeroInscricao(), PDO::PARAM_INT);
                 $sucessoNotificacao = $query->execute();
                 if (!$sucessoNotificacao) {
                     $conexao->rollback();
                 }
             }
             //se conseguiu notificar, confirma transação
             if ($sucessoNotificacao) {
                 $conexao->commit();
             } else {
                 //se não, mostra mensagem na tela
                 $mensagem = "Não foi possível notificar o aluno \n                                de seu desconto.";
             }
             //Se o aluno estiver em dia e mudou de status,
             // notifica o indicador que ele perdeu ou ganhou
             // seu desconto novamente
             if ($emDia && $this->status != $statusAnterior) {
                 //Caso o aluno tenha desistido, notifica o indicador que ele perdeu o desconto
                 if ($this->status !== "inscrito" && $statusAnterior === "inscrito") {
                     $sucessoNotificacao = false;
                     //faremos 10 tentativas para notificar o aluno , se todas falharem
                     //mostramos que não foi possível notificar o aluno
                     for ($i = 0; $i < 10 && !$sucessoNotificacao; $i++) {
                         //gera notificação para o indicador que ele recebeu 10% de desconto
                         //nas próximas parcelas
                         $conexao->beginTransaction();
                         $titulo = "Desconto por indicação";
                         $texto = "Um de seus indicados encerrou o curso/a etapa, seu desconto de 10%";
                         $texto .= " por sua indicação foi removido das próximas parcelas";
                         $textoQuery = "INSERT INTO Notificacao(titulo,texto,chaveAluno)\n                                            VALUES (:titulo, :texto,:idIndicador)";
                         $query = $conexao->prepare($textoQuery);
                         $query->bindParam(":titulo", $titulo, PDO::PARAM_STR);
                         $query->bindParam(":texto", $texto, PDO::PARAM_STR);
                         $query->bindParam(":idIndicador", $indicadorNovo->getNumeroInscricao(), PDO::PARAM_INT);
                         $sucessoNotificacao = $query->execute();
                         if (!$sucessoNotificacao) {
                             $conexao->rollback();
                         }
                     }
                     //se conseguiu notificar, confirma transação
                     if ($sucessoNotificacao) {
                         $conexao->commit();
                     } else {
                         //se não, mostra mensagem na tela
                         $mensagem = "Não foi possível notificar o aluno \n                                        de seu desconto.";
                     }
                 } else {
                     if ($this->status === "inscrito" && $statusAnterior != "inscrito") {
                         $sucessoNotificacao = false;
                         //faremos 10 tentativas para notificar o aluno , se todas falharem
                         //mostramos que não foi possível notificar o aluno
                         for ($i = 0; $i < 10 && !$sucessoNotificacao; $i++) {
                             //gera notificação para o indicador que ele recebeu 10% de desconto
                             //nas próximas parcelas
                             $conexao->beginTransaction();
                             $titulo = "Desconto por indicação";
                             $texto = "Um de seus indicados retomou o curso, seu desconto de 10%";
                             $texto .= " por sua indicação foi adicionado novamente às próximas";
                             $texto .= " parcelas";
                             $textoQuery = "INSERT INTO Notificacao(titulo,texto,chaveAluno)\n                                            VALUES (:titulo, :texto,:idIndicador)";
                             $query = $conexao->prepare($textoQuery);
                             $query->bindParam(":titulo", $titulo, PDO::PARAM_STR);
                             $query->bindParam(":texto", $texto, PDO::PARAM_STR);
                             $query->bindParam(":idIndicador", $indicadorNovo->getNumeroInscricao(), PDO::PARAM_INT);
                             $sucessoNotificacao = $query->execute();
                             if (!$sucessoNotificacao) {
                                 $conexao->rollback();
                             }
                         }
                         //se conseguiu notificar, confirma transação
                         if ($sucessoNotificacao) {
                             $conexao->commit();
                         } else {
                             //se não, mostra mensagem na tela
                             $mensagem = "Não foi possível notificar o aluno \n                                        de seu desconto.";
                         }
                     }
                 }
             }
         }
     } else {
         // algo deu errado, desfazemos as mudanças
         $conexao->rollBack();
     }
     // Encerramos a conexão com o BD
     $conexao = null;
     return $sucessoUsuario && $sucessoAluno;
 }