From b2a74367ef334a4e41771fc4546b4391a7cab427 Mon Sep 17 00:00:00 2001 From: phanhuuloi27 <73208452+Nezumi2711@users.noreply.github.com> Date: Sat, 18 Jun 2022 21:14:08 +0700 Subject: [PATCH] Update Quantity Cart --- .../main/java/com/waterbase/foodify/Cart.java | 2 +- .../waterbase/foodify/Database/Database.java | 35 +++++++++------ .../com/waterbase/foodify/Model/Order.java | 18 ++++++++ .../foodify/ViewHolder/CartAdapter.java | 43 +++++++++++++++---- .../app/src/main/res/layout/activity_cart.xml | 20 +++++---- .../main/res/layout/activity_food_detail.xml | 6 +-- .../app/src/main/res/layout/cart_layout.xml | 17 +++++--- 7 files changed, 100 insertions(+), 41 deletions(-) diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java index cf8ee3a..e486a0a 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java @@ -57,7 +57,7 @@ public class Cart extends AppCompatActivity { FirebaseDatabase database; DatabaseReference requests; - TextView txtTotalPrice; + public TextView txtTotalPrice; FButton btnPlace; List cart = new ArrayList<>(); diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Database/Database.java b/Foodify/app/src/main/java/com/waterbase/foodify/Database/Database.java index 8fbf9b4..0ce2ff6 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Database/Database.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Database/Database.java @@ -13,8 +13,9 @@ import java.util.List; public class Database extends SQLiteAssetHelper { - private static final String DB_NAME="EatItDB.db"; - private static final int DB_VER=1; + private static final String DB_NAME = "EatItDB.db"; + private static final int DB_VER = 1; + public Database(Context context) { super(context, DB_NAME, null, DB_VER); } @@ -23,22 +24,24 @@ public class Database extends SQLiteAssetHelper { SQLiteDatabase db = getReadableDatabase(); SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); - String[] sqlSelect = {"ProductName", "ProductId", "Quantity", "Price", "Discount"}; - String sqlTable="OrderDetail"; + String[] sqlSelect = {"ID", "ProductName", "ProductId", "Quantity", "Price", "Discount"}; + String sqlTable = "OrderDetail"; qb.setTables(sqlTable); Cursor c = qb.query(db, sqlSelect, null, null, null, null, null); final List result = new ArrayList<>(); - if(c.moveToFirst()) { + if (c.moveToFirst()) { do { - result.add(new Order(c.getString(c.getColumnIndexOrThrow("ProductId")), + result.add(new Order( + c.getInt(c.getColumnIndexOrThrow("ID")), + c.getString(c.getColumnIndexOrThrow("ProductId")), c.getString(c.getColumnIndexOrThrow("ProductName")), c.getString(c.getColumnIndexOrThrow("Quantity")), c.getString(c.getColumnIndexOrThrow("Price")), c.getString(c.getColumnIndexOrThrow("Discount")) )); - } while(c.moveToNext()); + } while (c.moveToNext()); } return result; } @@ -61,23 +64,23 @@ public class Database extends SQLiteAssetHelper { } //Favorites - public void addToFavorites(String foodId){ + public void addToFavorites(String foodId) { SQLiteDatabase db = getReadableDatabase(); String query = String.format("INSERT INTO Favorites(FoodId) VALUES('%s');", foodId); db.execSQL(query); } - public void removeFromFavorites(String foodId){ + public void removeFromFavorites(String foodId) { SQLiteDatabase db = getReadableDatabase(); String query = String.format("DELETE FROM Favorites WHERE FoodId='%s';", foodId); db.execSQL(query); } - public boolean isFavorite(String foodId){ + public boolean isFavorite(String foodId) { SQLiteDatabase db = getReadableDatabase(); String query = String.format("SELECT * FROM Favorites WHERE FoodId='%s'", foodId); Cursor cursor = db.rawQuery(query, null); - if(cursor.getCount() <= 0){ + if (cursor.getCount() <= 0) { cursor.close(); return false; } @@ -90,12 +93,18 @@ public class Database extends SQLiteAssetHelper { SQLiteDatabase db = getReadableDatabase(); String query = String.format("SELECT COUNT(*) FROM OrderDetail"); Cursor cursor = db.rawQuery(query, null); - if(cursor.moveToFirst()){ + if (cursor.moveToFirst()) { do { count = cursor.getInt(0); - }while (cursor.moveToNext()); + } while (cursor.moveToNext()); } return count; } + + public void updateCart(Order order) { + SQLiteDatabase db = getReadableDatabase(); + String query = String.format("UPDATE OrderDetail SET Quantity = %s WHERE ID = %d", order.getQuantity(), order.getID()); + db.execSQL(query); + } } diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Order.java b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Order.java index 265f502..2c9d747 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Order.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Order.java @@ -2,6 +2,7 @@ package com.waterbase.foodify.Model; public class Order { + private int ID; private String ProductId; private String ProductName; private String Quantity; @@ -19,6 +20,23 @@ public class Order { Discount = discount; } + public Order(int ID, String productId, String productName, String quantity, String price, String discount) { + this.ID = ID; + ProductId = productId; + ProductName = productName; + Quantity = quantity; + Price = price; + Discount = discount; + } + + public int getID() { + return ID; + } + + public void setID(int ID) { + this.ID = ID; + } + public String getProductId() { return ProductId; } diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/CartAdapter.java b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/CartAdapter.java index 44d23ba..90cc64c 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/CartAdapter.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/ViewHolder/CartAdapter.java @@ -13,7 +13,10 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.amulyakhare.textdrawable.TextDrawable; +import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton; +import com.waterbase.foodify.Cart; import com.waterbase.foodify.Common.Common; +import com.waterbase.foodify.Database.Database; import com.waterbase.foodify.Interface.ItemClickListener; import com.waterbase.foodify.Model.Order; import com.waterbase.foodify.R; @@ -28,7 +31,7 @@ import java.util.Locale; class CartViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener { public TextView txt_card_item, txt_price; - public ImageView img_cart_count; + public ElegantNumberButton btn_quantity; private ItemClickListener itemClickListener; @@ -40,7 +43,7 @@ class CartViewHolder extends RecyclerView.ViewHolder implements View.OnClickList super(itemView); txt_card_item = (TextView) itemView.findViewById(R.id.cart_item_name); txt_price = (TextView) itemView.findViewById(R.id.cart_item_Price); - img_cart_count = (ImageView) itemView.findViewById(R.id.cart_item_count); + btn_quantity = (ElegantNumberButton) itemView.findViewById(R.id.btn_quantity); itemView.setOnCreateContextMenuListener(this); } @@ -59,25 +62,47 @@ class CartViewHolder extends RecyclerView.ViewHolder implements View.OnClickList public class CartAdapter extends RecyclerView.Adapter{ private List listData = new ArrayList<>(); - private Context context; + private Cart cart; - public CartAdapter(List listData, Context context) { + public CartAdapter(List listData, Cart cart) { this.listData = listData; - this.context = context; + this.cart = cart; } @NonNull @Override public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - LayoutInflater inflater = LayoutInflater.from(context); + LayoutInflater inflater = LayoutInflater.from(cart); View itemView = inflater.inflate(R.layout.cart_layout, parent, false); return new CartViewHolder(itemView); } @Override - public void onBindViewHolder(@NonNull CartViewHolder holder, int position) { - TextDrawable drawable = TextDrawable.builder().buildRound("" + listData.get(position).getQuantity(), Color.RED); - holder.img_cart_count.setImageDrawable(drawable); + public void onBindViewHolder(@NonNull CartViewHolder holder, final int position) { +// TextDrawable drawable = TextDrawable.builder().buildRound("" + listData.get(position).getQuantity(), Color.RED); +// holder.img_cart_count.setImageDrawable(drawable); + + holder.btn_quantity.setNumber(listData.get(position).getQuantity()); + holder.btn_quantity.setOnValueChangeListener(new ElegantNumberButton.OnValueChangeListener() { + @Override + public void onValueChange(ElegantNumberButton view, int oldValue, int newValue) { + Order order = listData.get(position); + order.setQuantity(String.valueOf(newValue)); + new Database(cart).updateCart(order); + + //Calculate total price + float total = 0; + List orders = new Database(cart).getCarts(); + for (Order item : orders) + total += (Float.parseFloat(order.getPrice())) * (Float.parseFloat(item.getQuantity())); + Locale locale = new Locale("vi", "VN"); + NumberFormat fmt = NumberFormat.getCurrencyInstance(locale); + float price = newValue*(Float.parseFloat(order.getPrice())); + holder.txt_price.setText(fmt.format(price)); + + cart.txtTotalPrice.setText(fmt.format(total)); + } + }); Locale locale = new Locale("vi", "VN"); NumberFormat fmt = NumberFormat.getCurrencyInstance(locale); diff --git a/Foodify/app/src/main/res/layout/activity_cart.xml b/Foodify/app/src/main/res/layout/activity_cart.xml index 1ba08de..071619e 100644 --- a/Foodify/app/src/main/res/layout/activity_cart.xml +++ b/Foodify/app/src/main/res/layout/activity_cart.xml @@ -50,20 +50,22 @@ + app:shadowHeight="5dp" /> diff --git a/Foodify/app/src/main/res/layout/activity_food_detail.xml b/Foodify/app/src/main/res/layout/activity_food_detail.xml index a2615fc..c4fce60 100644 --- a/Foodify/app/src/main/res/layout/activity_food_detail.xml +++ b/Foodify/app/src/main/res/layout/activity_food_detail.xml @@ -156,10 +156,9 @@ android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:rating="0" - android:max="5" android:isIndicator="true" - /> + android:max="5" + android:rating="0" /> + diff --git a/Foodify/app/src/main/res/layout/cart_layout.xml b/Foodify/app/src/main/res/layout/cart_layout.xml index 4d538a4..5465a8f 100644 --- a/Foodify/app/src/main/res/layout/cart_layout.xml +++ b/Foodify/app/src/main/res/layout/cart_layout.xml @@ -43,12 +43,17 @@ android:layout_height="wrap_content" /> - + \ No newline at end of file