From 93c4fa28e593e67c7f5fde9c487597839df5bded Mon Sep 17 00:00:00 2001 From: cimenmus Date: Wed, 25 Oct 2017 23:57:19 +0300 Subject: [PATCH] remove product from basket --- .idea/misc.xml | 2 +- .../android/activity/MainActivity.java | 30 +++++---- .../activity/UpdateProfileActivity.java | 2 +- .../pizzalink/android/api/ApiEndPoints.java | 1 + .../pizzalink/android/api/ApiInterface.java | 6 ++ .../android/fragment/CartFragment.java | 64 ++++++++++++++++++- .../RemoveProductFromCartResponseModel.java | 21 ++++++ app/src/main/res/values/strings.xml | 2 + 8 files changed, 113 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/ch/pizzalink/android/model/RemoveProductFromCartResponseModel.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 7158618..cca2cda 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java index 12ae25d..c1d6b92 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java @@ -1,6 +1,7 @@ package ch.pizzalink.android.activity; import android.content.Intent; +import android.graphics.Color; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.FragmentManager; @@ -12,6 +13,7 @@ import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.MenuItem; import android.view.View; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -79,12 +81,20 @@ public class MainActivity extends BaseActivity { } private void initViews(){ + initBadgeView(); initNavigationDrawer(); initBottomNavigationView(); showStartScreen(); setCartItemCount(); } + private void initBadgeView(){ + badge = new QBadgeView(this) + .setBadgeBackgroundColor(redColor) + .setBadgeTextColor(whiteColor) + .setBadgeGravity(Gravity.TOP | Gravity.END); + } + private void showStartScreen(){ fragmentManager = getSupportFragmentManager(); if(isStartWithOrderHistory){ @@ -306,16 +316,14 @@ public class MainActivity extends BaseActivity { addBadgeAt(1, SharedPrefsHelper.getCartItemCount()); } - private void addBadgeAt(int position, int number) { - // add badge - badge = new QBadgeView(this) - .setBadgeNumber(number) - .setBadgeBackgroundColor(redColor) - .setBadgeTextColor(whiteColor) - .setBadgeGravity(Gravity.TOP | Gravity.END) - .bindTarget(bottomNavigationView.getBottomNavigationItemView(position)); - - if(number == 0) - badge.hide(true); + public void reopenCartFragment(){ + currentFragmentName = ""; + bottomNavigationView.setCurrentItem(1); } + + private void addBadgeAt(int position, int number) { + badge.setBadgeNumber(number); + badge.bindTarget(bottomNavigationView.getBottomNavigationItemView(position)); + } + } diff --git a/app/src/main/java/ch/pizzalink/android/activity/UpdateProfileActivity.java b/app/src/main/java/ch/pizzalink/android/activity/UpdateProfileActivity.java index 53159f6..8e1cf4a 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/UpdateProfileActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/UpdateProfileActivity.java @@ -78,7 +78,7 @@ public class UpdateProfileActivity extends BaseActivity { public void onResponse(Call> call, final Response> response) { DialogHelper.hideLoadingDialog(); if(response.isSuccessful() && - response.body() != null && + response.body().getData() != null && response.body().isSuccess()){ SessionHelper.saveCustomer(response.body().getData()); DialogHelper.showOneButtonDialogWithCallback(profileUpdatedText, new MaterialDialog.SingleButtonCallback() { diff --git a/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java b/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java index 466104d..9aa9cd4 100644 --- a/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java +++ b/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java @@ -27,4 +27,5 @@ public class ApiEndPoints { public static final String API_UPDATE_PASSWORD = PREFIX + "passwordUpdate" + SUFFIX + "&token="; public static final String API_DELETE_ADDRESS = PREFIX + "deleteAddress" + SUFFIX + "&token="; public static final String API_UPDATE_PROFILE = PREFIX + "updateCustomerInfo" + SUFFIX + "&token="; + public static final String API_REMOVE_RPODUCT_FORM_CART = PREFIX + "removeProductFromBasket" + SUFFIX + "&token="; } diff --git a/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java b/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java index 661eca5..b7a280e 100644 --- a/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java +++ b/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java @@ -9,6 +9,7 @@ import ch.pizzalink.android.model.CountryModel; import ch.pizzalink.android.model.DeleteAddressResponseModel; import ch.pizzalink.android.model.PaymentMethodModel; import ch.pizzalink.android.model.PaymentMethodsResponseModel; +import ch.pizzalink.android.model.RemoveProductFromCartResponseModel; import ch.pizzalink.android.model.ShippingMethodModel; import ch.pizzalink.android.model.ShippingMethodsResponseModel; import ch.pizzalink.android.model.ZoneModel; @@ -129,4 +130,9 @@ public interface ApiInterface { @POST Call> updateProfile(@Url String url, @FieldMap HashMap body); + @FormUrlEncoded + @POST + Call> removeProductFromCart(@Url String url, + @FieldMap HashMap body); + } diff --git a/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java b/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java index 20c2834..b93face 100644 --- a/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java +++ b/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java @@ -17,6 +17,7 @@ import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import java.util.ArrayList; +import java.util.HashMap; import butterknife.BindColor; import butterknife.BindString; @@ -28,6 +29,7 @@ import ch.pizzalink.android.activity.BaseActivity; import ch.pizzalink.android.activity.MainActivity; import ch.pizzalink.android.activity.OrderActivity; import ch.pizzalink.android.adapter.recycler.CartRecyclerAdapter; +import ch.pizzalink.android.api.ApiEndPoints; import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ResponseObject; @@ -35,6 +37,7 @@ import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.interfaces.RecyclerItemClickListener; +import ch.pizzalink.android.model.RemoveProductFromCartResponseModel; import ch.pizzalink.android.model.cart.CartInfoModel; import ch.pizzalink.android.model.cart.CartProductModel; import ch.pizzalink.android.model.cart.CartTotalModel; @@ -58,6 +61,8 @@ public class CartFragment extends BaseFragment { @BindView(R.id.clearCartButton) Button clearCartButton; @BindString(R.string.bottom_nav_menu_item_cart) String fragmentTitle; + @BindString(R.string.alert_remove_prdocut_from_cart) String removeProdcutFromCartAlert; + @BindString(R.string.product_removed_from_cart) String productRemovedFromCartText; @BindString(R.string.alert_clear_cart) String clearCartAlertText; @@ -192,8 +197,20 @@ public class CartFragment extends BaseFragment { private void initRecyclerView(){ cartRecyclerAdapter = new CartRecyclerAdapter(cartProductList, new RecyclerItemClickListener() { @Override - public void onItemClick(View view, int position) { - + public void onItemClick(View view, final int position) { + DialogHelper.showTwoButtonsDialog(BaseActivity.currentActivity, removeProdcutFromCartAlert, + new MaterialDialog.SingleButtonCallback() { + @Override + public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { + dialog.dismiss(); + removeProductFromCart(position); + } + }, new MaterialDialog.SingleButtonCallback() { + @Override + public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { + dialog.dismiss(); + } + }); } }); LinearLayoutManager layoutManager = new LinearLayoutManager(BaseActivity.currentActivity); @@ -215,4 +232,47 @@ public class CartFragment extends BaseFragment { noProductsOnCartTextView.setVisibility(View.VISIBLE); } } + + private void removeProductFromCart(final int position){ + DialogHelper.showLoadingDialog(); + Call> call = + ApiService.apiInterface.removeProductFromCart( + ApiEndPoints.API_REMOVE_RPODUCT_FORM_CART + SessionHelper.getCustomerToken().getToken(), + getRemoveProductFromCartRequestParams(cartProductList.get(position).getCartId())); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()){ + cartProductList.remove(position); + DialogHelper.showOneButtonDialogWithCallback(productRemovedFromCartText, new MaterialDialog.SingleButtonCallback() { + @Override + public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { + SharedPrefsHelper.setCartItemCount(cartProductList.size()); + MainActivity mainActivity = (MainActivity) getActivity(); + mainActivity.setCartItemCount(); + mainActivity.reopenCartFragment(); + } + }); + } + else { + ApiErrorUtils.parseError(response); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + DialogHelper.hideLoadingDialog(); + DialogHelper.showFailedDialog(); + } + }); + } + + private HashMap getRemoveProductFromCartRequestParams(String cartProductId){ + HashMap params = new HashMap<>(); + params.put("key", cartProductId); + return params; + } } diff --git a/app/src/main/java/ch/pizzalink/android/model/RemoveProductFromCartResponseModel.java b/app/src/main/java/ch/pizzalink/android/model/RemoveProductFromCartResponseModel.java new file mode 100644 index 0000000..c1d0cc3 --- /dev/null +++ b/app/src/main/java/ch/pizzalink/android/model/RemoveProductFromCartResponseModel.java @@ -0,0 +1,21 @@ +package ch.pizzalink.android.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +/** + * Created by cimenmus on 25.10.2017. + */ + +public class RemoveProductFromCartResponseModel { + + @Expose @SerializedName("cart_id") private String cartId; + + public String getCartId() { + return cartId; + } + + public void setCartId(String cartId) { + this.cartId = cartId; + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 76cd62b..ce6fd21 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -86,6 +86,8 @@ DEVAM TEMİZLE Sepetinizde ürün bulunmamaktadır. + Bu ürünü sepetinizden silmek istediğinize emin misiniz? + Ürün sepetinizden silindi. Bir hata oluştu.