br.com.Utilitarios.WorkUpService.java Source code

Java tutorial

Introduction

Here is the source code for br.com.Utilitarios.WorkUpService.java

Source

//    This file is part of WorkUp.
//
//    WorkUp is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    WorkUp is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with WorkUp.  If not, see <http://www.gnu.org/licenses/>.
//
package br.com.Utilitarios;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;

import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TaskStackBuilder;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Paint.Join;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.IBinder;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Events;
import android.renderscript.Sampler.Value;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;
import br.com.Banco.Banco;
import br.com.Classes.*;
import br.com.GUI.aulas.ConfirmarAula;
import br.com.GUI.perfil.AceitarRejeitarAmigo;
import br.com.GUI.perfil.AdicionarPersonal;
import br.com.GUI.perfil.BuscarUsuario;
import br.com.GUI.perfil.Login;
import br.com.WorkUp.R;

public class WorkUpService extends Service {
    private Updater updater;
    private static SharedPreferences pref;
    private static Banco b;
    private static Personal novoPersonalDoAluno = new Personal();
    private static ArrayList<Aluno> novosAlunosDoPersonal = new ArrayList<Aluno>();
    private static ArrayList<Aula> novasAulasDoPersonal = new ArrayList<Aula>();
    private static ArrayList<Aula> novasAulasDoAluno = new ArrayList<Aula>();

    //inicializao
    @Override
    public void onCreate() {

        updater = new Updater();

    }

