diff --git a/FoodifyServer/app/src/main/AndroidManifest.xml b/FoodifyServer/app/src/main/AndroidManifest.xml
index c329a0a..2bb91a4 100644
--- a/FoodifyServer/app/src/main/AndroidManifest.xml
+++ b/FoodifyServer/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.FoodifyServer"
tools:targetApi="31">
+
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java
index 19774e4..36f0d0c 100644
--- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Common.java
@@ -8,4 +8,13 @@ public class Common {
public static final String UPDATE = "Cập nhật";
public static final String DELETE = "Xoá";
public static final int PICK_IMAGE_REQUEST = 71;
+
+ public static String coverCodeToStatus(String code){
+ if(code.equals("0"))
+ return "Placed";
+ else if(code.equals("1"))
+ return "On my way";
+ else
+ return "Shipped";
+ }
}
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/FoodList.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/FoodList.java
index cd8d4b3..745846c 100644
--- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/FoodList.java
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/FoodList.java
@@ -30,7 +30,6 @@ import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.squareup.picasso.Picasso;
-import com.waterbase.foodifyServer.Common.Category;
import com.waterbase.foodifyServer.Common.Common;
import com.waterbase.foodifyServer.Interface.ItemClickListener;
import com.waterbase.foodifyServer.Model.Food;
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java
index 4d067a0..6cf288e 100644
--- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Home.java
@@ -24,10 +24,6 @@ import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
-import androidx.navigation.NavController;
-import androidx.navigation.Navigation;
-import androidx.navigation.ui.AppBarConfiguration;
-import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -41,11 +37,10 @@ import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.rengwuxian.materialedittext.MaterialEditText;
import com.squareup.picasso.Picasso;
-import com.waterbase.foodifyServer.Common.Category;
+import com.waterbase.foodifyServer.Model.Category;
import com.waterbase.foodifyServer.Common.Common;
import com.waterbase.foodifyServer.Interface.ItemClickListener;
import com.waterbase.foodifyServer.ViewHolder.MenuViewHolder;
-import com.waterbase.foodifyServer.databinding.ActivityHomeBinding;
import java.util.UUID;
@@ -268,6 +263,10 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
+ if(id == R.id.nav_orders) {
+ Intent orders = new Intent(Home.this, OrderStatus.class);
+ startActivity(orders);
+ }
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerLayout.closeDrawer(GravityCompat.START);
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Category.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Category.java
similarity index 91%
rename from FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Category.java
rename to FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Category.java
index b20615c..a6ae836 100644
--- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Common/Category.java
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Category.java
@@ -1,4 +1,4 @@
-package com.waterbase.foodifyServer.Common;
+package com.waterbase.foodifyServer.Model;
public class Category {
private String Name;
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Order.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Order.java
new file mode 100644
index 0000000..34aba88
--- /dev/null
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Order.java
@@ -0,0 +1,61 @@
+package com.waterbase.foodifyServer.Model;
+
+public class Order {
+
+ private String ProductId;
+ private String ProductName;
+ private String Quantity;
+ private String Price;
+ private String Discount;
+
+ public Order() {
+ }
+
+ public Order(String productId, String productName, String quantity, String price, String discount) {
+ ProductId = productId;
+ ProductName = productName;
+ Quantity = quantity;
+ Price = price;
+ Discount = discount;
+ }
+
+ public String getProductId() {
+ return ProductId;
+ }
+
+ public void setProductId(String productId) {
+ ProductId = productId;
+ }
+
+ public String getProductName() {
+ return ProductName;
+ }
+
+ public void setProductName(String productName) {
+ ProductName = productName;
+ }
+
+ public String getQuantity() {
+ return Quantity;
+ }
+
+ public void setQuantity(String quantity) {
+ Quantity = quantity;
+ }
+
+ public String getPrice() {
+ return Price;
+ }
+
+ public void setPrice(String price) {
+ Price = price;
+ }
+
+ public String getDiscount() {
+ return Discount;
+ }
+
+ public void setDiscount(String discount) {
+ Discount = discount;
+ }
+}
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Request.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Request.java
new file mode 100644
index 0000000..7fe52cd
--- /dev/null
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/Model/Request.java
@@ -0,0 +1,72 @@
+package com.waterbase.foodifyServer.Model;
+
+import java.util.List;
+
+public class Request {
+ private String phone;
+ private String name;
+ private String address;
+ private String total;
+ private String status;
+ private List foods; // list of food order
+
+ public Request() {
+ }
+
+ public Request(String phone, String name, String address, String total, List foods) {
+ this.phone = phone;
+ this.name = name;
+ this.address = address;
+ this.total = total;
+ this.foods = foods;
+ this.status = "0"; // Default is 0, 0: Placed, 1: Shipping, 2: Shipped
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getTotal() {
+ return total;
+ }
+
+ public void setTotal(String total) {
+ this.total = total;
+ }
+
+ public List getFoods() {
+ return foods;
+ }
+
+ public void setFoods(List foods) {
+ this.foods = foods;
+ }
+}
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java
new file mode 100644
index 0000000..66cdc1a
--- /dev/null
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java
@@ -0,0 +1,126 @@
+package com.waterbase.foodifyServer;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.MenuItem;
+import android.view.View;
+
+import com.firebase.ui.database.FirebaseRecyclerAdapter;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.jaredrummler.materialspinner.MaterialSpinner;
+import com.waterbase.foodifyServer.Common.Common;
+import com.waterbase.foodifyServer.Interface.ItemClickListener;
+import com.waterbase.foodifyServer.Model.Request;
+import com.waterbase.foodifyServer.ViewHolder.OrderViewHolder;
+
+public class OrderStatus extends AppCompatActivity {
+
+ RecyclerView recyclerView;
+ RecyclerView.LayoutManager layoutManager;
+
+ FirebaseRecyclerAdapter adapter;
+
+ FirebaseDatabase db;
+ DatabaseReference requests;
+
+ MaterialSpinner spinner;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_order_status);
+
+ //Firebase
+ db = FirebaseDatabase.getInstance();
+ requests = db.getReference("Requests");
+
+ //Init
+ recyclerView = (RecyclerView) findViewById(R.id.listOrders);
+ recyclerView.setHasFixedSize(true);
+ layoutManager = new LinearLayoutManager(this);
+ recyclerView.setLayoutManager(layoutManager);
+
+ loadOrders();
+ }
+
+ private void loadOrders() {
+ adapter = new FirebaseRecyclerAdapter(
+ Request.class,
+ R.layout.order_layout,
+ OrderViewHolder.class,
+ requests
+ ) {
+ @Override
+ protected void populateViewHolder(OrderViewHolder viewHolder, Request model, int i) {
+ viewHolder.txtOrderId.setText(adapter.getRef(i).getKey());
+ viewHolder.txtOrderStatus.setText(Common.coverCodeToStatus(model.getStatus()));
+ viewHolder.txtOrderAddress.setText(model.getAddress());
+ viewHolder.txtOrderPhone.setText(model.getPhone());
+
+ viewHolder.setItemClickListener(new ItemClickListener() {
+ @Override
+ public void onClick(View view, int position, boolean isLongClick) {
+
+ }
+ });
+ }
+ };
+ adapter.notifyDataSetChanged();
+ recyclerView.setAdapter(adapter);
+ }
+
+ @Override
+ public boolean onContextItemSelected(@NonNull MenuItem item) {
+ if(item.getTitle().equals(Common.UPDATE))
+ showUpdateDialog(adapter.getRef(item.getOrder()).getKey(), adapter.getItem(item.getOrder()));
+ else if(item.getTitle().equals(Common.DELETE))
+ deleteOrder(adapter.getRef(item.getOrder()).getKey());
+
+ return super.onContextItemSelected(item);
+ }
+
+ private void deleteOrder(String key) {
+ requests.child(key).removeValue();
+ }
+
+ private void showUpdateDialog(String key, Request item) {
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(OrderStatus.this);
+ alertDialog.setTitle("Cập nhật tình trạng đơn hàng");
+ alertDialog.setMessage("Vui lòng chọn tình trạng đơn:");
+
+ LayoutInflater inflater = this.getLayoutInflater();
+ final View view = inflater.inflate(R.layout.update_order_layout, null);
+
+ spinner = (MaterialSpinner) view.findViewById(R.id.statusSpinner);
+ spinner.setItems("Placed", "On my way", "Shipped");
+
+ alertDialog.setView(view);
+
+ final String localKey = key;
+ alertDialog.setPositiveButton("Cập nhật", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();;
+ item.setStatus(String.valueOf(spinner.getSelectedIndex()));
+
+ requests.child(localKey).setValue(item);
+ }
+ });
+ alertDialog.setNegativeButton("Huỷ", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+
+ alertDialog.show();
+ }
+}
\ No newline at end of file
diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderViewHolder.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderViewHolder.java
new file mode 100644
index 0000000..7399a6f
--- /dev/null
+++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderViewHolder.java
@@ -0,0 +1,47 @@
+package com.waterbase.foodifyServer.ViewHolder;
+
+import android.view.ContextMenu;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.waterbase.foodifyServer.Interface.ItemClickListener;
+import com.waterbase.foodifyServer.R;
+
+public class OrderViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener {
+
+ public TextView txtOrderId, txtOrderStatus, txtOrderPhone, txtOrderAddress;
+
+ private ItemClickListener itemClickListener;
+
+ public OrderViewHolder(@NonNull View itemView) {
+ super(itemView);
+
+ txtOrderAddress = (TextView) itemView.findViewById(R.id.order_address);
+ txtOrderId = (TextView) itemView.findViewById(R.id.order_id);
+ txtOrderStatus = (TextView) itemView.findViewById(R.id.order_status);
+ txtOrderPhone = (TextView) itemView.findViewById(R.id.order_phone);
+
+ itemView.setOnClickListener(this);
+ itemView.setOnCreateContextMenuListener(this);
+ }
+
+ public void setItemClickListener(ItemClickListener itemClickListener) {
+ this.itemClickListener = itemClickListener;
+ }
+
+ @Override
+ public void onClick(View v) {
+ itemClickListener.onClick(v, getAdapterPosition(), false);
+ }
+
+ @Override
+ public void onCreateContextMenu(ContextMenu contextMenu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ contextMenu.setHeaderTitle("Tuỳ chọn");
+
+ contextMenu.add(0,0, getAdapterPosition(), "Cập nhật");
+ contextMenu.add(0,1, getAdapterPosition(), "Xoá");
+ }
+}
diff --git a/FoodifyServer/app/src/main/res/layout/activity_order_status.xml b/FoodifyServer/app/src/main/res/layout/activity_order_status.xml
new file mode 100644
index 0000000..031d9fc
--- /dev/null
+++ b/FoodifyServer/app/src/main/res/layout/activity_order_status.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FoodifyServer/app/src/main/res/layout/order_layout.xml b/FoodifyServer/app/src/main/res/layout/order_layout.xml
new file mode 100644
index 0000000..00eff2c
--- /dev/null
+++ b/FoodifyServer/app/src/main/res/layout/order_layout.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file