Files
Pizzalemon/app/src/main/java/ch/pizzapp/android/fragment/MenuFragment.java
2018-05-26 12:04:22 +03:00

162 lines
6.4 KiB
Java

package ch.pizzapp.android.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import butterknife.BindView;
import butterknife.ButterKnife;
import ch.pizzapp.android.R;
import ch.pizzapp.android.activity.BaseActivity;
import ch.pizzapp.android.activity.MainActivity;
import ch.pizzapp.android.activity.ProductPropertiesActivity;
import ch.pizzapp.android.adapter.recycler.MenuProductRecyclerAdapter;
import ch.pizzapp.android.api.ApiErrorUtils;
import ch.pizzapp.android.api.ApiService;
import ch.pizzapp.android.api.ResponseArray;
import ch.pizzapp.android.dialog.ProductPropertiesBottomSheetDialog;
import ch.pizzapp.android.helper.DialogHelper;
import ch.pizzapp.android.helper.DisplayHelper;
import ch.pizzapp.android.interfaces.RecyclerItemClickListener;
import ch.pizzapp.android.model.CategoryModel;
import ch.pizzapp.android.model.menu.MenuProductModel;
import ch.pizzapp.android.view.GridSpacesItemDecoration;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import static android.app.Activity.RESULT_OK;
/**
* Created by cimenmus on 02/10/2017.
*/
public class MenuFragment extends BaseFragment {
@BindView(R.id.menuProductRecyclerView) RecyclerView menuProductRecyclerView;
public static final String FRAGMENT_NAME = "menuFragment";
private int REQUEST_CODE_PRODUCT_PROPERTIES = 3765;
private ArrayList<MenuProductModel> menuProductList = new ArrayList<>();
private MenuProductRecyclerAdapter menuProductRecyclerAdapter;
private CategoryModel categoryModel;
public MenuFragment() {}
public static MenuFragment newInstance(CategoryModel categoryModel) {
Bundle bundle = new Bundle();
bundle.putSerializable("categoryModel", categoryModel);
MenuFragment fragment = new MenuFragment();
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_menu, container, false);
ButterKnife.bind(this, view);
getDataFromArguments();
initViews();
getProductsByCategory();
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE_PRODUCT_PROPERTIES && resultCode == RESULT_OK){
MainActivity mainActivity = (MainActivity) getActivity();
mainActivity.setCartItemCount();
}
}
private void getDataFromArguments(){
categoryModel = (CategoryModel) getArguments().getSerializable("categoryModel");
}
private void initViews(){
setPizzalinkToolbarFields(true, categoryModel.getName());
initRecyclerView();
}
private void initRecyclerView(){
GridLayoutManager layoutManager = new GridLayoutManager(BaseActivity.currentActivity, 2);
menuProductRecyclerView.setLayoutManager(layoutManager);
menuProductRecyclerAdapter = new MenuProductRecyclerAdapter(
menuProductList,
categoryModel.isDescriptionVisible(),
new RecyclerItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Intent productPropertiesIntent = new Intent(BaseActivity.currentActivity, ProductPropertiesActivity.class);
productPropertiesIntent.putExtra("menuProductModel", menuProductList.get(position));
startActivityForResult(productPropertiesIntent, REQUEST_CODE_PRODUCT_PROPERTIES);
//showBottomsheetDialog(menuProductList.get(position));
}
});
menuProductRecyclerView.addItemDecoration(new GridSpacesItemDecoration(DisplayHelper.dpToPx(12)));
menuProductRecyclerView.setAdapter(menuProductRecyclerAdapter);
}
private void getProductsByCategory(){
DialogHelper.showLoadingDialog();
Call<ResponseArray<MenuProductModel>> call = ApiService.apiInterface.getProductsByCategory(categoryModel.getCategoryIdString());
call.enqueue(new Callback<ResponseArray<MenuProductModel>>() {
@Override
public void onResponse(Call<ResponseArray<MenuProductModel>> call, Response<ResponseArray<MenuProductModel>> 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<ResponseArray<MenuProductModel>> call, Throwable t) {
DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog();
}
});
}
private void fillAndNotifyProductList(ArrayList<MenuProductModel> productList){
MenuProductModel.checkNull(productList);
menuProductList.clear();
menuProductList.addAll(productList);
sortProductsByName();
menuProductRecyclerAdapter.notifyDataSetChanged();
}
public void showBottomsheetDialog(MenuProductModel menuProductModel){
ProductPropertiesBottomSheetDialog productPropertiesBottomSheetDialog = new ProductPropertiesBottomSheetDialog();
productPropertiesBottomSheetDialog.setMenuProductModel(menuProductModel);
productPropertiesBottomSheetDialog.show(getChildFragmentManager(), "dialog");
}
private void sortProductsByName(){
Collections.sort(menuProductList, new Comparator<MenuProductModel>() {
@Override
public int compare(MenuProductModel product1, MenuProductModel product2) {
return product1.getName().compareTo(product2.getName());
}
});
}
}