Merge API back-end to food detail screen

This commit is contained in:
Nezumi
2023-03-11 11:45:47 +07:00
parent 2e0d3c6c08
commit d917aa4f6a
29 changed files with 214 additions and 166 deletions
@@ -26,7 +26,7 @@ public interface FoodApi {
Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create(); Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create();
FoodApi apiService = new Retrofit.Builder() FoodApi apiService = new Retrofit.Builder()
.baseUrl("http://192.168.1.183:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl("http://10.0.2.2:8080/api/").addConverterFactory(GsonConverterFactory.create(gson))
.build() .build()
.create(FoodApi.class); .create(FoodApi.class);
@@ -51,7 +51,7 @@ public interface FoodApi {
@GET("products/categories") @GET("products/categories")
Call<Foods> listFoodByCategory(@Query("id") List<Integer> id, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir); Call<Foods> listFoodByCategory(@Query("id") List<Integer> id, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("detail/{id}") @GET("products/{id}")
Call<Food> detailFood(@Path("id") String id); Call<Food> detailFood(@Path("id") String id);
// @GET("detail/{id}/image") // @GET("detail/{id}/image")
@@ -21,7 +21,7 @@ import android.widget.Toast;
import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Address.Address; import com.capstone.foodify.Model.Address.Address;
import com.capstone.foodify.Model.Address.AddressAdapter; import com.capstone.foodify.Adapter.AddressAdapter;
import com.capstone.foodify.Model.DistrictWard.DistrictWardResponse; import com.capstone.foodify.Model.DistrictWard.DistrictWardResponse;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
@@ -25,8 +25,9 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Basket.Basket; import com.capstone.foodify.Model.Basket.Basket;
import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Image;
import com.capstone.foodify.Model.Review.Review; import com.capstone.foodify.Model.Review.Review;
import com.capstone.foodify.Model.Review.ReviewAdapter; import com.capstone.foodify.Adapter.ReviewAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.denzcoskun.imageslider.ImageSlider; import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.constants.ScaleTypes; import com.denzcoskun.imageslider.constants.ScaleTypes;
@@ -52,7 +53,6 @@ public class FoodDetailActivity extends AppCompatActivity {
private ImageView back_image, favourite_icon; private ImageView back_image, favourite_icon;
private String foodId = ""; private String foodId = "";
private Food food; private Food food;
private static final List<String> imageFood = new ArrayList<>();
private TextView foodName_txt, shopName_txt, discount_txt, price_txt, total_txt, countRating_txt, description_content_txt; private TextView foodName_txt, shopName_txt, discount_txt, price_txt, total_txt, countRating_txt, description_content_txt;
private ConstraintLayout content_view; private ConstraintLayout content_view;
private Button add_to_basket_button; private Button add_to_basket_button;
@@ -116,17 +116,17 @@ public class FoodDetailActivity extends AppCompatActivity {
@Override @Override
public void onValueChanged(int i) { public void onValueChanged(int i) {
if(totalPrice >= 0) if (totalPrice >= 0)
totalPrice = price * i; totalPrice = price * i;
add_to_basket_button.setText("Add to basket - " + Common.changeCurrencyUnit(totalPrice)); add_to_basket_button.setText("Add to basket - " + Common.changeCurrencyUnit(totalPrice));
} }
}); });
//Get data //Get data
if(getIntent() != null) if (getIntent() != null)
foodId = getIntent().getStringExtra("FoodId"); foodId = getIntent().getStringExtra("FoodId");
getImageFoodById(foodId); getFoodById(foodId);
//Turn previous action when click //Turn previous action when click
back_image.setOnClickListener(new View.OnClickListener() { back_image.setOnClickListener(new View.OnClickListener() {
@@ -148,38 +148,42 @@ public class FoodDetailActivity extends AppCompatActivity {
add_to_basket_button.setOnClickListener(new View.OnClickListener() { add_to_basket_button.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
// if(horizontalQuantitizer.getValue() > 0){ if(horizontalQuantitizer.getValue() > 0){
// Basket foodInBasket = getFoodExistInBasket(food.getId()); Basket foodInBasket = Common.getFoodExistInBasket(food.getId());
// if(foodInBasket == null){ if(foodInBasket == null){
// //If item is not exist in basket //If item is not exist in basket
// Common.LIST_BASKET_FOOD.add(new Basket(food.getId(), imageFood.get(0), food.getName(), food.getPrice(), "Shop Name",
// String.valueOf(horizontalQuantitizer.getValue()), "0")); //Check food image is null or not
// Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); String imageTemp = null;
// startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); if(food.getImages().size() > 0)
// } else { imageTemp = food.getImages().get(0).getImageUrl();
// //If item is exist in basket
// Common.LIST_BASKET_FOOD.add(new Basket(food.getId(), imageTemp, food.getName(), food.getCost(), food.getShop().getName(),
// for(int i = 0; i < Common.LIST_BASKET_FOOD.size(); i++){ String.valueOf(horizontalQuantitizer.getValue()), food.getDiscountPercent()));
// String foodId = Common.LIST_BASKET_FOOD.get(i).getId(); } else {
// //Find foodId exist //If item is exist in basket
// if(foodId.equals(food.getId())){
// //Get quantity food from basket for(int i = 0; i < Common.LIST_BASKET_FOOD.size(); i++){
// String quantity = Common.LIST_BASKET_FOOD.get(i).getQuantity(); String foodId = Common.LIST_BASKET_FOOD.get(i).getId();
// //Find foodId exist
// //Change quantity food from basket if(foodId.equals(food.getId())){
// int quantityInt = Integer.parseInt(quantity) + horizontalQuantitizer.getValue(); //Get quantity food from basket
// Common.LIST_BASKET_FOOD.get(i).setQuantity(String.valueOf(quantityInt)); String quantity = Common.LIST_BASKET_FOOD.get(i).getQuantity();
// break;
// } //Change quantity food from basket
// } int quantityInt = Integer.parseInt(quantity) + horizontalQuantitizer.getValue();
// Common.LIST_BASKET_FOOD.get(i).setQuantity(String.valueOf(quantityInt));
// Toast.makeText(FoodDetailActivity.this, "Thêm vào giỏ hàng thành công!", Toast.LENGTH_SHORT).show(); break;
// startActivity(new Intent(FoodDetailActivity.this, MainActivity.class)); }
// } }
//
// } else { }
// Toast.makeText(FoodDetailActivity.this, "Bạn chưa chọn số lượng đồ ăn cần đặt!", Toast.LENGTH_SHORT).show(); Toast.makeText(FoodDetailActivity.this, "Đã thêm " + food.getName() + " vào giỏ hàng!", Toast.LENGTH_SHORT).show();
// } startActivity(new Intent(FoodDetailActivity.this, MainActivity.class));
} else {
Toast.makeText(FoodDetailActivity.this, "Bạn chưa chọn số lượng đồ ăn cần đặt!", Toast.LENGTH_SHORT).show();
}
} }
}); });
@@ -192,11 +196,7 @@ public class FoodDetailActivity extends AppCompatActivity {
}); });
} }
private Basket getFoodExistInBasket(String foodId){ private List<Review> getListReview() {
return Common.LIST_BASKET_FOOD.stream().filter(food -> foodId.equals(food.getId())).findFirst().orElse(null);
}
private List<Review> getListReview(){
ArrayList<Review> listReview = new ArrayList<>(); ArrayList<Review> listReview = new ArrayList<>();
listReview.add(new Review("User A", 5, "Very Good!")); listReview.add(new Review("User A", 5, "Very Good!"));
@@ -221,33 +221,43 @@ public class FoodDetailActivity extends AppCompatActivity {
popupDialog.dismissDialog(); popupDialog.dismissDialog();
} }
private void initData(){ private void initData() {
// price = Float.parseFloat(food.getPrice()); //Set data price to calculate
// price = food.getCost();
// foodName_txt.setText(food.getName());
// shopName_txt.setText("Shop Name");
// price_txt.setText(Common.changeCurrencyUnit(Float.parseFloat(food.getPrice())));
// discount_txt.setText("-" + food.getDiscount() + "%");
// description_content_txt.setText(food.getDescription());
// countRating_txt.setText(food.getReviewCount() + " rating");
//
// add_to_basket_button.setText("ADD TO BASKET - " + Common.changeCurrencyUnit(0));
//
// List<SlideModel> slideModels = new ArrayList<>();
// if(imageFood != null){
// for(String imageUrl: imageFood)
// slideModels.add(new SlideModel(imageUrl, null));
// }
// imageSlider.setImageList(slideModels, ScaleTypes.FIT);
foodName_txt.setText(food.getName());
shopName_txt.setText(food.getShop().getName());
price_txt.setText(Common.changeCurrencyUnit(food.getCost()));
description_content_txt.setText(food.getDescription());
countRating_txt.setText(food.getReviewCount() + " rating");
add_to_basket_button.setText("ADD TO BASKET - " + Common.changeCurrencyUnit(0));
//Set slider image food
List<SlideModel> slideModels = new ArrayList<>();
//Get image food
if (food.getImages().size() > 0) {
for (Image imageUrl : food.getImages())
slideModels.add(new SlideModel(imageUrl.getImageUrl(), null));
} else {
slideModels.add(new SlideModel(R.drawable.dish, null));
}
imageSlider.setImageList(slideModels, ScaleTypes.FIT);
//Show discount percent when value greater than 0
if (food.getDiscountPercent() > 0) {
discount_txt.setText("-" + food.getDiscountPercent() + "%");
} else {
discount_txt.setVisibility(View.GONE);
}
} }
private void getFoodById(String foodId){ private void getFoodById(String foodId) {
FoodApi.apiService.detailFood(foodId).enqueue(new Callback<Food>() { FoodApi.apiService.detailFood(foodId).enqueue(new Callback<Food>() {
@Override @Override
public void onResponse(Call<Food> call, Response<Food> response) { public void onResponse(Call<Food> call, Response<Food> response) {
Food tempFood = response.body(); Food tempFood = response.body();
if(tempFood != null) if (tempFood != null)
food = tempFood; food = tempFood;
initData(); initData();
@@ -261,29 +271,6 @@ public class FoodDetailActivity extends AppCompatActivity {
}); });
} }
private void getImageFoodById(String foodId) {
// FoodApi.apiService.getImageFoodById(foodId).enqueue(new Callback<List<ImageFood>>() {
// @Override
// public void onResponse(Call<List<ImageFood>> call, Response<List<ImageFood>> response) {
// List<ImageFood> imageFoodData = response.body();
// if (imageFoodData != null){
// imageFood.clear();
// for(ImageFood imageFoodTemp: imageFoodData){
// imageFood.add(imageFoodTemp.getImageUrl());
// }
// }
//
// getFoodById(foodId);
// }
//
// @Override
// public void onFailure(Call<List<ImageFood>> call, Throwable t) {
// Toast.makeText(FoodDetailActivity.this, "Lỗi Image" + t, Toast.LENGTH_SHORT).show();
// }
// });
}
private void openReviewDialog(int gravity){ private void openReviewDialog(int gravity){
final Dialog dialog = new Dialog(this); final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
@@ -318,7 +305,7 @@ public class FoodDetailActivity extends AppCompatActivity {
} }
}); });
//TO DO //TODO: Update review dialog
dialog.show(); dialog.show();
} }
@@ -10,7 +10,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.capstone.foodify.Model.Order.OrderDetail; import com.capstone.foodify.Model.Order.OrderDetail;
import com.capstone.foodify.Model.Order.OrderDetailAdapter; import com.capstone.foodify.Adapter.OrderDetailAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -10,10 +10,8 @@ import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Food.FoodFavoriteAdapter; import com.capstone.foodify.Adapter.FoodShopAdapter;
import com.capstone.foodify.Model.Food.FoodShopAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.util.ArrayList; import java.util.ArrayList;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Address; package com.capstone.foodify.Adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -9,7 +9,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Model.Food.FoodAdapter; import com.capstone.foodify.Model.Address.Address;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.List; import java.util.List;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Basket; package com.capstone.foodify.Adapter;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
@@ -14,13 +14,12 @@ import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Fragment.BasketFragment; import com.capstone.foodify.Fragment.BasketFragment;
import com.capstone.foodify.Model.Basket.Basket;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton; import com.cepheuen.elegantnumberbutton.view.ElegantNumberButton;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.text.NumberFormat;
import java.util.List; import java.util.List;
import java.util.Locale;
public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.BasketViewHolder> { public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.BasketViewHolder> {
@@ -35,7 +34,7 @@ public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.BasketView
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
public void setData(List<Basket> listBasketFood){ public void setData(List<Basket> listBasketFood){
this.listBasketFood = listBasketFood; this.listBasketFood = listBasketFood;
notifyDataSetChanged(); this.notifyDataSetChanged();
} }
@NonNull @NonNull
@@ -55,7 +54,7 @@ public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.BasketView
//Init data //Init data
holder.foodName.setText(foodBasket.getName()); holder.foodName.setText(foodBasket.getName());
holder.shopName.setText(foodBasket.getShopName()); holder.shopName.setText(foodBasket.getShopName());
holder.price.setText(Common.changeCurrencyUnit(Float.parseFloat(foodBasket.getPrice()))); holder.price.setText(Common.changeCurrencyUnit(foodBasket.getCost()));
Picasso.get().load(foodBasket.getImg()).into(holder.imageView); Picasso.get().load(foodBasket.getImg()).into(holder.imageView);
holder.quantity.setNumber(foodBasket.getQuantity()); holder.quantity.setNumber(foodBasket.getQuantity());
@@ -83,7 +82,7 @@ public class BasketAdapter extends RecyclerView.Adapter<BasketAdapter.BasketView
float total = 0; float total = 0;
for(Basket foodTemp: listBasketFood){ for(Basket foodTemp: listBasketFood){
total += (Float.parseFloat(foodTemp.getPrice())) * (Float.parseFloat(foodTemp.getQuantity())) * (100 - Long.parseLong(foodTemp.getDiscount()))/100; total += (foodTemp.getCost()) * (Float.parseFloat(foodTemp.getQuantity())) * (100 - foodTemp.getDiscount())/100;
} }
basketFragment.total.setText(Common.changeCurrencyUnit(total)); basketFragment.total.setText(Common.changeCurrencyUnit(total));
} }
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Food; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Activity.FoodDetailActivity; import com.capstone.foodify.Activity.FoodDetailActivity;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Food; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -10,16 +10,11 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.squareup.picasso.Picasso;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List; import java.util.List;
@@ -1,16 +1,22 @@
package com.capstone.foodify.Model.Food; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Activity.FoodDetailActivity;
import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Basket.Basket;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
@@ -78,6 +84,53 @@ public class FoodSearchAdapter extends RecyclerView.Adapter<FoodSearchAdapter.Fo
} }
holder.price.setText(Common.changeCurrencyUnit(cost)); holder.price.setText(Common.changeCurrencyUnit(cost));
//Set event basket icon
holder.basket_icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Basket foodInBasket = Common.getFoodExistInBasket(food.getId());
if(foodInBasket == null){
//If item is not exist in basket
//Check food image is null or not
String imageTemp = null;
if(food.getImages().size() > 0)
imageTemp = food.getImages().get(0).getImageUrl();
Common.LIST_BASKET_FOOD.add(new Basket(food.getId(), imageTemp, food.getName(), food.getCost(), food.getShop().getName(),
"1", food.getDiscountPercent()));
} else {
//If item is exist in basket
for(int i = 0; i < Common.LIST_BASKET_FOOD.size(); i++){
String foodId = Common.LIST_BASKET_FOOD.get(i).getId();
//Find foodId exist
if(foodId.equals(food.getId())){
//Get quantity food from basket
String quantity = Common.LIST_BASKET_FOOD.get(i).getQuantity();
//Change quantity food from basket
int quantityInt = Integer.parseInt(quantity) + 1;
Common.LIST_BASKET_FOOD.get(i).setQuantity(String.valueOf(quantityInt));
break;
}
}
}
Toast.makeText(context, "Đã thêm " + food.getName() + " vào giỏ hàng!", Toast.LENGTH_SHORT).show();
}
});
//Set event when user click to item food, it will move to screen detail
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, FoodDetailActivity.class);
intent.putExtra("FoodId", food.getId());
context.startActivity(intent);
}
});
} }
@Override @Override
@@ -90,7 +143,7 @@ public class FoodSearchAdapter extends RecyclerView.Adapter<FoodSearchAdapter.Fo
public static class FoodViewHolder extends RecyclerView.ViewHolder{ public static class FoodViewHolder extends RecyclerView.ViewHolder{
private final ImageView image; private final ImageView image, basket_icon;
private final TextView price, name, discount; private final TextView price, name, discount;
public FoodViewHolder(@NonNull View itemView) { public FoodViewHolder(@NonNull View itemView) {
@@ -100,6 +153,7 @@ public class FoodSearchAdapter extends RecyclerView.Adapter<FoodSearchAdapter.Fo
name = itemView.findViewById(R.id.food_name_text_view); name = itemView.findViewById(R.id.food_name_text_view);
price = itemView.findViewById(R.id.price_text_view); price = itemView.findViewById(R.id.price_text_view);
discount = itemView.findViewById(R.id.discount); discount = itemView.findViewById(R.id.discount);
basket_icon = itemView.findViewById(R.id.basket_icon);
} }
} }
} }
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Food; package com.capstone.foodify.Adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -9,9 +9,8 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.squareup.picasso.Picasso;
import java.util.List; import java.util.List;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Menu; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -10,7 +10,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Model.Food.FoodAdapter; import com.capstone.foodify.Model.Menu.Menu;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.List; import java.util.List;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Order; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Activity.OrderDetailActivity; import com.capstone.foodify.Activity.OrderDetailActivity;
import com.capstone.foodify.Model.Order.Order;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Order; package com.capstone.foodify.Adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -9,6 +9,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Model.Order.OrderDetail;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Basket; package com.capstone.foodify.Adapter;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.view.View; import android.view.View;
@@ -8,6 +8,7 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Adapter.BasketAdapter;
import com.capstone.foodify.ItemTouchHelperListener; import com.capstone.foodify.ItemTouchHelperListener;
public class RecyclerViewItemTouchHelperBasketFood extends ItemTouchHelper.SimpleCallback{ public class RecyclerViewItemTouchHelperBasketFood extends ItemTouchHelper.SimpleCallback{
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Food; package com.capstone.foodify.Adapter;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.view.View; import android.view.View;
@@ -9,7 +9,6 @@ import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.ItemTouchHelperListener; import com.capstone.foodify.ItemTouchHelperListener;
import com.capstone.foodify.Model.Food.FoodFavoriteAdapter;
public class RecyclerViewItemTouchHelperFavoriteFood extends ItemTouchHelper.SimpleCallback{ public class RecyclerViewItemTouchHelperFavoriteFood extends ItemTouchHelper.SimpleCallback{
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Review; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -9,7 +9,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Model.Menu.MenuAdapter; import com.capstone.foodify.Model.Review.Review;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.willy.ratingbar.ScaleRatingBar; import com.willy.ratingbar.ScaleRatingBar;
@@ -1,4 +1,4 @@
package com.capstone.foodify.Model.Shop; package com.capstone.foodify.Adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Activity.ShopDetailActivity; import com.capstone.foodify.Activity.ShopDetailActivity;
import com.capstone.foodify.Model.Shop.Shop;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
@@ -69,4 +69,8 @@ public class Common {
}) })
.show(); .show();
} }
public static Basket getFoodExistInBasket(String foodId) {
return Common.LIST_BASKET_FOOD.stream().filter(food -> foodId.equals(food.getId())).findFirst().orElse(null);
}
} }
@@ -7,7 +7,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@@ -19,8 +18,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.ItemTouchHelperListener; import com.capstone.foodify.ItemTouchHelperListener;
import com.capstone.foodify.Model.Basket.Basket; import com.capstone.foodify.Model.Basket.Basket;
import com.capstone.foodify.Model.Basket.BasketAdapter; import com.capstone.foodify.Adapter.BasketAdapter;
import com.capstone.foodify.Model.Basket.RecyclerViewItemTouchHelperBasketFood; import com.capstone.foodify.Adapter.RecyclerViewItemTouchHelperBasketFood;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
@@ -57,11 +56,7 @@ public class BasketFragment extends Fragment implements ItemTouchHelperListener
getListBasketFood(); getListBasketFood();
//Check list basket is null or not! //Check list basket is null or not!
if(Common.LIST_BASKET_FOOD.size() > 0){ checkListBasket();
showRecycleViewAndHideNotificationEmpty();
} else {
hideRecyclerViewAndShowNotificationEmpty();
}
//Set layout recyclerview //Set layout recyclerview
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
@@ -76,6 +71,14 @@ public class BasketFragment extends Fragment implements ItemTouchHelperListener
return view; return view;
} }
private void checkListBasket() {
if(Common.LIST_BASKET_FOOD.size() > 0){
showRecycleViewAndHideNotificationEmpty();
} else {
hideRecyclerViewAndShowNotificationEmpty();
}
}
private void showRecycleViewAndHideNotificationEmpty(){ private void showRecycleViewAndHideNotificationEmpty(){
recyclerView_basket_food.setVisibility(View.VISIBLE); recyclerView_basket_food.setVisibility(View.VISIBLE);
empty_layout.setVisibility(View.GONE); empty_layout.setVisibility(View.GONE);
@@ -114,4 +117,14 @@ public class BasketFragment extends Fragment implements ItemTouchHelperListener
snackbar.show(); snackbar.show();
} }
} }
@Override
public void onResume() {
super.onResume();
listBasketFood = Common.LIST_BASKET_FOOD;
adapter.setData(listBasketFood);
checkListBasket();
}
} }
@@ -20,9 +20,9 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.ItemTouchHelperListener; import com.capstone.foodify.ItemTouchHelperListener;
import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Food.FoodFavoriteAdapter; import com.capstone.foodify.Adapter.FoodFavoriteAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.capstone.foodify.Model.Food.RecyclerViewItemTouchHelperFavoriteFood; import com.capstone.foodify.Adapter.RecyclerViewItemTouchHelperFavoriteFood;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList; import java.util.ArrayList;
@@ -1,13 +1,11 @@
package com.capstone.foodify.Fragment; package com.capstone.foodify.Fragment;
import android.os.Bundle; import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -16,23 +14,18 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Menu.Menu; import com.capstone.foodify.Model.Menu.Menu;
import com.capstone.foodify.Model.Menu.MenuAdapter; import com.capstone.foodify.Adapter.MenuAdapter;
import com.capstone.foodify.Model.Response.Foods; import com.capstone.foodify.Model.Response.Foods;
import com.capstone.foodify.Model.Response.Shops; import com.capstone.foodify.Model.Response.Shops;
import com.capstone.foodify.Model.Shop.Shop; import com.capstone.foodify.Model.Shop.Shop;
import com.capstone.foodify.Model.Shop.ShopAdapter; import com.capstone.foodify.Adapter.ShopAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.denzcoskun.imageslider.ImageSlider; import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.constants.ScaleTypes; import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.models.SlideModel; import com.denzcoskun.imageslider.models.SlideModel;
import com.thecode.aestheticdialogs.AestheticDialog;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
import com.thecode.aestheticdialogs.OnDialogClickListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
@@ -3,7 +3,6 @@ package com.capstone.foodify.Fragment.Order;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -12,7 +11,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.capstone.foodify.Model.Order.Order; import com.capstone.foodify.Model.Order.Order;
import com.capstone.foodify.Model.Order.OrderAdapter; import com.capstone.foodify.Adapter.OrderAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.ArrayList; import java.util.ArrayList;
@@ -3,7 +3,6 @@ package com.capstone.foodify.Fragment.Order;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -12,7 +11,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.capstone.foodify.Model.Order.Order; import com.capstone.foodify.Model.Order.Order;
import com.capstone.foodify.Model.Order.OrderAdapter; import com.capstone.foodify.Adapter.OrderAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.ArrayList; import java.util.ArrayList;
@@ -3,7 +3,6 @@ package com.capstone.foodify.Fragment.Order;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -12,7 +11,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.capstone.foodify.Model.Order.Order; import com.capstone.foodify.Model.Order.Order;
import com.capstone.foodify.Model.Order.OrderAdapter; import com.capstone.foodify.Adapter.OrderAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.ArrayList; import java.util.ArrayList;
@@ -3,7 +3,6 @@ package com.capstone.foodify.Fragment.Order;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -12,7 +11,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.capstone.foodify.Model.Order.Order; import com.capstone.foodify.Model.Order.Order;
import com.capstone.foodify.Model.Order.OrderAdapter; import com.capstone.foodify.Adapter.OrderAdapter;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import java.util.ArrayList; import java.util.ArrayList;
@@ -1,7 +1,5 @@
package com.capstone.foodify.Fragment; package com.capstone.foodify.Fragment;
import static com.capstone.foodify.Fragment.HomeFragment.listFood;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -17,7 +15,6 @@ import androidx.appcompat.widget.SearchView;
import androidx.core.widget.NestedScrollView; import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@@ -25,13 +22,12 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common; import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Category.Category; import com.capstone.foodify.Model.Category.Category;
import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Food.FoodSearchAdapter; import com.capstone.foodify.Adapter.FoodSearchAdapter;
import com.capstone.foodify.Model.Response.Foods; import com.capstone.foodify.Model.Response.Foods;
import com.capstone.foodify.R; import com.capstone.foodify.R;
import com.google.android.material.chip.Chip; import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup; import com.google.android.material.chip.ChipGroup;
import java.nio.file.LinkOption;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -4,16 +4,16 @@ public class Basket {
private String id; private String id;
private String img; private String img;
private String name; private String name;
private String price; private float cost;
private String shopName; private String shopName;
private String quantity; private String quantity;
private String discount; private float discount;
public Basket(String id, String img, String name, String price, String shopName, String quantity, String discount) { public Basket(String id, String img, String name, float cost, String shopName, String quantity, float discount) {
this.id = id; this.id = id;
this.img = img; this.img = img;
this.name = name; this.name = name;
this.price = price; this.cost = cost;
this.shopName = shopName; this.shopName = shopName;
this.quantity = quantity; this.quantity = quantity;
this.discount = discount; this.discount = discount;
@@ -43,12 +43,12 @@ public class Basket {
this.name = name; this.name = name;
} }
public String getPrice() { public float getCost() {
return price; return cost;
} }
public void setPrice(String price) { public void setCost(float cost) {
this.price = price; this.cost = cost;
} }
public String getShopName() { public String getShopName() {
@@ -66,11 +66,12 @@ public class Basket {
public void setQuantity(String quantity) { public void setQuantity(String quantity) {
this.quantity = quantity; this.quantity = quantity;
} }
public String getDiscount() {
public float getDiscount() {
return discount; return discount;
} }
public void setDiscount(String discount) { public void setDiscount(float discount) {
this.discount = discount; this.discount = discount;
} }
} }
@@ -2,6 +2,7 @@ package com.capstone.foodify.Model.Shop;
public class Shop { public class Shop {
private int id; private int id;
private String name;
private String description; private String description;
private String imageUrl; private String imageUrl;
private boolean isEnabled; private boolean isEnabled;
@@ -16,6 +17,14 @@ public class Shop {
this.id = id; this.id = id;
} }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() { public String getDescription() {
return description; return description;
} }