Commit ab90d286 authored by Muhammad Suryono's avatar Muhammad Suryono

Update payment history

parent a18435d0
......@@ -33,11 +33,13 @@
android:theme="@style/AppTheme.appbar" />
<activity
android:name=".PaymentActivity"
android:theme="@style/AppTheme.appbar" />
android:theme="@style/AppTheme.appbar" >
</activity>
<activity
android:name=".CartActivity"
android:theme="@style/AppTheme.appbar" />
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......
......@@ -5,13 +5,39 @@ import android.os.PersistableBundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
public class TransactionActivity extends AppCompatActivity {
import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.tabs.TabLayout;
import com.yono.messeripos.adapter.TabAdapterTransaction;
import com.yono.messeripos.transactiontab.TransactionSuccess;
import java.util.Objects;
public class TransactionActivity extends AppCompatActivity {
private TabAdapterTransaction adapter;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_transaction);
viewPager = findViewById(R.id.viewPager);
tabLayout = findViewById(R.id.tabLayout);
MaterialToolbar toolbars = findViewById(R.id.toolbar);
setSupportActionBar(toolbars);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("All Transaction");
toolbars.setNavigationOnClickListener(view -> onBackPressed());
adapter = new TabAdapterTransaction(getSupportFragmentManager());
adapter.addFragment(new TransactionSuccess(), "Transaction Success");
adapter.addFragment(new TransactionSuccess(), "Transaction Pending");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
}
......@@ -81,6 +81,7 @@ public class TransactionAdapter extends RecyclerView.Adapter<TransactionAdapter.
itemHistoryBinding.setTransaction(paymentsModels);
itemHistoryBinding.setDate(utils.convertDate(paymentsModels.getUpdatedAt()));
itemHistoryBinding.cvHistory.setOnClickListener(view -> listener.onShowDetail(paymentsModels));
itemHistoryBinding.setGrossAmount(utils.convertPrice("Rp. ", paymentsModels.getGrossAmount()));
if (paymentsModels.getTransactionStatus().equals("Settlement".toLowerCase())) {
......
package com.yono.messeripos.daos;
import androidx.lifecycle.LiveData;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import com.yono.messeripos.models.PaymentPending;
import com.yono.messeripos.models.ProductCartModels;
import java.util.List;
public interface PaymentPendingDaos {
@Query("SELECT * FROM payment_pending ORDER BY id DESC")
public LiveData<List<PaymentPending>> getAll();
@Query("SELECT * FROM payment_pending WHERE id_orders = :idOrders")
public LiveData<List<PaymentPending>> getPaymentByIdOrder(String idOrders);
@Insert(onConflict = OnConflictStrategy.IGNORE)
public void insertPaymentPending(PaymentPending paymentPending);
@Query("UPDATE payment_pending SET id_nfc = :idNfc WHERE id = :id")
public void updateNfc (String idNfc, long id);
}
......@@ -11,6 +11,7 @@ import androidx.room.RoomDatabase;
import androidx.sqlite.db.SupportSQLiteOpenHelper;
import com.yono.messeripos.daos.CartDaos;
import com.yono.messeripos.daos.PaymentPendingDaos;
import com.yono.messeripos.models.ProductCartModels;
import java.util.concurrent.ExecutorService;
......@@ -20,6 +21,7 @@ import java.util.concurrent.Executors;
public abstract class LocalDatabase extends RoomDatabase {
public abstract CartDaos cartDaos();
public abstract PaymentPendingDaos paymentPendingDaos();
private static volatile LocalDatabase INSTANCE;
private static final int NUMBER_OF_THREADS = 407;
......
package com.yono.messeripos.models;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import com.google.gson.annotations.SerializedName;
@Entity(tableName = "payment_pending")
public class PaymentPending implements Parcelable {
@PrimaryKey(autoGenerate = true)
@SerializedName("id")
private long id;
@SerializedName("id_orders")
private String id_orders;
@SerializedName("transaction_time")
private String transaction_time;
@SerializedName("transaction_status")
private String transaction_status;
@SerializedName("payment_methode")
private String payment_methode;
@SerializedName("id_nfc")
private String id_nfc;
@SerializedName("gross_amount")
private double gross_amount;
public PaymentPending() {
}
public PaymentPending(long id,
String id_orders,
String transaction_time,
String transaction_status,
String payment_methode,
String id_nfc,
double gross_amount) {
this.id = id;
this.id_orders = id_orders;
this.transaction_time = transaction_time;
this.transaction_status = transaction_status;
this.payment_methode = payment_methode;
this.id_nfc = id_nfc;
this.gross_amount = gross_amount;
}
protected PaymentPending(Parcel in) {
id = in.readLong();
id_orders = in.readString();
transaction_time = in.readString();
transaction_status = in.readString();
payment_methode = in.readString();
id_nfc = in.readString();
gross_amount = in.readInt();
}
public static final Creator<PaymentPending> CREATOR = new Creator<PaymentPending>() {
@Override
public PaymentPending createFromParcel(Parcel in) {
return new PaymentPending(in);
}
@Override
public PaymentPending[] newArray(int size) {
return new PaymentPending[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(id);
parcel.writeString(id_orders);
parcel.writeString(transaction_time);
parcel.writeString(transaction_status);
parcel.writeString(payment_methode);
parcel.writeString(id_nfc);
parcel.writeDouble(gross_amount);
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getId_orders() {
return id_orders;
}
public void setId_orders(String id_orders) {
this.id_orders = id_orders;
}
public String getTransaction_time() {
return transaction_time;
}
public void setTransaction_time(String transaction_time) {
this.transaction_time = transaction_time;
}
public String getTransaction_status() {
return transaction_status;
}
public void setTransaction_status(String transaction_status) {
this.transaction_status = transaction_status;
}
public String getPayment_methode() {
return payment_methode;
}
public void setPayment_methode(String payment_methode) {
this.payment_methode = payment_methode;
}
public String getId_nfc() {
return id_nfc;
}
public void setId_nfc(String id_nfc) {
this.id_nfc = id_nfc;
}
public double getGross_amount() {
return gross_amount;
}
public void setGross_amount(double gross_amount) {
this.gross_amount = gross_amount;
}
}
package com.yono.messeripos.repositories;
import android.app.Application;
import androidx.lifecycle.LiveData;
import com.yono.messeripos.daos.PaymentPendingDaos;
import com.yono.messeripos.database.LocalDatabase;
import com.yono.messeripos.models.PaymentPending;
import com.yono.messeripos.models.ProductCartModels;
import java.util.List;
public class PaymentPendingRepositories {
private PaymentPendingDaos daos;
private LiveData<List<PaymentPending>> paymentPending;
public PaymentPendingRepositories(Application application) {
LocalDatabase db = LocalDatabase.geDatabase(application);
daos = db.paymentPendingDaos();
paymentPending = daos.getAll();
}
public void insert(PaymentPending paymentPending){
LocalDatabase.databaseWriterExecutor.execute(() -> daos.insertPaymentPending(paymentPending));
}
// public void delete(ProductCartModels productCartModels){
// LocalDatabase.databaseWriterExecutor.execute(() -> daos.del(productCartModels));
// }
public void updateIdNfc(String idNfc, long id){
LocalDatabase.databaseWriterExecutor.execute(() ->daos.updateNfc(idNfc, id));
}
public LiveData<List<PaymentPending>> getPaymentByOrderId(String idOrders){
return daos.getPaymentByIdOrder(idOrders);
}
}
......@@ -26,6 +26,8 @@ import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Utils {
......@@ -105,8 +107,8 @@ public class Utils {
return encodeImage;
}
public void toastMessage(Context context, String message){
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
public Toast toastMessage(Context context, String message){
return Toast.makeText(context, message, Toast.LENGTH_LONG);
}
public String convertImageBase64Resource(Resources resource, int id){
......@@ -169,4 +171,18 @@ public class Utils {
return snackbar;
}
public boolean isValidEmail(String email) {
String regex = "^(.+)@(.+)$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
public boolean isValidPassword(String pass){
String regex = "^(?=.*[A-Za-z-0-9])(?=.*\\d)[A-Za-z-0-9\\d]{8,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(pass);
return matcher.matches();
}
}
......@@ -6,9 +6,9 @@
android:layout_height="match_parent"
tools:context=".HistoryActivity">
<include
android:id="@+id/cAppBar"
layout="@layout/app_bar" />
<!-- <include-->
<!-- android:id="@+id/cAppBar"-->
<!-- layout="@layout/app_bar" />-->
<ProgressBar
android:id="@+id/loading"
......@@ -19,9 +19,8 @@
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentBottom="true"
android:layout_below="@+id/cAppBar">
android:layout_height="match_parent"
android:layout_alignParentBottom="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistory"
......
......@@ -14,6 +14,7 @@
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorGreen"
app:tabIndicatorHeight="4dp"
app:tabTextColor="@color/colorWhite"
app:tabBackground="@drawable/gradient"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:tabMode="fixed"/>
......
......@@ -15,12 +15,19 @@
<variable
name="transactionStatus"
type="String" />
<variable
name="grossAmount"
type="String" />
</data>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="10dp"
android:layout_margin="10dp"
app:cardElevation="2dp"
tools:ignore="MissingConstraints">
<androidx.constraintlayout.widget.ConstraintLayout
......@@ -59,7 +66,7 @@
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:textSize="16sp"
android:text="@{transaction.orderId}"
android:text="@{transaction.nomorPembayaranGet}"
tools:text="#6821739123"
app:layout_constraintStart_toStartOf="@id/tvDate"
app:layout_constraintTop_toBottomOf="@+id/tvDate" />
......@@ -79,7 +86,7 @@
android:id="@+id/tvVA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{transaction.nomorPembayaranGet}"
android:text="@{grossAmount}"
android:textAllCaps="true"
android:textColor="#000"
android:textStyle="bold"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="transaction"
type="com.yono.messeripos.models.PaymentsModels" />
<variable
name="date"
type="String" />
<variable
name="transactionStatus"
type="String" />
<variable
name="grossAmount"
type="String" />
</data>
<com.google.android.material.card.MaterialCardView
android:id="@+id/cvHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="10dp"
android:layout_margin="10dp"
app:cardElevation="2dp"
tools:ignore="MissingConstraints">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvPay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textAllCaps="true"
tools:text="@string/hint_pay"
android:text="@{transaction.paymentType}"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:textSize="16sp"
tools:text="@tools:sample/date/ddmmyy"
android:text="@{date}"
app:layout_constraintStart_toStartOf="@id/tvPay"
app:layout_constraintTop_toBottomOf="@+id/tvPay" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:textSize="16sp"
android:text="@{transaction.nomorPembayaranGet}"
tools:text="#6821739123"
app:layout_constraintStart_toStartOf="@id/tvDate"
app:layout_constraintTop_toBottomOf="@+id/tvDate" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tvVA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{grossAmount}"
android:textAllCaps="true"
android:textColor="#000"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
tools:text="@tools:sample/first_names" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
\ No newline at end of file
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