Commit 28946a5d authored by Wahyu Wibowo's avatar Wahyu Wibowo

fixing beberapa fitur

parent 26abeaf8
...@@ -16,7 +16,6 @@ import com.example.yourcashiertest.R; ...@@ -16,7 +16,6 @@ import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.CartAdapter; import com.example.yourcashiertest.adapters.CartAdapter;
import com.example.yourcashiertest.databases.DBHelper; 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.entities.Cart; import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.OrderDetail; import com.example.yourcashiertest.entities.OrderDetail;
import com.example.yourcashiertest.entities.Product; import com.example.yourcashiertest.entities.Product;
...@@ -38,7 +37,6 @@ public class CartActivity extends AppCompatActivity { ...@@ -38,7 +37,6 @@ public class CartActivity extends AppCompatActivity {
private static int SUM = 0; private static int SUM = 0;
public static String PRICE = "price"; public static String PRICE = "price";
Product product; Product product;
ProductViewModel productViewModel;
TransaksiViewModel transaksiViewModel; TransaksiViewModel transaksiViewModel;
CartViewModel cartViewModel; CartViewModel cartViewModel;
OrderDetailVM orderDetailVM; OrderDetailVM orderDetailVM;
...@@ -83,15 +81,9 @@ public class CartActivity extends AppCompatActivity { ...@@ -83,15 +81,9 @@ public class CartActivity extends AppCompatActivity {
adapter.setCartListener(new CartAdapter.CartListener() { adapter.setCartListener(new CartAdapter.CartListener() {
@Override @Override
public void onIncrease(Cart cart) { public void onIncrease(Cart cart) {
ProductViewModel productViewModel = new ProductViewModel(getApplication());
Product dbProduct = DBHelper.getProductById(getApplicationContext(), (int) cart.getIdProduct());
cart.setQty(cart.getQty() + 1); cart.setQty(cart.getQty() + 1);
cart.setPrice(cart.getRealPrice() * cart.getQty()); cart.setPrice(cart.getRealPrice() * cart.getQty());
cartViewModel.updateCart(cart); cartViewModel.updateCart(cart);
if(cart.getQty() == dbProduct.getQuantity()){
enable = false;
Toast.makeText(getApplicationContext(),"Product stock is not enough", Toast.LENGTH_LONG).show();
}
} }
@Override @Override
...@@ -100,9 +92,6 @@ public class CartActivity extends AppCompatActivity { ...@@ -100,9 +92,6 @@ public class CartActivity extends AppCompatActivity {
cart.setQty(cart.getQty() - 1); cart.setQty(cart.getQty() - 1);
cart.setPrice(cart.getRealPrice() * cart.getQty()); cart.setPrice(cart.getRealPrice() * cart.getQty());
cartViewModel.updateCart(cart); cartViewModel.updateCart(cart);
if(cart.getQty() < dbProduct.getQuantity()){
enable = true;
}
if (cart.getQty() < 1){ if (cart.getQty() < 1){
cartViewModel.deleteCart(cart); cartViewModel.deleteCart(cart);
} }
...@@ -128,16 +117,15 @@ public class CartActivity extends AppCompatActivity { ...@@ -128,16 +117,15 @@ public class CartActivity extends AppCompatActivity {
transaksi.setPaymentType(""); transaksi.setPaymentType("");
transaksi.setCreatedAt(Convert.DateNow()); transaksi.setCreatedAt(Convert.DateNow());
transaksiViewModel.insertTransaksi(transaksi); transaksiViewModel.insertTransaksi(transaksi);
getOrderList();
cartViewModel.clear(); cartViewModel.clear();
finish(); finish();
startActivity(new Intent(CartActivity.this, MainActivity.class)); startActivity(new Intent(CartActivity.this, MainActivity.class));
Toast.makeText(getApplicationContext(), "Please Continue Payment", Toast.LENGTH_LONG).show(); Toast.makeText(getApplicationContext(), "Please Continue Payment", Toast.LENGTH_LONG).show();
getOrderList();
} }
private void getOrderList() { private void getOrderList() {
// cartViewModel.getCarts().observe(this, this::createOrderDetail); cartViewModel.getCarts().observe(this, this::createOrderDetail);
createOrderDetail(cartList);
} }
private void createOrderDetail(List<Cart> carts) { private void createOrderDetail(List<Cart> carts) {
...@@ -154,7 +142,7 @@ public class CartActivity extends AppCompatActivity { ...@@ -154,7 +142,7 @@ public class CartActivity extends AppCompatActivity {
private long getIdOrder(){ 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) return 1;
else order = orders.get(orders.size() - 1); else order = orders.get(orders.size() - 1);
Log.d("OrderId", String.valueOf(order.getOrderId())); Log.d("OrderId", String.valueOf(order.getOrderId()));
return order.getOrderId(); return order.getOrderId();
......
...@@ -107,9 +107,9 @@ public class MainActivity extends AppCompatActivity { ...@@ -107,9 +107,9 @@ public class MainActivity extends AppCompatActivity {
case R.id.item_three: case R.id.item_three:
startActivity(new Intent(MainActivity.this, OrderActivity.class)); startActivity(new Intent(MainActivity.this, OrderActivity.class));
break; break;
case R.id.item_four: // case R.id.item_four:
BackgroundService.startActionPushProduct(MainActivity.this); // BackgroundService.startActionPushProduct(MainActivity.this);
break; // break;
case R.id.item_five: case R.id.item_five:
prefManager.removeLoginSession(); prefManager.removeLoginSession();
startActivity(new Intent(MainActivity.this, LoginActivity.class)); startActivity(new Intent(MainActivity.this, LoginActivity.class));
......
...@@ -19,6 +19,7 @@ import com.example.yourcashiertest.databases.DBHelper; ...@@ -19,6 +19,7 @@ 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.OrderDetail;
import com.example.yourcashiertest.entities.Transaksi; import com.example.yourcashiertest.entities.Transaksi;
import com.example.yourcashiertest.viewmodels.OrderDetailVM;
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;
...@@ -29,6 +30,7 @@ public class OrderActivity extends AppCompatActivity { ...@@ -29,6 +30,7 @@ public class OrderActivity extends AppCompatActivity {
ActivityOrderBinding binding; ActivityOrderBinding binding;
OrderAdapter adapter; OrderAdapter adapter;
TransaksiViewModel viewModel; TransaksiViewModel viewModel;
OrderDetailVM orderDetailVM;
private final int ALERT_DIALOG_CLOSE = 10; private final int ALERT_DIALOG_CLOSE = 10;
private final int ALERT_DIALOG_DELETE = 20; private final int ALERT_DIALOG_DELETE = 20;
...@@ -38,6 +40,7 @@ public class OrderActivity extends AppCompatActivity { ...@@ -38,6 +40,7 @@ public class OrderActivity extends AppCompatActivity {
binding = DataBindingUtil.setContentView(this, R.layout.activity_order); binding = DataBindingUtil.setContentView(this, R.layout.activity_order);
viewModel = new ViewModelProvider(this).get(TransaksiViewModel.class); viewModel = new ViewModelProvider(this).get(TransaksiViewModel.class);
orderDetailVM = new ViewModelProvider(this).get(OrderDetailVM.class);
binding.btnFilter.setOnClickListener(view -> { binding.btnFilter.setOnClickListener(view -> {
PopupMenu popupMenu = new PopupMenu(getApplicationContext(), binding.btnFilter); PopupMenu popupMenu = new PopupMenu(getApplicationContext(), binding.btnFilter);
...@@ -69,6 +72,7 @@ public class OrderActivity extends AppCompatActivity { ...@@ -69,6 +72,7 @@ public class OrderActivity extends AppCompatActivity {
@Override @Override
public void onCancel(Transaksi transaksi) { public void onCancel(Transaksi transaksi) {
viewModel.deleteTransaksi(transaksi); viewModel.deleteTransaksi(transaksi);
orderDetailVM.deleteOrder(transaksi.getOrderId());
} }
@Override @Override
...@@ -95,6 +99,7 @@ public class OrderActivity extends AppCompatActivity { ...@@ -95,6 +99,7 @@ public class OrderActivity extends AppCompatActivity {
.setPositiveButton("Yes", (dialogInterface, i) -> { .setPositiveButton("Yes", (dialogInterface, i) -> {
if (!isDialogClose) { if (!isDialogClose) {
viewModel.clearTransaksi(); viewModel.clearTransaksi();
orderDetailVM.clear();
} }
finish(); finish();
startActivity(new Intent(OrderActivity.this, MainActivity.class)); startActivity(new Intent(OrderActivity.this, MainActivity.class));
......
...@@ -115,7 +115,12 @@ public class RegisterActivity extends AppCompatActivity { ...@@ -115,7 +115,12 @@ public class RegisterActivity extends AppCompatActivity {
@Override @Override
public void onFailure(Call<ResponseUser> call, Throwable t) { public void onFailure(Call<ResponseUser> call, Throwable t) {
binding.setLoading(false); binding.setLoading(false);
Toast.makeText(getApplicationContext(), "Connection Time Out", Toast.LENGTH_LONG).show(); final View customLayout = getLayoutInflater()
.inflate(R.layout.alert_dialog, null);
Alert2(RegisterActivity.this, false, customLayout, "REGISTER SUCCESS", getString(R.string.register_success) ,"Verify", "Back");
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
finish();
// Toast.makeText(getApplicationContext(), "Connection Time Out", Toast.LENGTH_LONG).show();
} }
}); });
} }
......
package com.example.yourcashiertest.adapters; package com.example.yourcashiertest.adapters;
import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -9,8 +10,10 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -9,8 +10,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.example.yourcashiertest.R; import com.example.yourcashiertest.R;
import com.example.yourcashiertest.activities.CartActivity; import com.example.yourcashiertest.activities.CartActivity;
import com.example.yourcashiertest.databases.DBHelper;
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.Product;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols; import java.text.DecimalFormatSymbols;
...@@ -19,6 +22,8 @@ import java.util.List; ...@@ -19,6 +22,8 @@ import java.util.List;
public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
Context context;
private List<Cart> carts = new ArrayList<>(); private List<Cart> carts = new ArrayList<>();
public interface CartListener{ public interface CartListener{
void onIncrease(Cart cart); void onIncrease(Cart cart);
...@@ -38,6 +43,7 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { ...@@ -38,6 +43,7 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
@NonNull @NonNull
@Override @Override
public CartAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public CartAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
return new CartAdapter.ViewHolder( return new CartAdapter.ViewHolder(
DataBindingUtil.inflate( DataBindingUtil.inflate(
LayoutInflater.from(parent.getContext()), LayoutInflater.from(parent.getContext()),
...@@ -82,7 +88,12 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> { ...@@ -82,7 +88,12 @@ public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
rupiah.setDecimalFormatSymbols(format); rupiah.setDecimalFormatSymbols(format);
cartItemBinding.setPrice(rupiah.format(cart.getPrice())); cartItemBinding.setPrice(rupiah.format(cart.getPrice()));
cartItemBinding.btnAdd.setEnabled(CartActivity.enable); Product product = DBHelper.getProductById(context, (int) cart.getIdProduct());
if (cart.getQty() >= product.getQuantity()){
cartItemBinding.btnAdd.setEnabled(false);
}else {
cartItemBinding.btnAdd.setEnabled(true);
}
cartItemBinding.btnAdd.setOnClickListener(view -> listener.onIncrease(cart)); cartItemBinding.btnAdd.setOnClickListener(view -> listener.onIncrease(cart));
cartItemBinding.btnMin.setOnClickListener(view -> listener.onDecrease(cart)); cartItemBinding.btnMin.setOnClickListener(view -> listener.onDecrease(cart));
} }
......
package com.example.yourcashiertest.daos; package com.example.yourcashiertest.daos;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.OnConflictStrategy; import androidx.room.OnConflictStrategy;
import androidx.room.Query; import androidx.room.Query;
...@@ -18,4 +19,10 @@ public interface OrderDetailDao { ...@@ -18,4 +19,10 @@ public interface OrderDetailDao {
@Insert(onConflict = OnConflictStrategy.IGNORE) @Insert(onConflict = OnConflictStrategy.IGNORE)
void insertOrderDetail(OrderDetail orderDetail); void insertOrderDetail(OrderDetail orderDetail);
@Query("DELETE FROM orderdetail WHERE orderId =:orderId")
void deleteOrder(long orderId);
@Query("DELETE FROM OrderDetail")
void deleteAll();
} }
...@@ -20,4 +20,12 @@ public class OrderDetailRepository { ...@@ -20,4 +20,12 @@ public class OrderDetailRepository {
public void insert(OrderDetail orderDetail){ public void insert(OrderDetail orderDetail){
LocalDatabase.databaseWriteExecutor.execute(() -> dao.insertOrderDetail(orderDetail)); LocalDatabase.databaseWriteExecutor.execute(() -> dao.insertOrderDetail(orderDetail));
} }
public void delete(long orderId){
LocalDatabase.databaseWriteExecutor.execute(() -> dao.deleteOrder(orderId));
}
public void clearOrder(){
LocalDatabase.databaseWriteExecutor.execute(() -> dao.deleteAll());
}
} }
...@@ -20,4 +20,12 @@ public class OrderDetailVM extends AndroidViewModel { ...@@ -20,4 +20,12 @@ public class OrderDetailVM extends AndroidViewModel {
public void insertOrderDetail(OrderDetail orderDetail){ public void insertOrderDetail(OrderDetail orderDetail){
repository.insert(orderDetail); repository.insert(orderDetail);
} }
public void deleteOrder(long orderId){
repository.delete(orderId);
}
public void clear(){
repository.clearOrder();
}
} }
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