add to cart
This commit is contained in:
@@ -45,6 +45,7 @@ dependencies {
|
||||
compile 'com.github.AndroidDeveloperLB:DialogShard:3'
|
||||
compile 'com.github.HITGIF:TextFieldBoxes:1.3.3'
|
||||
compile 'io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:1.1.3'
|
||||
compile 'q.rorbin:badgeview:1.1.0'
|
||||
testCompile 'junit:junit:4.12'
|
||||
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
|
||||
}
|
||||
|
||||
@@ -8,15 +8,18 @@ import android.support.v4.widget.DrawerLayout;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindColor;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ch.pizzalink.android.R;
|
||||
@@ -33,6 +36,8 @@ import ch.pizzalink.android.view.PizzalinkToolbar;
|
||||
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionParameters;
|
||||
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapter;
|
||||
import io.github.luizgrp.sectionedrecyclerviewadapter.StatelessSection;
|
||||
import q.rorbin.badgeview.Badge;
|
||||
import q.rorbin.badgeview.QBadgeView;
|
||||
|
||||
public class MainActivity extends BaseActivity {
|
||||
|
||||
@@ -41,11 +46,15 @@ public class MainActivity extends BaseActivity {
|
||||
@BindView(R.id.pizzalinkToolbar) PizzalinkToolbar pizzalinkToolbar;
|
||||
@BindView(R.id.bottomNavigationView) BottomNavigationViewEx bottomNavigationView;
|
||||
|
||||
@BindColor(R.color.red) int redColor;
|
||||
@BindColor(R.color.white) int whiteColor;
|
||||
|
||||
private FragmentManager fragmentManager;
|
||||
private String currentFragmentName = "";
|
||||
private int currentCategoryId = -1;
|
||||
private ArrayList<CategoryModel> categoryList = new ArrayList<>();
|
||||
private NavigationMenuRecyclerAdapter navigationMenuRecyclerAdapter;
|
||||
private Badge badge;
|
||||
|
||||
private SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
|
||||
|
||||
@@ -61,6 +70,7 @@ public class MainActivity extends BaseActivity {
|
||||
initNavigationDrawer();
|
||||
initBottomNavigationView();
|
||||
showStartScreen();
|
||||
setCartItemCount();
|
||||
}
|
||||
|
||||
private void showStartScreen(){
|
||||
@@ -274,4 +284,21 @@ public class MainActivity extends BaseActivity {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setCartItemCount(){
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,14 @@ import ch.pizzalink.android.R;
|
||||
import ch.pizzalink.android.api.ApiErrorUtils;
|
||||
import ch.pizzalink.android.api.ApiService;
|
||||
import ch.pizzalink.android.api.ResponseArray;
|
||||
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.SessionHelper;
|
||||
import ch.pizzalink.android.helper.SharedPrefsHelper;
|
||||
import ch.pizzalink.android.model.CategoryModel;
|
||||
import ch.pizzalink.android.model.cart.CartInfoModel;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
@@ -69,7 +71,7 @@ public class SplashActivity extends BaseActivity {
|
||||
|
||||
if(SessionHelper.isCustomerLoggedIn()){
|
||||
if(SessionHelper.getCustomerToken().isCustomerTokenAlive())
|
||||
openActivity(MainActivity.class);
|
||||
getCartItemCount();
|
||||
else
|
||||
refreshCustomerToken();
|
||||
}
|
||||
@@ -99,7 +101,7 @@ public class SplashActivity extends BaseActivity {
|
||||
|
||||
if(response.isSuccessful() && response.body().isSuccess()) {
|
||||
SessionManager.saveCustomerToken(response.body().getCustomerToken(), Constants.PUSULA_CARD_MEMBER_TYPE_CUSTOMER);
|
||||
startMainActivity();
|
||||
getCartItemCount();
|
||||
}
|
||||
|
||||
else
|
||||
@@ -115,6 +117,30 @@ public class SplashActivity extends BaseActivity {
|
||||
*/
|
||||
}
|
||||
|
||||
private void getCartItemCount(){
|
||||
Call<ResponseObject<CartInfoModel>> call = ApiService.apiInterface.getCartProducts(
|
||||
SessionHelper.getCustomerToken().getToken());
|
||||
call.enqueue(new Callback<ResponseObject<CartInfoModel>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ResponseObject<CartInfoModel>> call, Response<ResponseObject<CartInfoModel>> response) {
|
||||
if(response.isSuccessful() &&
|
||||
response.body().getData() != null &&
|
||||
response.body().isSuccess()){
|
||||
SharedPrefsHelper.setCartItemCount(response.body().getData().getProducts().size());
|
||||
openActivity(MainActivity.class);
|
||||
|
||||
}
|
||||
else
|
||||
ApiErrorUtils.parseError(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ResponseObject<CartInfoModel>> call, Throwable t) {
|
||||
DialogHelper.showFailedDialog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,5 +14,7 @@ public class ApiEndPoints {
|
||||
public static final String API_GET_CLEAR_CART = PREFIX + "clearBasket" + SUFFIX;
|
||||
public static final String API_GET_PRODUCTS_BY_CATEGORY = PREFIX + "getProductsByCategory" + SUFFIX;
|
||||
public static final String API_GET_PRODUCT = PREFIX + "getProduct" + SUFFIX;
|
||||
//public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasket" + SUFFIX + "&token=sor37aVmOYP1v4OxpCsv11w3DkeGDttB";
|
||||
public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasket" + SUFFIX;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package ch.pizzalink.android.api;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import ch.pizzalink.android.model.AddProductToBasketResponseModel;
|
||||
import ch.pizzalink.android.model.cart.CartInfoModel;
|
||||
import ch.pizzalink.android.model.CategoryModel;
|
||||
import ch.pizzalink.android.model.OrderModel;
|
||||
@@ -10,6 +11,7 @@ import ch.pizzalink.android.model.menu.MenuProductModel;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.Body;
|
||||
import retrofit2.http.Field;
|
||||
import retrofit2.http.FieldMap;
|
||||
import retrofit2.http.FormUrlEncoded;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.POST;
|
||||
@@ -59,15 +61,21 @@ public interface ApiInterface {
|
||||
@GET(ApiEndPoints.API_GET_PRODUCTS_BY_CATEGORY)
|
||||
Call<ResponseArray<MenuProductModel>> getProductsByCategory(@Query("category_id") String categoryId);
|
||||
|
||||
/*
|
||||
@POST(ApiEndPoints.API_GET_PRODUCT)
|
||||
Call<ResponseObject<MenuProductModel>> getProductById(@Body HashMap<String, Object> body);
|
||||
*/
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST(ApiEndPoints.API_GET_PRODUCT)
|
||||
Call<ResponseArray<MenuProductModel>> getProductById(@Field("product_id") int productId);
|
||||
|
||||
@POST(ApiEndPoints.API_ADD_PRODUCTS_TO_BASKET)
|
||||
Call<ResponseObject<AddProductToBasketResponseModel>> addProductsToBasket(@Body HashMap<String, Object> body);
|
||||
|
||||
/*
|
||||
@FormUrlEncoded
|
||||
@POST(ApiEndPoints.API_ADD_PRODUCTS_TO_BASKET)
|
||||
Call<ResponseObject<AddProductToBasketResponseModel>> addProductsToBasket(@FieldMap HashMap<String, Object> fields);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,19 +14,31 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import ch.pizzalink.android.R;
|
||||
import ch.pizzalink.android.activity.BaseActivity;
|
||||
import ch.pizzalink.android.activity.MainActivity;
|
||||
import ch.pizzalink.android.adapter.recycler.ProductCheckboxOptionsRecyclerAdapter;
|
||||
import ch.pizzalink.android.adapter.recycler.ProductRadioOptionsRecyclerAdapter;
|
||||
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;
|
||||
import ch.pizzalink.android.model.AddProductToBasketResponseModel;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Created by cimenmus on 08/10/2017.
|
||||
@@ -95,6 +107,7 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
|
||||
productPriceTextView.getText().toString(), productCount + 1, productCount));
|
||||
break;
|
||||
case R.id.addToCartButton:
|
||||
addProductToCart();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -198,6 +211,65 @@ public class ProductPropertiesBottomSheetDialog extends BottomSheetDialogFragmen
|
||||
menuProductOptionValueModel.setSelected(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void addProductToCart(){
|
||||
DialogHelper.showLoadingDialog();
|
||||
Call<ResponseObject<AddProductToBasketResponseModel>> call =
|
||||
ApiService.apiInterface.addProductsToBasket(getAddToCartRequestParams());
|
||||
call.enqueue(new Callback<ResponseObject<AddProductToBasketResponseModel>>() {
|
||||
@Override
|
||||
public void onResponse(Call<ResponseObject<AddProductToBasketResponseModel>> call, Response<ResponseObject<AddProductToBasketResponseModel>> response) {
|
||||
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();
|
||||
}
|
||||
else
|
||||
DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, response.body().getData().getErrorMessage());
|
||||
}
|
||||
else
|
||||
ApiErrorUtils.parseError(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ResponseObject<AddProductToBasketResponseModel>> call, Throwable t) {
|
||||
DialogHelper.hideLoadingDialog();
|
||||
DialogHelper.showFailedDialog();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private HashMap<String, Object> getAddToCartRequestParams(){
|
||||
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
for(MenuProductOptionModel productOptionModel : menuProductModel.getProductOptionList()){
|
||||
|
||||
ArrayList<String> selectedOptionsList = new ArrayList<>();
|
||||
|
||||
for(MenuProductOptionValueModel productOptionValueModel : productOptionModel.getOptionValueModelList()){
|
||||
|
||||
if(productOptionValueModel.isSelected()){
|
||||
selectedOptionsList.add(productOptionValueModel.getProductOptionValueId());
|
||||
//params.put("product[" + productOptionModel.getProductOptionId() + "]", productOptionValueModel.getProductOptionValueId());
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
params.put("product[" + productOptionModel.getProductOptionId() + "]", selectedOptionsList);
|
||||
|
||||
}
|
||||
params.put("product_id", menuProductModel.getId());
|
||||
params.put("token", SessionHelper.getCustomerToken().getToken());
|
||||
params.put("quantity", productCount);
|
||||
return params;
|
||||
}
|
||||
|
||||
/*
|
||||
@Override
|
||||
public void onItemClick(Item item) {
|
||||
|
||||
@@ -20,12 +20,14 @@ import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import ch.pizzalink.android.R;
|
||||
import ch.pizzalink.android.activity.BaseActivity;
|
||||
import ch.pizzalink.android.activity.MainActivity;
|
||||
import ch.pizzalink.android.adapter.recycler.CartRecyclerAdapter;
|
||||
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.SessionHelper;
|
||||
import ch.pizzalink.android.helper.SharedPrefsHelper;
|
||||
import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
|
||||
import ch.pizzalink.android.model.cart.CartInfoModel;
|
||||
import ch.pizzalink.android.model.cart.CartProductModel;
|
||||
@@ -133,6 +135,9 @@ public class CartFragment extends BaseFragment {
|
||||
cartProductList.clear();
|
||||
cartRecyclerAdapter.notifyDataSetChanged();
|
||||
setCartLayoutsVisibility();
|
||||
SharedPrefsHelper.setCartItemCount(0);
|
||||
MainActivity mainActivity = (MainActivity) getActivity();
|
||||
mainActivity.setCartItemCount();
|
||||
}
|
||||
|
||||
else
|
||||
@@ -175,14 +180,14 @@ public class CartFragment extends BaseFragment {
|
||||
private void setCartLayoutsVisibility(){
|
||||
if(cartProductList.size() > 0){
|
||||
noProductsOnCartTextView.setVisibility(View.GONE);
|
||||
cartFragmentMainLayout.setBackgroundColor(grayColor);
|
||||
//cartFragmentMainLayout.setBackgroundColor(grayColor);
|
||||
cartRecyclerView.setVisibility(View.VISIBLE);
|
||||
cartInfoLayout.setVisibility(View.VISIBLE);
|
||||
}
|
||||
else {
|
||||
cartRecyclerView.setVisibility(View.GONE);
|
||||
cartInfoLayout.setVisibility(View.GONE);
|
||||
cartFragmentMainLayout.setBackgroundColor(whiteColor);
|
||||
//cartFragmentMainLayout.setBackgroundColor(whiteColor);
|
||||
noProductsOnCartTextView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class SharedPrefsHelper {
|
||||
private static final String PREF_KEY_USER = SHARED_PREFS_NAME + "user";
|
||||
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 SharedPreferences sharedPreferences =
|
||||
BaseActivity.currentActivity
|
||||
@@ -62,6 +63,7 @@ public class SharedPrefsHelper {
|
||||
public static void clearCustomerInfo(){
|
||||
editor.remove(PREF_KEY_USER);
|
||||
editor.remove(PREF_KEY_CUSTOMER_TOKEN);
|
||||
editor.remove(PREF_KEY_CART_ITEM_COUNT);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
@@ -79,7 +81,6 @@ public class SharedPrefsHelper {
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
|
||||
public static void setCustomerLoggedIn(boolean loggedId){
|
||||
editor.putBoolean(PREF_KEY_USER_LOG_IN_STATUS, loggedId);
|
||||
editor.apply();
|
||||
@@ -89,6 +90,15 @@ public class SharedPrefsHelper {
|
||||
return sharedPreferences.getBoolean(PREF_KEY_USER_LOG_IN_STATUS, false);
|
||||
}
|
||||
|
||||
public static void setCartItemCount(int cartItemCount){
|
||||
editor.putInt(PREF_KEY_CART_ITEM_COUNT, cartItemCount);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public static int getCartItemCount(){
|
||||
return sharedPreferences.getInt(PREF_KEY_CART_ITEM_COUNT, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
public static void saveCategoryList(ArrayList<Category> cats){
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package ch.pizzalink.android.model;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Created by cimenmus on 13/10/2017.
|
||||
*/
|
||||
|
||||
public class AddProductToBasketResponseModel {
|
||||
|
||||
@Expose @SerializedName("success") private String successMessage;
|
||||
@Expose @SerializedName("parameter") private String errorMessage;
|
||||
|
||||
public String getSuccessMessage() {
|
||||
return successMessage;
|
||||
}
|
||||
|
||||
public void setSuccessMessage(String successMessage) {
|
||||
this.successMessage = successMessage;
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
public void setErrorMessage(String errorMessage) {
|
||||
this.errorMessage = errorMessage;
|
||||
}
|
||||
}
|
||||
@@ -39,7 +39,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@color/white"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="24dp"
|
||||
|
||||
Reference in New Issue
Block a user