fix: Principal Terma and Repay validation while applying for loan
diff --git a/app/src/main/java/com/mifos/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java b/app/src/main/java/com/mifos/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
index 3870d88..12048a1 100644
--- a/app/src/main/java/com/mifos/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
+++ b/app/src/main/java/com/mifos/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
@@ -28,7 +28,9 @@
import com.mifos.apache.fineract.ui.base.MifosBaseFragment;
import com.mifos.apache.fineract.ui.base.Toaster;
import com.mifos.apache.fineract.ui.online.loanaccounts.loanapplication.OnNavigationBarListener;
+import com.mifos.apache.fineract.utils.Utils;
import com.mifos.apache.fineract.utils.ValidateIdentifierUtil;
+import com.mifos.apache.fineract.utils.ValidationUtil;
import com.stepstone.stepper.Step;
import com.stepstone.stepper.VerificationError;
@@ -66,15 +68,24 @@
@BindView(R.id.et_principal_amount)
EditText etPrincipalAmount;
+ @BindView(R.id.til_principal_amount)
+ TextInputLayout tilPrincipalAmount;
+
@BindView(R.id.et_term)
EditText etTerm;
+ @BindView(R.id.til_term)
+ TextInputLayout tilTerm;
+
@BindView(R.id.sp_term_unit_type)
AppCompatSpinner spTermUnitType;
@BindView(R.id.et_repay)
EditText etRepay;
+ @BindView(R.id.til_repay)
+ TextInputLayout tilRepay;
+
@BindView(R.id.sp_repay_unit_type)
AppCompatSpinner spRepayUnitType;
@@ -362,23 +373,25 @@
Double value = Double.parseDouble(etTerm.getText().toString());
if (etTerm.getText().toString().equals("")) {
- etTerm.setError(getString(R.string.required));
- etTerm.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilTerm, getString(R.string.required));
return false;
} else if (!(minimum <= value)) {
- etTerm.setError(getString(R.string.value_must_greater_or_equal_to, minimum));
- etTerm.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilTerm,
+ getString(R.string.value_must_greater_or_equal_to,
+ Utils.getPrecision(minimum)));
return false;
} else if (!(value <= maximum)) {
- etTerm.setError(getString(R.string.value_must_less_than_or_equal_to, maximum));
- etTerm.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilTerm,
+ getString(R.string.value_must_less_than_or_equal_to,
+ Utils.getPrecision(maximum)));
return false;
}
} catch (NumberFormatException e) {
- etTerm.setError(getString(R.string.required));
- etTerm.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilTerm,
+ getString(R.string.required));
return false;
}
+ ValidationUtil.hideTextInputLayoutError(tilTerm);
return true;
}
@@ -390,36 +403,33 @@
Double value = Double.parseDouble(etPrincipalAmount.getText().toString());
if (etPrincipalAmount.getText().toString().equals("")) {
- etPrincipalAmount.setError(getString(R.string.required));
- etPrincipalAmount.requestFocus();
+ ValidationUtil.isEmpty(getActivity(),
+ etPrincipalAmount.getText().toString().trim(), tilPrincipalAmount);
return false;
} else if (!(minimum <= value)) {
- etPrincipalAmount.setError(
- getString(R.string.value_must_greater_or_equal_to, minimum));
- etPrincipalAmount.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilPrincipalAmount,
+ getString(R.string.value_must_greater_or_equal_to,
+ Utils.getPrecision(minimum)));
return false;
} else if (!(value <= maximum)) {
- etPrincipalAmount.setError(
- getString(R.string.value_must_less_than_or_equal_to, maximum));
- etPrincipalAmount.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilPrincipalAmount,
+ getString(R.string.value_must_less_than_or_equal_to,
+ Utils.getPrecision(maximum)));
return false;
}
} catch (NumberFormatException e) {
- etPrincipalAmount.setError(getString(R.string.required));
- etPrincipalAmount.requestFocus();
+ ValidationUtil.showTextInputLayoutError(tilPrincipalAmount,
+ getString(R.string.required));
return false;
}
+ ValidationUtil.hideTextInputLayoutError(tilPrincipalAmount);
return true;
}
@Override
public boolean validateRepay() {
- if (etRepay.getText().toString().equals("")) {
- etRepay.setError(getString(R.string.required));
- etRepay.requestFocus();
- return false;
- }
- return true;
+ return ValidationUtil.isEmpty(getActivity(),
+ etRepay.getText().toString().trim(), tilRepay);
}
@Override
diff --git a/app/src/main/java/com/mifos/apache/fineract/utils/ValidationUtil.java b/app/src/main/java/com/mifos/apache/fineract/utils/ValidationUtil.java
index eba04ad..8f686e8 100644
--- a/app/src/main/java/com/mifos/apache/fineract/utils/ValidationUtil.java
+++ b/app/src/main/java/com/mifos/apache/fineract/utils/ValidationUtil.java
@@ -46,7 +46,18 @@
context.getString(R.string.required));
return false;
}
- ValidateIdentifierUtil.showTextInputLayoutError(inputLayout, null);
+ hideTextInputLayoutError(inputLayout);
return true;
}
+
+ public static void showTextInputLayoutError(TextInputLayout textInputLayout,
+ String errorMessage) {
+ textInputLayout.setErrorEnabled(true);
+ textInputLayout.setError(errorMessage);
+ }
+
+ public static void hideTextInputLayoutError(TextInputLayout textInputLayout) {
+ textInputLayout.setErrorEnabled(false);
+ textInputLayout.setError(null);
+ }
}
diff --git a/app/src/main/res/layout/fragment_loan_details.xml b/app/src/main/res/layout/fragment_loan_details.xml
index 9301261..382eb4b 100644
--- a/app/src/main/res/layout/fragment_loan_details.xml
+++ b/app/src/main/res/layout/fragment_loan_details.xml
@@ -50,7 +50,7 @@
<android.support.design.widget.TextInputLayout
android:id="@+id/til_short_name"
android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/layout_padding_4dp"
+ android:layout_marginTop="@dimen/layout_padding_16dp"
android:layout_width="match_parent"
app:errorEnabled="true">
@@ -63,6 +63,7 @@
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
+ android:id="@+id/til_principal_amount"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_padding_4dp"
android:layout_width="match_parent">
@@ -83,6 +84,7 @@
android:weightSum="2">
<android.support.design.widget.TextInputLayout
+ android:id="@+id/til_term"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/layout_padding_4dp"
android:layout_weight="1"
@@ -114,6 +116,7 @@
android:weightSum="2">
<android.support.design.widget.TextInputLayout
+ android:id="@+id/til_repay"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/layout_padding_4dp"
android:layout_weight="1"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fd88ccb..520833a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -201,8 +201,8 @@
<string name="empty_customer_activities">There is no activities to show</string>
<!--Edit Text validations-->
- <string name="value_must_greater_or_equal_to">Value must be greater than or equal to  %1$f</string>
- <string name="value_must_less_than_or_equal_to">Value must be less than or equal to  %1$f</string>
+ <string name="value_must_greater_or_equal_to">Value must be greater than or equal to  %1$s</string>
+ <string name="value_must_less_than_or_equal_to">Value must be less than or equal to  %1$s</string>
<string name="amount_should_be_not_empty">Amount should not be empty</string>
<string name="description_should_not_be_empty">Description should not be empty</string>
<string name="customer_name_should_not_be_empty">Customer name should not be empty</string>