package com.nith.appteam.hillffair17.Fragments;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;


import com.nith.appteam.hillffair17.Adapters.NewsFeedAdapter;
import com.nith.appteam.hillffair17.Models.NewsFeed;
import com.nith.appteam.hillffair17.Models.NewsFeedResponse;
import com.nith.appteam.hillffair17.R;
import com.nith.appteam.hillffair17.Utils.SharedPref;
import com.nith.appteam.hillffair17.Utils.Utils;

import java.util.ArrayList;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

/**
 * Created by aditya on 13/2/17.
 */

public class ProfileTab3 extends Fragment {

    private static final String USER_POST = "post";

    private TextView nodata;
    private RecyclerView recyclerView;
    private ProgressBar progress;
    private NewsFeedAdapter adapter;
    private SharedPref sharedPref;
    private ArrayList<NewsFeed> list;


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

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

        nodata = (TextView) view.findViewById(R.id.nodata);
        recyclerView = (RecyclerView) view.findViewById(R.id.news_list);
        progress = (ProgressBar) view.findViewById(R.id.progress);
        list = new ArrayList<>();

        adapter = new NewsFeedAdapter(getContext());
        recyclerView.setAdapter(adapter);

        final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(linearLayoutManager);

        sharedPref = new SharedPref(getContext());

        Log.d("id",sharedPref.getUserId());
        if(savedInstanceState==null){
            getData(1,sharedPref.getUserId());
            progress.setVisibility(View.VISIBLE);
        }

        else{
            if(savedInstanceState.getParcelableArray(USER_POST)!=null){
                recyclerView.setVisibility(View.VISIBLE);
                list = savedInstanceState.getParcelableArrayList(USER_POST);
                adapter.refresh(list);
            }
            else{
                nodata.setVisibility(View.VISIBLE);
                nodata.setText("No Post Uploaded");
            }

        }


        return view;
    }




    private void getData(int from, String id){

        Call<NewsFeedResponse> getUserNewsFeed = Utils.getRetrofitService().getUserNews(id);
        getUserNewsFeed.enqueue(new Callback<NewsFeedResponse>() {
            @Override
            public void onResponse(Call<NewsFeedResponse> call, Response<NewsFeedResponse> response) {
                NewsFeedResponse data = response.body();

                if (data != null && response.isSuccess()) {
                    if (data.isSuccess()) {
                        if(data.getFeed()!=null){
                            list.addAll(data.getFeed());
                            if(list.size()>0){
                                System.out.println(list.size());
                                recyclerView.setVisibility(View.VISIBLE);
                                progress.setVisibility(View.GONE);
                                adapter.refresh(list);
                            }
                            else {
                                recyclerView.setVisibility(View.GONE);
                                progress.setVisibility(View.GONE);
                                nodata.setVisibility(View.VISIBLE);
                                nodata.setText("No Post Uploaded");
                            }

                        }
                    }
                    else {
                        nodata.setVisibility(View.VISIBLE);
                        recyclerView.setVisibility(View.GONE);
                        progress.setVisibility(View.GONE);
                        nodata.setText(data.getMsg());

                    }
                }
                else {
                    nodata.setVisibility(View.VISIBLE);
                    recyclerView.setVisibility(View.GONE);
                    progress.setVisibility(View.GONE);
                    nodata.setText("Please Check Internet Connection");

                }
            }

            @Override
            public void onFailure(Call<NewsFeedResponse> call, Throwable t) {

                recyclerView.setVisibility(View.GONE);
                progress.setVisibility(View.GONE);
                t.printStackTrace();
                nodata.setText("Please Check Internet Connection");

            }
        });


    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelableArrayList(USER_POST,list);
    }



}