blob: 9ed3ee4b47b566253947046a6777b7bcf34f9661 [file] [log] [blame]
package org.apache.fineract.ui.online.customers.createcustomer;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
import org.apache.fineract.R;
import org.apache.fineract.data.models.customer.ContactDetail;
import org.apache.fineract.data.models.customer.Customer;
import org.apache.fineract.ui.base.MifosBaseFragment;
import org.apache.fineract.utils.ConstantKeys;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* @author Rajan Maurya
* On 25/07/17.
*/
public class FormCustomerContactFragment extends MifosBaseFragment implements Step, TextWatcher {
@BindView(R.id.til_email)
TextInputLayout tilEmail;
@BindView(R.id.et_email)
EditText etEmail;
@BindView(R.id.et_phone_number)
EditText etPhone;
@BindView(R.id.et_mobile)
EditText etMobile;
View rootView;
private Customer customer;
private CustomerAction customerAction;
private OnNavigationBarListener.CustomerContactDetails onNavigationBarListener;
public static FormCustomerContactFragment newInstance(Customer customer,
CustomerAction action) {
FormCustomerContactFragment fragment = new FormCustomerContactFragment();
Bundle args = new Bundle();
args.putParcelable(ConstantKeys.CUSTOMER, customer);
args.putSerializable(ConstantKeys.CUSTOMER_ACTION, action);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
customer = getArguments().getParcelable(ConstantKeys.CUSTOMER);
customerAction = (CustomerAction) getArguments().getSerializable(
ConstantKeys.CUSTOMER_ACTION);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_form_customer_contact, container, false);
ButterKnife.bind(this, rootView);
etEmail.addTextChangedListener(this);
if (customerAction == CustomerAction.EDIT) {
showPreviousContactDetails();
}
return rootView;
}
public void showPreviousContactDetails() {
if (customer.getContactDetails().size() != 0) {
for (ContactDetail contactDetail : customer.getContactDetails()) {
showContactDetails(contactDetail);
}
}
}
public void showContactDetails(ContactDetail contactDetail) {
switch (contactDetail.getType()) {
case EMAIL:
etEmail.setText(contactDetail.getValue());
break;
case MOBILE:
etMobile.setText(contactDetail.getValue());
break;
case PHONE:
etPhone.setText(contactDetail.getValue());
break;
}
}
@Override
public VerificationError verifyStep() {
if (!validateEmail()) {
return new VerificationError(null);
} else {
List<ContactDetail> contactDetails = new ArrayList<>();
if (!TextUtils.isEmpty(etEmail.getText().toString().trim())) {
ContactDetail emailContactDetail = new ContactDetail();
emailContactDetail.setGroup(ContactDetail.Group.BUSINESS);
emailContactDetail.setType(ContactDetail.Type.EMAIL);
emailContactDetail.setPreferenceLevel(1);
emailContactDetail.setValue(etEmail.getText().toString().trim());
contactDetails.add(emailContactDetail);
}
if (!TextUtils.isEmpty(etPhone.getText().toString().trim())) {
ContactDetail phoneContactDetail = new ContactDetail();
phoneContactDetail.setGroup(ContactDetail.Group.BUSINESS);
phoneContactDetail.setType(ContactDetail.Type.PHONE);
phoneContactDetail.setPreferenceLevel(1);
phoneContactDetail.setValue(etPhone.getText().toString().trim());
contactDetails.add(phoneContactDetail);
}
if (!TextUtils.isEmpty(etMobile.getText().toString().trim())) {
ContactDetail mobileContactDetail = new ContactDetail();
mobileContactDetail.setGroup(ContactDetail.Group.BUSINESS);
mobileContactDetail.setType(ContactDetail.Type.MOBILE);
mobileContactDetail.setPreferenceLevel(1);
mobileContactDetail.setValue(etMobile.getText().toString().trim());
contactDetails.add(mobileContactDetail);
}
onNavigationBarListener.setContactDetails(contactDetails);
}
return null;
}
@Override
public void afterTextChanged(Editable s) {
if ((etEmail.getText().hashCode() == s.hashCode())) {
validateEmail();
}
}
public boolean validateEmail() {
String email = etEmail.getText().toString().trim();
if (!TextUtils.isEmpty(email) && !isValidEmail(email)) {
tilEmail.setErrorEnabled(true);
tilEmail.setError(getString(R.string.invalid_email));
return false;
} else if (TextUtils.isEmpty(email)) {
tilEmail.setErrorEnabled(true);
tilEmail.setError(null);
return true;
}
tilEmail.setErrorEnabled(true);
tilEmail.setError(null);
return true;
}
private static boolean isValidEmail(String email) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
@Override
public void onSelected() {
}
@Override
public void onError(@NonNull VerificationError error) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity activity = context instanceof Activity ? (Activity) context : null;
try {
onNavigationBarListener = (OnNavigationBarListener.CustomerContactDetails) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnNavigationBarListener.CustomerContactDetails");
}
}
}