package com.putuguna.androidphplogin;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.putuguna.androidphplogin.apiservices.ApiService;
import com.putuguna.androidphplogin.clients.ApiClient;
import com.putuguna.androidphplogin.models.InsertFoodResponseModel;

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

public class MainActivity extends AppCompatActivity {

    private Button btnInsert;
    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnInsert = (Button) findViewById(R.id.button_insert_food);

        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Inserting");
        progressDialog.setMessage("Please wait ....");

        btnInsert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                popupInsertFood();
            }
        });
    }

    /**
     * this method used to open popup
     */
    private void popupInsertFood(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        LayoutInflater inflater = getLayoutInflater();
        View view = inflater.inflate(R.layout.popup_insert_food,null);
        builder.setView(view);

        final EditText etFoodName = (EditText) view.findViewById(R.id.edit_text_food_name);
        final EditText etFoodQty = (EditText) view.findViewById(R.id.edit_text_food_quantity);

        progressDialog.show();

        builder.setPositiveButton("Insert", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();

                String foodName = etFoodName.getText().toString();
                String foodQty = etFoodQty.getText().toString();

                if(TextUtils.isEmpty(foodName)){
                    Toast.makeText(MainActivity.this, "Food Name is required", Toast.LENGTH_SHORT).show();
                }else if(TextUtils.isEmpty(foodQty)){
                    Toast.makeText(MainActivity.this, "Food Quantity is required", Toast.LENGTH_SHORT).show();
                }else{
                    insertData(foodName,foodQty);
                }
            }
        });

        builder.show();
    }

    /**
     * this method used to send data to server or our local server
     * @param foodName
     * @param foodQty
     */
    private void insertData(String foodName, String foodQty){
        ApiService apiService = ApiClient.getClient().create(ApiService.class);
        Call<InsertFoodResponseModel> call = apiService.insertFood(foodName, foodQty);
        call.enqueue(new Callback<InsertFoodResponseModel>() {
            @Override
            public void onResponse(Call<InsertFoodResponseModel> call, Response<InsertFoodResponseModel> response) {

                InsertFoodResponseModel insertFoodResponseModel = response.body();

                //check the status code
                if(insertFoodResponseModel.getStatus()==1){
                    Toast.makeText(MainActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
                    progressDialog.dismiss();
                }else{
                    Toast.makeText(MainActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
                    progressDialog.dismiss();
                }
            }

            @Override
            public void onFailure(Call<InsertFoodResponseModel> call, Throwable t) {
                Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
                progressDialog.dismiss();
            }
        });
    }
}