diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Crediter.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Crediter.java
index 7bfe1e5..38beeaa 100644
--- a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Crediter.java
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Crediter.java
@@ -63,7 +63,7 @@ public class Crediter extends FragmentNFC {
}
@Override
- public void processNFC() {
+ public void processNFC(String idCardUser) {
mProgressBar.setVisibility(View.VISIBLE);
JSONObject jsonObject = new JSONObject();
try {
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Debiter.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Debiter.java
index 63dc126..6522c46 100644
--- a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Debiter.java
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Debiter.java
@@ -70,9 +70,10 @@ public class Debiter extends FragmentNFC {
}
@Override
- public void processNFC() {
+ public void processNFC(String iDCardUser) {
mProgressBar.setVisibility(View.VISIBLE);
JSONObject jsonObject = new JSONObject();
+ //TODO verifier champ complet avant de construire la requete
try {
jsonObject.put("participant", 1);
jsonObject.put("acteur", 2);
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/EventFragment.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/EventFragment.java
new file mode 100644
index 0000000..7eab0c5
--- /dev/null
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/EventFragment.java
@@ -0,0 +1,105 @@
+package net.plil.clubinfo.etunicorn.app.Event;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import net.plil.clubinfo.etunicorn.R;
+import net.plil.clubinfo.etunicorn.app.FragmentNFC;
+import net.plil.clubinfo.etunicorn.data.Event;
+
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * A fragment representing a list of Items.
+ *
+ * Activities containing this fragment MUST implement the {@link OnListFragmentInteractionListener}
+ * interface.
+ */
+public class EventFragment extends FragmentNFC {
+
+ private OnListFragmentInteractionListener mListener;
+
+ public EventFragment() {
+ }
+
+
+ public static EventFragment newInstance() {
+ return new EventFragment();
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_event_list, container, false);
+
+ // Set the adapter
+ if (view instanceof RecyclerView) {
+ Context context = view.getContext();
+ RecyclerView recyclerView = (RecyclerView) view;
+ recyclerView.setLayoutManager(new LinearLayoutManager(context));
+
+ List events = new ArrayList<>();
+ for (int i = 0; i< 150; ++i){
+ Event ev = new Event();
+ ev.setNomEvent("Hello " + i);
+ ev.setPrice(15.52);
+ ev.setDate(new Date(Calendar.getInstance().getTimeInMillis()));
+ events.add(ev);
+ }
+
+ recyclerView.setAdapter(new MyEventRecyclerViewAdapter(events, mListener, getActivity()));
+ }
+ return view;
+ }
+
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ if (context instanceof OnListFragmentInteractionListener) {
+ mListener = (OnListFragmentInteractionListener) context;
+ } else {
+ throw new RuntimeException(context.toString()
+ + " must implement OnListFragmentInteractionListener");
+ }
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mListener = null;
+ }
+
+ @Override
+ public void processNFC(String idCardUser) {
+
+ }
+
+ /**
+ * This interface must be implemented by activities that contain this
+ * fragment to allow an interaction in this fragment to be communicated
+ * to the activity and potentially other fragments contained in that
+ * activity.
+ *
+ * See the Android Training lesson Communicating with Other Fragments for more information.
+ */
+ public interface OnListFragmentInteractionListener {
+ void onListFragmentInteraction(Event item);
+ void onListFragmentInteractionLong(Event item);
+ }
+}
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/MyEventRecyclerViewAdapter.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/MyEventRecyclerViewAdapter.java
new file mode 100644
index 0000000..e5e90d9
--- /dev/null
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/MyEventRecyclerViewAdapter.java
@@ -0,0 +1,83 @@
+package net.plil.clubinfo.etunicorn.app.Event;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import net.plil.clubinfo.etunicorn.R;
+import net.plil.clubinfo.etunicorn.data.Event;
+
+import java.util.List;
+import java.util.Locale;
+
+
+public class MyEventRecyclerViewAdapter extends RecyclerView.Adapter {
+
+ private final List mEvents;
+ private final EventFragment.OnListFragmentInteractionListener mListener;
+ private final Context context;
+
+ public MyEventRecyclerViewAdapter(List items, EventFragment.OnListFragmentInteractionListener listener, Context context) {
+ mEvents = items;
+ mListener = listener;
+ this.context = context;
+ }
+
+ @Override
+ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.fragment_event, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(final ViewHolder holder, int position) {
+ holder.mItem = mEvents.get(position);
+ holder.mContentView.setText(mEvents.get(position).getNomEvent());
+ holder.mPriceView.setText(String.format(Locale.FRANCE, "%.2f", mEvents.get(position).getPrice()));
+ holder.mId = mEvents.get(position).getIdEvent();
+
+ holder.mView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (null != mListener) {
+ mListener.onListFragmentInteraction(holder.mItem);
+ }
+ }
+ });
+
+ holder.mView.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ mListener.onListFragmentInteractionLong(holder.mItem);
+ return true;
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return mEvents.size();
+ }
+
+ class ViewHolder extends RecyclerView.ViewHolder {
+ final View mView;
+ int mId;
+ final TextView mContentView;
+ final TextView mPriceView;
+ final TextView mButtonView;
+ Event mItem;
+
+ public ViewHolder(View view) {
+ super(view);
+ mView = view;
+ mContentView = (TextView) view.findViewById(R.id.event_name);
+ mPriceView = (TextView) view.findViewById(R.id.event_price);
+ mButtonView = (TextView) view.findViewById(R.id.event_options);
+ }
+
+ }
+}
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/PaiementEvent.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/PaiementEvent.java
new file mode 100644
index 0000000..e468d64
--- /dev/null
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/Event/PaiementEvent.java
@@ -0,0 +1,107 @@
+package net.plil.clubinfo.etunicorn.app.Event;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+import android.support.v7.app.AlertDialog;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+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 net.plil.clubinfo.etunicorn.R;
+import net.plil.clubinfo.etunicorn.data.Consommation;
+import net.plil.clubinfo.etunicorn.data.Event;
+import net.plil.clubinfo.etunicorn.utils.VolleyUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Locale;
+
+
+public class PaiementEvent extends DialogFragment {
+
+ ProgressBar mProgressBar;
+ TextView mPaiementEventName;
+ TextView mPaiementEventPrice;
+ int eventId;
+
+ public PaiementEvent(){}
+
+ public static PaiementEvent newInstance(Event event) {
+ PaiementEvent f = new PaiementEvent();
+ Bundle args = new Bundle();
+ args.putSerializable("event", event);
+ f.setArguments(args);
+ return f;
+ }
+
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Use the Builder class for convenient dialog construction
+ LayoutInflater inflater = getActivity().getLayoutInflater();
+ View view = inflater.inflate(R.layout.fragment_paiment_event, null);
+ mProgressBar = (ProgressBar) view.findViewById(R.id.paiment_event_progress_bar);
+ mPaiementEventName = (TextView) view.findViewById(R.id.paiment_event_name);
+ mPaiementEventPrice = (TextView) view.findViewById(R.id.paiment_event_price);
+
+
+ Event event = (Event) getArguments().getSerializable("event");
+ mPaiementEventName.setText(event.getNomEvent());
+ mPaiementEventPrice.setText(String.format(Locale.FRANCE, "%.2f €", event.getPrice()));
+
+ eventId = event.getIdEvent();
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder
+ .setTitle(R.string.payment_event)
+ .setView(view)
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // User cancelled the dialog
+ }
+ });
+ // Create the AlertDialog object and return it
+ return builder.create();
+ }
+
+
+ public void processNFC() {
+ mProgressBar.setVisibility(View.VISIBLE);
+ JSONObject jsonObject = new JSONObject();
+ try {
+ jsonObject.put("participant", 1);
+ jsonObject.put("acteur", 2);
+ jsonObject.put("id", eventId);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, VolleyUtils.baseUri + "/transaction/evenement", jsonObject, new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+ mProgressBar.setVisibility(View.GONE);
+ Toast.makeText(getContext(), R.string.payment_done, Toast.LENGTH_LONG).show();
+ dismiss();
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ mProgressBar.setVisibility(View.GONE);
+ Toast.makeText(getContext(), R.string.payment_refused, Toast.LENGTH_LONG).show();
+ dismiss();
+ }
+ }
+ );
+
+ VolleyUtils.getInstance(getContext()).addToRequestQueue(jsonObjectRequest);
+ }
+}
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/FragmentNFC.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/FragmentNFC.java
index 4ca54bd..0cd3508 100644
--- a/app/src/main/java/net/plil/clubinfo/etunicorn/app/FragmentNFC.java
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/FragmentNFC.java
@@ -8,5 +8,5 @@ import android.view.View;
*/
public abstract class FragmentNFC extends Fragment {
- public abstract void processNFC();
+ public abstract void processNFC(String idCardUser);
}
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/MainActivity.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/MainActivity.java
index 92d3ee7..5df4fa1 100644
--- a/app/src/main/java/net/plil/clubinfo/etunicorn/app/MainActivity.java
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/MainActivity.java
@@ -4,6 +4,7 @@ import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.nfc.NfcAdapter;
+import android.nfc.Tag;
import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.TabLayout;
@@ -17,17 +18,22 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
+import android.widget.Toast;
import net.plil.clubinfo.etunicorn.R;
+import net.plil.clubinfo.etunicorn.app.Event.EventFragment;
+import net.plil.clubinfo.etunicorn.app.Event.PaiementEvent;
import net.plil.clubinfo.etunicorn.app.consommation.FragmentConsommation;
import net.plil.clubinfo.etunicorn.app.consommation.PaiementConsommation;
import net.plil.clubinfo.etunicorn.data.Consommation;
+import net.plil.clubinfo.etunicorn.data.Event;
+import net.plil.clubinfo.etunicorn.utils.ConvertBytesToString;
import java.util.ArrayList;
import java.util.List;
-public class MainActivity extends AppCompatActivity implements FragmentConsommation.OnListFragmentInteractionListener{
+public class MainActivity extends AppCompatActivity implements FragmentConsommation.OnListFragmentInteractionListener, EventFragment.OnListFragmentInteractionListener{
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
@@ -109,8 +115,9 @@ public class MainActivity extends AppCompatActivity implements FragmentConsommat
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
+ Tag myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
FragmentNFC fNFC = (FragmentNFC) getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem());
- fNFC.processNFC();
+ fNFC.processNFC(ConvertBytesToString.bytesToHexString(myTag.getId()));
}
}
@@ -136,7 +143,18 @@ public class MainActivity extends AppCompatActivity implements FragmentConsommat
}
@Override
- public void onListFragmentInteractionLong(Consommation item) {
+ public void onListFragmentInteractionLong(Consommation consommation) {
+
+ }
+
+ @Override
+ public void onListFragmentInteraction(Event item) {
+ PaiementEvent paiementEvent = PaiementEvent.newInstance(item);
+ paiementEvent.show(getSupportFragmentManager(), "paiementEvent");
+ }
+
+ @Override
+ public void onListFragmentInteractionLong(Event item) {
}
@@ -158,13 +176,15 @@ public class MainActivity extends AppCompatActivity implements FragmentConsommat
return Debiter.newInstance();
else if (position == Action.CONSOMATION.getValue())
return FragmentConsommation.newInstance();
+ else if (position == Action.EVENT.getValue())
+ return EventFragment.newInstance();
else
return null;
}
@Override
public int getCount() {
- return 3;
+ return 4;
}
@Override
@@ -175,12 +195,14 @@ public class MainActivity extends AppCompatActivity implements FragmentConsommat
return "Crediter";
else if (position == Action.CONSOMATION.getValue())
return "Consommation";
+ else if(position == Action.EVENT.getValue())
+ return getString(R.string.event);
return null;
}
}
private enum Action {
- DEBITER(0), CREDITER(1), CONSOMATION(2);
+ DEBITER(0), CREDITER(1), CONSOMATION(2), EVENT(3);
private final int value;
Action(int value) {
diff --git a/app/src/main/java/net/plil/clubinfo/etunicorn/app/consommation/ConsommationRecyclerViewAdapter.java b/app/src/main/java/net/plil/clubinfo/etunicorn/app/consommation/ConsommationRecyclerViewAdapter.java
index 188fd05..bdc3802 100644
--- a/app/src/main/java/net/plil/clubinfo/etunicorn/app/consommation/ConsommationRecyclerViewAdapter.java
+++ b/app/src/main/java/net/plil/clubinfo/etunicorn/app/consommation/ConsommationRecyclerViewAdapter.java
@@ -114,9 +114,5 @@ public class ConsommationRecyclerViewAdapter extends RecyclerView.Adapter>> 4) & 0x0F, 16);
+ buffer[1] = Character.forDigit(bytes[i] & 0x0F, 16);
+ System.out.println(buffer);
+ stringBuilder.append(buffer);
+ }
+
+ return stringBuilder.toString();
+ }
+
+}
diff --git a/app/src/main/res/layout/fragment_crediter.xml b/app/src/main/res/layout/fragment_crediter.xml
index 4cde597..e46ea66 100644
--- a/app/src/main/res/layout/fragment_crediter.xml
+++ b/app/src/main/res/layout/fragment_crediter.xml
@@ -5,7 +5,7 @@
tools:context="net.plil.clubinfo.etunicorn.app.Crediter">
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_event_list.xml b/app/src/main/res/layout/fragment_event_list.xml
new file mode 100644
index 0000000..8de1445
--- /dev/null
+++ b/app/src/main/res/layout/fragment_event_list.xml
@@ -0,0 +1,13 @@
+
+
diff --git a/app/src/main/res/layout/fragment_paiment_event.xml b/app/src/main/res/layout/fragment_paiment_event.xml
new file mode 100644
index 0000000..9777550
--- /dev/null
+++ b/app/src/main/res/layout/fragment_paiment_event.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c84d398..25a0076 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -28,4 +28,6 @@
Delete refused
Modify done
Modify refused
+ Event
+ Event payment
--
libgit2 0.21.2