Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Additional Questions - New Pages #457

Merged
merged 9 commits into from
Dec 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
39 changes: 37 additions & 2 deletions src/main/java/org/ladocuploader/app/inputs/LaDigitalAssister.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,34 @@ public class LaDigitalAssister extends FlowInputs {

private String schoolInd;

private String students;
@NotEmpty(message="{error.missing-general}")
private List<String> students;

@NotBlank(message="{error.missing-general}")
@DynamicField
private String schoolName;

@NotBlank(message="{error.missing-general}")
@DynamicField
private String schoolEnrollmentLevel;

private String pregnancyInd;

private String pregnancies;
@NotEmpty(message="{error.missing-general}")
private List<String> pregnancies;

// With dynamic fields and the date template, the data is stored as pregnancyDueDate<wildcard><uuid>Day so changed the ordering to start with the date piece
@NotBlank(message="{error.missing-general}")
@DynamicField
private String dayPregnancyDueDate;

@NotBlank(message="{error.missing-general}")
@DynamicField
private String monthPregnancyDueDate;

@NotBlank(message="{error.missing-general}")
@DynamicField
private String yearPregnancyDueDate;

private String outOfStateBenefitsInd;

Expand Down Expand Up @@ -323,12 +346,22 @@ public class LaDigitalAssister extends FlowInputs {
@NotBlank(message="{error.missing-dollar-amount}")
private String expensesUtilitiesOther;

private String receivesEnergyAssistance;

private String assistanceThroughLiheap;

private String hasDependentCareExpenses;

@Money(message="{error.invalid-money}")
@NotBlank(message="{error.missing-dollar-amount}")
private String expensesDependentCare;

private String hasChildSupportExpenses;

@Money(message="{error.invalid-money}")
@NotBlank(message="{error.missing-dollar-amount}")
private String expensesChildSupport;

@NotEmpty(message="{error.missing-general}")
private List<String> householdInsuranceExpenses;

Expand Down Expand Up @@ -359,6 +392,8 @@ public class LaDigitalAssister extends FlowInputs {
private String interestedInWicInd;

// Final Screen
private String needsNewEbtCard;

private String authorizedRepresentative;

private String authorizedRepCommsAuthorization;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

import formflow.library.config.submission.Action;
import formflow.library.data.Submission;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.ladocuploader.app.utils.HouseholdUtilities;
import org.springframework.stereotype.Component;

/**
Expand All @@ -17,45 +15,7 @@ public class ReformatPersonalSituationUserData implements Action {

@Override
public void run(Submission submission) {
Map<String, Object> inputData = submission.getInputData();

submission.getInputData().put("affectedByPersonalSituations[]", reformatPersonalSituations(inputData));
}

private ArrayList<LinkedHashMap> reformatPersonalSituations(Map<String, Object> inputData) {
ArrayList<LinkedHashMap> householdMembers = (ArrayList) inputData.get("household");
ArrayList<String> hasPersonalSituations = (ArrayList) inputData.get("personalSituationsHouseholdUUID[]");
ArrayList<LinkedHashMap> personalSituationsObject = new ArrayList<>();

hasPersonalSituations.forEach((String id) -> {
LinkedHashMap user = new LinkedHashMap();
if (id.equals("you")) {
user.put("uuid", id);
user.put("firstName", inputData.get("firstName") + " (you)");
user.put("lastName", inputData.get("lastName"));
personalSituationsObject.add(user);
} else {
personalSituationsObject.add(householdData(householdMembers, id));
}
}
);

return personalSituationsObject;

submission.getInputData().put("affectedByPersonalSituations[]", HouseholdUtilities.formattedHouseholdData(submission, "personalSituationsHouseholdUUID[]"));
}

private LinkedHashMap householdData(ArrayList<LinkedHashMap> household, String uuid) {
LinkedHashMap user = new LinkedHashMap();
for (LinkedHashMap hhmember : household) {
if (hhmember.get("uuid").equals(uuid)) {
user.put("uuid", uuid);
user.put("firstName", hhmember.get("householdMemberFirstName"));
user.put("lastName", hhmember.get("householdMemberLastName"));
continue;
}
}

return user;
};

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.ladocuploader.app.submission.actions;

import formflow.library.config.submission.Action;
import formflow.library.data.Submission;
import lombok.extern.slf4j.Slf4j;
import org.ladocuploader.app.utils.HouseholdUtilities;
import org.springframework.stereotype.Component;

/**
*
*/
@Component
@Slf4j
public class ReformatPregnancyUserData implements Action {

@Override
public void run(Submission submission) {
submission.getInputData().put("pregnanciesFullNames[]", HouseholdUtilities.formattedHouseholdData(submission, "pregnancies[]"));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.ladocuploader.app.submission.actions;

import formflow.library.config.submission.Action;
import formflow.library.data.Submission;
import lombok.extern.slf4j.Slf4j;
import org.ladocuploader.app.utils.HouseholdUtilities;
import org.springframework.stereotype.Component;

/**
*
*/
@Component
@Slf4j
public class ReformatStudentsUserData implements Action {

@Override
public void run(Submission submission) {
submission.getInputData().put("studentsFullNames[]", HouseholdUtilities.formattedHouseholdData(submission, "students[]"));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.ladocuploader.app.submission.conditions;

import formflow.library.config.submission.Condition;
import formflow.library.data.Submission;
import org.springframework.stereotype.Component;

@Component
public class HasChildSupportExpenses implements Condition {
@Override
public Boolean run(Submission submission) {
var inputData = submission.getInputData();
if (inputData.containsKey("hasChildSupportExpenses")) {
return submission.getInputData().get("hasChildSupportExpenses").equals("true");
}
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import org.springframework.stereotype.Component;

@Component
public class NonItemizedIncome extends BasicCondition {
public class ReceivesEnergyAssistance extends BasicCondition {

@Override
public Boolean run(Submission submission) {
return run(submission, "switchToIncomeByJob", "true");
return run(submission, "receivesEnergyAssistance", "true");
}
}
43 changes: 43 additions & 0 deletions src/main/java/org/ladocuploader/app/utils/HouseholdUtilities.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package org.ladocuploader.app.utils;

import formflow.library.data.Submission;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedHashMap;
import java.util.Map;

public class HouseholdUtilities {

Expand All @@ -24,4 +28,43 @@ public static boolean isMember18orOlder(int day, int month, int year) throws Num
// if the memberBirthDayCal is < or == the cal, then they are 18+ years old.
return memberBirthDayCal.compareTo(cal) <= 0;
}

public static ArrayList<LinkedHashMap> formattedHouseholdData(Submission submission, String key) {
Map<String, Object> inputData = submission.getInputData();

ArrayList<LinkedHashMap> householdMembers = (ArrayList) inputData.get("household");
ArrayList<String> hasPersonalSituations = (ArrayList) inputData.get(key);
ArrayList<LinkedHashMap> householdDataObject = new ArrayList<>();

hasPersonalSituations.forEach((String id) -> {
LinkedHashMap user = new LinkedHashMap();
if (id.equals("you")) {
user.put("uuid", id);
user.put("firstName", inputData.get("firstName") + " (you)");
user.put("firstNamePossessive", inputData.get("firstName") + "'s (your)");

householdDataObject.add(user);
} else {
householdDataObject.add(householdData(householdMembers, id));
}
}
);

return householdDataObject;

}

protected static LinkedHashMap householdData(ArrayList<LinkedHashMap> household, String uuid) {
LinkedHashMap user = new LinkedHashMap();
for (LinkedHashMap hhmember : household) {
if (hhmember.get("uuid").equals(uuid)) {
user.put("uuid", uuid);
user.put("firstName", hhmember.get("householdMemberFirstName"));
user.put("firstNamePossessive", hhmember.get("householdMemberFirstName")+ "'s");
continue;
}
}

return user;
}
}
16 changes: 7 additions & 9 deletions src/main/resources/flows-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ flow:
nextScreens:
- name: householdSchoolDetails
householdSchoolDetails:
beforeDisplayAction: ReformatStudentsUserData
nextScreens:
- name: householdPregnancy
householdPregnancy:
Expand All @@ -140,6 +141,7 @@ flow:
nextScreens:
- name: householdPregnancyDueDate
householdPregnancyDueDate:
beforeDisplayAction: ReformatPregnancyUserData
nextScreens:
- name: householdBenefits
householdBenefits:
Expand Down Expand Up @@ -274,14 +276,6 @@ flow:
- name: householdEmployerName
householdIncomeDeleteConfirmation:
nextScreens: null
householdMonthlyIncome:
nextScreens:
- name: householdIncomeTotal
householdIncomeTotal:
nextScreens:
- name: householdAdditionalIncome
condition: NonItemizedIncome
- name: householdIncomeWho
householdEmployerName:
subflow: income
nextScreens:
Expand Down Expand Up @@ -554,20 +548,24 @@ flow:
energyAssistance:
nextScreens:
- name: liheap
condition: ReceivesEnergyAssistance
- name: expensesDependentCare
liheap:
nextScreens:
- name: expensesDependentCare
expensesDependentCare:
nextScreens:
- name: expensesDependentCareAmount
condition: HasDependentCareExpenses
- name: expensesInsurance
- name: expensesChildSupport
expensesDependentCareAmount:
nextScreens:
- name: expensesChildSupport
expensesChildSupport:
nextScreens:
- name: expensesChildSupportAmount
condition: HasChildSupportExpenses
- name: expensesInsurance
expensesChildSupportAmount:
nextScreens:
- name: expensesInsurance
Expand Down