package net.plil.clubinfo.etunicorn.app.personne; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Spinner; import android.widget.Toast; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.google.gson.Gson; import com.google.gson.JsonArray; import net.plil.clubinfo.etunicorn.R; import net.plil.clubinfo.etunicorn.data.Role; import net.plil.clubinfo.etunicorn.utils.VolleyUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.w3c.dom.Text; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Locale; public class CreatePersonne extends DialogFragment { Calendar myCalendar = Calendar.getInstance(); private EditText mLogin; private EditText mCarte; private Spinner mNaissance; private Spinner mRole; private ProgressBar mProgressBar; TextInputLayout mLoginInput; TextInputLayout mCarteInput; private String[] arraySpinnerNaissance; private ArrayAdapter adapterNaissance; private List arraySpinnerRole; private ArrayAdapter adapterRole; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { myCalendar.set(Calendar.YEAR, myCalendar.get(Calendar.YEAR)-18); // Use the Builder class for convenient dialog construction LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.fragment_create_personne, null); mLogin = (EditText) view.findViewById(R.id.create_personne_login); mCarte = (EditText) view.findViewById(R.id.create_personne_carte); mLoginInput = (TextInputLayout) view.findViewById(R.id.create_personne_login_input); mCarteInput = (TextInputLayout) view.findViewById(R.id.create_personne_carte_input); mRole = (Spinner) view.findViewById(R.id.create_personne_role); arraySpinnerRole = new ArrayList<>(); Role r = new Role(); r.setName("Role"); arraySpinnerRole.add(r); adapterRole = new ArrayAdapter<>(getActivity(), R.layout.simple_item_layout, arraySpinnerRole); mRole.setAdapter(adapterRole); changeRolePossibility(); mNaissance = (Spinner) view.findViewById(R.id.create_personne_naissance); arraySpinnerNaissance = new String[] { getString(R.string.create_personne_naissance) }; adapterNaissance = new ArrayAdapter(getActivity(), R.layout.simple_item_layout, arraySpinnerNaissance); mNaissance.setAdapter(adapterNaissance); mProgressBar = (ProgressBar) view.findViewById(R.id.create_personne_progress_bar); AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.create_personne) .setView(view) .setPositiveButton(R.string.valid, null) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { VolleyUtils.getInstance(getContext()).getRequestQueue().cancelAll(CreatePersonne.class); } }).create(); dialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(final DialogInterface dialog) { Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mLogin.getText().toString().isEmpty() && mCarte.getText().toString().isEmpty()){ mLogin.setError(getString(R.string.error_create_personne_login_carte)); mCarte.setError(getString(R.string.error_create_personne_login_carte)); } else { mProgressBar.setVisibility(View.VISIBLE); mLoginInput.setVisibility(View.GONE); mCarteInput.setVisibility(View.GONE); mNaissance.setVisibility(View.GONE); mRole.setVisibility(View.GONE); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("login", mLogin.getText().toString()); jsonObject.put("carte", mCarte.getText().toString()); jsonObject.put("role", mRole.getSelectedItem()); if (!mNaissance.getSelectedItem().equals(getString(R.string.create_personne_naissance))) jsonObject.put("naissance", mNaissance.getSelectedItem()); } catch (JSONException e) { e.printStackTrace(); } JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, VolleyUtils.baseUri + "/personne", jsonObject, new Response.Listener() { @Override public void onResponse(JSONObject response) { mProgressBar.setVisibility(View.GONE); dismiss(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { mProgressBar.setVisibility(View.GONE); mLoginInput.setVisibility(View.VISIBLE); mCarteInput.setVisibility(View.VISIBLE); mNaissance.setVisibility(View.VISIBLE); mRole.setVisibility(View.VISIBLE); } } ); jsonObjectRequest.setTag(CreatePersonne.class); VolleyUtils.getInstance(getContext()).addToRequestQueue(jsonObjectRequest); } } }); } }); mNaissance.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { new DatePickerDialog(getContext(), date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } return true; } }); dialog.setCanceledOnTouchOutside(false); return dialog; } private void changeRolePossibility(){ JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, VolleyUtils.baseUri + "/role/" ,null , new Response.Listener() { @Override public void onResponse(JSONObject response) { JSONArray jsonArray = null; try { //TODO change this by the real name of the array jsonArray = response.getJSONArray("roles"); arraySpinnerRole.clear(); for (int i =0; i