diff --git a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/BannerActivity.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/BannerActivity.java index 9a8fa7c..0a41434 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/BannerActivity.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/BannerActivity.java @@ -6,9 +6,11 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import android.content.DialogInterface; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; @@ -17,6 +19,7 @@ import android.widget.Toast; import com.firebase.ui.database.FirebaseRecyclerAdapter; import com.firebase.ui.database.FirebaseRecyclerOptions; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.firebase.database.ChildEventListener; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; @@ -24,10 +27,12 @@ import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; -import com.rengwuxian.materialedittext.MaterialEditText; +import com.jaredrummler.materialspinner.MaterialSpinner; import com.squareup.picasso.Picasso; +import com.waterbase.foodifyServer.Common.Common; import com.waterbase.foodifyServer.Model.Banner; import com.waterbase.foodifyServer.Model.Food; +import com.waterbase.foodifyServer.Model.Request; import com.waterbase.foodifyServer.ViewHolder.BannerViewHolder; import java.util.ArrayList; @@ -37,6 +42,9 @@ import info.hoang8f.widget.FButton; public class BannerActivity extends AppCompatActivity { + FirebaseDatabase database = FirebaseDatabase.getInstance(); + DatabaseReference foods = database.getReference("Foods"); + RecyclerView recyclerView; RecyclerView.LayoutManager layoutManager; @@ -53,13 +61,13 @@ public class BannerActivity extends AppCompatActivity { FirebaseRecyclerAdapter adapter; //Add new Banner - MaterialEditText edtName, edtFoodId; - FButton btnUpload, btnSelect; + MaterialSpinner foodListSpinner; Banner newBanner; Uri filePath; List foodList = new ArrayList<>(); + List foodName = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -83,6 +91,7 @@ public class BannerActivity extends AppCompatActivity { fab.setOnClickListener((view) -> { showAddBanner(); }); loadListBanner(); + loadListFood(); } private void loadListBanner() { @@ -115,8 +124,6 @@ public class BannerActivity extends AppCompatActivity { } private void loadListFood() { - FirebaseDatabase database = FirebaseDatabase.getInstance(); - DatabaseReference foods = database.getReference("Foods"); foods.addValueEventListener(new ValueEventListener() { @Override @@ -124,8 +131,12 @@ public class BannerActivity extends AppCompatActivity { for(DataSnapshot snapshot: dataSnapshot.getChildren()){ Food food = snapshot.getValue(Food.class); foodList.add(food); - adapter.notifyDataSetChanged(); } + + foodName = new ArrayList(); + + for(Food food: foodList) + foodName.add(food.getName()); } @Override @@ -146,9 +157,243 @@ public class BannerActivity extends AppCompatActivity { alertDialog.setTitle("Thêm ảnh bìa"); alertDialog.setMessage("Chọn món ăn bạn muốn thêm:"); - loadListFood(); + LayoutInflater inflater = this.getLayoutInflater(); + View view = inflater.inflate(R.layout.add_new_banner, null); + + foodListSpinner = view.findViewById(R.id.foodList); + + foodListSpinner.setItems(foodName); + alertDialog.setView(view); + alertDialog.setIcon(R.drawable.ic_baseline_laptop_24); + + alertDialog.setPositiveButton("Thêm", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + //Get Object Food has selected + Food foodSelectedName = foodList.get(foodListSpinner.getSelectedIndex()); + + //Get key Food Id from Firebase + foods.addChildEventListener(new ChildEventListener() { + @Override + public void onChildAdded(DataSnapshot dataSnapshot, String s) { + if(dataSnapshot.exists()) + { + String pushKey = dataSnapshot.getKey(); + foods.child(pushKey).addChildEventListener(new ChildEventListener() { + @Override + public void onChildAdded(DataSnapshot dataSnapshot, String s) { + if(dataSnapshot.exists()) + { + if(dataSnapshot.getKey().equals("name")) + { + if(dataSnapshot.getValue().toString().equals(foodSelectedName.getName())){ + //Create new Object banner + newBanner = new Banner(); + newBanner.setId(pushKey); + newBanner.setName(foodSelectedName.getName()); + newBanner.setImage(foodSelectedName.getImage()); + + if(newBanner != null) + //Push Banner to Firebase + banners.push().setValue(newBanner); + } + } + } + } + + @Override + public void onChildChanged(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onChildRemoved(DataSnapshot dataSnapshot) { + + } + + @Override + public void onChildMoved(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onCancelled(DatabaseError databaseError) { + + } + }); + } + } + + @Override + public void onChildChanged(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onChildRemoved(DataSnapshot dataSnapshot) { + + } + + @Override + public void onChildMoved(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onCancelled(DatabaseError databaseError) { + + } + }); + + } + }); + + alertDialog.setNegativeButton("Thoát", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + + alertDialog.show(); + + } + + @Override + public boolean onContextItemSelected(@NonNull MenuItem item) { + if(item.getTitle().equals(Common.UPDATE)) + { + showUpdateBannerDialog(adapter.getRef(item.getOrder()).getKey(), adapter.getItem(item.getOrder())); + } + else if(item.getTitle().equals(Common.DELETE)) + { + deleteBanner(adapter.getRef(item.getOrder()).getKey()); + } + return super.onContextItemSelected(item); + } + + private void deleteBanner(String key) { + banners.child(key).removeValue(); + } + + private void showUpdateBannerDialog(String key, Banner item) { + final AlertDialog.Builder alertDialog = new AlertDialog.Builder(BannerActivity.this); + alertDialog.setTitle("Cập nhật ảnh bìa"); + alertDialog.setMessage("Vui lòng chọn món ăn bạn muốn cập nhật:"); + LayoutInflater inflater = this.getLayoutInflater(); - View add_menu_layout = inflater.inflate(R.layout.add_new_banner, null); + final View view = inflater.inflate(R.layout.add_new_banner, null); + + foodListSpinner = view.findViewById(R.id.foodList); + foodListSpinner.setItems(foodName); + + banners.orderByKey().equalTo(key) + .addValueEventListener(new ValueEventListener() { + @Override + public void onDataChange(DataSnapshot dataSnapshot) { + for(DataSnapshot postSnapShot: dataSnapshot.getChildren()) { + Banner data = postSnapShot.getValue(Banner.class); + foodListSpinner.setSelectedIndex(foodName.indexOf(data.getName())); + } + } + + @Override + public void onCancelled(DatabaseError databaseError) { + Toast.makeText(BannerActivity.this, "Đã có lỗi từ hệ thống, vui lòng thử lại sau!", Toast.LENGTH_SHORT).show(); + } + }); + + alertDialog.setView(view); + + final String localKey = key; + + alertDialog.setPositiveButton("Cập nhật", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + //Get Object Food has selected + Food foodSelectedName = foodList.get(foodListSpinner.getSelectedIndex()); + + //Get key Food Id from Firebase + foods.addChildEventListener(new ChildEventListener() { + @Override + public void onChildAdded(DataSnapshot dataSnapshot, String s) { + if(dataSnapshot.exists()) + { + String pushKey = dataSnapshot.getKey(); + foods.child(pushKey).addChildEventListener(new ChildEventListener() { + @Override + public void onChildAdded(DataSnapshot dataSnapshot, String s) { + if(dataSnapshot.exists()) + { + if(dataSnapshot.getKey().equals("name")) + { + if(dataSnapshot.getValue().toString().equals(foodSelectedName.getName())){ + item.setId(pushKey); + item.setName(foodSelectedName.getName()); + item.setImage(foodSelectedName.getImage()); + + banners.child(localKey).setValue(item); + adapter.notifyDataSetChanged(); + } + } + } + } + + @Override + public void onChildChanged(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onChildRemoved(DataSnapshot dataSnapshot) { + + } + + @Override + public void onChildMoved(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onCancelled(DatabaseError databaseError) { + + } + }); + } + } + + @Override + public void onChildChanged(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onChildRemoved(DataSnapshot dataSnapshot) { + + } + + @Override + public void onChildMoved(DataSnapshot dataSnapshot, String s) { + + } + + @Override + public void onCancelled(DatabaseError databaseError) { + + } + }); + + } + }); + + 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/OrderStatus.java b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java index 4bd4b85..54a8281 100644 --- a/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java +++ b/FoodifyServer/app/src/main/java/com/waterbase/foodifyServer/OrderStatus.java @@ -164,6 +164,7 @@ public class OrderStatus extends AppCompatActivity { spinner = (MaterialSpinner) view.findViewById(R.id.statusSpinner); spinner.setItems("ĐÃ NHẬN ĐƠN", "ĐANG TRÊN ĐƯỜNG", "GIAO THÀNH CÔNG"); + //Set value default spinner requests.orderByKey().equalTo(key) .addValueEventListener(new ValueEventListener() { @Override diff --git a/FoodifyServer/app/src/main/res/layout/add_new_banner.xml b/FoodifyServer/app/src/main/res/layout/add_new_banner.xml index d2f4375..8c0b3e4 100644 --- a/FoodifyServer/app/src/main/res/layout/add_new_banner.xml +++ b/FoodifyServer/app/src/main/res/layout/add_new_banner.xml @@ -15,78 +15,11 @@ android:layout_margin="10dp" android:orientation="vertical"> - - - - - - - - - - - - + />