package com.wesaphzt.privatelocation.fragments;

import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import com.wesaphzt.privatelocation.MainActivity;
import com.wesaphzt.privatelocation.R;
import com.wesaphzt.privatelocation.db.Favorite;
import com.wesaphzt.privatelocation.db.FavoriteAdapter;
import com.wesaphzt.privatelocation.db.SQLiteDB;

import java.util.List;

public class DialogFragmentFavorite extends DialogFragment {

    private SQLiteDB mDatabase;

    private MainActivity mainActivity;

    public DialogFragmentFavorite(Context context, MainActivity mActivity) {
        mainActivity = mActivity;
    }

    //default constructor
    public DialogFragmentFavorite() { }

    @NonNull
    @SuppressLint("InflateParams")
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        Context context = getContext();

        //setup alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(getString(R.string.dialog_favorites_title));

        //set listview as view
        LayoutInflater inflater = getActivity().getLayoutInflater();
        final View view = inflater.inflate(R.layout.dialog_favorites, null);
        builder.setView(view);

        RecyclerView favoriteView = (RecyclerView) view.findViewById(R.id.favorite_list);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);

        //empty view
        TextView tvEmpty = view.findViewById(R.id.tvEmpty);

        favoriteView.setLayoutManager(linearLayoutManager);
        favoriteView.setHasFixedSize(true);

        //db
        mDatabase = new SQLiteDB(context);
        List<Favorite> allFavorites = mDatabase.listFavorites();

        //if db empty
        if(allFavorites.isEmpty()) {
            favoriteView.setVisibility(View.GONE);
            tvEmpty.setVisibility(View.VISIBLE);

        } else {
            favoriteView.setVisibility(View.VISIBLE);
            tvEmpty.setVisibility(View.GONE);
            //pass mainActivity so we can callback in FavoriteAdapter
            FavoriteAdapter mAdapter = new FavoriteAdapter(context, allFavorites, mainActivity, DialogFragmentFavorite.this);
            favoriteView.setAdapter(mAdapter);
        }

        return builder.create();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        if(mDatabase != null){
            mDatabase.close();
        }
    }
}