    @Override
    public synchronized void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);

        pref = getApplicationContext().getSharedPreferences("MyPref", 0);
        b = new Banco(this, null, null, 0);

        if (pref.getString("usuario", null) != null) {
            new UpdateDatabase().execute();
        }
    }

    //Controle de Atualizacoes

    public void tenhoAtualizacoes() throws SQLException {

        clear();

        // pega atualizacoes do server

        ArrayList<Atualizacoes> atualizacoesAluno = new ArrayList<Atualizacoes>();
        ArrayList<Atualizacoes> atualizacoesPersonal = new ArrayList<Atualizacoes>();

        if (pref.getString("usuario", null) != null) {
            if (pref.getString("tipo", null).equals("personal")) {
                int tenhoAtualizacoes = new Atualizacoes()
                        .buscarAtualizacoesPendentesPersonalWeb(pref.getString("usuario", null));
                if (tenhoAtualizacoes > 0) {
                    atualizacoesPersonal = new Atualizacoes()
                            .getAtualizacoesPendentesPersonalWeb(pref.getString("usuario", null));
                    for (Atualizacoes a : atualizacoesPersonal) {

                        a.salvarAtualizacao(b);

                    }
                }
            } else if (pref.getString("tipo", null).equals("aluno")) {
                int tenhoAtualizacoes = new Atualizacoes()
                        .buscarAtualizacoesPendentesAlunoWeb(pref.getString("usuario", null));
                if (tenhoAtualizacoes > 0) {
                    atualizacoesAluno = new Atualizacoes()
                            .getAtualizacoesPendentesAlunoWeb(pref.getString("usuario", null));
                    for (Atualizacoes a : atualizacoesAluno) {

                        a.salvarAtualizacao(b);
                    }
                }
            }
        }

        atualizacoesAluno.clear();
        atualizacoesPersonal.clear();

        if (pref.getString("usuario", null) != null) {
            if (pref.getString("tipo", null).equals("personal")) {
                int tenhoAtualizacoes = new Atualizacoes().buscarAtualizacoesPendentesPersonal(b,
                        pref.getString("usuario", null));
                if (tenhoAtualizacoes > 0) {
                    atualizacoesPersonal = new Atualizacoes().getAtualizacoesPendentesPersonal(b,
                            pref.getString("usuario", null));

                    for (Atualizacoes n : atualizacoesPersonal) {
                        solucionarAtualizacoes(n);
                    }
                }
            } else if (pref.getString("tipo", null).equals("aluno")) {

                int tenhoAtualizacoes = new Atualizacoes().buscarAtualizacoesPendentesAluno(b,
                        pref.getString("usuario", null));
                if (tenhoAtualizacoes > 0) {
                    atualizacoesAluno = new Atualizacoes().getAtualizacoesPendentesAluno(b,
                            pref.getString("usuario", null));

                    for (Atualizacoes n : atualizacoesAluno) {
                        solucionarAtualizacoes(n);
                    }
                }
            }
        }

    }

    public void solucionarAtualizacoes(Atualizacoes n) {
        if (n.getTipoAtualizacao().equals("atualizarPerfil") || n.getTipoAtualizacao().equals("atualizarAlunos")
                || n.getTipoAtualizacao().equals("atualizarTreinamentoPreescrito")
                || n.getTipoAtualizacao().equals("atualizarAluno")) {

            solucionarAtualizacaoPerfil(n);

        } else if (n.getTipoAtualizacao().equals("atualizarAvaliacao")
                || n.getTipoAtualizacao().equals("atualizarTodasAvaliacoes")) {

            solucionarAtualizacaoAvaliacao(n);

        } else if (n.getTipoAtualizacao().equals("atualizarAulasPersonal")
                || n.getTipoAtualizacao().equals("atualizarAulasAluno")) {

            solucionarAtualizacaoAula(n);

        } else if (n.getTipoAtualizacao().equals("atualizarTodosTreinamentos")
                || n.getTipoAtualizacao().equals("atualizarAcompanhamento")
                || n.getTipoAtualizacao().equals("atualizarTodosAcompanhamentos")) {

            solucionarAtualizacaoTreinamento(n);

        }

    }

    public void solucionarAtualizacaoPerfil(Atualizacoes n) {
        if (n.getTipoAtualizacao().equals("atualizarPerfil")) {

            if (pref.getString("tipo", null).equals("personal")) {

                Personal p = new Personal().buscarPersonalWeb(pref.getString("usuario", null));

                Bitmap foto = new Personal().buscarFotoPersonalWeb(pref.getString("usuario", null));

                byte[] fotoPersonal = ImageUtils.bitmapToByteArray(foto);

                if (p.atualizar(b, fotoPersonal)) {
                    Log.i("Servio 'AtualizarPersonal'", "sucesso!");
                } else {
                    Log.i("Servio 'AtualizarPersonal'", "falha!");
                }

            } else if (pref.getString("tipo", null).equals("aluno")) {
                Aluno a = new Aluno().buscarAlunoEspecificoWeb(pref.getString("usuario", null));

                Bitmap foto = new Aluno().buscarFotoAlunoWeb(pref.getString("usuario", null));

                byte[] fotoAluno = ImageUtils.bitmapToByteArray(foto);

                if (a.atualizar(b, fotoAluno)) {
                    if (a.getUsuarioPersonal() != null || a.getUsuarioPersonal().equals("")
                            || a.getUsuarioPersonal().equals("null")) {
                        Personal meuPersonal = new Personal().buscarPersonalWeb(a.getUsuarioPersonal());

                        Bitmap fotoMeuPersonal = new Personal().buscarFotoPersonalWeb(a.getUsuarioPersonal());

                        meuPersonal.atualizar(b, ImageUtils.bitmapToByteArray(fotoMeuPersonal));
                    }
                    Log.i("Servio 'AtualizarPersonal'", "sucesso!");
                } else {
                    Log.i("Servio 'AtualizarPersonal'", "falha!");
                }
            }

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());

            //-----------
        } else if (n.getTipoAtualizacao().equals("atualizarAlunos")) {
            if (n.getExtra().equals("null") || n.getExtra() == null || n.getExtra().equals("")
                    || n.getExtra().equals("anyType{}")) {

                ArrayList<Aluno> listaWeb = new Aluno().buscarAlunoPorPersonalWeb("", n.getDestinoAtualizacao());
                for (Aluno a : listaWeb) {
                    Aluno f = new Aluno().buscarAlunoEspecifico(b, a.getUsuario());
                    if (f == null) {
                        byte[] fotoAluno = ImageUtils
                                .bitmapToByteArray(new Aluno().buscarFotoAlunoWeb(a.getUsuario()));
                        a.salvar(b, fotoAluno);
                    } else {
                        byte[] fotoAluno = ImageUtils
                                .bitmapToByteArray(new Aluno().buscarFotoAlunoWeb(a.getUsuario()));
                        a.atualizar(b, fotoAluno);
                    }
                }
            } else {

                Aluno f = new Aluno().buscarAlunoEspecificoWeb(n.getExtra());
                if (f != null) {
                    byte[] fotoAluno = ImageUtils.bitmapToByteArray(new Aluno().buscarFotoAlunoWeb(f.getUsuario()));
                    f.atualizar(b, fotoAluno);
                }
            }

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }

            //-----------
        } else if (n.getTipoAtualizacao().equals("atualizarTreinamentoPreescrito")) {
            Aluno a = new Aluno().buscarAlunoEspecificoWeb(n.getDestinoAtualizacao());
            if (a.getCodTreinamento() > 0) {
                Treinamento t = new Treinamento().buscarTreinamentoPorIdWeb(a.getCodTreinamento());
                ArrayList<Aerobico> exeAerobicos = new Treinamento()
                        .buscarExerciciosAerobicoPorTreinamentoWeb(a.getCodTreinamento());
                ArrayList<Anaerobico> exeAnaerobicos = new Treinamento()
                        .buscarExerciciosAnaerobicoPorTreinamentoWeb(a.getCodTreinamento());

                for (Aerobico x : exeAerobicos) {
                    x.salvarExercicio(b, a.getUsuarioPersonal());
                }
                for (Anaerobico x : exeAnaerobicos) {
                    x.salvarExercicio(b, a.getUsuarioPersonal());
                }

                t.setExerciciosAerobicos(exeAerobicos);
                t.setExerciciosAnaerobicos(exeAnaerobicos);

                t.salvarTreinamento(b, a.getUsuarioPersonal());

            }

            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }

        } else if (n.getTipoAtualizacao().equals("atualizarAluno")) {
            Aluno c = new Aluno().buscarAlunoEspecificoWeb(pref.getString("usuario", null));
            byte[] foto = c.getFoto().getBytes();

            c.atualizar(b, foto);

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }
            //-----------
        }

    }

    public void solucionarAtualizacaoAvaliacao(Atualizacoes n) {
        if (n.getTipoAtualizacao().equals("atualizarAvaliacao")) {
            Log.i("valor do n", "n = " + n.getExtra());
            Avaliacoes f = new Avaliacoes().buscarAvaliacoesPorId(b, Integer.parseInt(n.getExtra()));
            if (f == null) {

                Avaliacoes salvar = new Avaliacoes().buscarAvaliacoesPorIdWeb(Integer.parseInt(n.getExtra()));

                salvar.salvarAvaliacoes(b);

                GorduraCorporal g = new GorduraCorporal()
                        .buscarGorduraCorporalPorIdWeb(Integer.parseInt(n.getExtra()));
                if (g != null) {
                    if (g.salvarGorduraCorporal(b)) {
                        Log.i("sucesso", "gordura salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoesLocal",
                                "Houve um erro ao enviar a gordura corporal avaliacao ");
                    }
                }

                Perimetria p = new Perimetria().buscarPerimetriaPorIdWeb(Integer.parseInt(n.getExtra()));
                if (p != null) {
                    if (p.salvarPerimetria(b)) {
                        Log.i("sucesso", "perimetria salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar a perimetria avaliacao ");
                    }
                }

                QuestionarioQPAF q = new QuestionarioQPAF()
                        .buscarQuestionarioQPAFPorIdWeb(Integer.parseInt(n.getExtra()));
                if (q != null) {
                    if (q.salvarQuestinarioQPAF(b)) {
                        Log.i("sucesso", "QPAF salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar  o questionario avaliacao ");
                    }
                }

                SituacaoCoronaria s = new SituacaoCoronaria()
                        .buscarSituacaoCoronariaPorIdWeb(Integer.parseInt(n.getExtra()));
                if (s != null) {
                    if (s.salvarSituacaoCoronaria(b)) {
                        Log.i("sucesso", "Situao coronaria salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes LOcal",
                                "Houve um erro ao enviar a situacao  coronaria avaliacao ");
                    }
                }

                FotosAvaliacao fotos = new FotosAvaliacao()
                        .buscarFotosAvaliacaoPorIdWeb(Integer.parseInt(n.getExtra()));
                if (fotos != null) {
                    if (fotos.salvarAvaliacoes(b)) {
                        Log.i("sucesso", "gordura salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar as fotos da avaliacao ");
                    }
                }
            } else {

                //editar

                GorduraCorporal g = new GorduraCorporal()
                        .buscarGorduraCorporalPorIdWeb(Integer.parseInt(n.getExtra()));
                if (g != null) {
                    if (g.editarGorduraCorporal(b)) {
                        Log.i("sucesso", "gordura editada com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoesLocal",
                                "Houve um erro ao enviar a gordura corporal avaliacao ");
                    }
                }

                Perimetria p = new Perimetria().buscarPerimetriaPorIdWeb(f.getCodAvaliacao());
                if (p != null) {
                    if (p.editar(b)) {
                        Log.i("sucesso", "perimetria salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar a perimetria avaliacao ");
                    }
                }

                QuestionarioQPAF q = new QuestionarioQPAF().buscarQuestionarioQPAFPorIdWeb(f.getCodAvaliacao());
                if (q != null) {
                    if (q.editar(b)) {
                        Log.i("sucesso", "QPAF salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar  o questionario avaliacao ");
                    }
                }

                SituacaoCoronaria s = new SituacaoCoronaria().buscarSituacaoCoronariaPorIdWeb(f.getCodAvaliacao());
                if (s != null) {
                    if (s.editar(b)) {
                        Log.i("sucesso", "Situao coronaria salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes LOcal",
                                "Houve um erro ao enviar a situacao  coronaria avaliacao ");
                    }
                }

                FotosAvaliacao fotos = new FotosAvaliacao().buscarFotosAvaliacaoPorIdWeb(f.getCodAvaliacao());
                if (fotos != null) {
                    if (fotos.editar(b)) {
                        Log.i("sucesso", "gordura salva com sucesso");
                    } else {
                        Log.i("Erro: enviarAvaliacoes", "Houve um erro ao enviar as fotos da avaliacao ");
                    }
                }
            }

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }
            //-----------
        } else if (n.getTipoAtualizacao().equals("atualizarTodasAvaliacoes")) {
            ArrayList<Avaliacoes> listaAvaliacoes = new ArrayList<Avaliacoes>();
            if (pref.getString("tipo", null).equals("personal")) {
                listaAvaliacoes = new Avaliacoes()
                        .buscarAvaliacoesCompletasPorPersonalWeb(pref.getString("usuario", null), "");
            } else {
                listaAvaliacoes = new Avaliacoes()
                        .buscarAvaliacoesCompletasPorAlunoWeb(pref.getString("usuario", null));
            }

            if (!listaAvaliacoes.isEmpty()) {
                for (Avaliacoes a : listaAvaliacoes) {
                    if (a != null) {
                        a.salvarAvaliacoes(b);
                        //Log.i("passos","salvei a avaliacao");
                        GorduraCorporal g = new GorduraCorporal()
                                .buscarGorduraCorporalPorIdWeb(a.getCodAvaliacao());
                        if (g != null) {
                            if (g.salvarGorduraCorporal(b)) {
                                Log.i("sucesso", "gordura salva com sucesso");
                            } else {
                                Log.i("Erro:  sincronizar",
                                        "Houve um erro ao sincronizar a gordura corporal avaliacao ");
                            }
                        }
                        //Log.i("passos","salvei a gordura Corporal");
                        Perimetria p = new Perimetria().buscarPerimetriaPorIdWeb(a.getCodAvaliacao());
                        if (p != null) {
                            if (p.salvarPerimetria(b)) {
                                Log.i("sucesso", "perimetria salva com sucesso");
                            } else {
                                Log.i("Erro: sincronizar", "Houve um erro ao enviar a perimetria avaliacao ");
                            }
                        }
                        //   Log.i("passos","salvei a perimetria");
                        QuestionarioQPAF q = new QuestionarioQPAF()
                                .buscarQuestionarioQPAFPorIdWeb(a.getCodAvaliacao());
                        if (q != null) {
                            if (q.salvarQuestinarioQPAF(b)) {
                                Log.i("sucesso", "QPAF salva com sucesso");
                            } else {
                                Log.i("Erro: sincronizar", "Houve um erro ao enviar  o questionario avaliacao ");
                            }
                        }
                        //Log.i("passos","salvei a Questionario QPAF");
                        SituacaoCoronaria s = new SituacaoCoronaria()
                                .buscarSituacaoCoronariaPorIdWeb(a.getCodAvaliacao());
                        if (s != null) {
                            if (s.salvarSituacaoCoronaria(b)) {
                                Log.i("sucesso", "Situao coronaria salva com sucesso");
                            } else {
                                Log.i("Erro: enviarAvaliacoes LOcal",
                                        "Houve um erro ao enviar a situacao  coronaria avaliacao ");
                            }
                        }

                        //Log.i("passos","salvei a Situacao Coronaria");
                        FotosAvaliacao fotos = new FotosAvaliacao()
                                .buscarFotosAvaliacaoPorIdWeb(a.getCodAvaliacao());
                        if (fotos != null) {
                            if (fotos.salvarAvaliacoes(b)) {
                                Log.i("sucesso", "Fotos salvas com sucesso");
                            } else {
                                Log.i("Erro: sincronizar", "Houve um erro ao enviar as fotos da avaliacao ");
                            }
                        }
                    }
                }
            }

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }
        }
    }

    public void solucionarAtualizacaoAula(Atualizacoes n) {
        if (n.getTipoAtualizacao().equals("atualizarAulasPersonal")) {
            ArrayList<Aula> listaAulas = new Aula().buscarAulasPorPersonalWeb(n.getDestinoAtualizacao(), "");
            for (Aula a : listaAulas) {
                Log.i("aula", a.toString());
                Aula f = new Aula().buscarAulasPorId(b, a.getCodAula());

                if (f == null) {
                    a.agendarAula(b);
                } else {
                    Log.i("Aula que voltou no f", "aula" + f.toString());
                    a.atualizarAula(b);
                }
            }

            // Setar visualizado
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }
            //-----------
        } else if (n.getTipoAtualizacao().equals("atualizarAulasAluno")) {
            Log.i("AtualizarAulasAluno", "Executando...");
            ArrayList<Aula> listaAulas = new Aula().buscarAulasPorAlunoWeb(n.getDestinoAtualizacao(), "");
            for (Aula a : listaAulas) {
                Aula f = new Aula().buscarAulasPorId(b, a.getCodAula());
                if (f == null) {
                    a.agendarAula(b);
                } else {
                    a.atualizarAula(b);
                }
            }

            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }

        }
    }

    public void solucionarAtualizacaoTreinamento(Atualizacoes n) {

        if (n.getTipoAtualizacao().equals("atualizarTodosTreinamentos")) {

            ArrayList<Treinamento> sincronizar = new Treinamento()
                    .buscarTreinamentosWeb(pref.getString("usuario", null), "");
            try {

                if (!sincronizar.isEmpty()) {
                    for (Treinamento x : sincronizar) {
                        //Declara os arrays de exercicio
                        ArrayList<Aerobico> exeAerobicos = new ArrayList<Aerobico>();
                        ArrayList<Anaerobico> exeAnaerobicos = new ArrayList<Anaerobico>();

                        //busca os exercicios
                        try {
                            exeAerobicos = new Treinamento()
                                    .buscarExerciciosAerobicoPorTreinamentoWeb(x.getCodTreinamento());
                            exeAnaerobicos = new Treinamento()
                                    .buscarExerciciosAnaerobicoPorTreinamentoWeb(x.getCodTreinamento());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        for (Aerobico y : exeAerobicos) {
                            y.salvarExercicio(b, pref.getString("usuario", null));
                        }
                        for (Anaerobico y : exeAnaerobicos) {
                            y.salvarExercicio(b, pref.getString("usuario", null));
                        }

                        x.setExerciciosAerobicos(exeAerobicos);
                        x.setExerciciosAnaerobicos(exeAnaerobicos);

                        x.salvarTreinamento(b, pref.getString("usuario", null));

                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }
        } else if (n.getTipoAtualizacao().equals("atualizarAcompanhamento")) {

            Log.i("atualizando acompanhamento...", "atualizando acompanhamento...");

            TreinamentoRealizado treinamentoSalvar = new TreinamentoRealizado()
                    .buscarTreinamentoRealizadoPorIdWeb(Integer.parseInt(n.getExtra()));
            Log.i("Treinamento salvo", "sendo salvo = " + treinamentoSalvar.toString());

            if (treinamentoSalvar != null) {
                if (treinamentoSalvar.salvarTreinamentoRealizado(b)) {
                    ArrayList<ExercicioRealizado> exerciciosSalvar = new TreinamentoRealizado()
                            .buscarExerciciosRealizadoPorTreinamentoWeb(Integer.parseInt(n.getExtra()));

                    for (ExercicioRealizado e : exerciciosSalvar) {
                        Log.i("exercicio realizado", "sendo salvo = " + e.toString());
                        try {
                            if (e.salvarExercicioRealizado(b)) {
                                Log.i("Exercicio Realizado", "sincronizado!");
                            }
                        } catch (Exception ex) {
                            ex.printStackTrace();
                        }
                    }

                }
            }

            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }

        } else if (n.getTipoAtualizacao().equals("atualizarTodosAcompanhamentos")) {

            Log.i("atualizando todos os acompanhamentos...", "atualizando todos os acompanhamentos...");

            if (pref.getString("tipo", null).equals("personal")) {
                ArrayList<Aluno> meusAlunos = new Aluno().buscarAlunosPorPersonal(b, "",
                        pref.getString("usuario", null));

                for (Aluno al : meusAlunos) {

                    ArrayList<TreinamentoRealizado> treinamentosSalvar = new TreinamentoRealizado()
                            .buscarTreinamentoPorAlunoWeb(al.getUsuario());

                    if (treinamentosSalvar.isEmpty()) {
                        Log.i("Warning", "o aluno " + al.getUsuario() + "no possui nenhum treinamento realizado");
                    } else {

                        for (TreinamentoRealizado r : treinamentosSalvar) {
                            if (r.salvarTreinamentoRealizado(b)) {
                                ArrayList<ExercicioRealizado> exerciciosSalvar = new TreinamentoRealizado()
                                        .buscarExerciciosRealizadoPorTreinamentoWeb(Integer.parseInt(n.getExtra()));

                                for (ExercicioRealizado e : exerciciosSalvar) {
                                    try {
                                        if (e.salvarExercicioRealizado(b)) {
                                            Log.i("Exercicio Realizado", "sincronizado!");
                                        }
                                    } catch (Exception ex) {
                                        ex.printStackTrace();
                                    }
                                }

                            } else {
                                Log.i("Erro ao sincronizar treinamento realizado",
                                        "erro ao sincronizar Treinamento Realizado");
                            }
                        }
                    }
                }

            } else if (pref.getString("tipo", null).equals("aluno")) {
                Aluno eu = new Aluno().buscarAlunoEspecifico(b, pref.getString("usuario", null));

                ArrayList<TreinamentoRealizado> treinamentosSalvar = new TreinamentoRealizado()
                        .buscarTreinamentoPorAlunoWeb(eu.getUsuario());

                for (TreinamentoRealizado r : treinamentosSalvar) {
                    if (r.salvarTreinamentoRealizado(b)) {
                        ArrayList<ExercicioRealizado> exerciciosSalvar = new TreinamentoRealizado()
                                .buscarExerciciosRealizadoPorTreinamentoWeb(Integer.parseInt(n.getExtra()));

                        for (ExercicioRealizado e : exerciciosSalvar) {
                            try {
                                if (e.salvarExercicioRealizado(b)) {
                                    Log.i("Exercicio Realizado", "sincronizado!");
                                }
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            }
                        }

                    } else {
                        Log.i("Erro ao sincronizar treinamento realizado",
                                "erro ao sincronizar Treinamento Realizado");
                    }
                }
            }

            n.visualizarAtualizacoes(b, n.getCodAtualizacao());
            if (n.getLocalAtualizacao().equals("server")) {
                n.visualizarAtualizacoesWeb(n.getCodAtualizacaoServidor());
            }

        }

    }

    // Controle de notificaes
    public void criarNotificacoes(Notificacoes n, String titulo, String texto, String ticker, String tipo,
            String extra) {

        // Build notification
        NotificationCompat.Builder noti = new NotificationCompat.Builder(this);
        noti.setContentTitle(titulo);
        noti.setContentText(texto);
        noti.setTicker(ticker);
        noti.setSmallIcon(R.drawable.ic_launcher);
        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        noti.setSound(alarmSound);

        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        Intent resultIntent = null;
        if (tipo.equals("novoPersonal")) {
            // Creates an expnovaAvaliacaolicit intent for an Activity in your app
            resultIntent = new Intent(this, AceitarRejeitarAmigo.class);
            resultIntent.putExtra("usuario", n.getOrigemNotificacao());
            resultIntent.putExtra("tipo", "aluno");
        }

        if (tipo.equals("novoAluno")) {

            resultIntent = new Intent(this, AceitarRejeitarAmigo.class);
            resultIntent.putExtra("usuario", n.getOrigemNotificacao());
            resultIntent.putExtra("tipo", "personal");

        }

        if (tipo.equals("novaAula")) {
            // Creates an explicit intent for an Activity in your app
            resultIntent = new Intent(this, ConfirmarAula.class);
            resultIntent.putExtra("codAula", extra);
        }

        //This ensures that navigating backward from the Activity leads out of the app to Home page
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);

        if (tipo.equals("novoPersonal") || tipo.equals("novoAluno")) {
            // Adds the back stack for the Intent
            stackBuilder.addParentStack(AceitarRejeitarAmigo.class);

            // Adds the Intent that starts the Activity to the top of the stack
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT //can only be used once
            );
            // start the activity when the user clicks the notification text
            noti.setContentIntent(resultPendingIntent);
        }

        // pass the Notification object to the system
        notificationManager.notify(0, noti.build());

        n.visualizarNotificacao(n.getCodNotificacao());

        //----------------------------------------------------------------------------------
    }

    public void tenhoNotificacoes() {

        clear();
        //pegar atualizacoes no servidor

        ArrayList<Notificacoes> notificacoesAluno = new ArrayList<Notificacoes>();
        ArrayList<Notificacoes> notificacoesPersonal = new ArrayList<Notificacoes>();

        if (pref.getString("usuario", null) != null) {
            if (pref.getString("tipo", null).equals("personal")) {
                int tenhoNotificacoes = new Notificacoes()
                        .buscarNotificacoesPendentesPersonal(pref.getString("usuario", null));
                if (tenhoNotificacoes > 0) {
                    try {
                        notificacoesPersonal = new Notificacoes()
                                .getNotificacoesPendentesPersonal(pref.getString("usuario", null));
                    } catch (SQLException e) {
                        Log.i("Erro: receber notificacoes Personal",
                                " Erro ao receber as notificacoes pendentes do Personal");
                        e.printStackTrace();
                    }

                    for (Notificacoes n : notificacoesPersonal) {
                        solucionarNotificacao(n);
                    }
                }
            } else if (pref.getString("tipo", null).equals("aluno")) {

                int tenhoNotificacoes = new Notificacoes()
                        .buscarNotificacoesPendentesAluno(pref.getString("usuario", null));
                if (tenhoNotificacoes > 0) {
                    try {

                        notificacoesAluno = new Notificacoes()
                                .getNotificacoesPendentesAluno(pref.getString("usuario", null));
                    } catch (SQLException e) {
                        Log.i("Erro: receber notificacoes Aluno",
                                " Erro ao receber as notificacoes pendentes do Aluno");
                        e.printStackTrace();
                    }

                    for (Notificacoes n : notificacoesAluno) {
                        solucionarNotificacao(n);
                    }
                }
            }
        }

    }

    public void solucionarNotificacao(Notificacoes n) {
        Log.i("notificacao", n.toString());
        if (n.getTipoNotificacao().equals("novoTreinamento")) {
            criarNotificacoes(n, "Voc possui um novo Treinamento", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("novoPersonal")) {

            criarNotificacoes(n, "Nova solicitao de amizade", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("novoAluno")) {
            criarNotificacoes(n, "Nova solicitao de amizade", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("conviteAceitoPersonal")) {
            criarNotificacoes(n, "Solicitao confirmada", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("conviteAceitoAluno")) {
            criarNotificacoes(n, "Solicitao confirmada", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("novaAvaliacao")) {
            criarNotificacoes(n, "Nova avaliao disponvel", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);

        } else if (n.getTipoNotificacao().equals("novaAula")) {
            criarNotificacoes(n, "Nova aula agendada", n.getDescricaoNotificacao(), n.getDescricaoNotificacao(),
                    n.getTipoNotificacao(), null);
        } else if (n.getTipoNotificacao().equals("exclusaoDeAula")) {
            criarNotificacoes(n, "Sua aula foi excluida", n.getDescricaoNotificacao(), n.getDescricaoNotificacao(),
                    n.getTipoNotificacao(), null);
        } else if (n.getTipoNotificacao().equals("aulaConfirmada")) {
            criarNotificacoes(n, "Sua aula foi confirmada", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);
        } else if (n.getTipoNotificacao().equals("aulaCancelada")) {
            criarNotificacoes(n, "Sua aula foi cancelada!", n.getDescricaoNotificacao(),
                    n.getDescricaoNotificacao(), n.getTipoNotificacao(), null);
        }

    }

    //servio
    @Override
    public synchronized void onDestroy() {
        super.onDestroy();

        // Stop the updater
        if (updater.isRunning()) {
            updater.interrupt();
        }

        updater = null;

    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub

        return null;
    }

    public void clear() {
        novoPersonalDoAluno = new Personal();
        novosAlunosDoPersonal.clear();
        novasAulasDoPersonal.clear();
        novasAulasDoAluno.clear();
    }

    //Background Service

    private class UpdateDatabase extends AsyncTask<String, Integer, String> {

        @Override
        protected String doInBackground(String... status) {
            // Start the updater
            if (!updater.isRunning()) {
                //Log.i("entrei", "entrei");
                //Log.i("is running", String.valueOf(updater.isRunning));
                updater.start();
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

        }
    }

    private class Updater extends Thread {
        private static final long DELAY = 7000; // 3 segundos
        private boolean isRunning = false;

        public Updater() {
            super("Updater");
        }

        @Override
        public void run() {
            isRunning = true;
            while (isRunning) {
                try {
                    //Log.i("entrei no wil", "while");

                    tenhoNotificacoes();

                    tenhoAtualizacoes();

                    // Sleep
                    Thread.sleep(DELAY);
                } catch (InterruptedException e) {
                    // Interrupted
                    isRunning = false;
                    onDestroy();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } // while
        }

        public boolean isRunning() {
            return this.isRunning;
        }

    }

}