From 34bb2e10f379d493823dd52852a38ef6fecdf3d4 Mon Sep 17 00:00:00 2001 From: cimenmus Date: Wed, 17 Jan 2018 23:01:51 +0300 Subject: [PATCH] product list on order history details --- .idea/misc.xml | 2 +- .../android/activity/MainActivity.java | 2 +- .../activity/OrderHistoryDetailsActivity.java | 129 +++++++++++++++++- .../recycler/OrderHistoryRecyclerAdapter.java | 2 +- .../pizzalink/android/api/ApiEndPoints.java | 1 + .../pizzalink/android/api/ApiInterface.java | 8 +- .../fragment/OrderHistoryFragment.java | 2 +- .../pizzalink/android/helper/PriceHelper.java | 6 + .../{ => history}/OrderHistoryModel.java | 2 +- .../history/OrderHistoryProductModel.java | 121 ++++++++++++++++ .../OrderHistoryProductOptionModel.java | 119 ++++++++++++++++ .../layout/activity_order_history_details.xml | 24 ++++ app/src/main/res/values/strings.xml | 1 + 13 files changed, 411 insertions(+), 8 deletions(-) rename app/src/main/java/ch/pizzalink/android/model/{ => history}/OrderHistoryModel.java (99%) create mode 100644 app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductModel.java create mode 100644 app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductOptionModel.java diff --git a/.idea/misc.xml b/.idea/misc.xml index ad53516..cc72de3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -24,7 +24,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 914d99f..1e40be8 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java @@ -147,7 +147,7 @@ public class MainActivity extends BaseActivity { private void showStartScreen(){ fragmentManager = getSupportFragmentManager(); if(isStartWithOrderHistory){ - bottomNavigationView.setCurrentItem(2); + bottomNavigationView.setCurrentItem(1); } else { openProductsScreen(categoryList.get(2)); diff --git a/app/src/main/java/ch/pizzalink/android/activity/OrderHistoryDetailsActivity.java b/app/src/main/java/ch/pizzalink/android/activity/OrderHistoryDetailsActivity.java index ce294f7..dab62b1 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/OrderHistoryDetailsActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/OrderHistoryDetailsActivity.java @@ -1,15 +1,29 @@ package ch.pizzalink.android.activity; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; +import android.widget.TextView; + +import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import ch.pizzalink.android.R; +import ch.pizzalink.android.api.ApiEndPoints; +import ch.pizzalink.android.api.ApiErrorUtils; +import ch.pizzalink.android.api.ApiService; +import ch.pizzalink.android.api.ResponseArray; +import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.PriceHelper; -import ch.pizzalink.android.model.OrderHistoryModel; +import ch.pizzalink.android.helper.SessionHelper; +import ch.pizzalink.android.helper.TextHelper; +import ch.pizzalink.android.model.history.OrderHistoryModel; +import ch.pizzalink.android.model.history.OrderHistoryProductModel; +import ch.pizzalink.android.model.history.OrderHistoryProductOptionModel; import ch.pizzalink.android.view.PizzalinkInfoView; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; public class OrderHistoryDetailsActivity extends BaseActivity { @@ -18,12 +32,14 @@ public class OrderHistoryDetailsActivity extends BaseActivity { @BindView(R.id.orderShippingTimePizzalinkInfoLayout) PizzalinkInfoView orderShippingTimePizzalinkInfoLayout; @BindView(R.id.orderTotalPizzalinkInfoLayout) PizzalinkInfoView orderTotalPizzalinkInfoLayout; @BindView(R.id.orderPaymentMethodPizzalinkInfoLayout) PizzalinkInfoView orderPaymentMethodPizzalinkInfoLayout; + @BindView(R.id.orderProductsTextView) TextView orderProductsTextView; @BindView(R.id.orderFullnamePizzalinkInfoLayout) PizzalinkInfoView orderFullnamePizzalinkInfoLayout; @BindView(R.id.orderShippingMethodPizzalinkInfoLayout) PizzalinkInfoView orderShippingMethodPizzalinkInfoLayout; @BindView(R.id.orderShippingAddressPizzalinkInfoLayout) PizzalinkInfoView orderShippingAddressPizzalinkInfoLayout; @BindView(R.id.orderNotePizzalinkInfoLayout) PizzalinkInfoView orderNotePizzalinkInfoLayout; private OrderHistoryModel orderHistoryModel; + private ArrayList productList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -31,6 +47,7 @@ public class OrderHistoryDetailsActivity extends BaseActivity { setContentView(R.layout.activity_order_history_details); ButterKnife.bind(this); getDataFromIntent(); + getOrderProductList(); initViews(); } @@ -88,4 +105,112 @@ public class OrderHistoryDetailsActivity extends BaseActivity { return stringBuilder.toString(); } + + private void getOrderProductList(){ + DialogHelper.showLoadingDialog(); + Call> call = ApiService.apiInterface.getOrderProductList( + ApiEndPoints.API_GET_ORDER_PRODUCT_LIST + SessionHelper.getCustomerToken().getToken(), orderHistoryModel.getId()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + DialogHelper.hideLoadingDialog(); + if(response.isSuccessful() && + response.body().getData() != null && + response.body().isSuccess()) + fillAndNotifyProductList(response.body().getData()); + else + ApiErrorUtils.parseError(response); + } + + @Override + public void onFailure(Call> call, Throwable t) { + DialogHelper.hideLoadingDialog(); + DialogHelper.showFailedDialog(); + } + }); + } + + private void fillAndNotifyProductList(ArrayList prdctLst){ + OrderHistoryProductModel.checkNull(prdctLst); + productList.clear(); + productList.addAll(prdctLst); + TextHelper.setTextFromHTML(orderProductsTextView, getProductListInfoText()); + } + + private String getProductListInfoText(){ + StringBuilder stringBuilder = new StringBuilder(); + for(OrderHistoryProductModel orderHistoryProductModel : productList){ + stringBuilder + .append("") + .append(orderHistoryProductModel.getQuantity()) + .append(" x ") + .append(orderHistoryProductModel.getName()) + .append(" = ") + .append(PriceHelper.getPriceWithCurreny(orderHistoryProductModel.getTotal())) + .append("") + .append("
") + .append(getProductInfo(orderHistoryProductModel)) + .append("
"); + } + if(stringBuilder.toString().trim().endsWith("

")){ + int lastIndex = stringBuilder.toString().lastIndexOf("

"); + return stringBuilder.toString().trim().substring(0, lastIndex); + } + return stringBuilder.toString().trim(); + } + + private String getProductInfo(OrderHistoryProductModel orderHistoryProductModel){ + StringBuilder stringBuilder = new StringBuilder(); + for(OrderHistoryProductOptionModel orderHistoryProductOptionModel : orderHistoryProductModel.getOptionList()){ + if(!stringBuilder.toString().contains(orderHistoryProductOptionModel.getName())){ + /* + if(!stringBuilder.toString().isEmpty()){ + stringBuilder.append("
"); + } + */ + stringBuilder + .append("
") + .append("") + .append(orderHistoryProductOptionModel.getName()) + .append("") + .append("
"); + } + stringBuilder + .append("") + .append(orderHistoryProductOptionModel.getValue()) + .append("") + .append("
"); + } + return stringBuilder.toString().trim(); + } + + /* + private String getCartInfoText(CartProductModel cartProductModel){ + + StringBuilder stringBuilder = new StringBuilder(); + + for(int i = 0; i < cartProductModel.getOption().size(); i++){ + + if(!stringBuilder.toString().contains(cartProductModel.getOption().get(i).getName())){ + + if(!stringBuilder.toString().isEmpty()){ + stringBuilder.append("
"); + } + stringBuilder + .append("") + .append("") + .append(cartProductModel.getOption().get(i).getName()) + .append("") + .append("") + .append("
") + .append("
"); + } + stringBuilder + .append(cartProductModel.getOption().get(i).getValue()) + .append("
"); + } + + return stringBuilder.toString().trim(); + } + */ } diff --git a/app/src/main/java/ch/pizzalink/android/adapter/recycler/OrderHistoryRecyclerAdapter.java b/app/src/main/java/ch/pizzalink/android/adapter/recycler/OrderHistoryRecyclerAdapter.java index 69f0509..637dd55 100644 --- a/app/src/main/java/ch/pizzalink/android/adapter/recycler/OrderHistoryRecyclerAdapter.java +++ b/app/src/main/java/ch/pizzalink/android/adapter/recycler/OrderHistoryRecyclerAdapter.java @@ -13,7 +13,7 @@ import butterknife.ButterKnife; import ch.pizzalink.android.R; import ch.pizzalink.android.helper.PriceHelper; import ch.pizzalink.android.interfaces.RecyclerItemClickListener; -import ch.pizzalink.android.model.OrderHistoryModel; +import ch.pizzalink.android.model.history.OrderHistoryModel; /** * Created by cimenmus on 04/10/2017. 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 a3e5b54..130f315 100644 --- a/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java +++ b/app/src/main/java/ch/pizzalink/android/api/ApiEndPoints.java @@ -33,4 +33,5 @@ public class ApiEndPoints { public static final String API_UPDATE_PROFILE = PREFIX + "updateCustomerInfo" + SUFFIX + "&token="; public static final String API_REMOVE_RPODUCT_FORM_CART = PREFIX + "removeProductFromBasket" + SUFFIX + "&token="; public static final String API_GET_STORE_INFO = PREFIX + "getStoreInfo" + SUFFIX; + public static final String API_GET_ORDER_PRODUCT_LIST = PREFIX + "getOrderProducts" + SUFFIX; } 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 e7eb2ba..a825812 100644 --- a/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java +++ b/app/src/main/java/ch/pizzalink/android/api/ApiInterface.java @@ -16,8 +16,9 @@ import ch.pizzalink.android.model.CityModel; import ch.pizzalink.android.model.ZoneModel; import ch.pizzalink.android.model.cart.CartInfoModel; import ch.pizzalink.android.model.CategoryModel; -import ch.pizzalink.android.model.OrderHistoryModel; +import ch.pizzalink.android.model.history.OrderHistoryModel; import ch.pizzalink.android.model.UserModel; +import ch.pizzalink.android.model.history.OrderHistoryProductModel; import ch.pizzalink.android.model.menu.MenuProductModel; import okhttp3.RequestBody; import retrofit2.Call; @@ -136,4 +137,9 @@ public interface ApiInterface { @GET(ApiEndPoints.API_GET_STORE_INFO) Call> getStoreInfo(); + @FormUrlEncoded + @POST + Call> getOrderProductList(@Url String url, + @Field("order_id") String orderId); + } diff --git a/app/src/main/java/ch/pizzalink/android/fragment/OrderHistoryFragment.java b/app/src/main/java/ch/pizzalink/android/fragment/OrderHistoryFragment.java index e21b853..45120df 100644 --- a/app/src/main/java/ch/pizzalink/android/fragment/OrderHistoryFragment.java +++ b/app/src/main/java/ch/pizzalink/android/fragment/OrderHistoryFragment.java @@ -23,7 +23,7 @@ import ch.pizzalink.android.api.ResponseArray; import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.interfaces.RecyclerItemClickListener; -import ch.pizzalink.android.model.OrderHistoryModel; +import ch.pizzalink.android.model.history.OrderHistoryModel; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; 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 5c947c1..4a8e68a 100644 --- a/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java +++ b/app/src/main/java/ch/pizzalink/android/helper/PriceHelper.java @@ -117,6 +117,12 @@ public class PriceHelper { else if(price.endsWith(".00")){ price = price.replace(".00", ".-"); } + else if(price.endsWith(".000")){ + price = price.replace(".000", ".-"); + } + else if(price.endsWith(".0000")){ + price = price.replace(".0000", ".-"); + } return price; } diff --git a/app/src/main/java/ch/pizzalink/android/model/OrderHistoryModel.java b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryModel.java similarity index 99% rename from app/src/main/java/ch/pizzalink/android/model/OrderHistoryModel.java rename to app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryModel.java index 03de560..08effaa 100644 --- a/app/src/main/java/ch/pizzalink/android/model/OrderHistoryModel.java +++ b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryModel.java @@ -1,4 +1,4 @@ -package ch.pizzalink.android.model; +package ch.pizzalink.android.model.history; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductModel.java b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductModel.java new file mode 100644 index 0000000..8a95eba --- /dev/null +++ b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductModel.java @@ -0,0 +1,121 @@ +package ch.pizzalink.android.model.history; + +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; + +/** + * Created by cimenmus on 17.01.2018. + */ + +public class OrderHistoryProductModel { + + @SerializedName("product_id") private String productId; + @SerializedName("option") private ArrayList optionList; + private String name; + private String model; + private String quantity; + private String price; + private String total; + private String reward; + + private void checkNull(){ + if(productId == null){ + productId = ""; + } + if(name == null){ + name = ""; + } + if(model == null){ + model = ""; + } + if(quantity == null){ + quantity = ""; + } + if(price == null){ + price = ""; + } + if(total == null){ + total = ""; + } + if(reward == null){ + reward = ""; + } + if(optionList == null){ + optionList = new ArrayList<>(); + } + else{ + OrderHistoryProductOptionModel.checkNull(optionList); + } + } + + public static void checkNull(ArrayList orderHistoryProductModels){ + for(OrderHistoryProductModel orderHistoryProductModel : orderHistoryProductModels){ + orderHistoryProductModel.checkNull(); + } + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public ArrayList getOptionList() { + return optionList; + } + + public void setOptionList(ArrayList optionList) { + this.optionList = optionList; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public String getPrice() { + return price; + } + + public void setPrice(String price) { + this.price = price; + } + + public String getTotal() { + return total; + } + + public void setTotal(String total) { + this.total = total; + } + + public String getReward() { + return reward; + } + + public void setReward(String reward) { + this.reward = reward; + } +} diff --git a/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductOptionModel.java b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductOptionModel.java new file mode 100644 index 0000000..e6cda27 --- /dev/null +++ b/app/src/main/java/ch/pizzalink/android/model/history/OrderHistoryProductOptionModel.java @@ -0,0 +1,119 @@ +package ch.pizzalink.android.model.history; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +import java.util.ArrayList; + +/** + * Created by cimenmus on 17.01.2018. + */ + +public class OrderHistoryProductOptionModel { + + @SerializedName("order_option_id") private String optionId; + @Expose @SerializedName("order_id") private String orderId; + @Expose @SerializedName("order_product_id") private String productId; + @Expose @SerializedName("product_option_id") private String productOptionId; + @Expose @SerializedName("product_option_value_id") private String productOptionValueId; + private String name; + private String value; + private String type; + + private void checkNull(){ + if(optionId == null){ + optionId = ""; + } + if(orderId == null){ + orderId = ""; + } + if(productId == null){ + productId = ""; + } + if(productOptionId == null){ + productOptionId = ""; + } + if(productOptionValueId == null){ + productOptionValueId = ""; + } + if(name == null){ + name = ""; + } + if(value == null){ + value = ""; + } + if(type == null){ + type = ""; + } + } + + public static void checkNull(ArrayList orderHistoryProductOptionModels){ + for(OrderHistoryProductOptionModel orderHistoryProductOptionModel : orderHistoryProductOptionModels){ + orderHistoryProductOptionModel.checkNull(); + } + } + + public String getOptionId() { + return optionId; + } + + public void setOptionId(String optionId) { + this.optionId = optionId; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public String getProductOptionId() { + return productOptionId; + } + + public void setProductOptionId(String productOptionId) { + this.productOptionId = productOptionId; + } + + public String getProductOptionValueId() { + return productOptionValueId; + } + + public void setProductOptionValueId(String productOptionValueId) { + this.productOptionValueId = productOptionValueId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/app/src/main/res/layout/activity_order_history_details.xml b/app/src/main/res/layout/activity_order_history_details.xml index 58da918..eb9e72a 100644 --- a/app/src/main/res/layout/activity_order_history_details.xml +++ b/app/src/main/res/layout/activity_order_history_details.xml @@ -3,6 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" + tools:ignore="MissingPrefix" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" @@ -82,6 +83,29 @@ android:layout_height="wrap_content" app:description="@string/order_history_order_payment_method" /> + + + + + + + + VERSANDZEIT     ZWISHENSUMME     ZAHLUNGSWEISE     + PRODUCTS     VOLLNAME     LIEFERUNGSMETHODE     LIEFERUNGSADRESSE