Commit 460790bd authored by Wahyu Wibowo's avatar Wahyu Wibowo

perbaiki bug cart

parent e4777055
......@@ -2,6 +2,7 @@ package com.example.yourcashiertest.activities;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
......@@ -26,6 +27,7 @@ public class CartActivity extends AppCompatActivity {
CartAdapter adapter;
private static int SUM = 0;
public static String PRICE = "price";
Product product;
@SuppressLint("SetTextI18n")
@Override
......@@ -37,7 +39,8 @@ public class CartActivity extends AppCompatActivity {
binding.rvCartList.setLayoutManager(new LinearLayoutManager(this));
binding.rvCartList.setAdapter(adapter);
ProductViewModel viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
product = new Product();
// viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
CartViewModel cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
cartViewModel.getCarts().observe(this, carts -> adapter.setCartList(carts));
......
......@@ -3,30 +3,29 @@ package com.example.yourcashiertest.activities;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.PopupMenu;
import android.widget.Toast;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.CategoryAdapter;
import com.example.yourcashiertest.adapters.ProductAdapter;
import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityMainBinding;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.repositories.ProductRepository;
import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.ProductViewModel;
......@@ -68,14 +67,12 @@ public class MainActivity extends AppCompatActivity {
cartViewModel.getCarts().observe(this, carts -> {
if (carts.size() != 0) {
binding.tvCount.setText(String.valueOf(carts.size()));
cartVisibility = true;
}else {
cartVisibility = false;
binding.tvCount.setText(String.valueOf(0));
}
});
String name = prefManager.getDataUser();
binding.tvUser.setText(name);
binding.setCartVisibility(cartVisibility);
// settings menu
binding.ivCart.setOnClickListener(view -> startActivity(new Intent(MainActivity.this, CartActivity.class)));
binding.ivSettings.setOnClickListener(view -> {
......@@ -122,14 +119,13 @@ public class MainActivity extends AppCompatActivity {
viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
viewModel.getProducts().observe(this, adapter::setProducts);
viewModel.getProducts().observe(this, products -> {
List<Product> product = DBHelper.getAllProduct(getApplicationContext());
List<String> category = new ArrayList<>();
for (int i = 0; i < products.size(); i++){
category.add(products.get(i).getCategory().toLowerCase());
for (int i = 0; i < product.size(); i++){
category.add(product.get(i).getCategory());
}
categoryAdapter.setCategories(category);
});
categoryAdapter.setListener(category -> viewModel.filter(category.toLowerCase()));
categoryAdapter.setListener(c -> viewModel.filter(c.toLowerCase()));
adapter.setListener(new ProductAdapter.ProductListener() {
@Override
......@@ -177,8 +173,6 @@ public class MainActivity extends AppCompatActivity {
startActivity(new Intent(MainActivity.this, CartActivity.class));
finish();
}else {
product.setQuantity(product.getQuantity() - 1);
viewModel.updateProduct(product);
Cart cart = new Cart(0,"", "", 0, 0, 0);
cart.setIdProduct(product.getId());
cart.setImage(product.getPhoto());
......@@ -192,16 +186,13 @@ public class MainActivity extends AppCompatActivity {
}
public void checkProduct(Product product){
cartViewModel.getCarts().observe(this, new Observer<List<Cart>>() {
@Override
public void onChanged(List<Cart> carts) {
cartViewModel.getCarts().observe(this, carts -> {
for(int i = 0; i < carts.size(); i++){
if (carts.get(i).getNameProduct().equals(product.getName())){
added = true;
break;
}
}
}
});
}
......
......@@ -4,8 +4,6 @@ import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.content.Intent;
......@@ -13,16 +11,22 @@ import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.adapters.PaymentAdapter;
import com.example.yourcashiertest.databases.DBHelper;
import com.example.yourcashiertest.databinding.ActivityPaymentBinding;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product;
import com.example.yourcashiertest.models.ResponsePayment;
import com.example.yourcashiertest.utils.Convert;
import com.example.yourcashiertest.utils.ViewUtil;
import com.example.yourcashiertest.viewmodels.CartViewModel;
import com.example.yourcashiertest.viewmodels.ProductViewModel;
import java.util.ArrayList;
import java.util.List;
public class PaymentActivity extends AppCompatActivity {
......@@ -32,6 +36,7 @@ public class PaymentActivity extends AppCompatActivity {
public int refund;
public int amount;
CartViewModel cartViewModel;
ProductViewModel viewModel;
public static final String PAY_WITH = "pay_with";
private ArrayList<ResponsePayment> responsePayments = new ArrayList<>();
......@@ -43,10 +48,9 @@ public class PaymentActivity extends AppCompatActivity {
binding = DataBindingUtil.setContentView(this, R.layout.activity_payment);
cartViewModel = new ViewModelProvider(this).get(CartViewModel.class);
viewModel = new ViewModelProvider(this).get(ProductViewModel.class);
amount = getIntent().getIntExtra(CartActivity.PRICE, 0);
binding.setAmount(Convert.changeToCurrency(amount));
// binding.rvPayment.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false));
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"));
......@@ -70,6 +74,7 @@ public class PaymentActivity extends AppCompatActivity {
ViewUtil.showMessage(view, "AmountPaid doesn't less than total price");
} else {
refund = amountPaid - amount;
updateDataProduct();
startActivity(new Intent(PaymentActivity.this, StatusPayment.class).putExtra(REFUND, refund).putExtra(PAY_WITH, paymentMethod));
cartViewModel.clear();
finish();
......@@ -77,6 +82,24 @@ public class PaymentActivity extends AppCompatActivity {
}
}
void updateDataProduct(){
List<Product> products = DBHelper.getAllProduct(getApplicationContext());
List<Cart> carts = DBHelper.getAllCart(getApplicationContext());
for (int c = 0; c < carts.size(); c++){
for (int p = 0; p < products.size(); p++){
if (carts.get(c).getIdProduct() == products.get(p).getId()){
Log.d("Product", products.get(p).getName());
products.get(p).setQuantity(products.get(p).getQuantity() - carts.get(c).getQty());
Log.d("quantity", String.valueOf(products.get(p).getQuantity()));
viewModel.updateProduct(products.get(p));
return;
}
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
......
......@@ -14,6 +14,10 @@ import java.util.List;
@Dao
public interface CartDao {
@Query("SELECT * FROM Cart")
public List<Cart> getAllCarts();
@Query("SELECT * FROM Cart ORDER BY id DESC")
public LiveData<List<Cart>> getCarts();
......
......@@ -17,8 +17,11 @@ public interface ProductDao {
@Query("SELECT * FROM products ORDER BY id DESC")
public LiveData<List<Product>> getProducts();
@Query("SELECT * FROM products")
public List<Product> getAll();
// @Query("SELECT category FROM products")
// public LiveData<List<Product>> getAllCategory();
// public List<Product> getAllCategory();
@Query("SELECT * FROM products WHERE name LIKE :query OR category LIKE:query ORDER BY id DESC")
public LiveData<List<Product>> getFilteredProducts(String query);
......
package com.example.yourcashiertest.databases;
import android.content.Context;
import com.example.yourcashiertest.entities.Cart;
import com.example.yourcashiertest.entities.Product;
import java.util.List;
public class DBHelper {
public static List<Product> getAllProduct(Context context){
List<Product> list;
LocalDatabase db = LocalDatabase.getDatabase(context);
list = db.productDao().getAll();
return list;
}
public static List<Cart> getAllCart(Context context){
List<Cart> list;
LocalDatabase db = LocalDatabase.getDatabase(context);
list = db.cartDao().getAllCarts();
return list;
}
}
......@@ -54,6 +54,7 @@ public abstract class LocalDatabase extends RoomDatabase {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
LocalDatabase.class, "yourcashier_database")
.addMigrations(MIGRATION_1_2, MIGRATION_2_3)
.allowMainThreadQueries()
.build();
}
}
......
......@@ -70,6 +70,10 @@ public class Cart implements Parcelable {
this.realPrice = realPrice;
}
public Cart() {
}
public long getId() {
return id;
}
......
......@@ -53,6 +53,11 @@ public class Product implements Parcelable {
return new Product[size];
}
};
public Product() {
}
public long getId() {
return id;
}
......
<vector android:height="24dp" android:tint="@color/colorPrimary"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#0E9185"
android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0"/>
</vector>
\ No newline at end of file
......@@ -54,7 +54,6 @@
android:background="@drawable/cart_ic"
app:layout_constraintEnd_toEndOf="@+id/ivCart"
app:layout_constraintTop_toTopOf="@+id/ivCart"
android:visibility="@{cartVisibility ? View.VISIBLE : View.GONE}"
android:layout_height="15dp"/>
<TextView
......@@ -64,7 +63,6 @@
android:textSize="12sp"
android:textStyle="bold"
android:textColor="#7EDCD6"
android:visibility="@{cartVisibility ? View.VISIBLE : View.GONE}"
app:layout_constraintBottom_toBottomOf="@+id/circleCart"
app:layout_constraintEnd_toEndOf="@+id/circleCart"
app:layout_constraintStart_toStartOf="@+id/circleCart"
......
......@@ -142,6 +142,19 @@
android:text="Add to cart"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/textView"
android:layout_width="20sp"
android:layout_height="20sp"
android:textColor="@color/white"
android:textAlignment="center"
android:text="@{product.quantity + ``}"
android:background="@drawable/ic_stok"
app:layout_constraintBottom_toBottomOf="@+id/tvStock"
app:layout_constraintTop_toTopOf="@+id/tvStock"
app:layout_constraintEnd_toEndOf="parent"
tools:layout_editor_absoluteX="310dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
......
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