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

Snap expedited application #547

Merged
merged 3 commits into from
Jan 24, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package org.ladocuploader.app.preparers;

import static java.util.Collections.emptyList;

import formflow.library.data.Submission;
import formflow.library.pdf.PdfMap;
import formflow.library.pdf.SingleField;
import formflow.library.pdf.SubmissionField;
import formflow.library.pdf.SubmissionFieldPreparer;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;

@Component
public class ExpeditedSnapPreparer implements SubmissionFieldPreparer {

@Override
public Map<String, SubmissionField> prepareSubmissionFields(Submission submission, PdfMap pdfMap) {
Map<String, SubmissionField> results = new HashMap<>();

String isEligibleForExpeditedSnap = submission.getInputData().get("isEligibleForExpeditedSnap").toString();
if (isEligibleForExpeditedSnap.equals("true")) {
String householdIncomeLast30Days=submission.getInputData().getOrDefault("householdIncomeLast30Days", "0").toString();
results.put("expeditedSnapIncome", new SingleField("expeditedSnapIncome", householdIncomeLast30Days, null));

String moneyOnHandString = submission.getInputData().getOrDefault("expeditedMoneyOnHandAmount", "0").toString();
results.put("expeditedSnapMoneyOnHand", new SingleField("expeditedSnapMoneyOnHand", moneyOnHandString, null));

String householdRentAmount = submission.getInputData().getOrDefault("householdRentAmount", "0").toString();
results.put("expeditedSnapHousingCost", new SingleField("expeditedSnapHousingCost", householdRentAmount, null));

var utilities = processUtilitiesExpenses(submission);
boolean hasHouseholdExpenses = utilities.get("expenses");
boolean hasHeatingExpenses = utilities.get("acOrCooling");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be slightly more readable to separate these into their own methods that return just the boolean

boolean hasHouseholdExpenses = hasHouseholdExpenses(submission);
boolean hasHeatingExpenses = hasHeatingExpenses(submission);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea! Will work on this


results.put("expeditedSnapHouseholdExpensesBool", new SingleField("expeditedSnapHouseholdExpensesBool", hasHouseholdExpenses ? "Yes" : "No", null));
results.put("expeditedSnapHeatingBool", new SingleField("expeditedSnapHeatingBool", hasHeatingExpenses ? "Yes" : "No", null));

String householdPhoneExpenses = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_phone", "0").toString();
boolean hasPhoneExpenses = !householdPhoneExpenses.equals("0");
results.put("expeditedSnapPhoneExpensesBool", new SingleField("expeditedSnapPhoneExpensesBool", hasPhoneExpenses ? "Yes" : "No", null));

String isMigrantOrSeasonalFarmWorker = submission.getInputData().get("migrantOrSeasonalFarmWorkerInd").toString();
results.put("expeditedMigrantOrSeasonalWorkerBool", new SingleField("expeditedMigrantOrSeasonalWorkerBool", isMigrantOrSeasonalFarmWorker.equals("true") ? "Yes" : "No", null));
}

return results;
}

private int parseInt(String intAsString) {
try {
return Integer.parseInt(intAsString);
} catch (NumberFormatException e) {
return 0;
}
}

private Map<String, Boolean> processUtilitiesExpenses(Submission submission) {
Map<String, Boolean> results = new HashMap<>();
boolean expenses;
boolean acOrCooling;

String electricity = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_electricity", "0").toString();
String water = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_water", "0").toString();
String garbage = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_garbage", "0").toString();
String sewer = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_sewer", "0").toString();
String cookingFuel = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_cookingFuel", "0").toString();
String otherUtilitiesExpenses = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_otherUtilitiesExpenses", "0").toString();

expenses = (parseInt(electricity) + parseInt(water) + parseInt(garbage) + parseInt(sewer) + parseInt(cookingFuel) + parseInt(otherUtilitiesExpenses) > 0);

var heating = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_heating", "0").toString();
var cooling = submission.getInputData().getOrDefault("householdUtilitiesExpenseAmount_wildcard_cooling", "0").toString();

acOrCooling = (parseInt(heating) + parseInt(cooling) > 0);

results.put("expenses", expenses);
results.put("acOrCooling", acOrCooling);

return results;
}
}

7 changes: 7 additions & 0 deletions src/main/resources/pdf-map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ inputFields:
mailingAddressCity: mailingAddressCity
mailingAddressStreetAddress2: mailingAddressStreetAddress2
mailingAddressStreetAddress1: mailingAddressStreetAddress1
expeditedSnapIncome: expeditedSnapIncome
expeditedSnapMoneyOnHand: expeditedSnapMoneyOnHand
expeditedSnapHousingCost: expeditedSnapHousingCost
expeditedSnapHouseholdExpensesBool: expeditedSnapHouseholdExpensesBool
expeditedSnapHeatingBool: expeditedSnapHeatingBool
expeditedSnapPhoneExpensesBool: expeditedSnapPhoneExpensesBool
expeditedMigrantOrSeasonalWorkerBool: expeditedMigrantOrSeasonalWorkerBool
signature: signature
applicantBirthdayFormatted: applicantBirthday
emailAddress: emailAddress
Expand Down
Binary file modified src/main/resources/pdfs/la_application_for_assistance.pdf
Binary file not shown.