package com.mozu.mozuandroidinstoreassistant.app.customer; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import android.widget.TextView; import com.mozu.api.contracts.customer.ContactType; import com.mozu.api.contracts.customer.CustomerAccount; import com.mozu.api.contracts.customer.CustomerContact; import com.mozu.mozuandroidinstoreassistant.app.R; import com.mozu.mozuandroidinstoreassistant.app.data.customer.CustomerContactDataItem; import com.mozu.mozuandroidinstoreassistant.app.views.LoadingView; import java.util.ArrayList; import java.util.List; public class CustomerAddressFragment extends Fragment { private static String CUSTOMER_ACCOUNT = "customerAccount"; private static String BILLING = "billing"; private static String SHIPPING = "shipping"; private final String SHIPPING_DEFAULT_TYPE = "Default Shipping"; private final String BILLING_DEFAULT_TYPE = "Default Billing"; private GridView mBillingGridView; private CustomerAddressAdapter mBillingAdapter; private List<CustomerContactDataItem> mBillingContacts; private List<CustomerContactDataItem> mShippingContacts; private CustomerAccount mCustomerAccount; private LoadingView mAddressLoading ; public static CustomerAddressFragment getInstance(CustomerAccount customerAccount){ CustomerAddressFragment customerAddressFragment = new CustomerAddressFragment(); Bundle b = new Bundle(); b.putSerializable(CUSTOMER_ACCOUNT,customerAccount); customerAddressFragment.setArguments(b); return customerAddressFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mCustomerAccount = (CustomerAccount) getArguments().getSerializable(CUSTOMER_ACCOUNT); mBillingContacts = new ArrayList<>(); mShippingContacts = new ArrayList<>(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View fragmentView = inflater.inflate(R.layout.customer_address_layout, container, false); updateContacts(mCustomerAccount); mAddressLoading = (LoadingView) fragmentView.findViewById(R.id.customer_address_loading); TextView billingHeader = (TextView) fragmentView.findViewById(R.id.billing_header); mBillingGridView = (GridView) fragmentView.findViewById(R.id.customer_address_grid); if (mBillingContacts.size() > 0 || mShippingContacts.size() >0) { mAddressLoading.success(); if (mBillingContacts.size() > 0) { mBillingAdapter = new CustomerAddressAdapter(mBillingContacts); mBillingGridView.setAdapter(mBillingAdapter); billingHeader.setVisibility(View.GONE); } else { mBillingGridView.setVisibility(View.GONE); billingHeader.setVisibility(View.GONE); } } else { mAddressLoading.setError(getActivity().getResources().getString(R.string.empty_address)); } return fragmentView; } protected void updateContacts(CustomerAccount customerAccount){ List<CustomerContact> customerContacts = customerAccount.getContacts(); if(customerContacts == null) return; for(CustomerContact contact:customerContacts){ if(contact.getTypes().size() > 0 ) { for (ContactType type : contact.getTypes()) { if (type.getName().equalsIgnoreCase(BILLING)) { CustomerContactDataItem customerContactDataItem = new CustomerContactDataItem(); customerContactDataItem.setCustomerContact(contact); if(type.getIsPrimary()) { customerContactDataItem.setTypeMessage(BILLING_DEFAULT_TYPE); mBillingContacts.add(0,customerContactDataItem); }else{ mBillingContacts.add(customerContactDataItem); } } else if (type.getName().equalsIgnoreCase(SHIPPING)) { CustomerContactDataItem customerContactDataItem = new CustomerContactDataItem(); customerContactDataItem.setCustomerContact(contact); if(type.getIsPrimary()) { customerContactDataItem.setTypeMessage(SHIPPING_DEFAULT_TYPE); mBillingContacts.add(0,customerContactDataItem); }else{ mBillingContacts.add(customerContactDataItem); } } } }else{ CustomerContactDataItem customerContactDataItem = new CustomerContactDataItem(); customerContactDataItem.setCustomerContact(contact); customerContactDataItem.setTypeMessage(null); mBillingContacts.add(customerContactDataItem); } } } }