diff --git a/.idea/misc.xml b/.idea/misc.xml index e22c606..cc72de3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,5 @@ - - - - - - - - - - - - - - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9f5e2b8..c10d5a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,6 +18,7 @@ android:screenOrientation="portrait"> + @@ -38,16 +39,17 @@ android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + \ No newline at end of file diff --git a/app/src/main/java/ch/pizzalink/android/activity/CreateOrderActivity.java b/app/src/main/java/ch/pizzalink/android/activity/CreateOrderActivity.java index e4fd998..0266610 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/CreateOrderActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/CreateOrderActivity.java @@ -125,6 +125,7 @@ public class CreateOrderActivity extends BaseActivity { mainActivityIntent.putExtra("isStartWithOrderHistory", true); startActivity(mainActivityIntent); SharedPrefsHelper.setCartItemCount(0); + SharedPrefsHelper.setCartTotalPrice("0"); finishAffinity(); break; } diff --git a/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java b/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java index 48a4f10..6cdf5f2 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/LoginActivity.java @@ -20,6 +20,7 @@ import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ResponseObject; import ch.pizzalink.android.helper.DialogHelper; +import ch.pizzalink.android.helper.PriceHelper; import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.helper.ViewHelper; @@ -125,6 +126,7 @@ public class LoginActivity extends BaseActivity { response.body().getData() != null && response.body().isSuccess()){ SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size()); + SharedPrefsHelper.setCartTotalPrice(PriceHelper.removeCurrencyFromPrice(response.body().getData().getTotals().get(0).getText())); startActivity(new Intent(LoginActivity.this, MainActivity.class)); finishAffinity(); 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 8cf0f96..51d1ff7 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java @@ -17,6 +17,7 @@ import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -37,6 +38,7 @@ import ch.pizzalink.android.fragment.HistoryFragment; import ch.pizzalink.android.fragment.MenuFragment; import ch.pizzalink.android.fragment.ProductFragment; import ch.pizzalink.android.fragment.ProfileFragment; +import ch.pizzalink.android.helper.PriceHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.model.CategoryModel; import ch.pizzalink.android.view.PizzalinkToolbar; @@ -51,6 +53,8 @@ public class MainActivity extends BaseActivity { @BindView(R.id.drawerLayout) DrawerLayout drawerLayout; @BindView(R.id.navigationMenuRecyclerView) RecyclerView navigationMenuRecyclerView; @BindView(R.id.pizzalinkToolbar) PizzalinkToolbar pizzalinkToolbar; + @BindView(R.id.cartTotalRelativeLayout) RelativeLayout cartTotalRelativeLayout; + @BindView(R.id.cartTotalTextView) TextView cartTotalTextView; @BindView(R.id.bottomNavigationView) BottomNavigationViewEx bottomNavigationView; @BindView(R.id.badgeLayout) RelativeLayout badgeLayout; @@ -176,6 +180,13 @@ public class MainActivity extends BaseActivity { shoppingCartImageView.setImageDrawable(whiteCartDrawable); shoppingCartTextView.setTextColor(whiteColor); + if(!SharedPrefsHelper.getCartTotalPrice().equals("0") && + !SharedPrefsHelper.getCartTotalPrice().equals("0.0") && + !SharedPrefsHelper.getCartTotalPrice().equals("0.00")){ + cartTotalTextView.setText(PriceHelper.getPriceWithCurreny(SharedPrefsHelper.getCartTotalPrice())); + cartTotalRelativeLayout.setVisibility(View.VISIBLE); + } + return true; case R.id.action_empty: @@ -186,6 +197,7 @@ public class MainActivity extends BaseActivity { currentCategoryId = -1; + cartTotalRelativeLayout.setVisibility(View.GONE); shoppingCartImageView.setImageDrawable(redCartDrawable); shoppingCartTextView.setTextColor(redColor); @@ -199,6 +211,7 @@ public class MainActivity extends BaseActivity { currentCategoryId = -1; + cartTotalRelativeLayout.setVisibility(View.GONE); shoppingCartImageView.setImageDrawable(whiteCartDrawable); shoppingCartTextView.setTextColor(whiteColor); @@ -212,6 +225,7 @@ public class MainActivity extends BaseActivity { currentCategoryId = -1; + cartTotalRelativeLayout.setVisibility(View.GONE); shoppingCartImageView.setImageDrawable(whiteCartDrawable); shoppingCartTextView.setTextColor(whiteColor); @@ -225,6 +239,7 @@ public class MainActivity extends BaseActivity { currentCategoryId = -1; + cartTotalRelativeLayout.setVisibility(View.GONE); shoppingCartImageView.setImageDrawable(whiteCartDrawable); shoppingCartTextView.setTextColor(whiteColor); @@ -418,13 +433,26 @@ public class MainActivity extends BaseActivity { */ private void addBadgeAt(int position, int number) { + badgeTextView.setText(String.valueOf(number)); + if(number <= 0){ badgeLayout.setVisibility(View.GONE); } else { badgeLayout.setVisibility(View.VISIBLE); } + + if(SharedPrefsHelper.getCartTotalPrice().equals("0") || + SharedPrefsHelper.getCartTotalPrice().equals("0.0") || + SharedPrefsHelper.getCartTotalPrice().equals("0.00")){ + cartTotalRelativeLayout.setVisibility(View.GONE); + } + else { + cartTotalTextView.setText(PriceHelper.getPriceWithCurreny(SharedPrefsHelper.getCartTotalPrice())); + cartTotalRelativeLayout.setVisibility(View.VISIBLE); + } + } } diff --git a/app/src/main/java/ch/pizzalink/android/activity/ProductPropertiesActivity.java b/app/src/main/java/ch/pizzalink/android/activity/ProductPropertiesActivity.java new file mode 100644 index 0000000..42bab34 --- /dev/null +++ b/app/src/main/java/ch/pizzalink/android/activity/ProductPropertiesActivity.java @@ -0,0 +1,380 @@ +package ch.pizzalink.android.activity; + +import android.support.design.widget.BottomSheetBehavior; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.HashMap; + +import butterknife.BindString; +import butterknife.BindView; +import butterknife.OnClick; +import ch.pizzalink.android.R; +import ch.pizzalink.android.adapter.recycler.ProductCheckboxOptionsRecyclerAdapter; +import ch.pizzalink.android.adapter.recycler.ProductRadioOptionsRecyclerAdapter; +import ch.pizzalink.android.api.ApiEndPoints; +import ch.pizzalink.android.api.ApiErrorUtils; +import ch.pizzalink.android.api.ApiService; +import ch.pizzalink.android.api.ResponseObject; +import ch.pizzalink.android.helper.DialogHelper; +import ch.pizzalink.android.helper.ImageLoadHelper; +import ch.pizzalink.android.helper.PriceHelper; +import ch.pizzalink.android.helper.SessionHelper; +import ch.pizzalink.android.helper.SharedPrefsHelper; +import ch.pizzalink.android.interfaces.RecyclerItemClickListener; +import ch.pizzalink.android.model.AddProductToBasketResponseModel; +import ch.pizzalink.android.model.cart.CartInfoModel; +import ch.pizzalink.android.model.menu.MenuProductModel; +import ch.pizzalink.android.model.menu.MenuProductOptionModel; +import ch.pizzalink.android.model.menu.MenuProductOptionValueModel; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class ProductPropertiesActivity extends BaseActivity { + + @BindView(R.id.closeImageView) ImageView closeImageView; + @BindView(R.id.productImageView) ImageView productImageView; + @BindView(R.id.productNameTextView) TextView productNameTextView; + @BindView(R.id.productPriceTextView) TextView productPriceTextView; + @BindView(R.id.addToCartButton) Button addToCartButton; + @BindView(R.id.radioRecyclerHeaderTextView) TextView radioRecyclerHeaderTextView; + @BindView(R.id.radioRecyclerView) RecyclerView radioRecyclerView; + @BindView(R.id.checkboxRecyclerHeaderTextView) TextView checkboxRecyclerHeaderTextView; + @BindView(R.id.checkboxRecyclerView) RecyclerView checkboxRecyclerView; + @BindView(R.id.increaseProductCountImageView) ImageView increaseProductCountImageView; + @BindView(R.id.deccreaseProductCountImageView) ImageView deccreaseProductCountImageView; + @BindView(R.id.productCountTextView) TextView productCountTextView; + + @BindString(R.string.no_options_selected_part) String noOptionsSelectedText; + + private int productCount = 1; + + private MenuProductModel menuProductModel; + + private ArrayList productRadioOptionValueList = new ArrayList<>(); + private ArrayList productCheckboxOptionValueList = new ArrayList<>(); + private ProductRadioOptionsRecyclerAdapter productRadioOptionsRecyclerAdapter; + private ProductCheckboxOptionsRecyclerAdapter productCheckboxOptionsRecyclerAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_product_properties); + } + + @OnClick({R.id.closeImageView, + R.id.increaseProductCountImageView, + R.id.deccreaseProductCountImageView, + R.id.addToCartButton}) + public void onCLick(View view){ + switch (view.getId()){ + case R.id.closeImageView: + finish(); + break; + case R.id.increaseProductCountImageView: + productCount++; + productCountTextView.setText(String.valueOf(productCount)); + productPriceTextView.setText( + PriceHelper.calculatePriceAfterCountChanged( + productPriceTextView.getText().toString(), productCount - 1, productCount)); + break; + case R.id.deccreaseProductCountImageView: + if(productCount == 1) + break; + productCount--; + productCountTextView.setText(String.valueOf(productCount)); + productPriceTextView.setText( + PriceHelper.calculatePriceAfterCountChanged( + productPriceTextView.getText().toString(), productCount + 1, productCount)); + break; + case R.id.addToCartButton: + if(checkFields()) + addProductToCart(); + break; + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + + for(MenuProductOptionModel menuProductOptionModel : menuProductModel.getProductOptionList()){ + for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionModel.getOptionValueModelList()){ + menuProductOptionValueModel.setSelected(false); + } + } + + for(MenuProductOptionModel menuProductOptionModel : menuProductModel.getProductOptionList()){ + for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionModel.getOptionValueModelList()){ + if(menuProductOptionValueModel.getPrice().equals("0") || menuProductOptionValueModel.getPrice().equals("0.00")){ + + //checkbox + if(!(menuProductOptionModel.getType().toLowerCase().equals("radio") || + menuProductOptionModel.getType().toLowerCase().equals("select"))){ + menuProductOptionValueModel.setSelected(true); + } + + //radio + else if(!isAnyOptionValueSelected(menuProductOptionModel.getOptionValueModelList())){ + menuProductOptionValueModel.setSelected(true); + } + + } + } + } + + } + + private void initViews(){ + setFields(); + fillRadioAndCheckboxOptionLists(); + switch (menuProductModel.getProductOptionType()){ + case RADIO_AND_CHECKBOX: + radioRecyclerView.setVisibility(View.VISIBLE); + checkboxRecyclerView.setVisibility(View.VISIBLE); + radioRecyclerHeaderTextView.setVisibility(View.VISIBLE); + checkboxRecyclerHeaderTextView.setVisibility(View.VISIBLE); + initRadioRecyclerView(); + initCheckboxRecyclerView(); + break; + case RADIO: + radioRecyclerHeaderTextView.setVisibility(View.VISIBLE); + radioRecyclerView.setVisibility(View.VISIBLE); + checkboxRecyclerView.setVisibility(View.GONE); + checkboxRecyclerHeaderTextView.setVisibility(View.GONE); + initRadioRecyclerView(); + break; + case CHECKBOX: + radioRecyclerHeaderTextView.setVisibility(View.GONE); + radioRecyclerView.setVisibility(View.GONE); + checkboxRecyclerHeaderTextView.setVisibility(View.VISIBLE); + checkboxRecyclerView.setVisibility(View.VISIBLE); + initCheckboxRecyclerView(); + break; + } + } + + public void setMenuProductModel(MenuProductModel menuProductModel){ + this.menuProductModel = menuProductModel; + } + + private void initRadioRecyclerView(){ + radioRecyclerView.setNestedScrollingEnabled(false); + GridLayoutManager gridLayoutManager = new GridLayoutManager(BaseActivity.currentActivity, 1); + radioRecyclerView.setLayoutManager(gridLayoutManager); + productRadioOptionsRecyclerAdapter = new ProductRadioOptionsRecyclerAdapter(productRadioOptionValueList, new RecyclerItemClickListener() { + @Override + public void onItemClick(View view, int position) { + if(!productRadioOptionValueList.get(position).isSelected()){ + for(MenuProductOptionValueModel menuProductOptionValueModel : productRadioOptionValueList){ + menuProductOptionValueModel.setSelected(false); + } + productRadioOptionValueList.get(position).setSelected(true); + productRadioOptionsRecyclerAdapter.notifyDataSetChanged(); + productPriceTextView.setText(PriceHelper.calculatePriceAfterRadioOptionValueChanged( + productCount, menuProductModel, productRadioOptionValueList.get(position))); + } + } + }); + radioRecyclerView.setAdapter(productRadioOptionsRecyclerAdapter); + } + + private void initCheckboxRecyclerView(){ + checkboxRecyclerView.setNestedScrollingEnabled(false); + GridLayoutManager gridLayoutManager = new GridLayoutManager(BaseActivity.currentActivity, 1); + checkboxRecyclerView.setLayoutManager(gridLayoutManager); + productCheckboxOptionsRecyclerAdapter = new ProductCheckboxOptionsRecyclerAdapter(productCheckboxOptionValueList, new RecyclerItemClickListener() { + @Override + public void onItemClick(View view, int position) { + productCheckboxOptionValueList.get(position).setSelected( + !productCheckboxOptionValueList.get(position).isSelected()); + productCheckboxOptionsRecyclerAdapter.notifyItemChanged(position); + productPriceTextView.setText( + PriceHelper.calculatePriceAfterCheckboxOptionValueChanged( + productCount, menuProductModel, productCheckboxOptionValueList)); + } + }); + checkboxRecyclerView.setAdapter(productCheckboxOptionsRecyclerAdapter); + } + + private void setFields(){ + ImageLoadHelper.loadImage(productImageView, menuProductModel.getImageURL()); + productNameTextView.setText(menuProductModel.getName()); + productPriceTextView.setText(PriceHelper.getPriceWithCurreny(menuProductModel.getPrice())); + productPriceTextView.setText(PriceHelper.getPriceWithCurreny(menuProductModel.getPrice())); + } + + private void fillRadioAndCheckboxOptionLists(){ + for(MenuProductOptionModel menuProductOptionModel : menuProductModel.getProductOptionList()){ + setSelectedPriceShowingOptions(menuProductOptionModel); + + if(menuProductOptionModel.getType().toLowerCase().equals("radio") || + menuProductOptionModel.getType().toLowerCase().equals("select")){ + radioRecyclerHeaderTextView.setText(menuProductOptionModel.getName()); + productRadioOptionValueList.addAll(menuProductOptionModel.getOptionValueModelList()); + } + else{ + checkboxRecyclerHeaderTextView.setText(menuProductOptionModel.getName()); + productCheckboxOptionValueList.addAll(menuProductOptionModel.getOptionValueModelList()); + } + } + } + + private void setSelectedPriceShowingOptions(MenuProductOptionModel menuProductOptionModel){ + for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionModel.getOptionValueModelList()){ + if(menuProductOptionValueModel.getPrice().equals("0") || menuProductOptionValueModel.getPrice().equals("0.00")){ + + //checkbox + if(!(menuProductOptionModel.getType().toLowerCase().equals("radio") || + menuProductOptionModel.getType().toLowerCase().equals("select"))){ + menuProductOptionValueModel.setSelected(true); + } + + //radio + else if(!isAnyOptionValueSelected(menuProductOptionModel.getOptionValueModelList())){ + menuProductOptionValueModel.setSelected(true); + } + } + } + } + + private void addProductToCart(){ + DialogHelper.showLoadingDialog(); + Call> call = + ApiService.apiInterface.addProductsToBasket( + ApiEndPoints.API_ADD_PRODUCTS_TO_BASKET + SessionHelper.getCustomerToken().getToken(), + getAddToCartRequestParams()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && response.body().getData() != null){ + if(response.body().isSuccess()){ + DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, response.body().getData().getSuccessMessage()); + getCartItemCount(); + } + else + DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, response.body().getData().getErrorMessage()); + } + else + ApiErrorUtils.parseError(response); + } + + @Override + public void onFailure(Call> call, Throwable t) { + DialogHelper.hideLoadingDialog(); + DialogHelper.showFailedDialog(); + } + }); + + } + + private HashMap getAddToCartRequestParams(){ + + HashMap params = new HashMap<>(); + params.put("product_id", menuProductModel.getId()); + params.put("quantity", productCount); + + for(MenuProductOptionModel productOptionModel : menuProductModel.getProductOptionList()){ + + ArrayList selectedCheckboxOptionList = new ArrayList<>(); + + for(MenuProductOptionValueModel productOptionValueModel : productOptionModel.getOptionValueModelList()){ + + if(productOptionValueModel.isSelected()){ + + if(productOptionModel.getType().equals("checkbox")){ + selectedCheckboxOptionList.add(productOptionValueModel.getProductOptionValueId()); + } + else { + params.put("option[" + productOptionModel.getProductOptionId() + "]", productOptionValueModel.getProductOptionValueId()); + } + } + } + + if(productOptionModel.getType().equals("checkbox")){ + params.put("option[" + productOptionModel.getProductOptionId() + "]", selectedCheckboxOptionList); + } + + } + + return params; + } + + private void getCartItemCount(){ + Call> call = ApiService.apiInterface.getCartProducts( + SessionHelper.getCustomerToken().getToken()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()){ + SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size()); + SharedPrefsHelper.setCartTotalPrice(PriceHelper.removeCurrencyFromPrice(response.body().getData().getTotals().get(0).getText())); + /* + MainActivity mainActivity = (MainActivity) getActivity(); + mainActivity.setCartItemCount(); + */ + finish(); + + } + + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } + + + private boolean checkFields(){ + + if(radioRecyclerView.getVisibility() == View.VISIBLE && + !isSelectedAtLeastOne(productRadioOptionValueList)){ + DialogHelper.showAlertDialog(BaseActivity.currentActivity, + radioRecyclerHeaderTextView.getText().toString() + " " + noOptionsSelectedText); + return false; + } + + if(checkboxRecyclerView.getVisibility() == View.VISIBLE && + !isSelectedAtLeastOne(productCheckboxOptionValueList)){ + DialogHelper.showAlertDialog(BaseActivity.currentActivity, + checkboxRecyclerHeaderTextView.getText().toString() + " " + noOptionsSelectedText); + return false; + } + + return true; + } + + private boolean isSelectedAtLeastOne(ArrayList menuProductOptionValueModels){ + for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionValueModels){ + if(menuProductOptionValueModel.isSelected()){ + return true; + } + } + return false; + } + + private boolean isAnyOptionValueSelected(ArrayList menuProductOptionValueModels){ + for (MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionValueModels){ + if(menuProductOptionValueModel.isSelected()){ + return true; + } + } + return false; + } + +} + diff --git a/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java b/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java index dda2a9b..c1af670 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/SplashActivity.java @@ -25,6 +25,7 @@ import ch.pizzalink.android.api.ResponseObject; import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.DisplayHelper; import ch.pizzalink.android.helper.NetworkHelper; +import ch.pizzalink.android.helper.PriceHelper; import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.model.AppVersionModel; @@ -208,6 +209,7 @@ public class SplashActivity extends BaseActivity { response.body().getData() != null && response.body().isSuccess()){ SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size()); + SharedPrefsHelper.setCartTotalPrice(PriceHelper.removeCurrencyFromPrice(response.body().getData().getTotals().get(0).getText())); openActivity(MainActivity.class); } diff --git a/app/src/main/java/ch/pizzalink/android/dialog/ProductPropertiesBottomSheetDialog.java b/app/src/main/java/ch/pizzalink/android/dialog/ProductPropertiesBottomSheetDialog.java index 79629ef..2133678 100644 --- a/app/src/main/java/ch/pizzalink/android/dialog/ProductPropertiesBottomSheetDialog.java +++ b/app/src/main/java/ch/pizzalink/android/dialog/ProductPropertiesBottomSheetDialog.java @@ -36,6 +36,7 @@ import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.interfaces.RecyclerItemClickListener; import ch.pizzalink.android.model.AddProductToBasketResponseModel; +import ch.pizzalink.android.model.cart.CartInfoModel; import ch.pizzalink.android.model.menu.MenuProductModel; import ch.pizzalink.android.model.menu.MenuProductOptionModel; import ch.pizzalink.android.model.menu.MenuProductOptionValueModel; @@ -280,13 +281,8 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen DialogHelper.hideLoadingDialog(); if(response.isSuccessful() && response.body().getData() != null){ if(response.body().isSuccess()){ - dismiss(); DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, response.body().getData().getSuccessMessage()); - SharedPrefsHelper.setCartItemCount(SharedPrefsHelper.getCartItemCount() + 1); - MainActivity mainActivity = (MainActivity) getActivity(); - mainActivity.setCartItemCount(); - - + getCartItemCount(); } else DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, response.body().getData().getErrorMessage()); @@ -336,6 +332,30 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen return params; } + private void getCartItemCount(){ + Call> call = ApiService.apiInterface.getCartProducts( + SessionHelper.getCustomerToken().getToken()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()){ + SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size()); + SharedPrefsHelper.setCartTotalPrice(PriceHelper.removeCurrencyFromPrice(response.body().getData().getTotals().get(0).getText())); + MainActivity mainActivity = (MainActivity) getActivity(); + mainActivity.setCartItemCount(); + dismiss(); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } + private boolean checkFields(){ 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 efb3471..9637b29 100644 --- a/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java +++ b/app/src/main/java/ch/pizzalink/android/fragment/CartFragment.java @@ -35,6 +35,7 @@ import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ResponseObject; import ch.pizzalink.android.helper.DialogHelper; +import ch.pizzalink.android.helper.PriceHelper; import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SharedPrefsHelper; import ch.pizzalink.android.interfaces.RecyclerItemClickListener; @@ -165,6 +166,7 @@ public class CartFragment extends BaseFragment { cartRecyclerAdapter.notifyDataSetChanged(); setCartLayoutsVisibility(); SharedPrefsHelper.setCartItemCount(0); + SharedPrefsHelper.setCartTotalPrice("0"); MainActivity mainActivity = (MainActivity) getActivity(); mainActivity.setCartItemCount(); } @@ -247,6 +249,8 @@ public class CartFragment extends BaseFragment { response.body().getData() != null && response.body().isSuccess()){ cartProductList.remove(position); + getCartItemCount(); + /* DialogHelper.showOneButtonDialogWithCallback(productRemovedFromCartText, new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { @@ -256,6 +260,7 @@ public class CartFragment extends BaseFragment { mainActivity.reopenCartFragment(); } }); + */ } else { ApiErrorUtils.parseError(response); @@ -275,4 +280,37 @@ public class CartFragment extends BaseFragment { params.put("key", cartProductId); return params; } + + private void getCartItemCount(){ + Call> call = ApiService.apiInterface.getCartProducts( + SessionHelper.getCustomerToken().getToken()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, final Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()){ + + DialogHelper.showOneButtonDialogWithCallback(productRemovedFromCartText, new MaterialDialog.SingleButtonCallback() { + @Override + public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { + SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size()); + SharedPrefsHelper.setCartTotalPrice(PriceHelper.removeCurrencyFromPrice(response.body().getData().getTotals().get(0).getText())); + MainActivity mainActivity = (MainActivity) getActivity(); + mainActivity.setCartItemCount(); + mainActivity.reopenCartFragment(); + } + }); + + } + + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } } diff --git a/app/src/main/java/ch/pizzalink/android/fragment/createOrder/CreateOrderResultFragment.java b/app/src/main/java/ch/pizzalink/android/fragment/createOrder/CreateOrderResultFragment.java index afa375b..afbf0bb 100644 --- a/app/src/main/java/ch/pizzalink/android/fragment/createOrder/CreateOrderResultFragment.java +++ b/app/src/main/java/ch/pizzalink/android/fragment/createOrder/CreateOrderResultFragment.java @@ -49,6 +49,7 @@ public class CreateOrderResultFragment extends CreateOrderBaseFragment { private void initViews(){ SharedPrefsHelper.setCartItemCount(0); + SharedPrefsHelper.setCartTotalPrice("0"); previousTextView.setVisibility(View.GONE); nextTextView.setText(doneOrderText); } diff --git a/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java b/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java index fc6f9e0..3e8fe80 100644 --- a/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java +++ b/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java @@ -22,12 +22,21 @@ public class PriceHelper { } public static String removeCurrencyFromPrice(String priceWithCurreny){ + /* try { String currencyText = BaseActivity.currentActivity.getString(R.string.chf); - return priceWithCurreny.replace(currencyText, "").trim(); + String priceWithoutCurrency = priceWithCurreny.replace(currencyText, ""); + priceWithoutCurrency = priceWithoutCurrency.trim(); + return priceWithoutCurrency; }catch (Exception e){ return priceWithCurreny.trim(); } + */ + + String currencyText = BaseActivity.currentActivity.getString(R.string.chf); + String priceWithoutCurrency = priceWithCurreny.replace(currencyText, ""); + priceWithoutCurrency = priceWithoutCurrency.trim(); + return priceWithoutCurrency; } public static String calculatePriceAfterCountChanged(String oldPriceString, int oldCount, int newCount){ diff --git a/app/src/main/java/ch/pizzalink/android/helper/SharedPrefsHelper.java b/app/src/main/java/ch/pizzalink/android/helper/SharedPrefsHelper.java index dc484a8..9f90c12 100644 --- a/app/src/main/java/ch/pizzalink/android/helper/SharedPrefsHelper.java +++ b/app/src/main/java/ch/pizzalink/android/helper/SharedPrefsHelper.java @@ -32,6 +32,7 @@ public class SharedPrefsHelper { private static final String PREF_KEY_CUSTOMER_TOKEN = SHARED_PREFS_NAME + "customerToken"; private static final String PREF_KEY_USER_LOG_IN_STATUS = SHARED_PREFS_NAME + "userLoginStatus"; private static final String PREF_KEY_CART_ITEM_COUNT = SHARED_PREFS_NAME + "cartItemCount"; + private static final String PREF_KEY_CART_TOTAL_PRICE = SHARED_PREFS_NAME + "cartTotalPrice"; private static SharedPreferences sharedPreferences = BaseActivity.currentActivity @@ -111,6 +112,15 @@ public class SharedPrefsHelper { return sharedPreferences.getInt(PREF_KEY_CART_ITEM_COUNT, 0); } + public static String getCartTotalPrice(){ + return sharedPreferences.getString(PREF_KEY_CART_TOTAL_PRICE, "0"); + } + + public static void setCartTotalPrice(String cartTotalPrice){ + editor.putString(PREF_KEY_CART_TOTAL_PRICE, cartTotalPrice); + editor.apply(); + } + /* public static void saveCategoryList(ArrayList cats){ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 53b98c9..d4d8691 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/pizzalinkToolbar" - android:layout_above="@+id/bottomNavigationView"> + android:layout_above="@+id/cartTotalRelativeLayout"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +