Skip to content

Commit

Permalink
Ccap 129 map secondary parent class schedule (#322)
Browse files Browse the repository at this point in the history
Co-authored-by: chibuisienyia <cenyia@codeforamerica.org>
Co-authored-by: Mark <mperlman@codeforamerica.org>
  • Loading branch information
3 people committed Jun 24, 2024
1 parent d3282b1 commit 000c32e
Show file tree
Hide file tree
Showing 8 changed files with 240 additions and 47 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.ilgcc.app.pdf;

import formflow.library.data.Submission;
import formflow.library.pdf.PdfMap;
import formflow.library.pdf.SubmissionField;
import formflow.library.pdf.SubmissionFieldPreparer;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import org.ilgcc.app.utils.ActivitySchedules.HourlySchedule;
import org.ilgcc.app.utils.ActivitySchedules.LocalTimeRange;
import org.ilgcc.app.utils.DayOfWeekOption;
import org.ilgcc.app.utils.SchedulePreparerUtility;
import org.springframework.stereotype.Component;

@Component
public class PartnerEducationSchedulePreparer implements SubmissionFieldPreparer {
@Override
public Map<String, SubmissionField> prepareSubmissionFields(Submission submission, PdfMap pdfMap) {
var results = new HashMap<String, SubmissionField>();

Optional<HourlySchedule> educationSchedule = SchedulePreparerUtility.getHourlySchedule(submission, "partnerClass", "partnerClassWeeklySchedule[]");
if (educationSchedule.isEmpty()) {
return results;
}

Map<DayOfWeekOption, LocalTimeRange> dailyScheduleMap = educationSchedule.get().toDailyScheduleMap();
for (var scheduleEntry : dailyScheduleMap.entrySet()) {
DayOfWeekOption day = scheduleEntry.getKey();
LocalTimeRange schedule = scheduleEntry.getValue();
results.putAll(SchedulePreparerUtility.createSubmissionFieldsFromSchedule(schedule, day, "partnerEducationSchedule"));
}
return results;
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/ilgcc/app/utils/SubmissionUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public static Optional<LocalDate> getDateInput(Submission submission, String inp
String year = (String) submission.getInputData().get("%sYear".formatted(inputName));
String month = (String) submission.getInputData().get("%sMonth".formatted(inputName));
String day = (String) submission.getInputData().get("%sDay".formatted(inputName));
if (year == null && month == null && day == null || (year + month + day).equals("")) {
if (year == null && month == null && day == null || (year + month + day).isBlank()) {
return Optional.empty();
} else if (year == null || month == null || day == null) {
throw new IllegalArgumentException("Date must be complete if specified");
Expand Down
30 changes: 30 additions & 0 deletions src/main/resources/pdf-map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,36 @@ inputFields:
applicantEducationScheduleSundayEnd: APPLICANT_EDUCATION_SCHEDULE_SUNDAY_END
applicantEducationScheduleSundayEndAmPm: APPLICANT_EDUCATION_SCHEDULE_SUNDAY_END_AM_PM

partnerEducationScheduleMondayStart: PARTNER_EDUCATION_SCHEDULE_MONDAY_START
partnerEducationScheduleMondayStartAmPm: PARTNER_EDUCATION_SCHEDULE_MONDAY_START_AM_PM
partnerEducationScheduleTuesdayStart: PARTNER_EDUCATION_SCHEDULE_TUESDAY_START
partnerEducationScheduleTuesdayStartAmPm: PARTNER_EDUCATION_SCHEDULE_TUESDAY_START_AM_PM
partnerEducationScheduleWednesdayStart: PARTNER_EDUCATION_SCHEDULE_WEDNESDAY_START
partnerEducationScheduleWednesdayStartAmPm: PARTNER_EDUCATION_SCHEDULE_WEDNESDAY_START_AM_PM
partnerEducationScheduleThursdayStart: PARTNER_EDUCATION_SCHEDULE_THURSDAY_START
partnerEducationScheduleThursdayStartAmPm: PARTNER_EDUCATION_SCHEDULE_THURSDAY_START_AM_PM
partnerEducationScheduleFridayStart: PARTNER_EDUCATION_SCHEDULE_FRIDAY_START
partnerEducationScheduleFridayStartAmPm: PARTNER_EDUCATION_SCHEDULE_FRIDAY_START_AM_PM
partnerEducationScheduleSaturdayStart: PARTNER_EDUCATION_SCHEDULE_SATURDAY_START
partnerEducationScheduleSaturdayStartAmPm: PARTNER_EDUCATION_SCHEDULE_SATURDAY_START_AM_PM
partnerEducationScheduleSundayStart: PARTNER_EDUCATION_SCHEDULE_SUNDAY_START
partnerEducationScheduleSundayStartAmPm: PARTNER_EDUCATION_SCHEDULE_SUNDAY_START_AM_PM

partnerEducationScheduleMondayEnd: PARTNER_EDUCATION_SCHEDULE_MONDAY_END
partnerEducationScheduleMondayEndAmPm: PARTNER_EDUCATION_SCHEDULE_MONDAY_END_AM_PM
partnerEducationScheduleTuesdayEnd: PARTNER_EDUCATION_SCHEDULE_TUESDAY_END
partnerEducationScheduleTuesdayEndAmPm: PARTNER_EDUCATION_SCHEDULE_TUESDAY_END_AM_PM
partnerEducationScheduleWednesdayEnd: PARTNER_EDUCATION_SCHEDULE_WEDNESDAY_END
partnerEducationScheduleWednesdayEndAmPm: PARTNER_EDUCATION_SCHEDULE_WEDNESDAY_END_AM_PM
partnerEducationScheduleThursdayEnd: PARTNER_EDUCATION_SCHEDULE_THURSDAY_END
partnerEducationScheduleThursdayEndAmPm: PARTNER_EDUCATION_SCHEDULE_THURSDAY_END_AM_PM
partnerEducationScheduleFridayEnd: PARTNER_EDUCATION_SCHEDULE_FRIDAY_END
partnerEducationScheduleFridayEndAmPm: PARTNER_EDUCATION_SCHEDULE_FRIDAY_END_AM_PM
partnerEducationScheduleSaturdayEnd: PARTNER_EDUCATION_SCHEDULE_SATURDAY_END
partnerEducationScheduleSaturdayEndAmPm: PARTNER_EDUCATION_SCHEDULE_SATURDAY_END_AM_PM
partnerEducationScheduleSundayEnd: PARTNER_EDUCATION_SCHEDULE_SUNDAY_END
partnerEducationScheduleSundayEndAmPm: PARTNER_EDUCATION_SCHEDULE_SUNDAY_END_AM_PM

signedName: APPLICANT_SIGNATURE
partnerSignedName: PARTNER_SIGNATURE
partnerSignedAt: PARTNER_SIGNATURE_DATE
Expand Down
10 changes: 5 additions & 5 deletions src/test/java/org/ilgcc/app/journeys/GccFlowJourneyTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -429,13 +429,13 @@ void fullGccFlow() throws IOException {
testPage.clickContinue();
assertThat(testPage.getTitle()).isEqualTo("Weekly Class Schedule");
testPage.clickElementById("partnerClassWeeklySchedule-Monday");
testPage.clickElementById("partnerClassWeeklySchedule-Tuesday");
testPage.clickElementById("partnerClassWeeklySchedule-Wednesday");
testPage.clickContinue();
assertThat(testPage.getTitle()).isEqualTo("Hourly Class Schedule");
testPage.enter("partnerClassStartTimeMonday", "0900AM");
testPage.enter("partnerClassEndTimeMonday", "1100AM");
testPage.enter("partnerClassStartTimeTuesday", "14:00");
testPage.enter("partnerClassEndTimeTuesday", "15:00");
testPage.enter("partnerClassStartTimeMonday", "1100AM");
testPage.enter("partnerClassEndTimeMonday", "16:00");
testPage.enter("partnerClassStartTimeWednesday", "14:00");
testPage.enter("partnerClassEndTimeWednesday", "15:00");
testPage.clickContinue();
assertThat(testPage.getTitle()).isEqualTo("Time of Program");
testPage.clickContinue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class ApplicantEducationSchedulePreparerTest {
@Test
public void withTheSameScheduleEveryDay() {
submission = new SubmissionTestBuilder()
.withRegularSchoolSchedule(List.of("Monday", "Thursday","Sunday"),"10:00", "15:45")
.withRegularSchoolSchedule("activitiesClass", "weeklySchedule[]", List.of("Monday", "Thursday","Sunday"),"10:00", "15:45")
.build();

Map<String, SubmissionField> result = preparer.prepareSubmissionFields(submission, null);
Expand Down Expand Up @@ -60,9 +60,9 @@ public void withTheSameScheduleEveryDay() {
@Test
public void withDifferentScheduleEveryDay() {
submission = new SubmissionTestBuilder()
.withSchoolScheduleByDay("Monday","10:00", "15:45")
.withSchoolScheduleByDay("Wednesday","08:00", "12:45")
.withSchoolScheduleByDay("Friday","12:00", "19:00")
.withSchoolScheduleByDay("activitiesClass","Monday","10:00", "15:45")
.withSchoolScheduleByDay("activitiesClass","Wednesday","08:00", "12:45")
.withSchoolScheduleByDay("activitiesClass","Friday","12:00", "19:00")
.with("weeklySchedule[]", List.of("Monday", "Wednesday", "Friday"))
.build();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package org.ilgcc.app.pdf;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

import formflow.library.data.Submission;
import formflow.library.pdf.SingleField;
import formflow.library.pdf.SubmissionField;
import java.util.List;
import java.util.Map;
import org.ilgcc.app.utils.SubmissionTestBuilder;
import org.junit.jupiter.api.Test;

public class PartnerEducationSchedulePreparerTest {

PartnerEducationSchedulePreparer preparer = new PartnerEducationSchedulePreparer();

private Submission submission;

@Test
public void withTheSameScheduleEveryDay() {
submission = new SubmissionTestBuilder()
.withRegularSchoolSchedule("partnerClass", "partnerClassWeeklySchedule[]", List.of("Monday", "Thursday","Sunday"),"10:00", "15:45")
.build();

Map<String, SubmissionField> result = preparer.prepareSubmissionFields(submission, null);

assertThat(result.get("partnerEducationScheduleMondayStart")).isEqualTo(
new SingleField("partnerEducationScheduleMondayStart", "10:00", null));
assertThat(result.get("partnerEducationScheduleMondayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleMondayStartAmPm", "AM", null));
assertThat(result.get("partnerEducationScheduleMondayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleMondayEnd", "03:45", null));
assertThat(result.get("partnerEducationScheduleMondayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleMondayEndAmPm", "PM", null));

assertThat(result.get("partnerEducationScheduleTuesdayStart")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayStartAmPm")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayEnd")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayEndAmPm")).isEqualTo(null);

assertThat(result.get("partnerEducationScheduleThursdayStart")).isEqualTo(
new SingleField("partnerEducationScheduleThursdayStart", "10:00", null));
assertThat(result.get("partnerEducationScheduleThursdayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleThursdayStartAmPm", "AM", null));
assertThat(result.get("partnerEducationScheduleThursdayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleThursdayEnd", "03:45", null));
assertThat(result.get("partnerEducationScheduleThursdayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleThursdayEndAmPm", "PM", null));

assertThat(result.get("partnerEducationScheduleSundayStart")).isEqualTo(
new SingleField("partnerEducationScheduleSundayStart", "10:00", null));
assertThat(result.get("partnerEducationScheduleSundayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleSundayStartAmPm", "AM", null));
assertThat(result.get("partnerEducationScheduleSundayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleSundayEnd", "03:45", null));
assertThat(result.get("partnerEducationScheduleSundayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleSundayEndAmPm", "PM", null));
}

@Test
public void withDifferentScheduleEveryDay() {
submission = new SubmissionTestBuilder()
.withSchoolScheduleByDay("partnerClass","Monday","10:00", "15:45")
.withSchoolScheduleByDay("partnerClass","Wednesday", "08:00", "12:45")
.withSchoolScheduleByDay("partnerClass","Friday","12:00", "19:00")
.with("partnerClassWeeklySchedule[]", List.of("Monday", "Wednesday", "Friday"))
.build();

Map<String, SubmissionField> result = preparer.prepareSubmissionFields(submission, null);

assertThat(result.get("partnerEducationScheduleMondayStart")).isEqualTo(
new SingleField("partnerEducationScheduleMondayStart", "10:00", null));
assertThat(result.get("partnerEducationScheduleMondayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleMondayStartAmPm", "AM", null));
assertThat(result.get("partnerEducationScheduleMondayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleMondayEnd", "03:45", null));
assertThat(result.get("partnerEducationScheduleMondayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleMondayEndAmPm", "PM", null));

assertThat(result.get("partnerEducationScheduleTuesdayStart")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayStartAmPm")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayEnd")).isEqualTo(null);
assertThat(result.get("partnerEducationScheduleTuesdayEndAmPm")).isEqualTo(null);

assertThat(result.get("partnerEducationScheduleWednesdayStart")).isEqualTo(
new SingleField("partnerEducationScheduleWednesdayStart", "08:00", null));
assertThat(result.get("partnerEducationScheduleWednesdayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleWednesdayStartAmPm", "AM", null));
assertThat(result.get("partnerEducationScheduleWednesdayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleWednesdayEnd", "12:45", null));
assertThat(result.get("partnerEducationScheduleWednesdayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleWednesdayEndAmPm", "PM", null));

assertThat(result.get("partnerEducationScheduleFridayStart")).isEqualTo(
new SingleField("partnerEducationScheduleFridayStart", "12:00", null));
assertThat(result.get("partnerEducationScheduleFridayStartAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleFridayStartAmPm", "PM", null));
assertThat(result.get("partnerEducationScheduleFridayEnd")).isEqualTo(
new SingleField("partnerEducationScheduleFridayEnd", "07:00", null));
assertThat(result.get("partnerEducationScheduleFridayEndAmPm")).isEqualTo(
new SingleField("partnerEducationScheduleFridayEndAmPm", "PM", null));
}
}
Loading

0 comments on commit 000c32e

Please sign in to comment.