blob: c09ca258cb37ecd6b352075d292f7bac6e702ab8 [file] [log] [blame]
package org.apache.fineract.ui.online.customers.customertasks;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import org.apache.fineract.R;
import org.apache.fineract.data.models.customer.Command;
import org.apache.fineract.data.models.customer.Customer;
import org.apache.fineract.ui.base.FineractBaseActivity;
import org.apache.fineract.ui.base.FineractBaseBottomSheetDialogFragment;
import org.apache.fineract.ui.base.Toaster;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* @author Rajan Maurya
* On 27/07/17.
*/
public class CustomerTasksBottomSheetFragment extends FineractBaseBottomSheetDialogFragment
implements CustomerTasksBottomSheetContract.View {
@BindView(R.id.iv_task1)
ImageView ivTask1;
@BindView(R.id.iv_task2)
ImageView ivTask2;
@BindView(R.id.tv_task1)
TextView tvTask1;
@BindView(R.id.tv_task2)
TextView tvTask2;
@BindView(R.id.ll_task2)
LinearLayout llTask2;
@BindView(R.id.ll_task_list)
LinearLayout llTaskList;
@BindView(R.id.ll_task_form)
LinearLayout llTaskForm;
@BindView(R.id.tv_header)
TextView tvHeader;
@BindView(R.id.tv_sub_header)
TextView tvSubHeader;
@BindView(R.id.et_comment)
EditText etComment;
@BindView(R.id.btn_submit_task)
Button btnSubmitTask;
@Inject
CustomerTasksBottomSheetPresenter tasksBottomSheetPresenter;
View rootView;
private BottomSheetBehavior behavior;
private Customer.State state;
private Command command;
private String customerIdentifier;
private OnTasksChangeListener onTasksChangeListener;
private Customer customer;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
rootView = View.inflate(getContext(), R.layout.bottom_sheet_task_list, null);
dialog.setContentView(rootView);
behavior = BottomSheetBehavior.from((View) rootView.getParent());
((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
tasksBottomSheetPresenter.attachView(this);
ButterKnife.bind(this, rootView);
command = new Command();
switch (state) {
case ACTIVE:
ivTask1.setImageDrawable(
ContextCompat.getDrawable(getActivity(), R.drawable.ic_lock_black_24dp));
tvTask1.setText(getString(R.string.lock));
ivTask2.setImageDrawable(
ContextCompat.getDrawable(getActivity(), R.drawable.ic_close_black_24dp));
tvTask2.setText(getString(R.string.close));
break;
case PENDING:
llTask2.setVisibility(View.GONE);
ivTask1.setImageDrawable(ContextCompat.getDrawable(getActivity(),
R.drawable.ic_check_circle_black_24dp));
ivTask1.setColorFilter(ContextCompat.getColor(getActivity(), R.color.status));
tvTask1.setText(getString(R.string.activate));
break;
case LOCKED:
ivTask1.setImageDrawable(ContextCompat.getDrawable(getActivity(),
R.drawable.ic_lock_open_black_24dp));
ivTask1.setColorFilter(ContextCompat.getColor(getActivity(), R.color.status));
tvTask1.setText(getString(R.string.un_lock));
ivTask2.setImageDrawable(
ContextCompat.getDrawable(getActivity(), R.drawable.ic_close_black_24dp));
tvTask2.setText(getString(R.string.close));
break;
case CLOSED:
llTask2.setVisibility(View.GONE);
ivTask1.setImageDrawable(ContextCompat.getDrawable(getActivity(),
R.drawable.ic_check_circle_black_24dp));
ivTask1.setColorFilter(ContextCompat.getColor(getActivity(), R.color.status));
tvTask1.setText(getString(R.string.reopen));
break;
}
return dialog;
}
@OnClick(R.id.iv_task1)
void onClickTask1() {
switch (state) {
case ACTIVE:
command.setAction(Command.Action.LOCK);
tvHeader.setText(getString(R.string.lock));
tvSubHeader.setText(
getString(R.string.please_verify_following_task, getString(R.string.lock)));
btnSubmitTask.setText(getString(R.string.lock));
state = Customer.State.LOCKED;
break;
case PENDING:
command.setAction(Command.Action.ACTIVATE);
tvHeader.setText(getString(R.string.activate));
tvSubHeader.setText(getString(R.string.please_verify_following_task,
getString(R.string.activate)));
btnSubmitTask.setText(getString(R.string.activate));
state = Customer.State.ACTIVE;
break;
case LOCKED:
command.setAction(Command.Action.UNLOCK);
tvHeader.setText(getString(R.string.un_lock));
tvSubHeader.setText(getString(R.string.please_verify_following_task,
getString(R.string.un_lock)));
btnSubmitTask.setText(getString(R.string.un_lock));
state = Customer.State.ACTIVE;
break;
case CLOSED:
command.setAction(Command.Action.REOPEN);
tvHeader.setText(getString(R.string.reopen));
tvSubHeader.setText(getString(R.string.please_verify_following_task,
getString(R.string.reopen)));
btnSubmitTask.setText(getString(R.string.reopen));
state = Customer.State.ACTIVE;
break;
}
llTaskList.setVisibility(View.GONE);
llTaskForm.setVisibility(View.VISIBLE);
}
@OnClick(R.id.iv_task2)
void onClickTask2() {
command.setAction(Command.Action.CLOSE);
tvHeader.setText(getString(R.string.close));
tvSubHeader.setText(getString(R.string.please_verify_following_task,
getString(R.string.close)));
btnSubmitTask.setText(getString(R.string.close));
state = Customer.State.CLOSED;
llTaskList.setVisibility(View.GONE);
llTaskForm.setVisibility(View.VISIBLE);
}
public void setCustomerStatus(Customer.State customerStatus) {
state = customerStatus;
}
public void setCustomerIdentifier(String identifier) {
customerIdentifier = identifier;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
@OnClick(R.id.btn_submit_task)
void submitTask() {
command.setComment(etComment.getText().toString().trim());
etComment.setEnabled(false);
tasksBottomSheetPresenter.changeCustomerStatus(customerIdentifier, customer, command);
}
@OnClick(R.id.btn_cancel)
void onCancel() {
dismiss();
}
public void setCustomerTasksChangeListener(OnTasksChangeListener onTasksChangeListener) {
this.onTasksChangeListener = onTasksChangeListener;
}
@Override
public void statusChangedSuccessfully() {
Toast.makeText(getActivity(), R.string.task_updated_successfully, Toast.LENGTH_LONG).show();
onTasksChangeListener.changeCustomerStatus(state);
dismiss();
}
@Override
public void showProgressbar() {
showMifosProgressDialog(getString(R.string.updating_status));
}
@Override
public void hideProgressbar() {
hideMifosProgressDialog();
}
@Override
public void showNoInternetConnection() {
etComment.setEnabled(true);
Toaster.show(rootView, getString(R.string.no_internet_connection));
}
@Override
public void showError(String message) {
etComment.setEnabled(true);
Toaster.show(rootView, getString(R.string.error_updating_status));
}
@Override
public void onStart() {
super.onStart();
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
@Override
public void onDestroyView() {
super.onDestroyView();
hideMifosProgressDialog();
tasksBottomSheetPresenter.detachView();
}
}