Commit bc11d54b authored by Ahmad Abi Mulya's avatar Ahmad Abi Mulya
parents c9f33120 59062a52
...@@ -20,11 +20,14 @@ ...@@ -20,11 +20,14 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme2"> android:theme="@style/AppTheme2">
<activity android:name=".activities.OrderDetailActivity"></activity>
<receiver android:name=".activities.InetChecker"> <receiver android:name=".activities.InetChecker">
<intent-filter> <intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter> </intent-filter>
</receiver> </receiver>
<activity android:name=".activities.OrderActivity" /> <activity android:name=".activities.OrderActivity" />
<activity <activity
android:name=".activities.SkActivity" android:name=".activities.SkActivity"
......
...@@ -2,7 +2,6 @@ package com.example.yourcashiertest.activities; ...@@ -2,7 +2,6 @@ package com.example.yourcashiertest.activities;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
...@@ -10,7 +9,6 @@ import android.annotation.SuppressLint; ...@@ -10,7 +9,6 @@ import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
...@@ -19,10 +17,12 @@ import com.example.yourcashiertest.databases.DBHelper; ...@@ -19,10 +17,12 @@ import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityCartBinding; import com.example.yourcashiertest.databinding.ActivityCartBinding;
import com.example.yourcashiertest.databinding.CartItemBinding; import com.example.yourcashiertest.databinding.CartItemBinding;
import com.example.yourcashiertest.entities.Cart; import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.utils.Convert; import com.example.yourcashiertest.utils.Convert;
import com.example.yourcashiertest.viewmodels.CartViewModel; import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.OrderDetailVM;
import com.example.yourcashiertest.viewmodels.ProductViewModel; import com.example.yourcashiertest.viewmodels.ProductViewModel;
import com.example.yourcashiertest.viewmodels.TransaksiViewModel; import com.example.yourcashiertest.viewmodels.TransaksiViewModel;
...@@ -40,6 +40,7 @@ public class CartActivity extends AppCompatActivity { ...@@ -40,6 +40,7 @@ public class CartActivity extends AppCompatActivity {
ProductViewModel productViewModel; ProductViewModel productViewModel;
TransaksiViewModel transaksiViewModel; TransaksiViewModel transaksiViewModel;
CartViewModel cartViewModel; CartViewModel cartViewModel;
OrderDetailVM orderDetailVM;
List<Cart> cartList = new ArrayList<>(); List<Cart> cartList = new ArrayList<>();
...@@ -56,7 +57,7 @@ public class CartActivity extends AppCompatActivity { ...@@ -56,7 +57,7 @@ public class CartActivity extends AppCompatActivity {
product = new Product(); product = new Product();
transaksiViewModel = new ViewModelProvider(this).get(TransaksiViewModel.class); transaksiViewModel = new ViewModelProvider(this).get(TransaksiViewModel.class);
orderDetailVM = new ViewModelProvider(this).get(OrderDetailVM.class);
cartViewModel = new ViewModelProvider(this).get(CartViewModel.class); cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
cartViewModel.getCarts().observe(this, carts -> { cartViewModel.getCarts().observe(this, carts -> {
adapter.setCartList(carts); adapter.setCartList(carts);
...@@ -120,16 +121,43 @@ public class CartActivity extends AppCompatActivity { ...@@ -120,16 +121,43 @@ public class CartActivity extends AppCompatActivity {
} }
public void saveTransaction(int amount) { public void saveTransaction(int amount) {
Transaksi transaksi = new Transaksi(0, ""); Transaksi transaksi = new Transaksi(0, "", "", "");
transaksi.setAmount(amount); transaksi.setAmount(amount);
transaksi.setStatus("Pending"); transaksi.setStatus("Pending");
transaksi.setPaymentType("");
transaksi.setCreatedAt(Convert.DateNow());
transaksiViewModel.insertTransaksi(transaksi); transaksiViewModel.insertTransaksi(transaksi);
getOrderList();
cartViewModel.clear(); cartViewModel.clear();
finish(); finish();
startActivity(new Intent(CartActivity.this, OrderActivity.class)); startActivity(new Intent(CartActivity.this, OrderActivity.class));
Toast.makeText(getApplicationContext(), "Please Continue Payment", Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), "Please Continue Payment", Toast.LENGTH_LONG).show();
} }
private void getOrderList() {
cartViewModel.getCarts().observe(this, this::createOrderDetail);
}
private void createOrderDetail(List<Cart> carts) {
for (int i = 0; i < carts.size(); i++){
OrderDetail orderDetail = new OrderDetail(0, 0, 0, 0);
orderDetail.setOrderId(getIdOrder());
orderDetail.setPrice(carts.get(i).getPrice());
orderDetail.setProductId(carts.get(i).getIdProduct());
orderDetail.setQty(carts.get(i).getQty());
orderDetailVM.insertOrderDetail(orderDetail);
}
}
private long getIdOrder(){
List<Transaksi> orders = DBHelper.getAllTransaksi(getApplicationContext());
Transaksi order;
if (orders.size() == 0) order = orders.get(0);
else order = orders.get(orders.size() - 1);
Log.d("OrderId", String.valueOf(order.getOrderId()));
return order.getOrderId();
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
......
...@@ -6,7 +6,6 @@ import androidx.appcompat.app.AppCompatActivity; ...@@ -6,7 +6,6 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.room.FtsOptions;
import android.Manifest; import android.Manifest;
...@@ -19,7 +18,7 @@ import android.os.Bundle; ...@@ -19,7 +18,7 @@ import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.View;
import android.util.Log; import android.util.Log;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.Toast; import android.widget.Toast;
...@@ -60,7 +59,6 @@ public class MainActivity extends AppCompatActivity { ...@@ -60,7 +59,6 @@ public class MainActivity extends AppCompatActivity {
CartViewModel cartViewModel; CartViewModel cartViewModel;
boolean added = false; boolean added = false;
@RequiresApi(api = Build.VERSION_CODES.N)
@SuppressLint("WrongConstant") @SuppressLint("WrongConstant")
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
......
...@@ -17,6 +17,7 @@ import com.example.yourcashiertest.R; ...@@ -17,6 +17,7 @@ import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.OrderAdapter; import com.example.yourcashiertest.adapters.OrderAdapter;
import com.example.yourcashiertest.databases.DBHelper; import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityOrderBinding; import com.example.yourcashiertest.databinding.ActivityOrderBinding;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.viewmodels.TransaksiViewModel; import com.example.yourcashiertest.viewmodels.TransaksiViewModel;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
...@@ -75,6 +76,12 @@ public class OrderActivity extends AppCompatActivity { ...@@ -75,6 +76,12 @@ public class OrderActivity extends AppCompatActivity {
startActivity(new Intent(OrderActivity.this, PaymentActivity.class) startActivity(new Intent(OrderActivity.this, PaymentActivity.class)
.putExtra(PaymentActivity.DATA_PENDING, transaksi)); .putExtra(PaymentActivity.DATA_PENDING, transaksi));
} }
@Override
public void onClickItem(Transaksi transaksi) {
startActivity(new Intent(OrderActivity.this, OrderDetailActivity.class)
.putExtra(OrderDetailActivity.ORDER_ID, transaksi.getOrderId()));
}
}); });
} }
......
package com.example.yourcashiertest.activities;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.os.Bundle;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.OrderDetailAdapter;
import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityOrderDetailBinding;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product;
import java.util.List;
public class OrderDetailActivity extends AppCompatActivity {
ActivityOrderDetailBinding binding;
OrderDetailAdapter adapter;
static final String ORDER_ID = "order_id";
static Product productDetail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_order_detail);
adapter = new OrderDetailAdapter();
binding.rvDetailOrder.setLayoutManager(new LinearLayoutManager(this));
binding.rvDetailOrder.setAdapter(adapter);
long orderId = getIntent().getLongExtra(ORDER_ID, 0);
List<OrderDetail> orderDetails = DBHelper.getDetailOrders(getApplicationContext(), orderId);
adapter.setOrderDetails(orderDetails);
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.example.yourcashiertest.activities; ...@@ -3,6 +3,7 @@ package com.example.yourcashiertest.activities;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
...@@ -20,12 +21,14 @@ import com.example.yourcashiertest.adapters.PaymentAdapter; ...@@ -20,12 +21,14 @@ import com.example.yourcashiertest.adapters.PaymentAdapter;
import com.example.yourcashiertest.databases.DBHelper; import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityPaymentBinding; import com.example.yourcashiertest.databinding.ActivityPaymentBinding;
import com.example.yourcashiertest.entities.Cart; import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.models.ResponsePayment; import com.example.yourcashiertest.models.ResponsePayment;
import com.example.yourcashiertest.utils.Convert; import com.example.yourcashiertest.utils.Convert;
import com.example.yourcashiertest.utils.ViewUtil; import com.example.yourcashiertest.utils.ViewUtil;
import com.example.yourcashiertest.viewmodels.CartViewModel; import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.OrderDetailVM;
import com.example.yourcashiertest.viewmodels.ProductViewModel; import com.example.yourcashiertest.viewmodels.ProductViewModel;
import com.example.yourcashiertest.viewmodels.TransaksiViewModel; import com.example.yourcashiertest.viewmodels.TransaksiViewModel;
...@@ -33,7 +36,6 @@ import java.util.ArrayList; ...@@ -33,7 +36,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Stream; import java.util.stream.Stream;
//@RequiresApi(api = Build.VERSION_CODES.N)
public class PaymentActivity extends AppCompatActivity { public class PaymentActivity extends AppCompatActivity {
ActivityPaymentBinding binding; ActivityPaymentBinding binding;
...@@ -44,6 +46,7 @@ public class PaymentActivity extends AppCompatActivity { ...@@ -44,6 +46,7 @@ public class PaymentActivity extends AppCompatActivity {
CartViewModel cartViewModel; CartViewModel cartViewModel;
ProductViewModel viewModel; ProductViewModel viewModel;
TransaksiViewModel payViewModel; TransaksiViewModel payViewModel;
OrderDetailVM orderDetailVM;
public static final String PAY_WITH = "pay_with"; public static final String PAY_WITH = "pay_with";
private ArrayList<ResponsePayment> responsePayments = new ArrayList<>(); private ArrayList<ResponsePayment> responsePayments = new ArrayList<>();
static final String DATA_PENDING = "data_pending"; static final String DATA_PENDING = "data_pending";
...@@ -58,7 +61,10 @@ public class PaymentActivity extends AppCompatActivity { ...@@ -58,7 +61,10 @@ public class PaymentActivity extends AppCompatActivity {
payViewModel = new ViewModelProvider(this).get(TransaksiViewModel.class); payViewModel = new ViewModelProvider(this).get(TransaksiViewModel.class);
cartViewModel = new ViewModelProvider(this).get(CartViewModel.class); cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
orderDetailVM = new ViewModelProvider(this).get(OrderDetailVM.class);
viewModel = new ViewModelProvider(this).get(ProductViewModel.class); viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
amount = getIntent().getIntExtra(CartActivity.PRICE, 0); amount = getIntent().getIntExtra(CartActivity.PRICE, 0);
responsePayments.add(new ResponsePayment("https://i.ibb.co/yfcFMHc/undraw-wallet-aym5.png", "Cash")); responsePayments.add(new ResponsePayment("https://i.ibb.co/yfcFMHc/undraw-wallet-aym5.png", "Cash"));
responsePayments.add(new ResponsePayment("https://i.ibb.co/qNnKh5n/undraw-Credit-card-re-blml.png", "Card")); responsePayments.add(new ResponsePayment("https://i.ibb.co/qNnKh5n/undraw-Credit-card-re-blml.png", "Card"));
...@@ -128,18 +134,31 @@ public class PaymentActivity extends AppCompatActivity { ...@@ -128,18 +134,31 @@ public class PaymentActivity extends AppCompatActivity {
} }
private void createTransaksi(int amount) { private void createTransaksi(int amount) {
Transaksi transaksi = new Transaksi(0, ""); Transaksi transaksi = new Transaksi(0, "", "", "");
transaksi.setAmount(amount); transaksi.setAmount(amount);
transaksi.setStatus("Success"); transaksi.setStatus("Success");
transaksi.setPaymentType(paymentMethod);
transaksi.setCreatedAt(Convert.DateNow());
payViewModel.insertTransaksi(transaksi); payViewModel.insertTransaksi(transaksi);
// createDetailOrder(); getOrderList();
} }
private void createDetailOrder() { private void getOrderList() {
Toast.makeText(getApplicationContext(), String.valueOf(getOrderId()), Toast.LENGTH_LONG).show(); cartViewModel.getCarts().observe(this, this::createOrderDetail);
}
private void createOrderDetail(List<Cart> carts) {
for (int i = 0; i < carts.size(); i++){
OrderDetail orderDetail = new OrderDetail(0, 0, 0, 0);
orderDetail.setOrderId(getIdOrder());
orderDetail.setPrice(carts.get(i).getPrice());
orderDetail.setProductId(carts.get(i).getIdProduct());
orderDetail.setQty(carts.get(i).getQty());
orderDetailVM.insertOrderDetail(orderDetail);
}
} }
private long getOrderId(){ private long getIdOrder(){
List<Transaksi> orders = DBHelper.getAllTransaksi(getApplicationContext()); List<Transaksi> orders = DBHelper.getAllTransaksi(getApplicationContext());
Transaksi order; Transaksi order;
if (orders.size() == 0) order = orders.get(0); if (orders.size() == 0) order = orders.get(0);
......
package com.example.yourcashiertest.adapters; package com.example.yourcashiertest.adapters;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -23,6 +22,7 @@ public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> ...@@ -23,6 +22,7 @@ public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder>
public interface TransaksiListener{ public interface TransaksiListener{
void onCancel(Transaksi transaksi); void onCancel(Transaksi transaksi);
void onContinue(Transaksi transaksi); void onContinue(Transaksi transaksi);
void onClickItem(Transaksi transaksi);
} }
private TransaksiListener listener; private TransaksiListener listener;
...@@ -78,6 +78,7 @@ public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> ...@@ -78,6 +78,7 @@ public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder>
}else binding.setVisibility(true); }else binding.setVisibility(true);
binding.btnCancel.setOnClickListener(view -> listener.onCancel(transaksi)); binding.btnCancel.setOnClickListener(view -> listener.onCancel(transaksi));
binding.btnContinue.setOnClickListener(view -> listener.onContinue(transaksi)); binding.btnContinue.setOnClickListener(view -> listener.onContinue(transaksi));
binding.getRoot().setOnClickListener(view -> listener.onClickItem(transaksi));
} }
} }
} }
package com.example.yourcashiertest.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.OrderDetailItemBinding;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.utils.Convert;
import java.util.ArrayList;
import java.util.List;
public class OrderDetailAdapter extends RecyclerView.Adapter<OrderDetailAdapter.ViewHolder> {
List<OrderDetail> orderDetails = new ArrayList<>();
private Context context;
public void setOrderDetails(List<OrderDetail> orderDetails) {
this.orderDetails = orderDetails;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
return new OrderDetailAdapter.ViewHolder(
DataBindingUtil.inflate(
LayoutInflater.from(parent.getContext()),
R.layout.order_detail_item,
parent,
false
)
);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.bindData(orderDetails.get(position));
}
@Override
public int getItemCount() {
return orderDetails.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
OrderDetailItemBinding binding;
public ViewHolder(@NonNull OrderDetailItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public void bindData(OrderDetail orderDetail){
binding.setOrderDetail(orderDetail);
Product productDetail = DBHelper.getProductById(context, (int) orderDetail.getProductId());
binding.setProductDetail(productDetail);
binding.setPrice(Convert.changeToCurrency(orderDetail.getPrice()));
}
}
}
...@@ -3,12 +3,18 @@ package com.example.yourcashiertest.daos; ...@@ -3,12 +3,18 @@ package com.example.yourcashiertest.daos;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.OnConflictStrategy; import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import com.example.yourcashiertest.entities.OrderDetail; import com.example.yourcashiertest.entities.OrderDetail;
import java.util.List;
@Dao @Dao
public interface OrderDetailDao { public interface OrderDetailDao {
@Query("SELECT * FROM OrderDetail WHERE orderId =:orderId")
List<OrderDetail> getOrderDetail(long orderId);
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
void insertOrderDetail(OrderDetail orderDetail); void insertOrderDetail(OrderDetail orderDetail);
......
...@@ -2,13 +2,12 @@ package com.example.yourcashiertest.databases; ...@@ -2,13 +2,12 @@ package com.example.yourcashiertest.databases;
import android.content.Context; import android.content.Context;
import androidx.lifecycle.LiveData;
import com.example.yourcashiertest.entities.Cart; import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.utils.Convert;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DBHelper { public class DBHelper {
...@@ -38,4 +37,11 @@ public class DBHelper { ...@@ -38,4 +37,11 @@ public class DBHelper {
list = db.transaksiDao().getTransaksi(); list = db.transaksiDao().getTransaksi();
return list; return list;
} }
public static List<OrderDetail> getDetailOrders(Context context, long orderId){
List<OrderDetail> list;
LocalDatabase db = LocalDatabase.getDatabase(context);
list = db.orderDetail().getOrderDetail(orderId);
return list;
}
} }
...@@ -24,7 +24,7 @@ import com.example.yourcashiertest.entities.Transaksi; ...@@ -24,7 +24,7 @@ import com.example.yourcashiertest.entities.Transaksi;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@Database(entities = {Product.class, Cart.class, Transaksi.class, OrderDetail.class}, version = 6, exportSchema = false) @Database(entities = {Product.class, Cart.class, Transaksi.class, OrderDetail.class}, version = 7, exportSchema = false)
public abstract class LocalDatabase extends RoomDatabase { public abstract class LocalDatabase extends RoomDatabase {
public abstract ProductDao productDao(); public abstract ProductDao productDao();
...@@ -77,6 +77,13 @@ public abstract class LocalDatabase extends RoomDatabase { ...@@ -77,6 +77,13 @@ public abstract class LocalDatabase extends RoomDatabase {
} }
}; };
public static final Migration MIGRATION_6_7 = new Migration(6, 7) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE Transaksi ADD COLUMN paymentType TEXT NOT NULL DEFAULT '' ");
database.execSQL("ALTER TABLE Transaksi ADD COLUMN createdAt TEXT NOT NULL DEFAULT '' ");
}
};
public static LocalDatabase getDatabase(Context context) { public static LocalDatabase getDatabase(Context context) {
if (INSTANCE == null) { if (INSTANCE == null) {
...@@ -84,7 +91,8 @@ public abstract class LocalDatabase extends RoomDatabase { ...@@ -84,7 +91,8 @@ public abstract class LocalDatabase extends RoomDatabase {
if (INSTANCE == null) { if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
LocalDatabase.class, "yourcashier_database") LocalDatabase.class, "yourcashier_database")
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5, MIGRATION_5_6) .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4,
MIGRATION_4_5, MIGRATION_5_6, MIGRATION_6_7)
.allowMainThreadQueries() .allowMainThreadQueries()
.build(); .build();
} }
......
...@@ -23,15 +23,27 @@ public class Transaksi implements Parcelable { ...@@ -23,15 +23,27 @@ public class Transaksi implements Parcelable {
@ColumnInfo(name = "status") @ColumnInfo(name = "status")
private String status; private String status;
@NonNull
@ColumnInfo(name = "paymentType")
private String paymentType;
@NonNull
@ColumnInfo(name = "createdAt")
private String createdAt;
protected Transaksi(Parcel in) { protected Transaksi(Parcel in) {
orderId = in.readLong(); orderId = in.readLong();
amount = in.readLong(); amount = in.readLong();
status = in.readString(); status = in.readString();
paymentType = in.readString();
createdAt = in.readString();
} }
public Transaksi(long amount, String status){ public Transaksi(long amount, String status, String paymentType, String createdAt){
this.amount = amount; this.amount = amount;
this.status = status; this.status = status;
this.paymentType = paymentType;
this.createdAt = createdAt;
} }
public static final Creator<Transaksi> CREATOR = new Creator<Transaksi>() { public static final Creator<Transaksi> CREATOR = new Creator<Transaksi>() {
...@@ -71,6 +83,22 @@ public class Transaksi implements Parcelable { ...@@ -71,6 +83,22 @@ public class Transaksi implements Parcelable {
this.status = status; this.status = status;
} }
public void setPaymentType(String paymentType) {
this.paymentType = paymentType;
}
public String getPaymentType() {
return paymentType;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getCreatedAt() {
return createdAt;
}
@Override @Override
public int describeContents() { public int describeContents() {
return 0; return 0;
...@@ -81,5 +109,7 @@ public class Transaksi implements Parcelable { ...@@ -81,5 +109,7 @@ public class Transaksi implements Parcelable {
parcel.writeLong(orderId); parcel.writeLong(orderId);
parcel.writeLong(amount); parcel.writeLong(amount);
parcel.writeString(status); parcel.writeString(status);
parcel.writeString(paymentType);
parcel.writeString(createdAt);
} }
} }
...@@ -38,5 +38,9 @@ public class ProductRepository { ...@@ -38,5 +38,9 @@ public class ProductRepository {
return productDao.getFilteredProducts(s); return productDao.getFilteredProducts(s);
} }
public Product getProductByid(long id){
return productDao.getProductById((int) id);
}
} }
package com.example.yourcashiertest.utils; package com.example.yourcashiertest.utils;
import android.annotation.SuppressLint;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Convert { public class Convert {
public static String changeToCurrency(long totalPrice){ public static String changeToCurrency(long totalPrice){
...@@ -16,4 +20,9 @@ public class Convert { ...@@ -16,4 +20,9 @@ public class Convert {
return priceRupiah; return priceRupiah;
} }
@SuppressLint("SimpleDateFormat")
public static String DateNow(){
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
} }
...@@ -72,4 +72,8 @@ public class ProductViewModel extends AndroidViewModel { ...@@ -72,4 +72,8 @@ public class ProductViewModel extends AndroidViewModel {
public MutableLiveData<Product> getProduct() { public MutableLiveData<Product> getProduct() {
return product; return product;
} }
public Product getProductById(long id){
return repository.getProductByid(id);
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".activities.OrderDetailActivity">
<TextView
android:id="@+id/tvDetailOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/wellfleet"
android:gravity="top"
android:text="Order Detail"
android:textAppearance="@style/payment"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_detail_order"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvDetailOrder"
tools:layout_editor_absoluteX="10dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<!-- Burger Medium --> <!-- Burger Medium -->
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/img_product_detail"
android:layout_width="107dp" android:layout_width="107dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_margin="5dp" android:layout_margin="5dp"
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
android:gravity="top" android:gravity="top"
android:text="@{cartProduct.nameProduct}" android:text="@{cartProduct.nameProduct}"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/imageView" app:layout_constraintStart_toEndOf="@+id/img_product_detail"
android:textAppearance="@style/burger_medi" /> android:textAppearance="@style/burger_medi" />
<TextView <TextView
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
android:gravity="top" android:gravity="top"
tools:text="@{price}" tools:text="@{price}"
android:textAppearance="@style/some_id" android:textAppearance="@style/some_id"
app:layout_constraintStart_toEndOf="@+id/imageView" app:layout_constraintStart_toEndOf="@+id/img_product_detail"
app:layout_constraintTop_toBottomOf="@+id/burger_medi"/> app:layout_constraintTop_toBottomOf="@+id/burger_medi"/>
<View <View
......
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
<TextView <TextView
android:id="@+id/tvOrderNumber" android:id="@+id/tvOrderNumber"
android:layout_width="136dp" android:layout_width="wrap_content"
android:layout_height="41dp" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="Order Number : " android:text="Order Number : "
...@@ -45,22 +45,24 @@ ...@@ -45,22 +45,24 @@
<TextView <TextView
android:id="@+id/tvOrderId" android:id="@+id/tvOrderId"
android:layout_width="250dp" android:layout_width="wrap_content"
android:layout_height="41dp" android:layout_height="14dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:text="@{transaction.orderId + ``}" android:text="@{transaction.orderId + ``}"
android:textAppearance="@style/some_id" android:textAppearance="@style/some_id"
app:layout_constraintBottom_toBottomOf="@+id/tvOrderNumber" app:layout_constraintBottom_toBottomOf="@+id/tvOrderNumber"
app:layout_constraintEnd_toStartOf="@+id/date"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/tvOrderNumber" app:layout_constraintStart_toEndOf="@id/tvOrderNumber"
app:layout_constraintTop_toTopOf="@+id/tvOrderNumber" /> app:layout_constraintTop_toTopOf="@+id/tvOrderNumber" />
<TextView <TextView
android:id="@+id/tvTotal" android:id="@+id/tvTotal"
android:layout_width="136dp" android:layout_width="wrap_content"
android:layout_height="41dp" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:text="Total : " android:text="Total :"
android:textAppearance="@style/burger_medi" android:textAppearance="@style/burger_medi"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvOrderNumber" /> app:layout_constraintTop_toBottomOf="@id/tvOrderNumber" />
...@@ -68,7 +70,7 @@ ...@@ -68,7 +70,7 @@
<TextView <TextView
android:id="@+id/tvAmount" android:id="@+id/tvAmount"
android:layout_width="250dp" android:layout_width="250dp"
android:layout_height="41dp" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:text="@{amount}" android:text="@{amount}"
android:textAppearance="@style/some_id" android:textAppearance="@style/some_id"
...@@ -117,6 +119,17 @@ ...@@ -117,6 +119,17 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/btnContinue" app:layout_constraintStart_toEndOf="@id/btnContinue"
app:layout_constraintTop_toBottomOf="@id/tvAmount" /> app:layout_constraintTop_toBottomOf="@id/tvAmount" />
<TextView
android:id="@+id/date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@{transaction.createdAt}"
android:layout_marginStart="50dp"
app:layout_constraintStart_toEndOf="@+id/tvOrderId"
app:layout_constraintBottom_toBottomOf="@+id/tvOrderId"
app:layout_constraintEnd_toEndOf="@id/btnCancel"
app:layout_constraintTop_toTopOf="@+id/tvOrderId" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="orderDetail"
type="com.example.yourcashiertest.entities.OrderDetail" />
<variable
name="productDetail"
type="com.example.yourcashiertest.entities.Product" />
<variable
name="price"
type="String" />
</data>
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardElevation="3dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:padding="10dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img_product_detail"
android:layout_width="120dp"
android:layout_height="130dp"
android:layout_margin="5dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:file="@{productDetail.photo}"
tools:srcCompat="@tools:sample/avatars" />
<TextView
android:id="@+id/name_product"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{productDetail.name}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.163"
app:layout_constraintStart_toEndOf="@id/img_product_detail"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.106" />
<TextView
android:id="@+id/qty_order"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{orderDetail.qty + ``}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/name_product"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/name_product"
app:layout_constraintTop_toBottomOf="@+id/name_product"
app:layout_constraintVertical_bias="0.209" />
<TextView
android:id="@+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{price}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/qty_order"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/qty_order"
app:layout_constraintTop_toBottomOf="@+id/qty_order"
app:layout_constraintVertical_bias="0.29000002" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</layout>
\ No newline at end of file
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<style name="burger_medi"> <style name="burger_medi">
<item name="android:textSize"> <item name="android:textSize">
18sp 15sp
</item> </item>
<item name="android:textColor"> <item name="android:textColor">
......
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