package com.liferay.ldxdemo.fragments;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.liferay.ldxdemo.R;
import com.liferay.ldxdemo.activities.FragmentLoaded;
import com.liferay.ldxdemo.activities.MainActivity;
import com.liferay.mobile.android.callback.typed.JSONObjectCallback;
import com.liferay.mobile.android.service.Session;
import com.liferay.mobile.android.v62.ddlrecordset.DDLRecordSetService;
import com.liferay.mobile.screens.base.list.BaseListListener;
import com.liferay.mobile.screens.base.list.BaseListScreenlet;
import com.liferay.mobile.screens.context.SessionContext;
import com.liferay.mobile.screens.ddl.list.DDLListScreenlet;
import com.liferay.mobile.screens.ddl.model.Record;
import com.liferay.mobile.screens.util.LiferayLogger;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
/**
* @author Javier Gamarra
*/
public class WalletFragment extends AbstractWebContentFragment implements BaseListListener<Record> {
public static Fragment newInstance() {
return new WalletFragment();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.content_wallet, container, false);
DDLListScreenlet ddlList = (DDLListScreenlet) view.findViewById(R.id.wallet_default);
ddlList.setListener(this);
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!SessionContext.isLoggedIn()) {
startActivity(new Intent(getActivity(), MainActivity.class));
}
}
@Override
public void onListPageFailed(int startRow, Exception e) {
}
@Override
public void onListPageReceived(int startRow, int endRow, List<Record> entries, int rowCount) {
}
@Override
public void onListItemSelected(Record element, View view) {
loadDDLForm(element);
}
private void loadDDLForm(Record element) {
final Integer recordId = (Integer) (element.getModelAttributes().get("recordId"));
final Integer recordSetId = (Integer) (element.getModelAttributes().get("recordSetId"));
try {
Session session = SessionContext.createSessionFromCurrentSession();
session.setCallback(getCallback(recordId, recordSetId));
new DDLRecordSetService(session).getRecordSet(recordSetId);
} catch (Exception e) {
LiferayLogger.e("error loading structure id", e);
}
}
private JSONObjectCallback getCallback(final Integer recordId, final Integer recordSetId) {
return new JSONObjectCallback() {
@Override
public void onSuccess(JSONObject result) {
try {
getFragmentManager().
beginTransaction().
replace(R.id.content_frame, CouponFragment.newInstance(recordId, recordSetId, result.getInt("DDMStructureId"))).
addToBackStack(null).
commit();
} catch (JSONException e) {
LiferayLogger.e("error parsing JSON", e);
}
}
@Override
public void onFailure(Exception e) {
LiferayLogger.e("error loading structure id", e);
}
};
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
FragmentLoaded activity = (FragmentLoaded) getActivity();
activity.onFragmentLoaded(getView().findViewById(R.id.wallet_layout), true);
}
@Override
public void error(Exception e, String userAction) {
}
}