diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..21267b0
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApi.java b/app/src/main/java/com/capstone/foodify/API/FoodApi.java
index 53c1b78..a5f756e 100644
--- a/app/src/main/java/com/capstone/foodify/API/FoodApi.java
+++ b/app/src/main/java/com/capstone/foodify/API/FoodApi.java
@@ -6,6 +6,7 @@ import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Response.Foods;
import com.capstone.foodify.Model.Response.Shops;
import com.capstone.foodify.Model.Shop.Shop;
+import com.capstone.foodify.Model.Slider.Slider;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -65,4 +66,7 @@ public interface FoodApi {
@GET("district")
Call> districtResponse();
+
+ @GET("sliders")
+ Call> listSlider();
}
diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java
index 915fed0..d6e8962 100644
--- a/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java
+++ b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java
@@ -46,8 +46,8 @@ public interface FoodApiToken {
@GET("wishlist")
Call> getListFavoriteFood();
- @POST("wishlist")
- Call addFoodToFavorite(@Body Food food);
+ @POST("users/{userId}/loves/{productId}")
+ Call addFoodToFavorite(@Path("userId") String userId, @Path("productId") String productId);
@DELETE("wishlist/{id}")
Call removeFoodFromFavorite(@Path("id") int id);
diff --git a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
index 0b2532b..bf40ce3 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
@@ -267,9 +267,7 @@ public class FoodDetailActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
- Common.showNotificationError(t, getBaseContext(), FoodDetailActivity.this);
-
- Log.e("ERROR", "Get Detail Food Error!");
+ Common.showNotificationError(getBaseContext(), FoodDetailActivity.this);
}
});
}
diff --git a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
index e9729b9..fdb10fc 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
@@ -135,9 +135,7 @@ public class ShopDetailActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
//Check internet connection
- Common.showNotificationError(t, getBaseContext(), ShopDetailActivity.this);
-
- Log.e("ERROR", "List Food By Shop Id Error!");
+ Common.showNotificationError(getBaseContext(), ShopDetailActivity.this);
}
});
}
@@ -157,9 +155,7 @@ public class ShopDetailActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
- Common.showNotificationError(t, getBaseContext(), ShopDetailActivity.this);
-
- Log.e("ERROR", "Get Detail Shop Error!");
+ Common.showNotificationError(getBaseContext(), ShopDetailActivity.this);
}
});
}
diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java
index 62de475..cbbb484 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java
@@ -142,6 +142,7 @@ public class SignInActivity extends AppCompatActivity {
password = (TextInputEditText) findViewById(R.id.edt_password);
signInButton = (MaterialButton) findViewById(R.id.sign_in_button);
+
}
private void setFontUI() {
textInput_account.setTypeface(Common.setFontBebas(getAssets()));
diff --git a/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java b/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
index 7f60c0d..90c8c7c 100644
--- a/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
+++ b/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
@@ -99,16 +99,16 @@ public class FoodFavoriteAdapter extends RecyclerView.Adapter() {
- @Override
- public void onResponse(@NonNull Call call, @NonNull Response response) {
- Toast.makeText(context, "Add successful!", Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onFailure(@NonNull Call call, @NonNull Throwable t) {
- Toast.makeText(context, "Error: " + t, Toast.LENGTH_SHORT).show();
- }
- });
+// FoodApiToken.apiService.addFoodToFavorite(food.getId()).enqueue(new Callback() {
+// @Override
+// public void onResponse(@NonNull Call call, @NonNull Response response) {
+// Toast.makeText(context, "Add successful!", Toast.LENGTH_SHORT).show();
+// }
+//
+// @Override
+// public void onFailure(@NonNull Call call, @NonNull Throwable t) {
+// Toast.makeText(context, "Error: " + t, Toast.LENGTH_SHORT).show();
+// }
+// });
}
}
diff --git a/app/src/main/java/com/capstone/foodify/Common.java b/app/src/main/java/com/capstone/foodify/Common.java
index e1c8aa2..787cf16 100644
--- a/app/src/main/java/com/capstone/foodify/Common.java
+++ b/app/src/main/java/com/capstone/foodify/Common.java
@@ -1,6 +1,7 @@
package com.capstone.foodify;
import android.app.Activity;
+import android.app.Dialog;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Typeface;
@@ -14,6 +15,9 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import com.capstone.foodify.Model.Basket.Basket;
+import com.saadahmedsoft.popupdialog.PopupDialog;
+import com.saadahmedsoft.popupdialog.Styles;
+import com.saadahmedsoft.popupdialog.listener.OnDialogButtonClickListener;
import com.thecode.aestheticdialogs.AestheticDialog;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
@@ -73,16 +77,32 @@ public class Common {
.show();
}
- public static void showNotificationError(Throwable t, Context context, Activity activity) {
+ public static void showNotificationError(Context context, Activity activity) {
if(checkInternetConnection(context)){
//Has internet connection
- Toast.makeText(context, "Error: " + t, Toast.LENGTH_SHORT).show();
+ showErrorServerNotification(activity);
} else {
//No internet, show notification
showErrorInternetConnectionNotification(activity);
}
}
+ private static void showErrorServerNotification(Activity activity){
+ PopupDialog.getInstance(activity)
+ .setStyle(Styles.FAILED)
+ .setHeading("Lỗi")
+ .setDescription("Đã xuất hiện lỗi từ hệ thống. Vui lòng thử lại sau!")
+ .setCancelable(false)
+ .setDismissButtonText("Thoát")
+ .showDialog(new OnDialogButtonClickListener() {
+ @Override
+ public void onDismissClicked(Dialog dialog) {
+ activity.finishAffinity();
+ System.exit(0);
+ }
+ });
+ }
+
public static Basket getFoodExistInBasket(String foodId) {
return Common.LIST_BASKET_FOOD.stream().filter(food -> foodId.equals(food.getId())).findFirst().orElse(null);
}
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
index f3fc765..0b0fd2d 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.API.FoodApi;
+import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Model.Menu.Menu;
@@ -20,10 +21,13 @@ import com.capstone.foodify.Model.Response.Foods;
import com.capstone.foodify.Model.Response.Shops;
import com.capstone.foodify.Model.Shop.Shop;
import com.capstone.foodify.Adapter.ShopAdapter;
+import com.capstone.foodify.Model.Slider.Slider;
import com.capstone.foodify.R;
import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.models.SlideModel;
+import com.saadahmedsoft.popupdialog.PopupDialog;
+import com.saadahmedsoft.popupdialog.Styles;
import java.util.ArrayList;
import java.util.List;
@@ -44,6 +48,7 @@ public class HomeFragment extends Fragment {
private RecyclerView rcvMenu, recyclerView_restaurant;
private MenuAdapter menuAdapter;
private ShopAdapter shopAdapter;
+ private PopupDialog popupDialog;
@Override
@@ -58,6 +63,12 @@ public class HomeFragment extends Fragment {
recyclerView_restaurant = view.findViewById(R.id.recycler_view_restaurant);
shopAdapter = new ShopAdapter(getContext());
+ popupDialog = PopupDialog.getInstance(getContext());
+
+ //Show progress bar
+ popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null))
+ .setCancelable(false).showDialog();
+
if(listFood.isEmpty() || recentFood.isEmpty()){
getListFood();
@@ -70,14 +81,7 @@ public class HomeFragment extends Fragment {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
rcvMenu.setLayoutManager(linearLayoutManager);
- List slideModels = new ArrayList<>();
- slideModels.add(new SlideModel("https://res.cloudinary.com/dnkmxpujh/image/upload/v1676023773/banner1_dandvd.png", null));
- slideModels.add(new SlideModel("https://res.cloudinary.com/dnkmxpujh/image/upload/v1676023777/banner2_okkqac.png", null));
- slideModels.add(new SlideModel("https://res.cloudinary.com/dnkmxpujh/image/upload/v1676023775/banner3_rklfi6.png", null));
- slideModels.add(new SlideModel("https://res.cloudinary.com/dnkmxpujh/image/upload/v1676023852/banner4_ufsaps.png", null));
- slideModels.add(new SlideModel("https://res.cloudinary.com/dnkmxpujh/image/upload/v1676023778/banner5_b4d1b8.png", null));
-
- imageSlider.setImageList(slideModels, ScaleTypes.FIT);
+ showSlider();
//Get list shop
getListShop();
@@ -86,6 +90,30 @@ public class HomeFragment extends Fragment {
return view;
}
+ private void showSlider(){
+ FoodApi.apiService.listSlider().enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ List sliders = response.body();
+
+ List slideModels = new ArrayList<>();
+ for(Slider slider: sliders){
+ slideModels.add(new SlideModel(slider.getImageUrl(), null));
+ }
+
+ imageSlider.setImageList(slideModels, ScaleTypes.FIT);
+
+ popupDialog.dismissDialog();
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ popupDialog.dismissDialog();
+ Common.showNotificationError(getContext(), getActivity());
+ }
+ });
+ }
+
private List