diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 74a7bb1..010c3e1 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b5c41ae..d1b92eb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -41,7 +41,8 @@
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/monnethic/mobile/database/Transaction.java b/app/src/main/java/monnethic/mobile/database/Transaction.java
index 614e124..82cec14 100644
--- a/app/src/main/java/monnethic/mobile/database/Transaction.java
+++ b/app/src/main/java/monnethic/mobile/database/Transaction.java
@@ -10,6 +10,10 @@ public class Transaction {
private String transactionUnit;
//Constructors
+ public Transaction(){
+
+ }
+
public Transaction(String transactionFrom, String transactionTo, String transactionHash, Double transactionAmount, String transactionUnit) {
this.transactionFrom = transactionFrom;
this.transactionTo = transactionTo;
diff --git a/app/src/main/java/monnethic/mobile/history/HistoryActivity.java b/app/src/main/java/monnethic/mobile/history/HistoryActivity.java
new file mode 100644
index 0000000..f6fd364
--- /dev/null
+++ b/app/src/main/java/monnethic/mobile/history/HistoryActivity.java
@@ -0,0 +1,202 @@
+package monnethic.mobile.history;
+
+import android.app.DatePickerDialog;
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CompoundButton;
+import android.widget.DatePicker;
+import android.widget.EditText;
+import android.widget.ListView;
+import android.widget.Spinner;
+import android.widget.Switch;
+import android.widget.Toast;
+import com.example.monnthic.monnethicmobile.R;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
+import monnethic.mobile.database.Transaction;
+import monnethic.mobile.restApi.Config;
+import monnethic.mobile.restApi.TransactionApiHandler;
+import monnethic.mobile.transaction.TransactionAdapter;
+
+public class HistoryActivity extends AppCompatActivity {
+ private String wallet_hash;
+ private String user_hash;
+ private String user_password;
+ private String session_id;
+
+ final Calendar calendar1 = Calendar.getInstance();
+ final Calendar calendar2 = Calendar.getInstance();
+ private Button btnSearchTransactions;
+ private EditText inputSize;
+ private EditText fromDate;
+ private EditText toDate;
+ private Spinner spinner;
+ private Switch aSwitch;
+ private ListView listView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_history);
+
+ getIntentValue();
+ initView();
+ }
+
+ private void getIntentValue(){
+ Intent intent = getIntent();
+ user_hash = intent.getStringExtra("USER_HASH");
+ user_password = intent.getStringExtra("USER_PWD");
+ session_id = intent.getStringExtra("SESSION_ID");
+ wallet_hash = intent.getStringExtra("WALLET_HASH");
+ }
+
+ private void initView(){
+ dateInit();
+ buttonInit();
+ switchInit();
+ spinnerInit();
+ listViewHandler();
+ inputSize = findViewById(R.id.inputSize);
+ }
+
+ public void dateInit(){
+ DatePickerDialog.OnDateSetListener fromDatePicker = new DatePickerDialog.OnDateSetListener() {
+ @Override
+ public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
+ calendar1.set(Calendar.YEAR, year);
+ calendar1.set(Calendar.MONTH, monthOfYear);
+ calendar1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
+ updateLabel(0);
+ }
+ };
+ fromDate = findViewById(R.id.fromDate);
+ fromDate.setEnabled(false);
+ fromDate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new DatePickerDialog(HistoryActivity.this, fromDatePicker, calendar1.get(Calendar.YEAR),
+ calendar1.get(Calendar.MONTH), calendar1.get(Calendar.DAY_OF_MONTH)).show();
+ //Toast.makeText(HistoryActivity.this,"Clicked fromDate",Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ DatePickerDialog.OnDateSetListener toDatePicker = new DatePickerDialog.OnDateSetListener() {
+ @Override
+ public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
+ calendar2.set(Calendar.YEAR, year);
+ calendar2.set(Calendar.MONTH, monthOfYear);
+ calendar2.set(Calendar.DAY_OF_MONTH, dayOfMonth);
+ updateLabel(1);
+ }
+ };
+ toDate = findViewById(R.id.toDate);
+ toDate.setEnabled(false);
+ toDate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ new DatePickerDialog(HistoryActivity.this, toDatePicker, calendar2.get(Calendar.YEAR),
+ calendar2.get(Calendar.MONTH), calendar2.get(Calendar.DAY_OF_MONTH)).show();
+ }
+ });
+ }
+
+ public void updateLabel(int idDate){
+ String myFormat = "dd-MM-yyyy";
+ SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.FRANCE);
+ if(idDate==0){
+ fromDate.setText(sdf.format(calendar1.getTime()));
+ }else {
+ toDate.setText(sdf.format(calendar2.getTime()));
+ }
+ }
+
+ public void buttonInit(){
+ btnSearchTransactions = findViewById(R.id.buttonSearchTransaction);
+ btnSearchTransactions.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Toast.makeText(HistoryActivity.this,"Spinner :"+String.valueOf(spinner.getSelectedItem()),Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ }
+
+ public void switchInit(){
+ aSwitch = findViewById(R.id.switchDate);
+ aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ if(aSwitch.isChecked()){
+ fromDate.setEnabled(true);
+ toDate.setEnabled(true);
+ }else{
+ fromDate.setEnabled(false);
+ toDate.setEnabled(false);
+ }
+ }
+ });
+
+ }
+
+ public void spinnerInit(){
+ spinner = findViewById(R.id.spinner);
+
+ List listOptions = new ArrayList<>();
+ listOptions.add("All");
+ listOptions.add("Received");
+ listOptions.add("Sent");
+ ArrayAdapter adapterOptions = new ArrayAdapter<>(this,android.R.layout.simple_spinner_dropdown_item,listOptions);
+ adapterOptions.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ spinner.setAdapter(adapterOptions);
+ }
+
+ public void listViewHandler(){
+ listView = findViewById(R.id.listViewTransactions);
+ ArrayList transactions = new ArrayList<>();
+ try{
+ transactions = new getTransactionTask().execute(Config.TRANSACTION_LATEST,wallet_hash).get();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ TransactionAdapter adapter = new TransactionAdapter(this,transactions,wallet_hash);
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> adapterView, View view, int i, long l) {
+ Transaction t = (Transaction) listView.getItemAtPosition(i);
+ Toast.makeText(HistoryActivity.this,"TxID: "+t.getTransactionHash(),Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ }
+
+ private class getTransactionTask extends AsyncTask,ArrayList> {
+
+ @Override
+ protected ArrayList doInBackground(String... strings) {
+ ArrayList transactionsList = new ArrayList<>();
+ try{
+ TransactionApiHandler transactionApiHandler = new TransactionApiHandler();
+ transactionsList = transactionApiHandler.getTransactions(strings[0],strings[1]);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return transactionsList;
+ }
+ }
+
+
+
+}
diff --git a/app/src/main/java/monnethic/mobile/restApi/Config.java b/app/src/main/java/monnethic/mobile/restApi/Config.java
index c699697..0b24fc8 100644
--- a/app/src/main/java/monnethic/mobile/restApi/Config.java
+++ b/app/src/main/java/monnethic/mobile/restApi/Config.java
@@ -25,7 +25,7 @@ public class Config {
//TRANSACTION
static public String TRANSACTION_SEND = BASE_URL_TRANSACTION+"send";
static public String TRANSACTION_GET = BASE_URL_TRANSACTION+"get";
- static public String TRANSACTION_LATEST = BASE_URL_TRANSACTION+"getLatest";
+ static public String TRANSACTION_LATEST = BASE_URL_TRANSACTION+"/get/latest";
static public String TRANSACTION_ALL = BASE_URL_TRANSACTION+"getAll";
static public String TRANSACTION_SENT = BASE_URL_TRANSACTION+"sent";
static public String TRANSACTION_RECEIVED = BASE_URL_TRANSACTION+"received";
diff --git a/app/src/main/java/monnethic/mobile/restApi/HttpCallHandler.java b/app/src/main/java/monnethic/mobile/restApi/HttpCallHandler.java
index 86e53df..3aca8bb 100644
--- a/app/src/main/java/monnethic/mobile/restApi/HttpCallHandler.java
+++ b/app/src/main/java/monnethic/mobile/restApi/HttpCallHandler.java
@@ -41,6 +41,8 @@ public class HttpCallHandler {
}
+
+
public String postHttp(URL url, Map params) throws Exception {
String returnValue=null;
HttpURLConnection urlConnection = null;
diff --git a/app/src/main/java/monnethic/mobile/restApi/TransactionApiHandler.java b/app/src/main/java/monnethic/mobile/restApi/TransactionApiHandler.java
index 5228e89..30f9481 100644
--- a/app/src/main/java/monnethic/mobile/restApi/TransactionApiHandler.java
+++ b/app/src/main/java/monnethic/mobile/restApi/TransactionApiHandler.java
@@ -1,9 +1,13 @@
package monnethic.mobile.restApi;
+import org.json.JSONArray;
import org.json.JSONObject;
import java.net.URL;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
+
+import monnethic.mobile.database.Transaction;
import monnethic.mobile.transaction.SendingTransaction;
public class TransactionApiHandler {
@@ -27,4 +31,35 @@ public class TransactionApiHandler {
}
return "";
}
+
+ public ArrayList getTransactions(String url, String wallet_hash){
+ ArrayList transactionsList = new ArrayList<>();
+ HttpCallHandler httpCallHandler = new HttpCallHandler();
+ try{
+ url = url+"?wallet_hash="+wallet_hash;
+
+
+
+ String response = httpCallHandler.getHttp(new URL(url));
+ JSONArray jsonArray = new JSONArray(response);
+
+ for(int i=0; i {
+ private String wallet_hash;
+
+ public TransactionAdapter(Context context, ArrayList transactions, String wallet_hash){
+ super(context,0,transactions);
+ this.wallet_hash = wallet_hash;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent){
+ Transaction transaction = getItem(position);
+
+ if(convertView == null){
+ convertView = LayoutInflater.from(getContext()).inflate(R.layout.transaction_view_template, parent, false);
+ }
+
+ TextView txID = convertView.findViewById(R.id.displayTxId);
+ TextView date = convertView.findViewById(R.id.displayTxDate);
+ TextView type = convertView.findViewById(R.id.displayTxType);
+ TextView amount = convertView.findViewById(R.id.displayTxAmount);
+
+
+ ViewGroup.LayoutParams params = convertView.getLayoutParams();
+ params.height = 250;
+ convertView.setLayoutParams(params);
+
+ String myFormat = "dd-MM-yyyy HH:mm:ss";
+ SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.FRANCE);
+ Date dateTransaction = new Date(transaction.getTransactionDate());
+
+ String typeOfTransaction;
+ if(transaction.getTransactionFrom().equals(wallet_hash)){
+ typeOfTransaction="Sent";
+ }else{
+ typeOfTransaction="Received";
+ }
+
+ txID.setText(transaction.getTransactionHash());
+ date.setText(sdf.format(dateTransaction));
+ type.setText(typeOfTransaction);
+ amount.setText(String.valueOf(transaction.getTransactionAmount()));
+
+ return convertView;
+ }
+
+}
diff --git a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java
index c43af66..10e0b4a 100644
--- a/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java
+++ b/app/src/main/java/monnethic/mobile/user/UserAccountActivity.java
@@ -10,6 +10,7 @@ import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
+import monnethic.mobile.history.HistoryActivity;
import monnethic.mobile.restApi.SessionApiHandler;
import monnethic.mobile.restApi.WalletApiHandler;
import monnethic.mobile.transaction.MakePayementActivity;
@@ -32,6 +33,7 @@ public class UserAccountActivity extends AppCompatActivity {
Button buttonReceive = findViewById(R.id.buttonReceive);
Button buttonSettings = findViewById(R.id.buttonSettings);
Button buttonRefresh = findViewById(R.id.buttonRefreshBalance);
+ Button buttonHistory = findViewById(R.id.goToHistory);
Intent intent = getIntent();
user_hash = intent.getStringExtra("USER_HASH");
@@ -69,6 +71,12 @@ public class UserAccountActivity extends AppCompatActivity {
new GetUserBalanceTask().execute(wallet_hash);
}
});
+ buttonHistory.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ history();
+ }
+ });
String[] params = {wallet_hash};
new GetUserBalanceTask().execute(params);
@@ -94,6 +102,15 @@ public class UserAccountActivity extends AppCompatActivity {
Toast.makeText(this, "Coming soon", Toast.LENGTH_SHORT).show();
}
+ public void history(){
+ Intent historyIntent = new Intent(UserAccountActivity.this, HistoryActivity.class);
+ historyIntent.putExtra("USER_HASH",user_hash);
+ historyIntent.putExtra("USER_PWD",user_password);
+ historyIntent.putExtra("WALLET_HASH",wallet_hash);
+ historyIntent.putExtra("SESSION_ID",session_id);
+ UserAccountActivity.this.startActivity(historyIntent);
+ }
+
public class GetUserBalanceTask extends AsyncTask
{
@Override
diff --git a/app/src/main/res/layout/activity_history.xml b/app/src/main/res/layout/activity_history.xml
new file mode 100644
index 0000000..d022e70
--- /dev/null
+++ b/app/src/main/res/layout/activity_history.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_user_account.xml b/app/src/main/res/layout/activity_user_account.xml
index 5608201..253f394 100644
--- a/app/src/main/res/layout/activity_user_account.xml
+++ b/app/src/main/res/layout/activity_user_account.xml
@@ -25,27 +25,27 @@
android:id="@+id/buttonPayement"
android:layout_width="200dp"
android:layout_height="45dp"
- android:layout_alignParentBottom="true"
+ android:layout_above="@+id/buttonReceive"
android:layout_centerHorizontal="true"
- android:layout_marginBottom="250dp"
+ android:layout_marginBottom="20dp"
android:text="Payement" />
+
+
diff --git a/app/src/main/res/layout/transaction_view_template.xml b/app/src/main/res/layout/transaction_view_template.xml
new file mode 100644
index 0000000..0edde57
--- /dev/null
+++ b/app/src/main/res/layout/transaction_view_template.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file