From f26cacbfa5993bab84a6374db43aad2d3b083d93 Mon Sep 17 00:00:00 2001 From: phanhuuloi27 <73208452+Nezumi2711@users.noreply.github.com> Date: Mon, 13 Jun 2022 21:23:26 +0700 Subject: [PATCH] Add comment and show detail order --- .../main/java/com/waterbase/foodify/Cart.java | 27 +++-- .../com/waterbase/foodify/Model/Request.java | 30 +++-- .../main/res/layout/order_address_comment.xml | 52 +++++++++ .../app/src/main/AndroidManifest.xml | 6 +- .../foodifyServer/Model/Request.java | 34 ++++-- .../waterbase/foodifyServer/OrderDetail.java | 51 +++++++++ .../waterbase/foodifyServer/OrderStatus.java | 13 ++- .../ViewHolder/OrderDetailAdapter.java | 59 ++++++++++ .../ViewHolder/OrderViewHolder.java | 10 +- .../main/res/layout/activity_order_detail.xml | 108 ++++++++++++++++++ .../main/res/layout/order_detail_layout.xml | 68 +++++++++++ 11 files changed, 420 insertions(+), 38 deletions(-) create mode 100644 Foodify/app/src/main/res/layout/order_address_comment.xml create mode 100644 FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderDetail.java create mode 100644 FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderDetailAdapter.java create mode 100644 FoodifyServer/app/src/main/res/layout/activity_order_detail.xml create mode 100644 FoodifyServer/app/src/main/res/layout/order_detail_layout.xml 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 be78b9a..62bee79 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java @@ -9,6 +9,7 @@ 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 android.widget.EditText; @@ -18,6 +19,7 @@ import android.widget.Toast; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; +import com.rengwuxian.materialedittext.MaterialEditText; import com.waterbase.foodify.Common.Common; import com.waterbase.foodify.Database.Database; import com.waterbase.foodify.Model.Order; @@ -85,19 +87,20 @@ public class Cart extends AppCompatActivity { private void showAlertDialog() { AlertDialog.Builder alertDialog = new AlertDialog.Builder(Cart.this); - alertDialog.setTitle("One more step!"); - alertDialog.setMessage("Enter your address: "); + alertDialog.setTitle("Còn 1 bước nữa!"); + alertDialog.setMessage("Xin vui lòng điền thông tin dưới đây: "); - final EditText edtAddress = new EditText(Cart.this); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT - ); - edtAddress.setLayoutParams(lp); - alertDialog.setView(edtAddress); //Add edit text to Dialog + LayoutInflater inflater = this.getLayoutInflater(); + View order_address_comment = inflater.inflate(R.layout.order_address_comment, null); + + MaterialEditText edtAddress = (MaterialEditText) order_address_comment.findViewById(R.id.edtAddress); + MaterialEditText edtComment = (MaterialEditText) order_address_comment.findViewById(R.id.edtComment); + + + alertDialog.setView(order_address_comment); alertDialog.setIcon(R.drawable.ic_baseline_shopping_cart_24); - alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() { + alertDialog.setPositiveButton("Đặt", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Create new Request @@ -106,6 +109,8 @@ public class Cart extends AppCompatActivity { Common.currentUser.getName(), edtAddress.getText().toString(), txtTotalPrice.getText().toString(), + "0", + edtComment.getText().toString(), cart ); @@ -120,7 +125,7 @@ public class Cart extends AppCompatActivity { } }); - alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() { + alertDialog.setNegativeButton("Thoát", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Request.java b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Request.java index 08e3114..7a8943e 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Model/Request.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Model/Request.java @@ -8,26 +8,20 @@ public class Request { private String address; private String total; private String status; + private String comment; private List foods; // list of food order public Request() { } - public Request(String phone, String name, String address, String total, List foods) { + public Request(String phone, String name, String address, String total, String status, String comment, 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; + this.comment = comment; + this.foods = foods; } public String getPhone() { @@ -62,6 +56,22 @@ public class Request { this.total = total; } + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + public List getFoods() { return foods; } diff --git a/Foodify/app/src/main/res/layout/order_address_comment.xml b/Foodify/app/src/main/res/layout/order_address_comment.xml new file mode 100644 index 0000000..61c7454 --- /dev/null +++ b/Foodify/app/src/main/res/layout/order_address_comment.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/FoodifyServer/app/src/main/AndroidManifest.xml b/FoodifyServer/app/src/main/AndroidManifest.xml index 6c4edc7..88dbf8a 100644 --- a/FoodifyServer/app/src/main/AndroidManifest.xml +++ b/FoodifyServer/app/src/main/AndroidManifest.xml @@ -16,10 +16,14 @@ android:supportsRtl="true" android:theme="@style/Theme.FoodifyServer" tools:targetApi="31"> + + + android:exported="true" /> foods; // list of food order public Request() { } - public Request(String phone, String name, String address, String total, List foods) { + public Request(String phone, String name, String address, String total, String status, String comment, 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; + this.comment = comment; + this.foods = foods; } public String getPhone() { @@ -62,11 +56,27 @@ public class Request { this.total = total; } - public List getFoods() { + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getFoods() { return foods; } - public void setFoods(List foods) { + public void setFoods(List foods) { this.foods = foods; } } diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderDetail.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderDetail.java new file mode 100644 index 0000000..351cfc0 --- /dev/null +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderDetail.java @@ -0,0 +1,51 @@ +package com.waterbase.foodifyServer; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.os.Bundle; +import android.widget.TextView; + +import com.waterbase.foodifyServer.Common.Common; +import com.waterbase.foodifyServer.Model.Order; +import com.waterbase.foodifyServer.ViewHolder.OrderDetailAdapter; + +public class OrderDetail extends AppCompatActivity { + + TextView order_id, order_phone, order_address, order_total, order_comment; + String order_id_value = ""; + RecyclerView lstFoods; + RecyclerView.LayoutManager layoutManager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_order_detail); + + order_id = (TextView) findViewById(R.id.order_id); + order_phone = (TextView) findViewById(R.id.order_phone); + order_address = (TextView) findViewById(R.id.order_address); + order_total = (TextView) findViewById(R.id.order_total); + order_comment = (TextView) findViewById(R.id.order_comment); + + lstFoods = (RecyclerView) findViewById(R.id.lstFoods); + lstFoods.setHasFixedSize(true); + layoutManager = new LinearLayoutManager(this); + lstFoods.setLayoutManager(layoutManager); + + if(getIntent() != null) + order_id_value = getIntent().getStringExtra("OrderId"); + + //Set value + order_id.setText(order_id_value); + order_phone.setText(Common.currentRequest.getPhone()); + order_total.setText(Common.currentRequest.getTotal()); + order_address.setText(Common.currentRequest.getAddress()); + order_comment.setText(Common.currentRequest.getComment()); + + OrderDetailAdapter adapter = new OrderDetailAdapter(Common.currentRequest.getFoods()); + adapter.notifyDataSetChanged(); + lstFoods.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java index d9b509b..3f83229 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java @@ -69,9 +69,16 @@ public class OrderStatus extends AppCompatActivity { viewHolder.setItemClickListener(new ItemClickListener() { @Override public void onClick(View view, int position, boolean isLongClick) { - Intent trackingOrder = new Intent(OrderStatus.this, TrackingOrder.class); - Common.currentRequest = model; - startActivity(trackingOrder); + if(!isLongClick){ + Intent trackingOrder = new Intent(OrderStatus.this, TrackingOrder.class); + Common.currentRequest = model; + startActivity(trackingOrder); + } else { + Intent orderDetail = new Intent(OrderStatus.this, OrderDetail.class); + Common.currentRequest = model; + orderDetail.putExtra("OrderId", adapter.getRef(position).getKey()); + startActivity(orderDetail); + } } }); } diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderDetailAdapter.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderDetailAdapter.java new file mode 100644 index 0000000..9340a26 --- /dev/null +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderDetailAdapter.java @@ -0,0 +1,59 @@ +package com.waterbase.foodifyServer.ViewHolder; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.waterbase.foodifyServer.Model.Order; +import com.waterbase.foodifyServer.R; + +import java.util.List; + +class MyViewHolder extends RecyclerView.ViewHolder { + + public TextView name, quantity, price, discount; + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + name = (TextView) itemView.findViewById(R.id.product_name); + quantity = (TextView) itemView.findViewById(R.id.product_quantity); + price = (TextView) itemView.findViewById(R.id.product_price); + discount = (TextView) itemView.findViewById(R.id.product_discount); + } +} + +public class OrderDetailAdapter extends RecyclerView.Adapter{ + + List myOrders; + + public OrderDetailAdapter(List myOrders) { + this.myOrders = myOrders; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.order_detail_layout, parent, false); + return new MyViewHolder(itemView); + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { + Order order = myOrders.get(position); + holder.name.setText(String.format("Name: %s", order.getProductName())); + holder.quantity.setText(String.format("Quantity: %s", order.getQuantity())); + holder.price.setText(String.format("Price: %s", order.getPrice())); + holder.discount.setText(String.format("Discount: %s", order.getDiscount())); + + } + + @Override + public int getItemCount() { + return myOrders.size(); + } +} 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 index 7399a6f..d33e4da 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderViewHolder.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/ViewHolder/OrderViewHolder.java @@ -10,7 +10,8 @@ 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 class OrderViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener, +View.OnLongClickListener{ public TextView txtOrderId, txtOrderStatus, txtOrderPhone, txtOrderAddress; @@ -26,6 +27,7 @@ public class OrderViewHolder extends RecyclerView.ViewHolder implements View.OnC itemView.setOnClickListener(this); itemView.setOnCreateContextMenuListener(this); + itemView.setOnLongClickListener(this); } public void setItemClickListener(ItemClickListener itemClickListener) { @@ -44,4 +46,10 @@ public class OrderViewHolder extends RecyclerView.ViewHolder implements View.OnC contextMenu.add(0,0, getAdapterPosition(), "Cập nhật"); contextMenu.add(0,1, getAdapterPosition(), "Xoá"); } + + @Override + public boolean onLongClick(View view) { + itemClickListener.onClick(view, getAdapterPosition(), true); + return true; + } } diff --git a/FoodifyServer/app/src/main/res/layout/activity_order_detail.xml b/FoodifyServer/app/src/main/res/layout/activity_order_detail.xml new file mode 100644 index 0000000..9a62aee --- /dev/null +++ b/FoodifyServer/app/src/main/res/layout/activity_order_detail.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/FoodifyServer/app/src/main/res/layout/order_detail_layout.xml b/FoodifyServer/app/src/main/res/layout/order_detail_layout.xml new file mode 100644 index 0000000..f619697 --- /dev/null +++ b/FoodifyServer/app/src/main/res/layout/order_detail_layout.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file