package com.mozu.mozuandroidinstoreassistant.app.order;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import com.mozu.api.contracts.commerceruntime.orders.Order;
import com.mozu.api.contracts.commerceruntime.payments.Payment;
import com.mozu.mozuandroidinstoreassistant.app.R;
import com.mozu.mozuandroidinstoreassistant.app.order.adapters.OrderDetailPaymentsAdapter;
import java.text.NumberFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class OrderDetailPaymentFragment extends Fragment {
private Order mOrder;
private NumberFormat mNumberFormat;
public OrderDetailPaymentFragment() {
// Required empty public constructor
setRetainInstance(true);
mNumberFormat = NumberFormat.getCurrencyInstance();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.order_detail_payment_fragment, null);
if (mOrder != null) {
setOrderToViews(view);
}
return view;
}
class PaymentsSort implements Comparator<Payment> {
@Override
public int compare(Payment p1, Payment p2) {
if (p1.getAuditInfo().getCreateDate().getMillis() > p2.getAuditInfo().getCreateDate().getMillis())
return -1;
else if ((p2.getAuditInfo().getCreateDate().getMillis() > p1.getAuditInfo().getCreateDate().getMillis())) {
return 1;
} else {
return 0;
}
}
}
private Double getTotalPayment(List<Payment> payments) {
Double total = 0.0;
for (Payment payment : payments) {
total += payment.getAmountCollected();
}
return total;
}
private void setOrderToViews(View view) {
ListView paymentList = (ListView) view.findViewById(R.id.payments_list);
List<Payment> payments = mOrder.getPayments();
TextView emptyView = (TextView) view.findViewById(R.id.empty_payments_message);
if (payments != null && payments.size() > 0) {
Collections.sort(payments, new PaymentsSort());
final OrderDetailPaymentsAdapter adapter = new OrderDetailPaymentsAdapter(getActivity(), payments);
paymentList.setAdapter(adapter);
paymentList.setEmptyView(emptyView);
emptyView.setVisibility(View.GONE);
TextView orderTotal = (TextView) view.findViewById(R.id.order_total);
TextView paymentsReceived = (TextView) view.findViewById(R.id.payments_received);
TextView balance = (TextView) view.findViewById(R.id.balance);
TextView status = (TextView) view.findViewById(R.id.status);
if (mOrder.getPaymentStatus() != null) {
status.setText(mOrder.getPaymentStatus());
} else {
status.setText(getString(R.string.not_available));
}
orderTotal.setText(mNumberFormat.format(mOrder.getTotal()));
Double amountCollected = getTotalPayment(payments);
paymentsReceived.setText(mNumberFormat.format(amountCollected));
balance.setText(mNumberFormat.format(mOrder.getTotal() - amountCollected));
paymentList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
FragmentManager manager = getFragmentManager();
Payment payment = adapter.getItem(position);
PaymentInfoFragment frag = PaymentInfoFragment.getInstance(payment);
frag.show(manager, "payment_info");
}
});
} else {
emptyView.setVisibility(View.VISIBLE);
}
}
public void setOrder(Order order) {
mOrder = order;
}
}