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 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> call = ApiService.apiInterface.getProductsByCategory(categoryModel.getCategoryIdString()); 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 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() { @Override public int compare(MenuProductModel product1, MenuProductModel product2) { return product1.getName().compareTo(product2.getName()); } }); } }