package com.diampark.test.Fragment;

import android.util.Log;

import com.diampark.test.Class.RegisterAPI;
import com.diampark.test.Class.SuiviConcentration;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import androidx.fragment.app.Fragment;

import java.util.HashMap;
import java.util.HashSet;

import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;

public abstract class BottomNavigationFragment extends Fragment {

    protected Callback tmpCallback = new Callback() {
        @Override
        public void success(Object o, Response response) {
            Log.d("Impec", "Ca marche");
        }

        @Override
        public void failure(RetrofitError error) {
            Log.d("Pas Impec", "Ca marche pas");
        }
    };

    public enum METHODE {
        POSTDATA,
        LOGIN,
        REGISTER
    }

    public class SuiviToPost {
        final double concentration;
        public HashSet<Long> prises;
        final Boolean coucherLever;

        SuiviToPost(SuiviConcentration suivi) {
            this.concentration = suivi.concentration();
            this.coucherLever = suivi.get_etat_sommeil();
            this.prises = suivi.prises;
        };
    }

    public BottomNavigationFragment(int fragment) {
        super(fragment);
    }

    public static class Post extends Thread implements RegisterAPI {

        private JsonObject body;
        private final Callback postCallback;
        METHODE methode;

        public Post(JsonObject pBody, METHODE pmethode, Callback callback) {
            methode = pmethode;
            body = pBody;
            body.addProperty("user_id", 4);
            postCallback = callback;
        }

        @Override
        public void run() {
            switch (methode) {
                case POSTDATA:
                    postData(body, postCallback);
                    break;
                case LOGIN:
                    login(body, postCallback);
                    break;
                case REGISTER:
                    register(body, postCallback);
                    break;
            }
        }

        @Override
        public void postData(JsonObject body, Callback<Response> callback) {
            String rootUrl = "http://91.167.205.236:31113"; //"https://djamchid.sites.3wa.io";
            RestAdapter adapter = new RestAdapter.Builder()
                    .setEndpoint(rootUrl) //Setting the Root URL
                    .build(); //Finally building the adapter

            //Creating object for our interface
            RegisterAPI api = adapter.create(RegisterAPI.class);

            api.postData(body, callback);
        }

        @Override
        public void login(JsonObject body, Callback<Response> callback) {
            String rootUrl = "http://91.167.205.236:31113"; //"https://djamchid.sites.3wa.io";
            RestAdapter adapter = new RestAdapter.Builder()
                    .setEndpoint(rootUrl) //Setting the Root URL
                    .build(); //Finally building the adapter

            //Creating object for our interface
            RegisterAPI api = adapter.create(RegisterAPI.class);

            api.login(body, callback);
        }

        @Override
        public void register(JsonObject body, Callback<Response> callback) {
            String rootUrl = "http://91.167.205.236:31113"; //"https://djamchid.sites.3wa.io";
            RestAdapter adapter = new RestAdapter.Builder()
                    .setEndpoint(rootUrl) //Setting the Root URL
                    .build(); //Finally building the adapter

            //Creating object for our interface
            RegisterAPI api = adapter.create(RegisterAPI.class);

            api.register(body, callback);
        }
    }
}
