Commit 4443b63a authored by Muhammad Suryono's avatar Muhammad Suryono

fix history transaction

parent ba7b49d6
<component name="ProjectCodeStyleConfiguration"> <component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173"> <code_scheme name="Project" version="173">
<DBN-PSQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false" />
</DBN-PSQL>
<DBN-SQL>
<case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false">
<option name="STATEMENT_SPACING" value="one_line" />
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
</formatting-settings>
</DBN-SQL>
<DBN-PSQL> <DBN-PSQL>
<case-options enabled="true"> <case-options enabled="true">
<option name="KEYWORD_CASE" value="lower" /> <option name="KEYWORD_CASE" value="lower" />
......
...@@ -11,7 +11,6 @@ import android.view.View; ...@@ -11,7 +11,6 @@ import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.ListView;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
...@@ -27,8 +26,6 @@ import com.yono.messeripos.models.MainViewModelsCart; ...@@ -27,8 +26,6 @@ import com.yono.messeripos.models.MainViewModelsCart;
import com.yono.messeripos.models.ProductCartModels; import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.response.OrdersResponse; import com.yono.messeripos.response.OrdersResponse;
import com.google.android.material.snackbar.Snackbar;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
......
package com.yono.messeripos; package com.yono.messeripos;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import com.google.android.material.appbar.MaterialToolbar;
import com.yono.messeripos.adapter.TransactionAdapter;
import com.yono.messeripos.models.MainViewModels;
import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.response.DataResponse;
import com.yono.messeripos.utils.Utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class HistoryActivity extends AppCompatActivity { public class HistoryActivity extends AppCompatActivity {
TransactionAdapter transactionAdapter;
PaymentsModels paymentsModels;
MainViewModels mainViewModels;
RecyclerView recyclerView;
Utils utils = new Utils();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history); setContentView(R.layout.activity_history);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
MaterialToolbar toolbars = findViewById(R.id.cAppBar);
recyclerView = findViewById(R.id.rvHistory);
recyclerView.addItemDecoration(utils.dividerItemDecoration(HistoryActivity.this));
transactionAdapter = new TransactionAdapter();
mainViewModels = new ViewModelProvider(this).get(MainViewModels.class);
setSupportActionBar(toolbars);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("All Transaction");
toolbars.setNavigationOnClickListener(view -> onBackPressed());
mainViewModels.getAllTransactions().observe(HistoryActivity.this,
new Observer<DataResponse<List<PaymentsModels>>>() {
@Override
public void onChanged(DataResponse<List<PaymentsModels>> listDataResponse) {
ArrayList<PaymentsModels> newData = new ArrayList<>();
newData.addAll(listDataResponse.getData());
transactionAdapter.setTransactionAdapter(HistoryActivity.this, newData);
/*
* SET RECYCLE VIEW MANAGER DISINI
* GUNAKAN LINEARLAYOUT MANAGER VERTICAL UNTUK SETTING LAYOUT MANAGER
*
* SET RECYCLEVIEW ADAPTER DENGAN TRANSACTION ADAPTER
*
* UNTUK BISA CLICK CARD VIEW NYA
* PANGGIL ADAPTERNYA KEMUDIAN .setList.....
* SILAHKAN PINDAH KE ACTIVITY SELANJUTNYA PADA ON.....
* */
}
});
} }
} }
\ No newline at end of file
...@@ -135,10 +135,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -135,10 +135,7 @@ public class MainActivity extends AppCompatActivity {
}else if (id == R.id.create) { }else if (id == R.id.create) {
startActivity(new Intent(getApplicationContext(), FormProductActivity.class)); startActivity(new Intent(getApplicationContext(), FormProductActivity.class));
}else if (id == R.id.allTransaction){ }else if (id == R.id.allTransaction){
Log.i("get transaction main", "onMenuItemClick: "+utils.convertGson(mainViewModels.getAllTransactions().getValue().getData())); startActivity(new Intent(getApplicationContext(), HistoryActivity.class));
List<PaymentsModels> data = mainViewModels.getAllTransactions().getValue().getData();
ArrayList<PaymentsModels> newData = new ArrayList<>();
newData.addAll(data);
} }
return true; return true;
} }
......
package com.yono.messeripos.adapter; package com.yono.messeripos.adapter;
import android.content.Context; import android.content.Context;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.yono.messeripos.R;
import com.yono.messeripos.databinding.ItemHistoryBinding;
import com.yono.messeripos.models.PaymentsModels; import com.yono.messeripos.models.PaymentsModels;
import com.yono.messeripos.models.ProductCartModels;
import com.yono.messeripos.utils.Utils; import com.yono.messeripos.utils.Utils;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -18,6 +25,16 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter. ...@@ -18,6 +25,16 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
Context context; Context context;
Utils utils = new Utils(); Utils utils = new Utils();
public interface TransactionListener {
void onShowDetail(PaymentsModels paymentsModels);
}
private TransactionListener listener;
public void setListener(TransactionListener listener) {
this.listener = listener;
}
public void setTransactionAdapter(Context context, ArrayList<PaymentsModels> paymentsModels){ public void setTransactionAdapter(Context context, ArrayList<PaymentsModels> paymentsModels){
this.paymentsModels = paymentsModels; this.paymentsModels = paymentsModels;
this.context = context; this.context = context;
...@@ -27,22 +44,38 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter. ...@@ -27,22 +44,38 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
@NonNull @NonNull
@Override @Override
public TransactionAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public TransactionAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null; ItemHistoryBinding itemHistoryBinding = DataBindingUtil.inflate(
LayoutInflater.from(parent.getContext()),
R.layout.item_history,
parent,
false
);
return new MyViewHolder(itemHistoryBinding);
} }
@RequiresApi(api = Build.VERSION_CODES.O)
@Override @Override
public void onBindViewHolder(@NonNull TransactionAdapter.MyViewHolder holder, int position) { public void onBindViewHolder(@NonNull TransactionAdapter.MyViewHolder holder, int position) {
holder.binData(paymentsModels.get(position));
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return 0; return paymentsModels.size();
} }
public class MyViewHolder extends RecyclerView.ViewHolder { public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(@NonNull View itemView) { ItemHistoryBinding itemHistoryBinding;
super(itemView); public MyViewHolder(@NonNull ItemHistoryBinding itemView) {
super(itemView.getRoot());
this.itemHistoryBinding = itemView;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void binData(PaymentsModels paymentsModels){
itemHistoryBinding.setTransaction(paymentsModels);
itemHistoryBinding.setDate(utils.convertDate(paymentsModels.getUpdatedAt()));
itemHistoryBinding.cvHistory.setOnClickListener(view -> listener.onShowDetail(paymentsModels));
} }
} }
} }
package com.yono.messeripos.utils; package com.yono.messeripos.utils;
import android.content.Context;
import android.os.Build;
import androidx.annotation.RequiresApi;
import androidx.recyclerview.widget.DividerItemDecoration;
import com.google.gson.Gson; import com.google.gson.Gson;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.Date;
import java.util.Locale;
public class Utils { public class Utils {
public String convertPrice(String mataUang, int nilai ){ public String convertPrice(String mataUang, int nilai ){
...@@ -43,4 +53,24 @@ public class Utils { ...@@ -43,4 +53,24 @@ public class Utils {
String js = new Gson().toJson(object); String js = new Gson().toJson(object);
return js; return js;
} }
public DividerItemDecoration dividerItemDecoration(Context context){
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL);
return dividerItemDecoration;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public String convertDate(String date){
DateTimeFormatter dateTimeFormatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
.withZone(ZoneId.of("UTC"));
LocalDateTime localDateTime = LocalDateTime
.parse(date, dateTimeFormatter);
DateTimeFormatter localFormatter = DateTimeFormatter
.ofPattern("EEEE, dd MM yyyy", new Locale("id", "ID"));
String localDate = localDateTime.format(localFormatter);
return localDate;
}
} }
...@@ -4,12 +4,17 @@ ...@@ -4,12 +4,17 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<variable <variable
name="carts" name="transaction"
type="com.yono.messeripos.models.PaymentsModels" /> type="com.yono.messeripos.models.PaymentsModels" />
<variable
name="date"
type="String" />
</data> </data>
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:id="@+id/cvHistory"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:ignore="MissingConstraints"> tools:ignore="MissingConstraints">
...@@ -26,8 +31,11 @@ ...@@ -26,8 +31,11 @@
android:fontFamily="@font/roboto" android:fontFamily="@font/roboto"
android:textSize="24sp" android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textAllCaps="true"
tools:text="@string/hint_pay" tools:text="@string/hint_pay"
android:text="@{}" android:text="@{transaction.paymentType}"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
...@@ -37,7 +45,7 @@ ...@@ -37,7 +45,7 @@
android:fontFamily="@font/roboto" android:fontFamily="@font/roboto"
android:textSize="16sp" android:textSize="16sp"
tools:text="@tools:sample/date/ddmmyy" tools:text="@tools:sample/date/ddmmyy"
android:text="@{}" android:text="@{date}"
app:layout_constraintStart_toStartOf="@id/tvPay" app:layout_constraintStart_toStartOf="@id/tvPay"
app:layout_constraintTop_toBottomOf="@+id/tvPay" /> app:layout_constraintTop_toBottomOf="@+id/tvPay" />
...@@ -47,7 +55,7 @@ ...@@ -47,7 +55,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/roboto" android:fontFamily="@font/roboto"
android:textSize="16sp" android:textSize="16sp"
android:text="@{}" android:text="@{transaction.orderId}"
tools:text="#6821739123" tools:text="#6821739123"
app:layout_constraintStart_toStartOf="@id/tvDate" app:layout_constraintStart_toStartOf="@id/tvDate"
app:layout_constraintTop_toBottomOf="@+id/tvDate" /> app:layout_constraintTop_toBottomOf="@+id/tvDate" />
...@@ -57,8 +65,8 @@ ...@@ -57,8 +65,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="84dp" android:layout_marginBottom="84dp"
android:backgroundTint="#000" android:backgroundTint="#8555DA"
android:text="@{}" android:text="@{transaction.transactionStatus}"
tools:text="@tools:sample/first_names" tools:text="@tools:sample/first_names"
android:textColor="#fff" android:textColor="#fff"
android:background="#C60000" android:background="#C60000"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment