add to cart

This commit is contained in:
2017-10-13 00:22:49 +03:00
parent d845375946
commit d60cc3aafa
3 changed files with 107 additions and 17 deletions

View File

@@ -10,11 +10,11 @@ import android.widget.TextView;
import java.util.ArrayList;
import butterknife.BindString;
import butterknife.BindView;
import butterknife.ButterKnife;
import ch.pizzalink.android.R;
import ch.pizzalink.android.helper.ImageLoadHelper;
import ch.pizzalink.android.helper.PriceHelper;
import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
import ch.pizzalink.android.model.menu.MenuProductModel;
@@ -38,8 +38,6 @@ public class MenuProductRecyclerAdapter extends RecyclerView.Adapter<RecyclerVie
@BindView(R.id.productIngredientsTextView) TextView productIngredientsTextView;
@BindView(R.id.productPriceTextView) TextView productPriceTextView;
@BindString(R.string.chf) String chfText;
public MenuProductViewHolder(final View view, final RecyclerItemClickListener recyclerItemClickListener) {
super(view);
ButterKnife.bind(this, view);
@@ -110,7 +108,7 @@ public class MenuProductRecyclerAdapter extends RecyclerView.Adapter<RecyclerVie
ImageLoadHelper.loadImage(menuProductViewHolder.productImageView, menuProductList.get(position).getImageURL());
menuProductViewHolder.productNameTextView.setText(menuProductList.get(position).getName());
menuProductViewHolder.productPriceTextView.setText(
menuProductViewHolder.chfText + " " + menuProductList.get(position).getPrice());
PriceHelper.getPriceWithCurreny(menuProductList.get(position).getPrice()));
if(menuProductList.get(position).isDescriptionAvailable()){
menuProductViewHolder.productIngredientsLayout.setVisibility(View.VISIBLE);
menuProductViewHolder.productIngredientsTextView.setText(menuProductList.get(position).getDescription());

View File

@@ -7,7 +7,6 @@ import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.BottomSheetDialogFragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
@@ -15,9 +14,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindString;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
@@ -25,6 +22,7 @@ import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.BaseActivity;
import ch.pizzalink.android.adapter.recycler.ProductCheckboxOptionsRecyclerAdapter;
import ch.pizzalink.android.adapter.recycler.ProductRadioOptionsRecyclerAdapter;
import ch.pizzalink.android.helper.PriceHelper;
import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
import ch.pizzalink.android.model.menu.MenuProductModel;
import ch.pizzalink.android.model.menu.MenuProductOptionModel;
@@ -47,8 +45,6 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
@BindView(R.id.productCountTextView) TextView productCountTextView;
@BindView(R.id.addToCartButton) Button addToCartButton;
@BindString(R.string.chf) String chfText;
private int productCount = 1;
private BottomSheetBehavior mBehavior;
@@ -85,12 +81,18 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
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:
break;
@@ -99,13 +101,13 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
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);
fillRadioAndCheckboxOptionLists();
initRadioRecyclerView();
initCheckboxRecyclerView();
break;
@@ -132,8 +134,6 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
private void initRadioRecyclerView(){
radioRecyclerView.setNestedScrollingEnabled(false);
radioRecyclerHeaderTextView.setText(menuProductModel.getProductOptionList().get(0).getName());
productRadioOptionValueList.addAll(menuProductModel.getProductOptionList().get(0).getOptionValueModelList());
GridLayoutManager gridLayoutManager = new GridLayoutManager(BaseActivity.currentActivity, 3);
radioRecyclerView.setLayoutManager(gridLayoutManager);
productRadioOptionsRecyclerAdapter = new ProductRadioOptionsRecyclerAdapter(productRadioOptionValueList, new RecyclerItemClickListener() {
@@ -145,7 +145,8 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
}
productRadioOptionValueList.get(position).setSelected(true);
productRadioOptionsRecyclerAdapter.notifyDataSetChanged();
productPriceTextView.setText(chfText + " " + productRadioOptionValueList.get(position).getPrice());
productPriceTextView.setText(PriceHelper.calculatePriceAfterRadioOptionValueChanged(
productCount, menuProductModel, productRadioOptionValueList.get(position)));
}
}
});
@@ -154,8 +155,6 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
private void initCheckboxRecyclerView(){
checkboxRecyclerView.setNestedScrollingEnabled(false);
checkboxRecyclerHeaderTextView.setText(menuProductModel.getProductOptionList().get(0).getName());
productCheckboxOptionValueList.addAll(menuProductModel.getProductOptionList().get(0).getOptionValueModelList());
GridLayoutManager gridLayoutManager = new GridLayoutManager(BaseActivity.currentActivity, 3);
checkboxRecyclerView.setLayoutManager(gridLayoutManager);
productCheckboxOptionsRecyclerAdapter = new ProductCheckboxOptionsRecyclerAdapter(productCheckboxOptionValueList, new RecyclerItemClickListener() {
@@ -164,6 +163,9 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
productCheckboxOptionValueList.get(position).setSelected(
!productCheckboxOptionValueList.get(position).isSelected());
productCheckboxOptionsRecyclerAdapter.notifyItemChanged(position);
productPriceTextView.setText(
PriceHelper.calculatePriceAfterCheckboxOptionValueChanged(
productCount, menuProductModel, productCheckboxOptionValueList));
}
});
checkboxRecyclerView.setAdapter(productCheckboxOptionsRecyclerAdapter);
@@ -171,12 +173,13 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
private void setFields(){
productNameTextView.setText(menuProductModel.getName());
productPriceTextView.setText(chfText + " " + menuProductModel.getPrice());
productPriceTextView.setText(PriceHelper.getPriceWithCurreny(menuProductModel.getPrice()));
productPriceTextView.setText(PriceHelper.getPriceWithCurreny(menuProductModel.getPrice()));
}
private void fillRadioAndCheckboxOptionLists(){
productRadioOptionValueList.addAll(menuProductModel.getProductOptionList().get(0).getOptionValueModelList());
for(MenuProductOptionModel menuProductOptionModel : menuProductModel.getProductOptionList()){
setSelectedPriceShowingOptions(menuProductOptionModel.getOptionValueModelList());
if(menuProductOptionModel.getType().toLowerCase().equals("radio") ||
menuProductOptionModel.getType().toLowerCase().equals("select")){
radioRecyclerHeaderTextView.setText(menuProductOptionModel.getName());
@@ -186,7 +189,13 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
checkboxRecyclerHeaderTextView.setText(menuProductOptionModel.getName());
productCheckboxOptionValueList.addAll(menuProductOptionModel.getOptionValueModelList());
}
}
}
private void setSelectedPriceShowingOptions(ArrayList<MenuProductOptionValueModel> menuProductOptionValueList){
for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionValueList){
if(menuProductOptionValueModel.getPrice().equals("0") || menuProductOptionValueModel.getPrice().equals("0.00"))
menuProductOptionValueModel.setSelected(true);
}
}
/*

View File

@@ -0,0 +1,83 @@
package ch.pizzalink.android.helper;
import java.util.ArrayList;
import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.BaseActivity;
import ch.pizzalink.android.model.menu.MenuProductModel;
import ch.pizzalink.android.model.menu.MenuProductOptionValueModel;
/**
* Created by cimenmus on 12/10/2017.
*/
public class PriceHelper {
public static String getPriceWithCurreny(String price){
return BaseActivity.currentActivity.getString(R.string.chf) + " " + price;
}
public static String getPriceWithCurreny(Double price){
return BaseActivity.currentActivity.getString(R.string.chf) + " " + price;
}
public static String removeCurrencyFromPrice(String priceWithCurreny){
try {
String currencyText = BaseActivity.currentActivity.getString(R.string.chf);
return priceWithCurreny.replace(currencyText, "").trim();
}catch (Exception e){
return priceWithCurreny.trim();
}
}
public static String calculatePriceAfterCountChanged(String oldPriceString, int oldCount, int newCount){
Double oldPrice = Double.valueOf(removeCurrencyFromPrice(oldPriceString));
Double productOldPrice = oldPrice / oldCount;
Double productNewPrice = productOldPrice * newCount;
return getPriceWithCurreny(productNewPrice);
}
public static String calculatePriceAfterRadioOptionValueChanged(int count,
MenuProductModel menuProductModel,
MenuProductOptionValueModel menuProductOptionValueModel){
Double productPrice = Double.valueOf(menuProductModel.getPrice());
switch (menuProductOptionValueModel.getPrice_prefix()){
case "+":
productPrice += Double.valueOf(menuProductOptionValueModel.getPrice());
break;
case "-":
productPrice -= Double.valueOf(menuProductOptionValueModel.getPrice());
break;
}
return getPriceWithCurreny(productPrice * count);
}
public static String calculatePriceAfterCheckboxOptionValueChanged(int count,
MenuProductModel menuProductModel,
ArrayList<MenuProductOptionValueModel> menuProductOptionValueModelList){
Double productPrice = Double.valueOf(menuProductModel.getPrice());
for(MenuProductOptionValueModel menuProductOptionValueModel : menuProductOptionValueModelList){
if(menuProductOptionValueModel.isSelected()){
switch (menuProductOptionValueModel.getPrice_prefix()){
case "+":
productPrice += Double.valueOf(menuProductOptionValueModel.getPrice());
break;
case "-":
productPrice -= Double.valueOf(menuProductOptionValueModel.getPrice());
break;
}
}
}
return getPriceWithCurreny(productPrice * count);
}
}