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

Criminal justice situations screen + mapping #627

Merged
merged 10 commits into from
Feb 23, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,8 @@ public class LaDigitalAssister extends FlowInputs {

private String householdHasCriminalJusticeSituation;

private List<String> criminalJusticeSituations;

@NotEmpty(message="{error.missing-general}")
@DynamicField
private List<String> personalSituations;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
import formflow.library.pdf.SubmissionFieldPreparer;
import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;

@Component
public class PersonalSituationsPreparer implements SubmissionFieldPreparer {
Expand All @@ -19,16 +17,26 @@ public Map<String, SubmissionField> prepareSubmissionFields(Submission submissio
List<String> disability = (List<String>) submission.getInputData().getOrDefault("personalSituationDisability[]", Collections.EMPTY_LIST);
boolean disabilityFlag = disability.contains("you");

Map<String, SubmissionField> results = new HashMap<>();

var householdCriminalJusticeSituations = (ArrayList<String>) submission.getInputData().getOrDefault("criminalJusticeSituations[]", new ArrayList<>());
results.put("criminalJusticeFleeingFelon", new SingleField("criminalJusticeFleeingFelon", householdCriminalJusticeSituations.contains("Fleeing felon") ? "true" : "false", null));
results.put("criminalJusticeParoleViolation", new SingleField("criminalJusticeParoleViolation", householdCriminalJusticeSituations.contains("Parole violation") ? "true" : "false", null));
results.put("criminalJusticeFelonyConviction", new SingleField("criminalJusticeFelonyConviction", householdCriminalJusticeSituations.contains("Felony conviction") ? "true" : "false", null));
results.put("criminalJusticeProgramRulesViolation", new SingleField("criminalJusticeProgramRulesViolation", householdCriminalJusticeSituations.contains("Program rule conviction") ? "true" : "false", null));

var household = (List<Map<String, Object>>) submission.getInputData().get("household");
if (!disabilityFlag && household != null) {
for (Map<String, Object> member : household) {
var uuid = member.get("uuid");
if (disability.contains(uuid)) {
return Map.of("disablityInd", new SingleField("personalSituationDisablityInd", "true", null));
results.put("disablityInd", new SingleField("personalSituationDisablityInd", "true", null));
return results;
}
}
}

return Map.of("disablityInd", new SingleField("personalSituationDisablityInd", disabilityFlag ? "true" : "false", null));
results.put("disablityInd", new SingleField("personalSituationDisablityInd", disabilityFlag ? "true" : "false", null));
return results;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.ladocuploader.app.submission.conditions;

import formflow.library.data.Submission;
import org.springframework.stereotype.Component;

@Component
public class HouseholdHasCriminalJusticeSituation extends BasicCondition {

@Override
public Boolean run(Submission submission) {
return run(submission, "householdHasCriminalJusticeSituation", "true");
}
}
5 changes: 5 additions & 0 deletions src/main/resources/flows-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,11 @@ flow:
nextScreens:
- name: householdCriminalJusticeSituations
householdCriminalJusticeSituations:
nextScreens:
- name: householdCriminalJusticeWhich
condition: HouseholdHasCriminalJusticeSituation
- name: incomeSignPost
householdCriminalJusticeWhich:
nextScreens:
- name: incomeSignPost
incomeSignPost:
Expand Down
6 changes: 6 additions & 0 deletions src/main/resources/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,12 @@ criminal-justice-content.l1=Have been convicted of breaking rules for SNAP, cash
criminal-justice-content.l2=Have been convicted of a felony
criminal-justice-content.l3=Currently on probation or parole

criminal-justice-which.title=Criminal Justice Situations
criminal-justice-which.header=Which situations apply to someone in your household?
criminal-justice-which.option1=Fleeing to avoid prosecution, or custody or confinement after conviction
criminal-justice-which.option2=In violation of their probation or parole
criminal-justice-which.option3=Have been convicted of a felony
criminal-justice-which.option4=Have been convicted of breaking rules for SNAP, cash aid, or SSI programs
# Income

# Income signpost
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/pdf-map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ inputFields:
applicantStudentInd: applicantStudentInd
applicantNonCitizenInd: applicantNonCitizenInd
applicantHomelessInd: applicantHomelessInd
householdHasCriminalJusticeSituation: criminalJusticeSpecialSituation
criminalJusticeFleeingFelon: criminalJusticeFleeingFelon
criminalJusticeParoleViolation: criminalJusticeParoleViolation
criminalJusticeFelonyConviction: criminalJusticeFelonyConviction
criminalJusticeProgramRulesViolation: criminalJusticeProgramRulesViolation

authorizedRepresentative: authorizedRepresentative
authorizedRepFirstName: authorizedRepFirstName
Expand Down
Binary file modified src/main/resources/pdfs/la_application_for_assistance.pdf
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<!DOCTYPE html>
<html th:lang="${#locale.language}" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/head :: head(title=#{criminal-justice-which.title})}"></head>
<body>
<div class="page-wrapper">
<div th:replace="~{fragments/toolbar :: toolbar}"></div>
<section class="slab">
<div class="grid">
<div th:replace="~{fragments/goBack :: goBackLink}"></div>
<main id="content" role="main" class="form-card spacing-above-35">
<th:block th:replace="~{fragments/icons :: personMilestone}"></th:block>
<th:block
th:replace="~{fragments/cardHeader :: cardHeader(header=#{criminal-justice-which.header}, subtext=#{general.check-all-that-apply})}"/>
<th:block th:replace="~{fragments/form :: form(action=${formAction}, content=~{::criminalJusticeSituations})}">
<th:block th:ref="criminalJusticeSituations">
<div class="form-card__content">
<th:block th:replace="~{fragments/inputs/checkboxFieldset ::
checkboxFieldset(inputName='criminalJusticeSituations',
ariaLabel='header',
content=~{::checkboxOptions})}">
<th:block th:ref="checkboxOptions">
<!-- Copy the below input if you want to add more -->
<th:block
th:replace="~{fragments/inputs/checkboxInSet :: checkboxInSet(inputName='criminalJusticeSituations',value='Fleeing felon', label=#{criminal-justice-which.option1})}"/>
<th:block
th:replace="~{fragments/inputs/checkboxInSet :: checkboxInSet(inputName='criminalJusticeSituations',value='Parole violation', label=#{criminal-justice-which.option2})}"/>
<th:block
th:replace="~{fragments/inputs/checkboxInSet :: checkboxInSet(inputName='criminalJusticeSituations',value='Felony conviction', label=#{criminal-justice-which.option3})}"/>
<th:block
th:replace="~{fragments/inputs/checkboxInSet :: checkboxInSet(inputName='criminalJusticeSituations',value='Program rule conviction', label=#{criminal-justice-which.option4})}"/>
</th:block>
</th:block>

</div>
<div class="form-card__footer">
<th:block th:replace="~{fragments/inputs/submitButton :: submitButton(
text=#{general.inputs.continue})}"/>
</div>
</th:block>
</th:block>
</main>
</div>
</section>
</div>
<th:block th:replace="~{fragments/footer :: footer}" />
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,9 @@ void fullDigitalAssisterFlow() {
assertThat(testPage.getTitle()).isEqualTo(message("criminal-justice.title"));
testPage.clickButton("Yes");

assertThat(testPage.getTitle()).isEqualTo(message("criminal-justice-which.title"));
testPage.clickContinue();

assertThat(testPage.getTitle()).isEqualTo(message("income-signpost.title"));
testPage.clickContinue();

Expand Down