Proyectos de Subversion Android Microlearning - Inconcert

Rev

Rev 15 | Autoría | Ultima modificación | Ver Log |

package com.cesams.twogetskills.inconcert.fragment;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.lifecycle.LifecycleOwner;

import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
import com.bumptech.glide.request.RequestOptions;
import com.cesams.twogetskills.inconcert.Constants;
import com.cesams.twogetskills.inconcert.R;
import com.cesams.twogetskills.inconcert.adapter.TabsCapsulesAdapter;
import com.cesams.twogetskills.inconcert.dao.CapsuleDao;
import com.cesams.twogetskills.inconcert.dao.ProgressDao;
import com.cesams.twogetskills.inconcert.dao.SlideDao;
import com.cesams.twogetskills.inconcert.dao.TopicDao;
import com.cesams.twogetskills.inconcert.entity.Capsule;
import com.cesams.twogetskills.inconcert.entity.Progress;
import com.cesams.twogetskills.inconcert.entity.Slide;
import com.cesams.twogetskills.inconcert.entity.Topic;
import com.cesams.twogetskills.inconcert.library.MD5;
import com.cesams.twogetskills.inconcert.skeleton.ITwoGetSkills;
import com.google.android.material.tabs.TabLayout;

import java.text.Normalizer;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.TimeZone;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link WelcomeFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class WelcomeFragment extends Fragment implements TabsCapsulesAdapter.ClickListener, LifecycleOwner {

    TextView username, titulotarjeta, progresoporcentaje, empezar, ningunelemento; ProgressBar progresotarjeta;
    private ITwoGetSkills iTwoGetSkills; View card;
    ArrayList<HashMap<String, String>> capsuleList;
    ImageView imagetarjeta;
    TabsCapsulesAdapter adapter2;
    RecyclerView categorizados;
    EditText busqueda; TextView textowelcome; Button continuar;
    TabLayout tabs; String tabactual="pendientes";


    public WelcomeFragment() {
        // Required empty public constructor
    }

    public static WelcomeFragment newInstance() {
        WelcomeFragment fragment = new WelcomeFragment();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
          }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


        iTwoGetSkills = (ITwoGetSkills) getActivity();

        View view= inflater.inflate(R.layout.fragment_welcome, container, false);

        username=view.findViewById(R.id.textView14); ningunelemento=view.findViewById(R.id.textView25);
        textowelcome= view.findViewById(R.id.textView15);
        busqueda=view.findViewById(R.id.busqueda);
        card= view.findViewById(R.id.include); empezar= view.findViewById(R.id.titlenotifi); tabs=view.findViewById(R.id.tabLayout);
        capsuleList = new ArrayList<>();







        //Tarjeta Principal
        titulotarjeta = view.findViewById(R.id.description); progresotarjeta= view.findViewById(R.id.progressBar2); imagetarjeta= view.findViewById(R.id.imagelist);
        continuar = view.findViewById(R.id.button); progresoporcentaje = view.findViewById(R.id.textView16);


        username.setText("¡Hola, "+(iTwoGetSkills.getPreference().getFirstName() +"!"));

        tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                int position=tab.getPosition();

                capsuleList.clear();
                adapter2.notifyDataSetChanged();

                if(position==0)
                {
                    tabactual="pendientes";
                    loadData(tabactual,"");
                    adapter2.notifyDataSetChanged();
                }
                else if(position==1)
                {
                    tabactual="cursando";
                    loadData("cursando","");
                    adapter2.notifyDataSetChanged();
                }
                else if(position==2)
                {
                    tabactual="finalizados";
                    loadData("finalizados","");
                    adapter2.notifyDataSetChanged();
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        loadData("pendientes","");

        busqueda.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus)
                {
                        card.setVisibility(View.GONE);
                        username.setVisibility(View.GONE);
                        textowelcome.setVisibility(View.GONE);
                        Log.e("Tengo foco"," Oculto");
                }

            }
        });

        busqueda.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            //    Log.e("El texto","buscado: "+s);
                capsuleList.clear();
                adapter2.notifyDataSetChanged();
                loadData(tabactual, s.toString());
            }

            @Override
            public void afterTextChanged(Editable s) {



            }
        });


        adapter2 = new TabsCapsulesAdapter(getContext(),capsuleList);



        categorizados = view.findViewById(R.id.categorizados);
        GridLayoutManager layoutcategoria = new GridLayoutManager(getContext(),1,GridLayoutManager.VERTICAL, false);
        categorizados.setLayoutManager(layoutcategoria);
        categorizados.setAdapter(adapter2);


        adapter2.setClickListener(this);

        categorizados.setOnFlingListener(new RecyclerView.OnFlingListener() {
            @Override
            public boolean onFling(int velocityX, int velocityY) {

                if (categorizados.canScrollVertically(-1) ) {

                   // Log.e("Se activa", "On fling");
                    card.setVisibility(View.GONE);
                    username.setVisibility(View.GONE);
                    textowelcome.setVisibility(View.GONE);
                }else
                {
                    card.setVisibility(View.VISIBLE);
                    username.setVisibility(View.VISIBLE);
                    textowelcome.setVisibility(View.VISIBLE);
                }

                return false;
            }
        });


     /*   categorizados.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

                if (!categorizados.canScrollVertically(-1)) {
                 //   Toast.makeText(getActivity(), "Last", Toast.LENGTH_LONG).show();
                    capsulas.setVisibility(View.VISIBLE);
                    username.setVisibility(View.VISIBLE);
                    textowelcome.setVisibility(View.VISIBLE);
                    Log.e("On scroll"," se activa");
                }

            }
        });
*/
        getActivity().runOnUiThread(() -> {
            String message = capsuleList.size() == 1
                    ? "Hay 1 cápsula nueva disponible"
                    : "Tiene " + capsuleList.size() + " cápsulas pendientes para ver";

            Toast.makeText(getContext(), ""+message, Toast.LENGTH_LONG).show();

            iTwoGetSkills.saveNotificationCenter("Contenidos disponibles","",message);

        });
        iTwoGetSkills.showNavigationAndToolbar();

        return view;

    }

    @Override
    public void onResume() {
        super.onResume();
        getActivity().runOnUiThread(() -> {
            int fragmentIdxActive = iTwoGetSkills.getPreference().getFragmentIdxActive();

            if (fragmentIdxActive != Constants.IDX_FRAGMENT_WELCOME
            ) {
                return;
            }
            loadContinuecard();
        });
    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);

       // Log.e("TAG", "onHiddenChanged : " + (hidden ? "true" : "false"));

        if(!hidden) {
          //  Log.e("Esta oculto", "el fragmento");

            getActivity().runOnUiThread(() -> {

                capsuleList.clear();

                loadContinuecard();
                loadData("pendientes","");

                if (capsuleList.size() == 0) //Si no tenemos capsulas pendientes nos vamos a en curso
                {
                    capsuleList.clear();
                    loadData("cursando","");

                    tabs.selectTab(tabs.getTabAt(1),true);

                }
                else
                {
                    tabs.selectTab(tabs.getTabAt(0),true);

                }
                adapter2.notifyDataSetChanged();

         

            });


        }
    }

    private void loadContinuecard(){

        //Log.e("Cargo datos"," en tarjeta principal");

        //Capsula de primera tarjeta
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();
        boolean continues=false;
        Progress progress;
        ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();


        List<Capsule> dbCapsules= capsuleDao.selectAll();
        for(Capsule dbCapsule : dbCapsules)
        {
            progress = progressDao.selectByCapsuleUuid(dbCapsule.getUuid());

            if (progress != null) {

            if (progress.getProgress() <=100 && progress.getCompleted()==0)
                {
                    titulotarjeta.setText(dbCapsule.getName());
                    if (dbCapsule.getImage() != null && !dbCapsule.getImage().equals("")) {

                        TimeZone timeZone = TimeZone.getTimeZone("UTC");
                        Calendar calendar = Calendar.getInstance(timeZone);
                        TimeZone tz = calendar.getTimeZone();
                        int created = (int) (calendar.getTimeInMillis() / 1000);

                        Random random = new Random(created);
                        int rand = 1000 + random.nextInt(8999);


                        String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
                        String password = iTwoGetSkills.getPreference().getPassword();


                        String secret = MD5.generar(password + ':' + created + ':' + rand);
                        GlideUrl url = new GlideUrl(dbCapsule.getImage(), new LazyHeaders.Builder()
                                .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
                                .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
                                .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
                                .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
                                .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
                                .build());

                        RequestOptions options = new RequestOptions()
                                .diskCacheStrategy(DiskCacheStrategy.ALL);

                        Glide.with(getContext()).load(url)
                                .thumbnail()
                                .apply(options)
                                .into(imagetarjeta);
                        iTwoGetSkills.setCapsulaActiva(dbCapsule.getUuid());
                    }
                }
                    if (progress.getProgress() < 100 && progress.getCompleted()==0) {
                       // Log.e("Es menor"," a 100");
                        continues=true;
                        titulotarjeta.setText(dbCapsule.getName());
                        progresotarjeta.setVisibility(View.VISIBLE);
                        progresoporcentaje.setVisibility(View.VISIBLE);
                        progresotarjeta.setProgress((int) progress.getProgress());
                        progresoporcentaje.setText("" + progress.getProgress() + " %");
                        empezar.setText("En curso");

                        iTwoGetSkills.getPreference().setOrigennavigation("welcome");

                        int fragmentIdxActive = iTwoGetSkills.getPreference().getFragmentIdxActive();

                        if (fragmentIdxActive != Constants.IDX_FRAGMENT_WELCOME
                        ) {
                            return;
                        }
                        iTwoGetSkills.setCapsulaActiva(dbCapsule.getUuid());
                     //   Log.e("La capsula","activa en loadcurso"+dbCapsule.getUuid());

                        iTwoGetSkills.getPreference().setTopicUuidActive(dbCapsule.getTopicUuid());

                        if (dbCapsule.getImage() != null && !dbCapsule.getImage().equals("")) {

                            TimeZone timeZone = TimeZone.getTimeZone("UTC");
                            Calendar calendar = Calendar.getInstance(timeZone);
                            TimeZone tz = calendar.getTimeZone();
                            int created = (int) (calendar.getTimeInMillis() / 1000);

                            Random random = new Random(created);
                            int rand = 1000 + random.nextInt(8999);


                            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
                            String password = iTwoGetSkills.getPreference().getPassword();


                            String secret = MD5.generar(password + ':' + created + ':' + rand);
                            GlideUrl url = new GlideUrl(dbCapsule.getImage(), new LazyHeaders.Builder()
                                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
                                    .build());

                            RequestOptions options = new RequestOptions()
                                    .diskCacheStrategy(DiskCacheStrategy.ALL);

                            Glide.with(getContext()).load(url)
                                    .thumbnail()
                                    .apply(options)
                                    .into(imagetarjeta);
                        }
                    }

            }


        }
        if(titulotarjeta.getText().equals(""))
        {
           // Log.e("Nombre","vacio");
            SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();


            //Despues del recorrido no se encontro progreso en ninguna capsula, por lo cual la tarjeta queda vacia
            // vamos a llenarla con la ultima capsula, que debe ser nueva al no tener progreso


            for(Capsule dbCapsule : dbCapsules)
            {
                List<Slide> slides = slideDao.selectAllByCapsuleUuid(dbCapsule.getUuid());

                if (slides.isEmpty()) {

                } else {
                progress = progressDao.selectByCapsuleUuid(dbCapsule.getUuid());

                    //  Log.e("Capsula","Es omitida, no tiene slides");

                    if (progress == null) {

                        //  Log.e("Es nueva","");

                        titulotarjeta.setText(dbCapsule.getName());
                        progresotarjeta.setVisibility(View.INVISIBLE);
                        progresoporcentaje.setVisibility(View.INVISIBLE);
                        empezar.setText("Nueva");
                        continuar.setText("Ver cápsula");

                        iTwoGetSkills.getPreference().setOrigennavigation("welcome");

                        int fragmentIdxActive = iTwoGetSkills.getPreference().getFragmentIdxActive();

                        if (fragmentIdxActive != Constants.IDX_FRAGMENT_WELCOME
                        ) {
                            return;
                        }
                        iTwoGetSkills.setCapsulaActiva(dbCapsule.getUuid());
                      //  Log.e("La capsula","activa en load"+dbCapsule.getUuid());
                        iTwoGetSkills.getPreference().setTopicUuidActive(dbCapsule.getTopicUuid());

                        if (dbCapsule.getImage() != null && !dbCapsule.getImage().equals("")) {

                            TimeZone timeZone = TimeZone.getTimeZone("UTC");
                            Calendar calendar = Calendar.getInstance(timeZone);
                            TimeZone tz = calendar.getTimeZone();
                            int created = (int) (calendar.getTimeInMillis() / 1000);

                            Random random = new Random(created);
                            int rand = 1000 + random.nextInt(8999);


                            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
                            String password = iTwoGetSkills.getPreference().getPassword();


                            String secret = MD5.generar(password + ':' + created + ':' + rand);
                            GlideUrl url = new GlideUrl(dbCapsule.getImage(), new LazyHeaders.Builder()
                                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
                                    .build());

                            RequestOptions options = new RequestOptions()
                                    .diskCacheStrategy(DiskCacheStrategy.ALL);

                            Glide.with(getContext()).load(url)
                                    .thumbnail()
                                    .apply(options)
                                    .into(imagetarjeta);
                        }

                    }
                }

            }



        }
        else if (!titulotarjeta.getText().equals("") && !continues)
        {
            // Log.e("Nombre","vacio");
            SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();


            //Despues del recorrido no se encontro progreso en ninguna capsula, por lo cual la tarjeta queda vacia
            // vamos a llenarla con la ultima capsula, que debe ser nueva al no tener progreso


            for(Capsule dbCapsule : dbCapsules)
            {
                List<Slide> slides = slideDao.selectAllByCapsuleUuid(dbCapsule.getUuid());

                if (slides.isEmpty()) {

                } else {
                    progress = progressDao.selectByCapsuleUuid(dbCapsule.getUuid());

                    //  Log.e("Capsula","Es omitida, no tiene slides");

                    if (progress == null) {

                        //  Log.e("Es nueva","");

                        titulotarjeta.setText(dbCapsule.getName());
                        progresotarjeta.setVisibility(View.INVISIBLE);
                        progresoporcentaje.setVisibility(View.INVISIBLE);
                        empezar.setText("Nueva");
                        continuar.setText("Ver cápsula");

                        iTwoGetSkills.getPreference().setOrigennavigation("welcome");


                        int fragmentIdxActive = iTwoGetSkills.getPreference().getFragmentIdxActive();

                        if (fragmentIdxActive != Constants.IDX_FRAGMENT_WELCOME
                        ) {
                            return;
                        }
                        iTwoGetSkills.setCapsulaActiva(dbCapsule.getUuid());
                       // Log.e("La capsula","activa en load"+dbCapsule.getUuid());
                        iTwoGetSkills.getPreference().setTopicUuidActive(dbCapsule.getTopicUuid());

                        if (dbCapsule.getImage() != null && !dbCapsule.getImage().equals("")) {

                            TimeZone timeZone = TimeZone.getTimeZone("UTC");
                            Calendar calendar = Calendar.getInstance(timeZone);
                            TimeZone tz = calendar.getTimeZone();
                            int created = (int) (calendar.getTimeInMillis() / 1000);

                            Random random = new Random(created);
                            int rand = 1000 + random.nextInt(8999);


                            String deviceUuid = iTwoGetSkills.getPreference().getDeviceUuid();
                            String password = iTwoGetSkills.getPreference().getPassword();


                            String secret = MD5.generar(password + ':' + created + ':' + rand);
                            GlideUrl url = new GlideUrl(dbCapsule.getImage(), new LazyHeaders.Builder()
                                    .addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.HTTP_HEADER_ACCEPT_VALUE)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_TOKEN, deviceUuid)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_SECRET, secret)
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_CREATED, String.valueOf(created))
                                    .addHeader(Constants.HTTP_HEADER_SECURITY_RAND, String.valueOf(rand))
                                    .build());

                            RequestOptions options = new RequestOptions()
                                    .diskCacheStrategy(DiskCacheStrategy.ALL);

                            Glide.with(getContext()).load(url)
                                    .thumbnail()
                                    .apply(options)
                                    .into(imagetarjeta);
                        }

                    }
                }

            }
        }

        continuar.setOnClickListener(v -> {


           // Log.e("Guardo",""+iTwoGetSkills.getPreference().getOrigenNavigation());
           // Log.e("Capsule","active"+iTwoGetSkills.getPreference().getCapsuleUuidActive());

            Progress progresscontinue; ProgressDao progressDaocontinue = iTwoGetSkills.getDatabase().getProgressDao();
            progresscontinue = progressDaocontinue.selectByCapsuleUuid(iTwoGetSkills.getCapsuleUuidActive());
            if (progresscontinue != null) {
                if (progresscontinue.getProgress() >= 100 && progresscontinue.getCompleted() == 1) {
                    iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_DETAIL_CAPSULE);
                } else {
                    iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_SLIDES);
                }

                iTwoGetSkills.getPreference().setOrigennavigation("welcome");
                iTwoGetSkills.hideKeyboard(v); //Ocultamos el teclado
            }
            else
            {
                iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_SLIDES);

            }
        });

        //Fin de primer tarjeta

    }

    private void loadData(String tabposition, String buscar)
    {


        TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();
        ArrayList<Topic> dbTopics = (ArrayList<Topic>) topicDao.selectAll();

        List<Capsule> dbCapsules;
        CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();

        ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
        SlideDao slideDao = iTwoGetSkills.getDatabase().getSlideDao();


        if (tabposition.equals("pendientes"))
        {
            for (Topic dbTopic : dbTopics) {

                dbCapsules = capsuleDao.selectAllByTopicUuidandOrder(dbTopic.getUuid());

                Capsule capsule;
                Progress progress;

                HashMap<String, String> m_li;



                for(Capsule dbCapsule : dbCapsules) {
                    capsule = new Capsule();
                    capsule.setTopicUuid(dbCapsule.getTopicUuid());
                    capsule.setUuid(dbCapsule.getUuid());
                    capsule.setName(dbCapsule.getName());
                    capsule.setDescription(dbCapsule.getDescription());
                    capsule.setImage(dbCapsule.getImage());
                    capsule.setPosition(dbCapsule.getPosition());
                    capsule.setUpdatedOn(dbCapsule.getUpdatedOn());

                    m_li = new HashMap<>();


                    //m_li.put("copyright",copy);

                    progress = progressDao.selectByCapsuleUuid(capsule.getUuid());

                    if (progress != null) {
                        capsule.setCompleted(progress.getCompleted());
                        capsule.setViewSlides(progress.getViewSlides());

                        capsule.setTotalSlides(progress.getTotalSlides());
                        capsule.setProgress(progress.getProgress());
                        capsule.setAddedOn(progress.getAddedOn());

                        // Log.e("Agregado en"," "+progress.getAddedOn());
                        // m_li.put("addedon",progress.getAddedOn());
                        m_li.put("view", String.valueOf(progress.getViewSlides()));
                        m_li.put("total", String.valueOf(progress.getTotalSlides()));
                        m_li.put("progress", String.valueOf(progress.getProgress()));
                        m_li.put("completado",String.valueOf(progress.getCompleted()));
                        m_li.put("agregado",progress.getAddedOn());

                    }

                    m_li.put("imagen", capsule.getImage());
                    m_li.put("nombre", capsule.getName());
                    m_li.put("uuid", capsule.getUuid());
                    m_li.put("topicuuid", capsule.getTopicUuid());
                    m_li.put("description", capsule.getDescription());


                    //Lleno la lista segun el requerimiento de filtro accionado por el usuario

                    List<Slide> slides = slideDao.selectAllByCapsuleUuid(capsule.getUuid());

                    if (slides.isEmpty()) {

                        //  Log.e("Capsula","Es omitida, no tiene slides");
                    } else {


                        if (progress == null) {

                            if (buscar.equals("")) {

                                capsuleList.add(m_li);


                            } else {
                                String nombre= capsule.getName();
                                String normalizada= Normalizer.normalize(nombre, Normalizer.Form.NFD);
                                normalizada= normalizada.replaceAll("[^\\p{ASCII}]", "");
                                if (normalizada.matches("(?i).*" + buscar + ".*")) {
                                    capsuleList.add(m_li);
                                }

                            }

                        }

                    }

                }



            }

        }
        else if (tabposition.equals("cursando"))
        {

                HashMap<String, String> m_li;
                List<Progress> progress;
                Capsule capsule;



            progress = progressDao.selectAllCapsulesProgress();

                for(Progress dbProgress : progress) {
                    m_li = new HashMap<>();

                    capsule = capsuleDao.selectByUuid(dbProgress.getCapsuleUuid());

                    m_li.put("view", String.valueOf(dbProgress.getViewSlides()));
                    m_li.put("total", String.valueOf(dbProgress.getTotalSlides()));
                    m_li.put("progress", String.valueOf(dbProgress.getProgress()));
                    m_li.put("completado",String.valueOf(dbProgress.getCompleted()));
                    m_li.put("agregado",dbProgress.getAddedOn());


                    if(capsule == null)
                    {
                        Log.e("El objeto es"," nulo");
                    }
                    else {
                        m_li.put("imagen", capsule.getImage());
                        m_li.put("nombre", capsule.getName());
                        m_li.put("uuid", capsule.getUuid());
                        m_li.put("topicuuid", capsule.getTopicUuid());
                        m_li.put("description", capsule.getDescription());



                    //Log.e("Lista",""+m_li);
                    //Lleno la lista segun el requerimiento de filtro accionado por el usuario

                    List<Slide> slides = slideDao.selectAllByCapsuleUuid(capsule.getUuid());

                    if (slides.isEmpty()) {

                        //  Log.e("Capsula","Es omitida, no tiene slides");
                    } else {

            if(dbProgress.getProgress() <= 100 && dbProgress.getCompleted()==0)
            {
            if (buscar.equals("")) {
                capsuleList.add(m_li);

            } else {
                String nombre= capsule.getName();
                String normalizada= Normalizer.normalize(nombre, Normalizer.Form.NFD);
                normalizada= normalizada.replaceAll("[^\\p{ASCII}]", "");
                if (normalizada.matches("(?i).*" + buscar + ".*")) {
                    capsuleList.add(m_li);
                }

            }
        }}
                }}}

       else if (tabposition.equals("finalizados")){

            HashMap<String, String> m_li;
            List<Progress> progress;
            Capsule capsule;



            progress = progressDao.selectAllCapsulesProgress();

            for(Progress dbProgress : progress) {
                m_li = new HashMap<>();

                capsule = capsuleDao.selectByUuid(dbProgress.getCapsuleUuid());

                m_li.put("view", String.valueOf(dbProgress.getViewSlides()));
                m_li.put("total", String.valueOf(dbProgress.getTotalSlides()));
                m_li.put("progress", String.valueOf(dbProgress.getProgress()));
                m_li.put("completado",String.valueOf(dbProgress.getCompleted()));
                m_li.put("agregado",dbProgress.getAddedOn());

                if(capsule == null)
                {
                    Log.e("El objeto esta", "nulo");
                }
                else{

                m_li.put("imagen", capsule.getImage());
                m_li.put("nombre", capsule.getName());
                m_li.put("uuid", capsule.getUuid());
                m_li.put("topicuuid", capsule.getTopicUuid());
                m_li.put("description", capsule.getDescription());

                //Lleno la lista segun el requerimiento de filtro accionado por el usuario

                    List<Slide> slides = slideDao.selectAllByCapsuleUuid(capsule.getUuid());

                    if (slides.isEmpty()) {

                        //  Log.e("Capsula","Es omitida, no tiene slides");
                    } else {
           if(dbProgress.getProgress() >= 100 && dbProgress.getCompleted()==1){

               if (buscar.equals("")) {
                   //capsule.getCompleted();
                   capsuleList.add(m_li);

               } else {
                   String nombre= capsule.getName();
                   String normalizada= Normalizer.normalize(nombre, Normalizer.Form.NFD);
                   normalizada= normalizada.replaceAll("[^\\p{ASCII}]", "");
                   if (normalizada.matches("(?i).*" + buscar + ".*")) {
                       capsuleList.add(m_li);
                   }

               }
           }
    }
                }}}


       if(capsuleList.size() == 0)
       {
           ningunelemento.setVisibility(View.VISIBLE);
       }
       else
       {
           ningunelemento.setVisibility(View.GONE);
       }

    }


    @Override
    public void onItemClick(int position, View v) {

        iTwoGetSkills.setCapsulaActiva(capsuleList.get(position).get("uuid"));
        iTwoGetSkills.getPreference().setTopicUuidActive(capsuleList.get(position).get("topicuuid"));

        Progress progress; ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();
        progress = progressDao.selectByCapsuleUuid(capsuleList.get(position).get("uuid"));

        if (progress != null) {
            if (progress.getProgress() >= 100 && progress.getCompleted() == 1) {
                iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_DETAIL_CAPSULE);
            } else {
                iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_SLIDES);
            }

            iTwoGetSkills.getPreference().setOrigennavigation("welcome");
            iTwoGetSkills.hideKeyboard(v); //Ocultamos el teclado
        }
        else
        {
            iTwoGetSkills.invokeFragment(Constants.IDX_FRAGMENT_SLIDES);

        }
    }
}