Files
Pizzalemon/app/src/main/java/ch/pizzacucia/android/fragment/MenuFragment.java
2020-04-18 17:10:06 +03:00

160 lines
6.2 KiB
Java

package ch.pizzacucia.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.pizzacucia.android.R;
import ch.pizzacucia.android.activity.BaseActivity;
import ch.pizzacucia.android.activity.MainActivity;
import ch.pizzacucia.android.activity.ProductDetailsActivity;
import ch.pizzacucia.android.adapter.recycler.MenuProductRecyclerAdapter;
import ch.pizzacucia.android.api.ApiErrorUtils;
import ch.pizzacucia.android.api.ApiService;
import ch.pizzacucia.android.api.ResponseArray;
import ch.pizzacucia.android.helper.DialogHelper;
import ch.pizzacucia.android.helper.SessionHelper;
import ch.pizzacucia.android.interfaces.RecyclerItemClickListener;
import ch.pizzacucia.android.model.CategoryModel;
import ch.pizzacucia.android.model.menu.MenuProductModel;
import ch.pizzacucia.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 &&
getActivity() != null &&
getActivity() instanceof MainActivity){
BaseActivity.currentActivity = (MainActivity)getActivity();
MainActivity mainActivity = (MainActivity) BaseActivity.currentActivity;
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, ProductDetailsActivity.class);
productPropertiesIntent.putExtra("menuProductModel", menuProductList.get(position));
startActivityForResult(productPropertiesIntent, REQUEST_CODE_PRODUCT_PROPERTIES);
}
});
menuProductRecyclerView.addItemDecoration(new GridSpacesItemDecoration(2, 16, true));
menuProductRecyclerView.setAdapter(menuProductRecyclerAdapter);
}
private void getProductsByCategory(){
DialogHelper.showLoadingDialog();
Call<ResponseArray<MenuProductModel>> call = ApiService.apiInterface.getProductsByCategory(
SessionHelper.getSelectedStore().getStoreName(),
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();
}
private void sortProductsByName(){
Collections.sort(menuProductList, new Comparator<MenuProductModel>() {
@Override
public int compare(MenuProductModel product1, MenuProductModel product2) {
return product1.getName().compareTo(product2.getName());
}
});
}
}