| package org.apache.fineract.ui.online.customers.customertasks; |
| |
| import android.app.Dialog; |
| import android.content.DialogInterface; |
| import android.os.Bundle; |
| import android.support.annotation.NonNull; |
| import android.support.design.widget.BottomSheetBehavior; |
| import android.support.design.widget.BottomSheetDialog; |
| import android.support.v4.content.ContextCompat; |
| 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 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; |
| |
| @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; |
| } |
| |
| @OnClick(R.id.btn_submit_task) |
| void submitTask() { |
| command.setComment(etComment.getText().toString().trim()); |
| etComment.setEnabled(false); |
| tasksBottomSheetPresenter.changeCustomerStatus(customerIdentifier, 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 showError() { |
| 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(); |
| } |
| } |