diff --git a/api/pom.xml b/api/pom.xml index a5385c61..730c4b94 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -272,7 +272,7 @@ org.jacoco jacoco-maven-plugin - 0.8.4 + 0.8.8 org.hibernate.orm.tooling diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessor.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessor.java index e0b970a6..995762d2 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessor.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessor.java @@ -18,7 +18,7 @@ import ca.bc.gov.educ.penreg.api.properties.ApplicationProperties; import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.NotificationService; -import ca.bc.gov.educ.penreg.api.service.PenCoordinatorService; +import ca.bc.gov.educ.penreg.api.service.StudentRegistrationContactService; import ca.bc.gov.educ.penreg.api.struct.School; import com.google.common.base.Stopwatch; import lombok.Getter; @@ -36,7 +36,6 @@ import java.io.*; import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -95,9 +94,9 @@ public class PenRegBatchProcessor { */ private final NotificationService notificationService; /** - * The Pen coordinator service. + * The Student Registration Contact service. */ - private final PenCoordinatorService penCoordinatorService; + private final StudentRegistrationContactService studentRegistrationContactService; /** * The Duplicate file check service map. @@ -115,17 +114,17 @@ public class PenRegBatchProcessor { * @param penRequestBatchFileService the pen request batch file service * @param applicationProperties the application properties * @param notificationService the notification service - * @param penCoordinatorService the pen coordinator service + * @param studentRegistrationContactService the student registration contact service * @param duplicateFileCheckServiceList the duplicate file check service list * @param penRequestBatchFileValidator the pen request batch file validator */ @Autowired - public PenRegBatchProcessor(final PenRegBatchStudentRecordsProcessor penRegBatchStudentRecordsProcessor, final PenRequestBatchFileService penRequestBatchFileService, final ApplicationProperties applicationProperties, final NotificationService notificationService, final PenCoordinatorService penCoordinatorService, final List duplicateFileCheckServiceList, final PenRequestBatchFileValidator penRequestBatchFileValidator, final RestUtils restUtils) { + public PenRegBatchProcessor(final PenRegBatchStudentRecordsProcessor penRegBatchStudentRecordsProcessor, final PenRequestBatchFileService penRequestBatchFileService, final ApplicationProperties applicationProperties, final NotificationService notificationService, final StudentRegistrationContactService studentRegistrationContactService, final List duplicateFileCheckServiceList, final PenRequestBatchFileValidator penRequestBatchFileValidator, final RestUtils restUtils) { this.penRegBatchStudentRecordsProcessor = penRegBatchStudentRecordsProcessor; this.penRequestBatchFileService = penRequestBatchFileService; this.applicationProperties = applicationProperties; this.notificationService = notificationService; - this.penCoordinatorService = penCoordinatorService; + this.studentRegistrationContactService = studentRegistrationContactService; this.duplicateFileCheckServiceMap = duplicateFileCheckServiceList.stream().collect(Collectors.toMap(DuplicateFileCheckService::getSchoolGroupCode, Function.identity())); this.penRequestBatchFileValidator = penRequestBatchFileValidator; this.restUtils = restUtils; @@ -220,7 +219,7 @@ private void processFileUnProcessableException(@NonNull final String guid, @NonN val notifySchoolForFileFormatErrorsOptional = this.notifySchoolForFileFormatErrors(guid, penWebBlobEntity, fileUnProcessableException); final PenRequestBatchEntity entity = mapper.toPenReqBatchEntityForBusinessException(penWebBlobEntity, fileUnProcessableException.getReason(), fileUnProcessableException.getPenRequestBatchStatusCode(), batchFile, persistStudentRecords(fileUnProcessableException.getFileError())); // batch file can be processed further and persisted. final Optional school = this.restUtils.getSchoolByMincode(penWebBlobEntity.getMincode()); - school.ifPresent(value -> entity.setSchoolName(value.getSchoolName())); + school.ifPresent(value -> entity.setSchoolName(value.getDisplayName())); //wait here if notification was sent, if there was any error this file will be picked up again as it wont be persisted. if (notifySchoolForFileFormatErrorsOptional.isPresent()) { final boolean isNotified = this.waitForNotificationToCompleteIfPresent(guid, notifySchoolForFileFormatErrorsOptional.get()); @@ -272,10 +271,10 @@ private Optional> notifySchoolForFileFormatErrors(fin Optional> isSchoolNotifiedFutureOptional = Optional.empty(); if (this.isNotificationToSchoolRequired(fileUnProcessableException)) { log.info("notification to school is required :: {}", guid); - val coordinatorEmailOptional = this.penCoordinatorService.getPenCoordinatorEmailByMinCode(penWebBlobEntity.getMincode()); - if (coordinatorEmailOptional.isPresent()) { - log.info("pen coordinator email found :: {}, for guid :: {}", coordinatorEmailOptional.get(), guid); - isSchoolNotifiedFutureOptional = Optional.ofNullable(this.notificationService.notifySchoolForLoadFailed(guid, penWebBlobEntity.getFileName(), penWebBlobEntity.getSubmissionNumber(), fileUnProcessableException.getReason(), coordinatorEmailOptional.get())); + val studentRegistrationContactList = this.studentRegistrationContactService.getStudentRegistrationContactEmailsByMincode(penWebBlobEntity.getMincode()); + if (!studentRegistrationContactList.isEmpty()) { + log.info("student registration school contact email(s) found :: {}, for guid :: {}", studentRegistrationContactList, guid); + isSchoolNotifiedFutureOptional = Optional.ofNullable(this.notificationService.notifySchoolForLoadFailed(guid, penWebBlobEntity.getFileName(), penWebBlobEntity.getSubmissionNumber(), fileUnProcessableException.getReason(), studentRegistrationContactList)); } } return isSchoolNotifiedFutureOptional; @@ -311,7 +310,7 @@ private void processLoadedRecordsInBatchFile(@NonNull final String guid, @NonNul log.info("going to persist data for batch :: {}", guid); final PenRequestBatchEntity entity = mapper.toPenReqBatchEntityLoaded(penWebBlobEntity, batchFile); // batch file can be processed further and persisted. final Optional school = this.restUtils.getSchoolByMincode(penWebBlobEntity.getMincode()); - school.ifPresent(value -> entity.setSchoolName(value.getSchoolName())); + school.ifPresent(value -> entity.setSchoolName(value.getDisplayName())); for (final var student : batchFile.getStudentDetails()) { // set the object so that PK/FK relationship will be auto established by hibernate. final var penRequestBatchStudentEntity = mapper.toPenRequestBatchStudentEntity(student, entity); penRequestBatchStudentEntity.setRecordNumber(counter++); diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/validator/PenRequestBatchFileValidator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/validator/PenRequestBatchFileValidator.java index b6e0a048..91e2a5d7 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/validator/PenRequestBatchFileValidator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/batch/validator/PenRequestBatchFileValidator.java @@ -162,8 +162,8 @@ public void validateMincode(final String guid, final String mincode) throws File if (school.isEmpty()) { throw new FileUnProcessableException(INVALID_MINCODE_HEADER, guid, PenRequestBatchStatusCodes.LOAD_FAIL); } - final String openedDate = school.get().getDateOpened(); - final String closedDate = school.get().getDateClosed(); + final String openedDate = school.get().getOpenedDate(); + final String closedDate = school.get().getClosedDate(); if (openedDate == null || LocalDate.parse(openedDate, DateTimeFormatter.ISO_LOCAL_DATE_TIME).isAfter(LocalDate.now()) || (closedDate != null && LocalDate.parse(closedDate, DateTimeFormatter.ISO_LOCAL_DATE_TIME).isBefore(LocalDate.now()))) { throw new FileUnProcessableException(INVALID_MINCODE_SCHOOL_CLOSED, guid, PenRequestBatchStatusCodes.LOAD_FAIL); } diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataDecorator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataDecorator.java index f6780b46..d34c351e 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataDecorator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataDecorator.java @@ -1,11 +1,9 @@ package ca.bc.gov.educ.penreg.api.mappers.v1; import ca.bc.gov.educ.penreg.api.constants.PenRequestBatchStudentStatusCodes; -import ca.bc.gov.educ.penreg.api.constants.StudentDemogCode; import ca.bc.gov.educ.penreg.api.helpers.PenRegBatchHelper; -import ca.bc.gov.educ.penreg.api.struct.Student; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.BasePenRequestBatchReturnFilesSagaData; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudent; import ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.PenRequestBatchReportData; import ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.ReportListItem; @@ -83,7 +81,7 @@ public PenRequestBatchReportData toReportData(final BasePenRequestBatchReturnFil reportData.setProcessDate(processDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))); reportData.setProcessTime(processDateTime.format(DateTimeFormatter.ofPattern("HH:mm"))); reportData.setReportDate(processDateTime.format(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toUpperCase().replace(".", "")); - reportData.setReviewer(this.setReviewer(data.getPenCoordinator())); + reportData.setReviewer(this.setReviewer(data.getStudentRegistrationContacts())); } @@ -147,8 +145,8 @@ private void addToSysMatchOrDiffList(final List sysMatchedList, } - private String setReviewer(final PenCoordinator penCoordinator) { - return (penCoordinator != null && StringUtils.isNotBlank(penCoordinator.getPenCoordinatorName())) ? penCoordinator.getPenCoordinatorName() : "School PEN Coordinator"; + private String setReviewer(final List studentRegistrationContacts) { //If there is more than one school registration contact we just use the first one. + return (!studentRegistrationContacts.isEmpty() && StringUtils.isNotBlank(studentRegistrationContacts.get(0).getFirstName() + " " + studentRegistrationContacts.get(0).getLastName())) ? studentRegistrationContacts.get(0).getFirstName() + " " + studentRegistrationContacts.get(0).getLastName() : "School PEN Coordinator"; } private Map setStudents(final List students) { diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataMapper.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataMapper.java index 1e179183..5f0350f0 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataMapper.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/mappers/v1/PenRequestBatchReportDataMapper.java @@ -22,7 +22,6 @@ public interface PenRequestBatchReportDataMapper { @Mapping(target = "penCordinatorEmail", source = "fromEmail") @Mapping(target = "mincode", expression = "java(data.getPenRequestBatch() == null || data.getPenRequestBatch().getMincode() == null || data.getPenRequestBatch().getMincode().isEmpty() || data.getPenRequestBatch().getMincode().length()<3 ? \"\" : data.getPenRequestBatch().getMincode().substring(0, 3) + \" \" + data.getPenRequestBatch().getMincode().substring(3))") @Mapping(target = "submissionNumber", source = "data.penRequestBatch.submissionNumber") - @Mapping(target = "reviewer", source = "data.penCoordinator.penCoordinatorName") @Mapping(target = "processDate", ignore = true) @Mapping(target = "processTime", ignore = true) @Mapping(target = "reportDate", ignore = true) diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/BaseReturnFilesOrchestrator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/BaseReturnFilesOrchestrator.java index dfc6f51f..c3b6198c 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/BaseReturnFilesOrchestrator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/BaseReturnFilesOrchestrator.java @@ -11,26 +11,22 @@ import ca.bc.gov.educ.penreg.api.model.v1.Saga; import ca.bc.gov.educ.penreg.api.model.v1.SagaEvent; import ca.bc.gov.educ.penreg.api.orchestrator.base.BaseOrchestrator; -import ca.bc.gov.educ.penreg.api.properties.PenCoordinatorProperties; +import ca.bc.gov.educ.penreg.api.properties.DataManagementUnitProperties; import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.*; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.Student; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueTypeCode; import ca.bc.gov.educ.penreg.api.struct.v1.*; import ca.bc.gov.educ.penreg.api.util.JsonUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.*; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import lombok.val; import java.io.IOException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @@ -58,7 +54,7 @@ public abstract class BaseReturnFilesOrchestrator extends BaseOrchestrator @Getter(PROTECTED) private final PenRequestBatchService penRequestBatchService; @Getter(PROTECTED) - private final PenCoordinatorService penCoordinatorService; + private final StudentRegistrationContactService studentRegistrationContactService; @Getter(PROTECTED) private final ResponseFileGeneratorService responseFileGeneratorService; @Getter(PROTECTED) @@ -66,7 +62,7 @@ public abstract class BaseReturnFilesOrchestrator extends BaseOrchestrator @Getter(PROTECTED) private final RestUtils restUtils; @Getter(PROTECTED) - private final PenCoordinatorProperties penCoordinatorProperties; + private final DataManagementUnitProperties dataManagementUnitProperties; /** * Instantiates a new Base orchestrator. @@ -77,21 +73,21 @@ public abstract class BaseReturnFilesOrchestrator extends BaseOrchestrator * @param sagaName the saga name * @param topicToSubscribe the topic to subscribe * @param penRequestBatchService the pen request batch service - * @param penCoordinatorService the pen coordinator service - * @param penCoordinatorProperties the pen coordinator properties + * @param studentRegistrationContactService the student registration contact service + * @param dataManagementUnitProperties the data mangement unit properties */ protected BaseReturnFilesOrchestrator(final SagaService sagaService, final MessagePublisher messagePublisher, final Class clazz, final String sagaName, final String topicToSubscribe, final PenRequestBatchService penRequestBatchService, - final PenCoordinatorService penCoordinatorService, - final PenCoordinatorProperties penCoordinatorProperties, + final StudentRegistrationContactService studentRegistrationContactService, + final DataManagementUnitProperties dataManagementUnitProperties, final ResponseFileGeneratorService responseFileGeneratorService, final PenRequestBatchStudentValidationIssueService penRequestBatchStudentValidationIssueService, final RestUtils restUtils) { super(sagaService, messagePublisher, clazz, sagaName, topicToSubscribe); this.penRequestBatchService = penRequestBatchService; - this.penCoordinatorService = penCoordinatorService; - this.penCoordinatorProperties = penCoordinatorProperties; + this.studentRegistrationContactService = studentRegistrationContactService; + this.dataManagementUnitProperties = dataManagementUnitProperties; this.responseFileGeneratorService = responseFileGeneratorService; this.penRequestBatchStudentValidationIssueService = penRequestBatchStudentValidationIssueService; this.restUtils = restUtils; @@ -110,11 +106,11 @@ protected void gatherReportData(final Event event, final Saga saga, final BasePe final List studentRequests = penRequestBatch.get().getPenRequestBatchStudentEntities().stream().map(studentMapper::toStructure).collect(Collectors.toList()); penRequestBatchReturnFilesSagaData.setPenRequestBatchStudents(studentRequests); penRequestBatchReturnFilesSagaData.setPenRequestBatch(mapper.toStructure(penRequestBatch.get())); - penRequestBatchReturnFilesSagaData.setPenCoordinator(this.getPenCoordinator(penRequestBatch.get())); - penRequestBatchReturnFilesSagaData.setFromEmail(this.penCoordinatorProperties.getFromEmail()); - penRequestBatchReturnFilesSagaData.setTelephone(this.penCoordinatorProperties.getTelephone()); - penRequestBatchReturnFilesSagaData.setFacsimile(this.penCoordinatorProperties.getFacsimile()); - penRequestBatchReturnFilesSagaData.setMailingAddress(this.penCoordinatorProperties.getMailingAddress()); + penRequestBatchReturnFilesSagaData.setStudentRegistrationContacts(this.getStudentRegistrationContactsByMincode(penRequestBatch.get())); + penRequestBatchReturnFilesSagaData.setFromEmail(this.dataManagementUnitProperties.getFromEmail()); + penRequestBatchReturnFilesSagaData.setTelephone(this.dataManagementUnitProperties.getTelephone()); + penRequestBatchReturnFilesSagaData.setFacsimile(this.dataManagementUnitProperties.getFacsimile()); + penRequestBatchReturnFilesSagaData.setMailingAddress(this.dataManagementUnitProperties.getMailingAddress()); saga.setPayload(JsonUtil.getJsonStringFromObject(penRequestBatchReturnFilesSagaData)); // save the updated payload to DB... this.getSagaService().updateAttachedSagaWithEvents(saga, eventStates); nextEvent.setEventOutcome(REPORT_DATA_GATHERED); @@ -219,7 +215,7 @@ protected void sendArchivedEmail(final Event event, final Saga saga, final BaseP } log.debug("Pending Records value :: {}", pendingRecords); final PenRequestBatchArchivedEmailEvent penRequestBatchArchivedEmailEvent = PenRequestBatchArchivedEmailEvent.builder() - .fromEmail(this.getPenCoordinatorProperties().getFromEmail()) + .fromEmail(this.getDataManagementUnitProperties().getFromEmail()) .mincode(penRequestBatchReturnFilesSagaData.getPenRequestBatch().getMincode()) .submissionNumber(penRequestBatchReturnFilesSagaData.getPenRequestBatch().getSubmissionNumber()) .schoolName(penRequestBatchReturnFilesSagaData.getSchoolName()) @@ -229,13 +225,13 @@ protected void sendArchivedEmail(final Event event, final Saga saga, final BaseP .replyTo(this.getTopicToSubscribe()) .build(); - //set toEmail and email type depending on whether a penCoordinator exists for the mincode + //set toEmail and email type depending on whether a student registration school contact exists for the mincode if (eventType.equals(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT)) { nextEvent.setEventType(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT); - penRequestBatchArchivedEmailEvent.setToEmail(this.getPenCoordinatorProperties().getFromEmail()); + penRequestBatchArchivedEmailEvent.setToEmail(new ArrayList<>(List.of(this.getDataManagementUnitProperties().getFromEmail()))); } else { nextEvent.setEventType(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT); - penRequestBatchArchivedEmailEvent.setToEmail(penRequestBatchReturnFilesSagaData.getPenCoordinator().getPenCoordinatorEmail()); + penRequestBatchArchivedEmailEvent.setToEmail(penRequestBatchReturnFilesSagaData.getStudentRegistrationContacts().stream().map(SchoolContact::getEmail).toList()); } nextEvent.setEventPayload(JsonUtil.getJsonStringFromObject(penRequestBatchArchivedEmailEvent)); @@ -256,14 +252,12 @@ private long getValueFromMap(final String code, final Map prbStude } - protected boolean hasPenCoordinatorEmail(final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) { - return !this.hasNoPenCoordinatorEmail(penRequestBatchReturnFilesSagaData); + protected boolean hasStudentRegistrationContactEmail(final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) { + return !this.hasNoStudentRegistrationContactEmail(penRequestBatchReturnFilesSagaData); } - protected boolean hasNoPenCoordinatorEmail(final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) { - return penRequestBatchReturnFilesSagaData.getPenCoordinator() == null || - penRequestBatchReturnFilesSagaData.getPenCoordinator().getPenCoordinatorEmail() == null || - penRequestBatchReturnFilesSagaData.getPenCoordinator().getPenCoordinatorEmail().isEmpty(); + protected boolean hasNoStudentRegistrationContactEmail(final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) { + return penRequestBatchReturnFilesSagaData.getStudentRegistrationContacts().isEmpty(); } protected boolean isSupportingPDFGeneration(final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) { @@ -280,21 +274,20 @@ protected boolean isNotSupportingPDFGeneration(final BasePenRequestBatchReturnFi && penRequestBatchReturnFilesSagaData.getPenRequestBatchStudents().size() > this.restUtils.getProps().getBlockPdfGenerationThreshold()); } - protected void sendHasNoCoordinatorEmail(final Event event, final Saga saga, final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) throws JsonProcessingException { + protected void sendHasNoStudentRegistrationContactEmail(final Event event, final Saga saga, final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) throws JsonProcessingException { this.sendArchivedEmail(event, saga, penRequestBatchReturnFilesSagaData, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT); } - protected void sendHasCoordinatorEmail(final Event event, final Saga saga, final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) throws JsonProcessingException { + protected void sendHasStudentRegistrationContactEmail(final Event event, final Saga saga, final BasePenRequestBatchReturnFilesSagaData penRequestBatchReturnFilesSagaData) throws JsonProcessingException { this.sendArchivedEmail(event, saga, penRequestBatchReturnFilesSagaData, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT); } - protected PenCoordinator getPenCoordinator(final PenRequestBatchEntity penRequestBatchEntity) { + protected List getStudentRegistrationContactsByMincode(final PenRequestBatchEntity penRequestBatchEntity) { try { - final var penCoordinatorOptional = this.getPenCoordinatorService().getPenCoordinatorByMinCode(penRequestBatchEntity.getMincode()); - return penCoordinatorOptional.orElse(null); + return this.getStudentRegistrationContactService().getStudentRegistrationContactsByMincode(penRequestBatchEntity.getMincode()); } catch (final NullPointerException e) { - log.error("Error while trying to get get pen coordinator. The pen coordinator map is null", e); - return null; + log.error("Error while trying to get get student registration contact. The student registration contact map is null", e); + return Collections.emptyList(); } } diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestrator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestrator.java index e994b811..e76fc508 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestrator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestrator.java @@ -6,7 +6,7 @@ import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; import ca.bc.gov.educ.penreg.api.model.v1.Saga; import ca.bc.gov.educ.penreg.api.model.v1.SagaEvent; -import ca.bc.gov.educ.penreg.api.properties.PenCoordinatorProperties; +import ca.bc.gov.educ.penreg.api.properties.DataManagementUnitProperties; import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.*; import ca.bc.gov.educ.penreg.api.struct.Event; @@ -42,19 +42,19 @@ public class PenRequestBatchArchiveAndReturnOrchestrator extends BaseReturnFiles * @param sagaService the saga service * @param messagePublisher the message publisher * @param penRequestBatchService the pen request batch service - * @param penCoordinatorService the pen coordinator service - * @param penCoordinatorProperties the pen coordinator properties + * @param studentRegistrationContactService the student registration contact service + * @param dataManagementUnitProperties the student registration contact properties */ public PenRequestBatchArchiveAndReturnOrchestrator(SagaService sagaService, MessagePublisher messagePublisher, PenRequestBatchService penRequestBatchService, - PenCoordinatorService penCoordinatorService, - PenCoordinatorProperties penCoordinatorProperties, + StudentRegistrationContactService studentRegistrationContactService, + DataManagementUnitProperties dataManagementUnitProperties, ResponseFileGeneratorService responseFileGeneratorService, PenRequestBatchStudentValidationIssueService penRequestBatchStudentValidationIssueService, RestUtils restUtils) { super(sagaService, messagePublisher, PenRequestBatchArchiveAndReturnSagaData.class, PEN_REQUEST_BATCH_ARCHIVE_AND_RETURN_SAGA.toString(), PEN_REQUEST_BATCH_ARCHIVE_AND_RETURN_TOPIC.toString(), - penRequestBatchService, penCoordinatorService, penCoordinatorProperties, responseFileGeneratorService, + penRequestBatchService, studentRegistrationContactService, dataManagementUnitProperties, responseFileGeneratorService, penRequestBatchStudentValidationIssueService, restUtils); } @@ -70,8 +70,8 @@ public void populateStepsToExecuteMap() { .step(ARCHIVE_PEN_REQUEST_BATCH, PEN_REQUEST_BATCH_UPDATED, this::isNotSupportingPDFGeneration, SAVE_REPORTS, this::saveReportsWithoutPDF) .step(ARCHIVE_PEN_REQUEST_BATCH, PEN_REQUEST_BATCH_UPDATED, this::isSupportingPDFGeneration, GENERATE_PEN_REQUEST_BATCH_REPORTS, this::generatePDFReport) .step(GENERATE_PEN_REQUEST_BATCH_REPORTS, ARCHIVE_PEN_REQUEST_BATCH_REPORTS_GENERATED, SAVE_REPORTS, this::saveReports) - .step(SAVE_REPORTS, REPORTS_SAVED, this::hasPenCoordinatorEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, this::sendHasCoordinatorEmail) - .step(SAVE_REPORTS, REPORTS_SAVED, this::hasNoPenCoordinatorEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, this::sendHasNoCoordinatorEmail) + .step(SAVE_REPORTS, REPORTS_SAVED, this::hasStudentRegistrationContactEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, this::sendHasStudentRegistrationContactEmail) + .step(SAVE_REPORTS, REPORTS_SAVED, this::hasNoStudentRegistrationContactEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, this::sendHasNoStudentRegistrationContactEmail) .end(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, ARCHIVE_EMAIL_SENT) .or() .end(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, ARCHIVE_EMAIL_SENT) diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestrator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestrator.java index e0b14d4b..c43101b9 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestrator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestrator.java @@ -4,7 +4,7 @@ import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; import ca.bc.gov.educ.penreg.api.model.v1.Saga; import ca.bc.gov.educ.penreg.api.model.v1.SagaEvent; -import ca.bc.gov.educ.penreg.api.properties.PenCoordinatorProperties; +import ca.bc.gov.educ.penreg.api.properties.DataManagementUnitProperties; import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.*; import ca.bc.gov.educ.penreg.api.struct.Event; @@ -36,19 +36,19 @@ public class PenRequestBatchRepostReportsOrchestrator extends BaseReturnFilesOrc * @param sagaService the saga service * @param messagePublisher the message publisher * @param penRequestBatchService the pen request batch service - * @param penCoordinatorService the pen coordinator service - * @param penCoordinatorProperties the pen coordinator properties + * @param studentRegistrationContactService the student registration contact service + * @param dataManagementUnitProperties the data management unit properties */ public PenRequestBatchRepostReportsOrchestrator(SagaService sagaService, MessagePublisher messagePublisher, PenRequestBatchService penRequestBatchService, - PenCoordinatorService penCoordinatorService, - PenCoordinatorProperties penCoordinatorProperties, + StudentRegistrationContactService studentRegistrationContactService, + DataManagementUnitProperties dataManagementUnitProperties, ResponseFileGeneratorService responseFileGeneratorService, PenRequestBatchStudentValidationIssueService penRequestBatchStudentValidationIssueService, RestUtils restUtils) { super(sagaService, messagePublisher, PenRequestBatchRepostReportsFilesSagaData.class, PEN_REQUEST_BATCH_REPOST_REPORTS_SAGA.toString(), PEN_REQUEST_BATCH_REPOST_REPORTS_TOPIC.toString(), - penRequestBatchService, penCoordinatorService, penCoordinatorProperties, responseFileGeneratorService, + penRequestBatchService, studentRegistrationContactService, dataManagementUnitProperties, responseFileGeneratorService, penRequestBatchStudentValidationIssueService, restUtils); } @@ -63,8 +63,8 @@ public void populateStepsToExecuteMap() { .step(GET_STUDENTS, STUDENTS_FOUND, this::isNotSupportingPDFGeneration, SAVE_REPORTS, this::saveReportsWithoutPDF) .step(GET_STUDENTS, STUDENTS_FOUND, this::isSupportingPDFGeneration, GENERATE_PEN_REQUEST_BATCH_REPORTS, this::generatePDFReport) .step(GENERATE_PEN_REQUEST_BATCH_REPORTS, ARCHIVE_PEN_REQUEST_BATCH_REPORTS_GENERATED, SAVE_REPORTS, this::saveReports) - .step(SAVE_REPORTS, REPORTS_SAVED, this::hasPenCoordinatorEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, this::sendHasCoordinatorEmail) - .step(SAVE_REPORTS, REPORTS_SAVED, this::hasNoPenCoordinatorEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, this::sendHasNoCoordinatorEmail) + .step(SAVE_REPORTS, REPORTS_SAVED, this::hasStudentRegistrationContactEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, this::sendHasStudentRegistrationContactEmail) + .step(SAVE_REPORTS, REPORTS_SAVED, this::hasNoStudentRegistrationContactEmail, NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, this::sendHasNoStudentRegistrationContactEmail) .end(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT, ARCHIVE_EMAIL_SENT) .or() .end(NOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT, ARCHIVE_EMAIL_SENT) @@ -94,7 +94,7 @@ private void generatePDFReport(Event event, Saga saga, PenRequestBatchRepostRepo .build())) .build(); this.postMessageToTopic(SagaTopicsEnum.PEN_REPORT_GENERATION_API_TOPIC.toString(), nextEvent); - log.info("message sent to PEN_REPORT_GENERATION_API_TOPIC for {} Event. :: {}", GENERATE_PEN_REQUEST_BATCH_REPORTS.toString(), saga.getSagaId()); + log.info("message sent to PEN_REPORT_GENERATION_API_TOPIC for {} Event. :: {}", GENERATE_PEN_REQUEST_BATCH_REPORTS, saga.getSagaId()); } private void saveReportsWithoutPDF(Event event, Saga saga, PenRequestBatchRepostReportsFilesSagaData penRequestBatchRepostReportsFilesSagaData) throws IOException, TimeoutException, InterruptedException { diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/ApplicationProperties.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/ApplicationProperties.java index 0efd23c2..da0160f3 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/ApplicationProperties.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/ApplicationProperties.java @@ -45,6 +45,9 @@ public class ApplicationProperties { @Value("${url.api.student}") private String studentApiURL; + @Value("${url.api.institute}") + private String instituteApiUrl; + /** * Amount of time that can elapse before a duplicate request is not considered a repeat */ @@ -60,9 +63,6 @@ public class ApplicationProperties { @Value("${url.api.pen.services}") private String penServicesApiURL; - @Value("${url.api.school}") - private String schoolApiURL; - @Value("${nats.server}") private String server; diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/PenCoordinatorProperties.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/DataManagementUnitProperties.java similarity index 60% rename from api/src/main/java/ca/bc/gov/educ/penreg/api/properties/PenCoordinatorProperties.java rename to api/src/main/java/ca/bc/gov/educ/penreg/api/properties/DataManagementUnitProperties.java index e1f28173..044a4ff9 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/PenCoordinatorProperties.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/properties/DataManagementUnitProperties.java @@ -8,17 +8,17 @@ @Component @Getter @Setter -public class PenCoordinatorProperties { +public class DataManagementUnitProperties { - @Value("${pen.coordinator.email}") + @Value("${data.management.unit.email}") private String fromEmail; - @Value("${pen.coordinator.mailing.address}") + @Value("${data.management.unit.mailing.address}") private String mailingAddress; - @Value("${pen.coordinator.telephone}") + @Value("${data.management.unit.telephone}") private String telephone; - @Value("${pen.coordinator.facsimile}") + @Value("${data.management.unit.facsimile}") private String facsimile; } diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/rest/RestUtils.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/rest/RestUtils.java index ba8b6c94..24dee4d5 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/rest/RestUtils.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/rest/RestUtils.java @@ -3,13 +3,11 @@ import ca.bc.gov.educ.penreg.api.constants.EventOutcome; import ca.bc.gov.educ.penreg.api.constants.EventType; import ca.bc.gov.educ.penreg.api.constants.SagaTopicsEnum; +import ca.bc.gov.educ.penreg.api.exception.PenRegAPIRuntimeException; import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; import ca.bc.gov.educ.penreg.api.properties.ApplicationProperties; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.School; -import ca.bc.gov.educ.penreg.api.struct.Student; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.GradeCode; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueFieldCode; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueTypeCode; import ca.bc.gov.educ.penreg.api.util.JsonUtil; @@ -21,16 +19,16 @@ import lombok.val; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; +import org.springframework.http.*; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.web.reactive.function.client.WebClientResponseException; +import org.springframework.web.util.UriComponentsBuilder; import reactor.core.publisher.Mono; import javax.annotation.PostConstruct; import java.io.IOException; +import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -120,7 +118,7 @@ public void setGradeCodesMap() { try { writeLock.lock(); this.gradeCodesMap.clear(); - final List gradeCodes = this.webClient.get().uri(this.props.getStudentApiURL(), uri -> uri.path("/grade-codes").build()).header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).retrieve().bodyToFlux(GradeCode.class).collectList().block(); + final List gradeCodes = this.webClient.get().uri(this.props.getStudentApiURL() + "/grade-codes").header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).retrieve().bodyToFlux(GradeCode.class).collectList().block(); this.gradeCodesMap.put(GRADE_CODES, gradeCodes); } catch (Exception ex) { @@ -144,7 +142,7 @@ public void populateSchoolMap() { try { writeLock.lock(); for (val school : this.getSchools()) { - this.schoolMap.put(school.getDistNo() + school.getSchlNo(), school); + this.schoolMap.put(school.getMincode(), school); } } catch (Exception ex) { @@ -188,14 +186,14 @@ public void populatePenRequestBatchStudentValidationIssueFieldCodeMap() { * @return the schools */ public List getSchools() { - log.info("calling school api to load schools to memory"); + log.info("Calling Institute api to get list of schools"); return this.webClient.get() - .uri(this.props.getSchoolApiURL()) - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .retrieve() - .bodyToFlux(School.class) - .collectList() - .block(); + .uri(this.props.getInstituteApiUrl() + "/school") + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .retrieve() + .bodyToFlux(School.class) + .collectList() + .block(); } /** @@ -206,12 +204,12 @@ public List getSchools() { public List getPenRequestBatchStudentValidationIssueTypeCodes() { log.info("calling pen service api to load penRequestBatchStudentValidationIssueTypeCodes to memory"); return this.webClient.get() - .uri(this.props.getPenServicesApiURL() + "/api/v1/pen-services/validation/issue-type-code") - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .retrieve() - .bodyToFlux(PenRequestBatchStudentValidationIssueTypeCode.class) - .collectList() - .block(); + .uri(this.props.getPenServicesApiURL() + "/api/v1/pen-services/validation/issue-type-code") + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .retrieve() + .bodyToFlux(PenRequestBatchStudentValidationIssueTypeCode.class) + .collectList() + .block(); } /** @@ -252,11 +250,11 @@ public void scheduled() { */ public Student getStudentByStudentID(final String studentID) { return this.webClient.get() - .uri(this.props.getStudentApiURL(), uri -> uri.path("/{studentID}").build(studentID)) - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .retrieve() - .bodyToMono(Student.class) - .block(); + .uri(this.props.getStudentApiURL(), uri -> uri.path("/{studentID}").build(studentID)) + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .retrieve() + .bodyToMono(Student.class) + .block(); } /** @@ -266,12 +264,12 @@ public Student getStudentByStudentID(final String studentID) { */ public void updateStudent(final Student studentFromStudentAPI) { this.webClient.put() - .uri(this.props.getStudentApiURL(), uri -> uri.path("/{studentID}").build(studentFromStudentAPI.getStudentID())) - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .body(Mono.just(studentFromStudentAPI), Student.class) - .retrieve() - .bodyToMono(Student.class) - .block(); + .uri(this.props.getStudentApiURL(), uri -> uri.path("/{studentID}").build(studentFromStudentAPI.getStudentID())) + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .body(Mono.just(studentFromStudentAPI), Student.class) + .retrieve() + .bodyToMono(Student.class) + .block(); } @@ -283,12 +281,12 @@ public void updateStudent(final Student studentFromStudentAPI) { */ public Student createStudent(final Student student) { return this.webClient.post() - .uri(this.props.getStudentApiURL()) - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .body(Mono.just(student), Student.class) - .retrieve() - .bodyToMono(Student.class) - .block(); + .uri(this.props.getStudentApiURL()) + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .body(Mono.just(student), Student.class) + .retrieve() + .bodyToMono(Student.class) + .block(); } /** @@ -369,7 +367,7 @@ public Optional getPenRequestBat public List getStudentsByStudentIDs(final List studentIDs) throws IOException, ExecutionException, InterruptedException, TimeoutException { final var event = Event.builder().sagaId(UUID.randomUUID()).eventType(EventType.GET_STUDENTS).eventPayload(JsonUtil.getJsonStringFromObject(studentIDs)).build(); val responseEvent = JsonUtil.getJsonObjectFromByteArray(Event.class, - this.messagePublisher.requestMessage(STUDENT_API_TOPIC.toString(), JsonUtil.getJsonString(event).orElseThrow().getBytes(StandardCharsets.UTF_8)).get(30, TimeUnit.SECONDS).getData()); + this.messagePublisher.requestMessage(STUDENT_API_TOPIC.toString(), JsonUtil.getJsonString(event).orElseThrow().getBytes(StandardCharsets.UTF_8)).get(30, TimeUnit.SECONDS).getData()); if (responseEvent.getEventOutcome() == EventOutcome.STUDENT_NOT_FOUND) { return Collections.emptyList(); } @@ -377,26 +375,42 @@ public List getStudentsByStudentIDs(final List studentIDs) throws }); } - public Optional getPenCoordinator(final String mincode) { + public List getStudentRegistrationContactList(final String mincode) { try { - final var response = this.webClient.get() - .uri(this.props.getSchoolApiURL(), uri -> uri.path("/{mincode}/pen-coordinator").build(mincode)) - .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) - .retrieve() - .bodyToMono(PenCoordinator.class) - .block(); - log.info("record found for :: {}", mincode); - return Optional.ofNullable(response); - } catch (final WebClientResponseException ex) { - log.info("no record found for :: {}", mincode); - if (ex.getStatusCode().value() == HttpStatus.NOT_FOUND.value()) { - return Optional.empty(); - } else { - throw ex; + var school = schoolMap.get(mincode); + if(school == null){ + log.info("getStudentRegistrationContactList :: unable to find school for mincode {} returning empty ArrayList", mincode); + return new ArrayList<>(); + } + log.info("Calling Institute api to get list of school student registration contacts"); + String criterion = "[{\"searchCriteriaList\":[{\"key\":\"schoolContactTypeCode\",\"operation\":\"eq\",\"value\":\"STUDREGIS\",\"valueType\":\"STRING\",\"condition\":\"AND\"}]}," + + " {\"key\":\"schoolId\",\"operation\":\"eq\",\"value\":\"" + school.getSchoolId() + "\",\"valueType\":\"UUID\",\"condition\":\"AND\"}]}," + + " {\"key\":\"email\",\"operation\":\"neq\",\"value\":\"null\",\"valueType\":\"UUID\",\"condition\":\"AND\"}]}"; + SchoolContactSearchWrapper schoolContactSearchWrapper = this.webClient.get() + .uri(getSchoolContactURI(criterion)) + .header(CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .retrieve() + .bodyToFlux(SchoolContactSearchWrapper.class) + .blockFirst(); + + if (schoolContactSearchWrapper == null) { + throw new PenRegAPIRuntimeException("API call to Institute API received null response when getting student registration contacts, contact the Ministry for more info."); } + + return schoolContactSearchWrapper.getContent(); + }catch(Exception e){ + log.error("API call to Institute API failure getting student registration contacts :: {}", e.getMessage()); + throw new PenRegAPIRuntimeException("API call to Institute API failure getting student registration contacts, contact the Ministry for more info."); } } + private URI getSchoolContactURI(String criterion){ + return UriComponentsBuilder.fromHttpUrl(this.props.getInstituteApiUrl() + "/school/contact/paginated") + .queryParam("pageNumber", "0") + .queryParam("pageSize", "10000") + .queryParam("searchCriteriaList", criterion).build().toUri(); + } + public Optional requestEventResponseFromServicesAPI(final Event event) { return this.requestEventResponseFromAPI(event, PEN_SERVICES_API_TOPIC, "Exception while calling services api via nats"); } @@ -416,7 +430,7 @@ private Optional requestEventResponseFromAPI(final Event event, final Sag try { log.info("calling :: {} via NATS", topic); val response = JsonUtil.getJsonObjectFromByteArray(Event.class, - this.messagePublisher.requestMessage(topic.toString(), JsonUtil.getJsonString(event).orElseThrow().getBytes(StandardCharsets.UTF_8)).get(30, TimeUnit.SECONDS).getData()); + this.messagePublisher.requestMessage(topic.toString(), JsonUtil.getJsonString(event).orElseThrow().getBytes(StandardCharsets.UTF_8)).get(30, TimeUnit.SECONDS).getData()); log.info("got response from NATS :: {}", response.getEventOutcome()); return Optional.of(response); } catch (final Exception e) { diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/NotificationService.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/NotificationService.java index e1f59bb9..9fb38b4f 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/NotificationService.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/NotificationService.java @@ -2,10 +2,11 @@ import ca.bc.gov.educ.penreg.api.constants.EventType; import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; -import ca.bc.gov.educ.penreg.api.properties.PenCoordinatorProperties; +import ca.bc.gov.educ.penreg.api.properties.DataManagementUnitProperties; import ca.bc.gov.educ.penreg.api.struct.Event; import ca.bc.gov.educ.penreg.api.struct.v1.notification.PenRequestBatchSchoolErrorNotificationEntity; import ca.bc.gov.educ.penreg.api.util.JsonUtil; +import java.util.*; import lombok.extern.slf4j.Slf4j; import lombok.val; import org.springframework.stereotype.Service; @@ -13,8 +14,6 @@ import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.time.format.TextStyle; -import java.util.Locale; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import static ca.bc.gov.educ.penreg.api.constants.SagaTopicsEnum.PROFILE_REQUEST_EMAIL_API_TOPIC; @@ -27,14 +26,14 @@ public class NotificationService { private final MessagePublisher messagePublisher; - private final PenCoordinatorProperties penCoordinatorProperties; + private final DataManagementUnitProperties dataManagementUnitProperties; - public NotificationService(final MessagePublisher messagePublisher, final PenCoordinatorProperties penCoordinatorProperties) { + public NotificationService(final MessagePublisher messagePublisher, final DataManagementUnitProperties dataManagementUnitProperties) { this.messagePublisher = messagePublisher; - this.penCoordinatorProperties = penCoordinatorProperties; + this.dataManagementUnitProperties = dataManagementUnitProperties; } - public CompletableFuture notifySchoolForLoadFailed(final String guid, final String fileName, final String submissionNumber, final String reason, final String toEmail) { + public CompletableFuture notifySchoolForLoadFailed(final String guid, final String fileName, final String submissionNumber, final String reason, final List toEmail) { try { val localDateTime = LocalDateTime.now(); val prbErrorNotification = new PenRequestBatchSchoolErrorNotificationEntity(); @@ -43,7 +42,7 @@ public CompletableFuture notifySchoolForLoadFailed(final String guid, f prbErrorNotification.setFileName(fileName); prbErrorNotification.setSubmissionNumber(submissionNumber); prbErrorNotification.setToEmail(toEmail); - prbErrorNotification.setFromEmail(this.penCoordinatorProperties.getFromEmail()); + prbErrorNotification.setFromEmail(this.dataManagementUnitProperties.getFromEmail()); final Event event = Event.builder() .eventType(EventType.PEN_REQUEST_BATCH_NOTIFY_SCHOOL_FILE_FORMAT_ERROR) .eventPayload(JsonUtil.getJsonStringFromObject(prbErrorNotification)) diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorService.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorService.java deleted file mode 100644 index 8e7d7019..00000000 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorService.java +++ /dev/null @@ -1,38 +0,0 @@ -package ca.bc.gov.educ.penreg.api.service; - -import ca.bc.gov.educ.penreg.api.rest.RestUtils; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Optional; - -@Service -@Slf4j -public class PenCoordinatorService { - private final RestUtils restUtils; - - @Autowired - public PenCoordinatorService(final RestUtils restUtils) { - this.restUtils = restUtils; - } - - - public Optional getPenCoordinatorByMinCode(final String mincode) { - if (StringUtils.length(mincode) != 8 || !StringUtils.isNumeric(mincode)) { - return Optional.empty(); - } - - return this.restUtils.getPenCoordinator(mincode); - } - - public Optional getPenCoordinatorEmailByMinCode(final String mincode) { - log.debug("getting pen coordinator email for mincode :: {}", mincode); - if (StringUtils.length(mincode) != 8 || !StringUtils.isNumeric(mincode)) { - return Optional.empty(); - } - return this.restUtils.getPenCoordinator(mincode).map(PenCoordinator::getPenCoordinatorEmail); - } -} diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorService.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorService.java index cd106048..241e0f1b 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorService.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorService.java @@ -8,8 +8,7 @@ import ca.bc.gov.educ.penreg.api.repository.PenRequestBatchStudentRepository; import ca.bc.gov.educ.penreg.api.repository.PenWebBlobRepository; import ca.bc.gov.educ.penreg.api.rest.RestUtils; -import ca.bc.gov.educ.penreg.api.struct.Student; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudent; import ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.PenRequestBatchReportData; import lombok.Getter; @@ -48,7 +47,7 @@ public class ResponseFileGeneratorService { * the pen coordinator service */ @Getter(PRIVATE) - private final PenCoordinatorService penCoordinatorService; + private final StudentRegistrationContactService studentRegistrationContactService; /** * the pen request batch student repository @@ -75,8 +74,8 @@ public class ResponseFileGeneratorService { private SpringTemplateEngine templateEngine; @Autowired - public ResponseFileGeneratorService(final PenCoordinatorService penCoordinatorService, final PenWebBlobRepository penWebBlobRepository, final PenRequestBatchStudentRepository penRequestBatchStudentRepository, final RestUtils restUtils, final SpringTemplateEngine templateEngine) { - this.penCoordinatorService = penCoordinatorService; + public ResponseFileGeneratorService(final StudentRegistrationContactService studentRegistrationContactService, final PenWebBlobRepository penWebBlobRepository, final PenRequestBatchStudentRepository penRequestBatchStudentRepository, final RestUtils restUtils, final SpringTemplateEngine templateEngine) { + this.studentRegistrationContactService = studentRegistrationContactService; this.penWebBlobRepository = penWebBlobRepository; this.penRequestBatchStudentRepository = penRequestBatchStudentRepository; this.restUtils = restUtils; @@ -96,7 +95,7 @@ public PENWebBlobEntity getIDSBlob(final PenRequestBatchEntity penRequestBatchEn x.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.USR_NEW_PEN.getCode()) || x.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.SYS_MATCHED.getCode()) || x.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.USR_MATCHED.getCode())) && - x.getLocalID() != null).collect(Collectors.toList()); + x.getLocalID() != null).toList(); byte[] bFile; if (!filteredStudents.isEmpty()) { @@ -140,7 +139,7 @@ public PENWebBlobEntity getIDSBlob(final PenRequestBatchEntity penRequestBatchEn public PENWebBlobEntity getTxtBlob(final PenRequestBatchEntity penRequestBatchEntity, final List penRequestBatchStudentEntities) { final List filteredStudents = penRequestBatchStudentEntities.stream().filter(x -> - (x.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.ERROR.getCode()))).collect(Collectors.toList()); + (x.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.ERROR.getCode()))).toList(); byte[] bFile; @@ -257,16 +256,17 @@ private void saveReports(final List reports, PenRequestBatchEn private String createHeader(final PenRequestBatchEntity penRequestBatchEntity, String applicationCode) { final StringBuilder header = new StringBuilder(); - // retrieved from PEN_COORDINATOR table - Optional penCoordinator = this.getPenCoordinatorService().getPenCoordinatorByMinCode(penRequestBatchEntity.getMincode()); + // retrieved from INSTITUTE_API school contacts that have schoolContactTypeCode = STUDREGIS + List schoolContactList = this.getStudentRegistrationContactService().getStudentRegistrationContactsByMincode(penRequestBatchEntity.getMincode()); header.append("FFI") .append(String.format("%-8.8s", print(penRequestBatchEntity.getMincode()))) .append(String.format("%-40.40s", print(penRequestBatchEntity.getSchoolName()))) .append(String.format("%-8.8s", penRequestBatchEntity.getProcessDate().format(DateTimeFormatter.ofPattern("yyyyMMdd")))) - .append(String.format("%-100.100s", print(penCoordinator.isPresent()? penCoordinator.get().getPenCoordinatorEmail() : ""))) - .append(String.format("%-10.10s", print(penCoordinator.map(coordinator -> coordinator.getPenCoordinatorFax().replaceAll("[^0-9]+", "")).orElse("")))) - .append(String.format("%-40.40s", print(penCoordinator.isPresent()? penCoordinator.get().getPenCoordinatorName() : ""))) + .append(String.format("%-100.100s", print(!schoolContactList.isEmpty() ? schoolContactList.get(0).getEmail() : ""))) + .append(String.format("%-10.10s", print(""))) //Student registration school Contact does not have a fax number. We will leave this blank + .append(String.format("%-10.10s", print(!schoolContactList.isEmpty() ? schoolContactList.get(0).getPhoneNumber() : ""))) + .append(String.format("%-40.40s", print(!schoolContactList.isEmpty()? schoolContactList.get(0).getFirstName() + " " + schoolContactList.get(0).getLastName() : ""))) //we may get more than one student registration school contact. We will only append the first one. .append(" ") .append(String.format("%-4.4s", print(applicationCode))) .append("\n"); @@ -314,9 +314,12 @@ private String getApplicationCode(String mincode) { var applicationCode = "PEN"; var school = this.restUtils.getSchoolByMincode(mincode). orElseThrow(() -> new PenRegAPIRuntimeException("Cannot find the school data by mincode :: " + mincode)); - if(school.getDistNo().equals("104")) { + + String districtNumber = school.getMincode().substring(0,3); + + if(districtNumber.equals("104")) { applicationCode = "MISC"; - } else if(school.getDistNo().equals("102") && school.getSchlNo().equals("00030")) { + } else if(districtNumber.equals("102") && school.getSchoolNumber().equals("00030")) { applicationCode = "SFAS"; } else if(school.getFacilityTypeCode().equals("12")) { applicationCode = "SS"; diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactService.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactService.java new file mode 100644 index 00000000..4114d489 --- /dev/null +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactService.java @@ -0,0 +1,43 @@ +package ca.bc.gov.educ.penreg.api.service; + +import ca.bc.gov.educ.penreg.api.rest.RestUtils; +import ca.bc.gov.educ.penreg.api.struct.SchoolContact; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@Slf4j +public class StudentRegistrationContactService { + private final RestUtils restUtils; + + @Autowired + public StudentRegistrationContactService(final RestUtils restUtils) { + this.restUtils = restUtils; + } + + public List getStudentRegistrationContactsByMincode(final String mincode) { + if (StringUtils.length(mincode) != 8 || !StringUtils.isNumeric(mincode)) { + log.info("getStudentREgistrationContacsByMincode :: mincode is invalid {} returning empty array list", mincode); + return new ArrayList<>(); + } + + return this.restUtils.getStudentRegistrationContactList(mincode); + } + + public List getStudentRegistrationContactEmailsByMincode(final String mincode) { + log.debug("getting student registration contact email for mincode :: {}", mincode); + if (StringUtils.length(mincode) != 8 || !StringUtils.isNumeric(mincode)) { + log.info("getStudentRegistrationContactEmailsByMincode :: mincode is invalid {} returning empty array list", mincode); + return new ArrayList<>(); + } + var contacts = this.restUtils.getStudentRegistrationContactList(mincode); + return contacts.stream() + .map(contact -> String.valueOf(contact.getEmail())) + .toList(); + } +} diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/School.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/School.java index c42b112b..e00e4db5 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/School.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/School.java @@ -6,17 +6,86 @@ import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import javax.validation.constraints.Size; +import java.io.Serializable; + +/** + * The type School. + */ @Data +@Builder @AllArgsConstructor @NoArgsConstructor -@Builder @JsonIgnoreProperties(ignoreUnknown = true) -public class School { +public class School implements Serializable { + + private static final long serialVersionUID = 1L; + + @Null(message = "schoolId should be null") + private String schoolId; + @NotNull(message = "districtId can not be null.") + private String districtId; + + @Size(max = 10) + @NotNull(message = "schoolReportingRequirementCode cannot be null") + private String schoolReportingRequirementCode; + private String mincode; - private String schoolName; - private String distNo; - private String schlNo; - private String dateOpened; - private String dateClosed; + + private String independentAuthorityId; + + @Size(max = 5) + @NotNull(message = "schoolNumber can not be null.") + private String schoolNumber; + + @Size(max = 10) + private String faxNumber; + + @Size(max = 10) + private String phoneNumber; + + @Size(max = 255) + @Email(message = "Email address should be a valid email address") + private String email; + + @Size(max = 255) + private String website; + + @Size(max = 255) + @NotNull(message = "displayName cannot be null") + private String displayName; + + @Size(max = 255) + private String displayNameNoSpecialChars; + + @Size(max = 10) + @NotNull(message = "schoolOrganizationCode cannot be null") + private String schoolOrganizationCode; + + @Size(max = 10) + @NotNull(message = "schoolCategoryCode cannot be null") + private String schoolCategoryCode; + + @Size(max = 10) + @NotNull(message = "facilityTypeCode cannot be null") private String facilityTypeCode; + + private String openedDate; + + private String closedDate; + + @Size(max = 32) + public String createUser; + + @Size(max = 32) + public String updateUser; + + @Null(message = "createDate should be null.") + public String createDate; + + @Null(message = "updateDate should be null.") + public String updateDate; } diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContact.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContact.java new file mode 100644 index 00000000..28de843c --- /dev/null +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContact.java @@ -0,0 +1,71 @@ +package ca.bc.gov.educ.penreg.api.struct; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.*; + +import javax.validation.constraints.*; +import java.io.Serializable; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class SchoolContact implements Serializable { + /** + * The constant serialVersionUID. + */ + private static final long serialVersionUID = 1L; + + private String schoolContactId; + + private String schoolId; + + @Size(max = 10) + @NotNull(message = "schoolContactTypeCode cannot be null") + private String schoolContactTypeCode; + + @Size(max = 10) + @Pattern(regexp = "^$|\\d{10}", message = "Invalid phone number format") + private String phoneNumber; + + private String jobTitle; + + @Size(max = 10) + private String phoneExtension; + + @Size(max = 10) + @Pattern(regexp = "^$|\\d{10}", message = "Invalid phone number format") + private String alternatePhoneNumber; + + @Size(max = 10) + private String alternatePhoneExtension; + + @Size(max = 255) + @Email(message = "Email address should be a valid email address") + private String email; + + @Size(max = 255) + private String firstName; + + @Size(max = 255) + @NotNull(message = "lastName cannot be null") + private String lastName; + + private String effectiveDate; + + private String expiryDate; + + @Size(max = 32) + public String createUser; + + @Size(max = 32) + public String updateUser; + + @Null(message = "createDate should be null.") + public String createDate; + + @Null(message = "updateDate should be null.") + public String updateDate; + +} diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenCoordinator.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContactSearchWrapper.java similarity index 51% rename from api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenCoordinator.java rename to api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContactSearchWrapper.java index 5b6eede2..58941cd4 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenCoordinator.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/SchoolContactSearchWrapper.java @@ -1,4 +1,4 @@ -package ca.bc.gov.educ.penreg.api.struct.v1; +package ca.bc.gov.educ.penreg.api.struct; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; @@ -6,17 +6,14 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.util.List; + @Data +@Builder @AllArgsConstructor @NoArgsConstructor -@Builder @JsonIgnoreProperties(ignoreUnknown = true) -public class PenCoordinator { - Integer districtNumber; - Integer schoolNumber; - String mincode; - String penCoordinatorName; - String penCoordinatorEmail; - String penCoordinatorFax; - String sendPenResultsVia; +public class SchoolContactSearchWrapper implements Serializable { + private List content; } diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/BasePenRequestBatchReturnFilesSagaData.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/BasePenRequestBatchReturnFilesSagaData.java index 5257219d..9fb3711f 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/BasePenRequestBatchReturnFilesSagaData.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/BasePenRequestBatchReturnFilesSagaData.java @@ -1,15 +1,12 @@ package ca.bc.gov.educ.penreg.api.struct.v1; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.Student; +import ca.bc.gov.educ.penreg.api.struct.*; +import java.util.*; import lombok.*; import lombok.experimental.SuperBuilder; import lombok.extern.slf4j.Slf4j; import javax.validation.constraints.NotNull; -import java.util.List; -import java.util.Map; -import java.util.UUID; @Data @SuperBuilder @@ -45,7 +42,14 @@ public void setStudents(Event event, List students) { this.students = students; } Map penRequestBatchStudentValidationIssues; - PenCoordinator penCoordinator; + + List studentRegistrationContacts; + public List getStudentRegistrationContacts() { + if (this.studentRegistrationContacts == null) { + return new ArrayList<>(); + } + return this.studentRegistrationContacts; + } String fromEmail; String telephone; diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenRequestBatchArchivedEmailEvent.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenRequestBatchArchivedEmailEvent.java index ed35f948..c2c8fd63 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenRequestBatchArchivedEmailEvent.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/PenRequestBatchArchivedEmailEvent.java @@ -1,5 +1,6 @@ package ca.bc.gov.educ.penreg.api.struct.v1; +import java.util.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,7 +12,7 @@ @NoArgsConstructor public class PenRequestBatchArchivedEmailEvent { String fromEmail; - String toEmail; + List toEmail; String submissionNumber; String schoolName; String mincode; diff --git a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/notification/BatchNotificationEntity.java b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/notification/BatchNotificationEntity.java index a333d030..9da947da 100644 --- a/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/notification/BatchNotificationEntity.java +++ b/api/src/main/java/ca/bc/gov/educ/penreg/api/struct/v1/notification/BatchNotificationEntity.java @@ -1,10 +1,11 @@ package ca.bc.gov.educ.penreg.api.struct.v1.notification; +import java.util.*; import lombok.Data; @Data public abstract class BatchNotificationEntity { String fromEmail; - String toEmail; + List toEmail; String submissionNumber; } diff --git a/api/src/main/resources/application.properties b/api/src/main/resources/application.properties index 31c3cc62..678ff141 100644 --- a/api/src/main/resources/application.properties +++ b/api/src/main/resources/application.properties @@ -87,7 +87,7 @@ url.token=${TOKEN_URL} #Below are for making API calls to Student after getting the token. url.api.student=${STUDENT_API_URL} url.api.pen.services=${PEN_SERVICES_API_URL} -url.api.school=${SCHOOL_API_URL} +url.api.institute=${INSTITUTE_API_URL} #How many days after processing a batch request is considered a repeat repeat.time.window.psi=${REPEAT_TIME_WINDOW_PSI} repeat.time.window.k12=${REPEAT_TIME_WINDOW_K12} @@ -101,10 +101,10 @@ soft.deleted.batch.records.retention.days=${SOFT_DELETED_RETENTION_DAYS} #Number of records in batch before it's held back number.records.for.batch.hold=${HOLD_BATCHES_EQUAL_OR_LARGER_THAN} # from email when the batch file could not be processed due to formatting errors. -pen.coordinator.email=${PEN_COORDINATOR_EMAIL} -pen.coordinator.mailing.address=${PEN_COORDINATOR_MAILING_ADDRESS} -pen.coordinator.telephone=${PEN_COORDINATOR_TELEPHONE} -pen.coordinator.facsimile=${PEN_COORDINATOR_FACSIMILE} +data.management.unit.email=${DATA_MANAGEMENT_UNIT_EMAIL} +data.management.unit.mailing.address=${DATA_MANAGEMENT_UNIT_MAILING_ADDRESS} +data.management.unit.telephone=${DATA_MANAGEMENT_UNIT_TELEPHONE} +data.management.unit.facsimile=${DATA_MANAGEMENT_UNIT_FACSIMILE} spring.redis.client-name=PEN-REG-BATCH-API spring.data.redis.repositories.enabled=false spring.redis.client-type=lettuce diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessorTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessorTest.java index 217b31fe..9f8b9ca5 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessorTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/processor/PenRegBatchProcessorTest.java @@ -3,18 +3,13 @@ import ca.bc.gov.educ.penreg.api.BasePenRegAPITest; import ca.bc.gov.educ.penreg.api.compare.PenRequestBatchHistoryComparator; import ca.bc.gov.educ.penreg.api.constants.PenRequestBatchStudentStatusCodes; -import ca.bc.gov.educ.penreg.api.constants.SchoolGroupCodes; import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; import ca.bc.gov.educ.penreg.api.model.v1.PENWebBlobEntity; import ca.bc.gov.educ.penreg.api.model.v1.PenRequestBatchHistoryEntity; import ca.bc.gov.educ.penreg.api.model.v1.PenRequestBatchStudentEntity; -import ca.bc.gov.educ.penreg.api.repository.PenRequestBatchRepository; -import ca.bc.gov.educ.penreg.api.repository.PenRequestBatchStudentRepository; -import ca.bc.gov.educ.penreg.api.repository.PenWebBlobRepository; +import ca.bc.gov.educ.penreg.api.repository.*; import ca.bc.gov.educ.penreg.api.rest.RestUtils; -import ca.bc.gov.educ.penreg.api.struct.School; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; -import ca.bc.gov.educ.penreg.api.struct.v1.SchoolGroupCode; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.support.PenRequestBatchTestUtils; import ca.bc.gov.educ.penreg.api.util.JsonUtil; import com.github.javafaker.Faker; @@ -24,6 +19,7 @@ import io.nats.client.impl.Headers; import io.nats.client.impl.NatsJetStreamMetaData; import io.nats.client.support.Status; +import java.util.*; import lombok.extern.slf4j.Slf4j; import org.junit.Before; import org.junit.Test; @@ -35,10 +31,6 @@ import java.nio.file.Files; import java.time.Duration; import java.time.LocalDateTime; -import java.util.Comparator; -import java.util.Objects; -import java.util.Optional; -import java.util.Random; import java.util.concurrent.CompletableFuture; import static ca.bc.gov.educ.penreg.api.constants.PenRequestBatchEventCodes.STATUS_CHANGED; @@ -75,9 +67,6 @@ public class PenRegBatchProcessorTest extends BasePenRegAPITest { @Autowired private PenRequestBatchRepository repository; - @Autowired - private PenWebBlobRepository penWebBlobRepository; - /** * The Student repository. */ @@ -103,11 +92,11 @@ public class PenRegBatchProcessorTest extends BasePenRegAPITest { public void before() { this.faker = new Faker(new Random(0)); when(this.restUtils.getSchoolByMincode(anyString())).thenReturn(Optional.of(new School())); - when(this.restUtils.getPenCoordinator(anyString())).thenReturn(Optional.of(PenCoordinator.builder().penCoordinatorEmail("test@test.com").build())); + when(this.restUtils.getStudentRegistrationContactList(anyString())).thenReturn( + Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), SchoolContact.builder().email("2@email.com").firstName("2").lastName("2").build())); when(this.messagePublisher.requestMessage(anyString(), any())).thenReturn(CompletableFuture.completedFuture(this.getMessage())); } - /** * Test process pen reg batch file from tsw given 30 row valid file should create records in db. * @@ -696,7 +685,7 @@ public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalid_ShouldCreateRe @Transactional public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolCloseDate_ShouldCreateRecordLOADFAILInDB() throws IOException { final School school = this.createMockSchool(); - school.setDateClosed("1996-09-01T00:00:00"); + school.setClosedDate("1996-09-01T00:00:00"); when(this.restUtils.getSchoolByMincode(anyString())).thenReturn(Optional.of(school)); final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("sample_5_K12_OK.txt")).getFile()); final byte[] bFile = Files.readAllBytes(file.toPath()); @@ -724,7 +713,7 @@ public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolCloseDate @Transactional public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolOpenDate_ShouldCreateRecordLOADFAILInDB() throws IOException { final School school = this.createMockSchool(); - school.setDateOpened("2024-09-01T00:00:00"); + school.setOpenedDate("2024-09-01T00:00:00"); when(this.restUtils.getSchoolByMincode(anyString())).thenReturn(Optional.of(school)); final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("sample_5_K12_OK.txt")).getFile()); final byte[] bFile = Files.readAllBytes(file.toPath()); @@ -752,7 +741,7 @@ public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolOpenDate_ @Transactional public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolOpenDateFormat_ShouldCreateRecordLOADFAILInDB() throws IOException { final School school = this.createMockSchool(); - school.setDateOpened("88888888"); + school.setOpenedDate("88888888"); when(this.restUtils.getSchoolByMincode(anyString())).thenReturn(Optional.of(school)); final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("sample_5_K12_OK.txt")).getFile()); final byte[] bFile = Files.readAllBytes(file.toPath()); @@ -778,9 +767,9 @@ public void testProcessPenRegBatchFileFromTSW_GivenmincodeInvalidSchoolOpenDateF private School createMockSchool() { final School school = new School(); - school.setSchoolName("Marco's school"); + school.setDisplayNameNoSpecialChars("Marco's school"); school.setMincode("66510518"); - school.setDateOpened("1964-09-01T00:00:00"); + school.setOpenedDate("1964-09-01T00:00:00"); return school; } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/schedulers/PenRegBatchSchedulerTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/schedulers/PenRegBatchSchedulerTest.java index a5dcab70..01f15953 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/schedulers/PenRegBatchSchedulerTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/schedulers/PenRegBatchSchedulerTest.java @@ -192,9 +192,9 @@ private void waitForAsyncToFinish() throws InterruptedException { private School createMockSchool() { final School school = new School(); - school.setSchoolName("Marco's school"); + school.setDisplayNameNoSpecialChars("Marco's school"); school.setMincode("66510518"); - school.setDateOpened("1953-09-01T00:00:00"); + school.setOpenedDate("1953-09-01T00:00:00"); return school; } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/service/PenRequestBatchFileServiceTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/service/PenRequestBatchFileServiceTest.java index fb88f8b0..e82c0898 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/service/PenRequestBatchFileServiceTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/batch/service/PenRequestBatchFileServiceTest.java @@ -107,9 +107,9 @@ public void testFilterDuplicatesAndRepeatRequests_givenSFASFileAndRepeats_should private School createMockSchool() { final School school = new School(); - school.setSchoolName("Marco's school"); + school.setDisplayNameNoSpecialChars("Marco's school"); school.setMincode("66510518"); - school.setDateOpened("1964-09-01T00:00:00"); + school.setOpenedDate("1964-09-01T00:00:00"); return school; } } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/mapper/v1/PenRequestBatchReportDataMapperTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/mapper/v1/PenRequestBatchReportDataMapperTest.java index 7c3d384a..7eeee130 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/mapper/v1/PenRequestBatchReportDataMapperTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/mapper/v1/PenRequestBatchReportDataMapperTest.java @@ -5,19 +5,16 @@ import ca.bc.gov.educ.penreg.api.mappers.v1.PenRequestBatchReportDataMapper; import ca.bc.gov.educ.penreg.api.mappers.v1.PenRequestBatchStudentMapper; import ca.bc.gov.educ.penreg.api.repository.PenRequestBatchRepository; -import ca.bc.gov.educ.penreg.api.struct.Student; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchArchiveAndReturnSagaData; import ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.PenRequestBatchReportData; import ca.bc.gov.educ.penreg.api.support.PenRequestBatchTestUtils; +import java.util.*; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +43,7 @@ public void testToReportUserMatchedListItem_GivenAllValues_ShouldMapSuccessfully .telephone("5555555555") .fromEmail("test@abc.com") .mailingAddress("mailing address") - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("test@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .schoolName("Cataline") .penRequestBatch(mapper.toStructure(batchEntities.get(0))) .penRequestBatchStudents(batchEntities.get(0).getPenRequestBatchStudentEntities().stream().map(studentMapper::toStructure).collect(Collectors.toList())) @@ -107,7 +104,7 @@ public void testToReportUserMatchedListItem_GivenBadDOB_ShouldMapSuccessfully() .telephone("5555555555") .fromEmail("test@abc.com") .mailingAddress("mailing address") - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("test@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .schoolName("Cataline") .penRequestBatch(mapper.toStructure(batchEntities.get(0))) .penRequestBatchStudents(batchEntities.get(0).getPenRequestBatchStudentEntities().stream().map(studentMapper::toStructure).collect(Collectors.toList())) @@ -133,7 +130,7 @@ public void testToReportUserMatchedListItem_GivenNullStudent_ShouldNotThrowError .fromEmail("test@abc.com") .mailingAddress("mailing address") .students(students) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("test@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .schoolName("Cataline") .penRequestBatch(mapper.toStructure(batchEntities.get(0))) .penRequestBatchStudents(batchEntities.get(0).getPenRequestBatchStudentEntities().stream().map(studentMapper::toStructure).collect(Collectors.toList())) diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestratorTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestratorTest.java index 6e860d9b..f40ca314 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestratorTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchArchiveAndReturnOrchestratorTest.java @@ -13,30 +13,20 @@ import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.PenRequestBatchService; import ca.bc.gov.educ.penreg.api.service.SagaService; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.Student; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchArchiveAndReturnSagaData; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueFieldCode; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueTypeCode; import ca.bc.gov.educ.penreg.api.support.PenRequestBatchTestUtils; import ca.bc.gov.educ.penreg.api.util.JsonUtil; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.*; import org.junit.Before; import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.MockitoAnnotations; +import org.mockito.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.client.RestTemplate; -import java.io.File; import java.io.IOException; -import java.util.Base64; -import java.util.List; -import java.util.Objects; -import java.util.Optional; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @@ -309,15 +299,13 @@ public class PenRequestBatchArchiveAndReturnOrchestratorTest extends BaseOrchest " \"0a611b42-7a40-1860-817a-445d42dc007b\": \"Field value is on the list of blocked names, that are either flagged as an error or warning\",\n" + " \"0a611b42-7a40-1860-817a-445d42dc0076\": \"Field value is on the list of blocked names, that are either flagged as an error or warning\"\n" + " },\n" + - " \"penCoordinator\": {\n" + - " \"districtNumber\": 103,\n" + - " \"schoolNumber\": 96672,\n" + - " \"mincode\": \"10396672\",\n" + - " \"penCoordinatorName\": \"Aditya Sharma\",\n" + - " \"penCoordinatorEmail\": \"aditya.sharma@gov.bc.ca\",\n" + - " \"penCoordinatorFax\": \"6046756911\",\n" + - " \"sendPenResultsVia\": \"E\"\n" + - " },\n" + + " \"studentRegistrationContacts\": [\n" + + " {\n" + + " \"firstName\": \"Aditya Sharma\",\n" + + " \"email\": \"aditya.sharma@gov.bc.ca\",\n" + + " \"phoneNumber\": \"6046756911\"\n" + + " }\n" + + " ],\n" + " \"fromEmail\": \"aditya.sharma@gov.bc.ca\",\n" + " \"telephone\": \"(250)356-8020\",\n" + " \"facsimile\": \"(250)953-0450\",\n" + @@ -342,17 +330,16 @@ public class PenRequestBatchArchiveAndReturnOrchestratorTest extends BaseOrchest @Before public void setUp() throws Exception { + Mockito.reset(this.restUtils); MockitoAnnotations.openMocks(this); this.saga = penRequestBatchTestUtils.createSaga("19337120", "12345678", LOADED.getCode(), TEST_PEN); - final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("mock-pen-coordinator.json")).getFile()); - final List structs = new ObjectMapper().readValue(file, new TypeReference<>() { - }); when(this.restUtils.getProps()).thenReturn(this.props); } @Test public void testHandleEvent_givenBatchInSagaDataExistsAndErrorStudent_shouldArchivePenRequestBatchAndBeMarkedSTUDENTS_FOUND() throws IOException, InterruptedException, TimeoutException { - when(this.restUtils.getPenCoordinator(anyString())).thenReturn(Optional.of(PenCoordinator.builder().penCoordinatorEmail("test@test.com").penCoordinatorName("Joe Blow").build())); + when(this.restUtils.getStudentRegistrationContactList(anyString())).thenReturn( + Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())); final String errorDescription = "Invalid chars"; when(this.restUtils.getPenRequestBatchStudentValidationIssueTypeCodeInfoByIssueTypeCode(anyString())). thenReturn(Optional.of(PenRequestBatchStudentValidationIssueTypeCode.builder().code(ca.bc.gov.educ.penreg.api.constants.PenRequestBatchStudentValidationIssueTypeCode.INV_CHARS.getCode()) @@ -385,8 +372,9 @@ public void testHandleEvent_givenBatchInSagaDataExistsAndErrorStudent_shouldArch assertThat(payload.getFromEmail()).isNotEmpty(); assertThat(payload.getTelephone()).isNotEmpty(); assertThat(payload.getMailingAddress()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorEmail()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorName()).isNotEmpty(); + assertThat(payload.getStudentRegistrationContacts()).hasSize(1); + assertThat(payload.getStudentRegistrationContacts().get(0).getEmail()).isEqualTo("pen@email.com"); + assertThat(payload.getStudentRegistrationContacts().get(0).getFirstName()).isEqualTo("Joe"); assertThat(payload.getPenRequestBatchStudents()).isNotEmpty(); assertThat(payload.getPenRequestBatch()).isNotNull(); assertThat(payload.getPenRequestBatchStudentValidationIssues()).containsValue(errorFieldDescription + " - " + errorDescription); @@ -394,7 +382,8 @@ public void testHandleEvent_givenBatchInSagaDataExistsAndErrorStudent_shouldArch @Test public void testHandleEvent_givenBatchInSagaDataExistsAndUsrMtchStudent_shouldArchivePenRequestBatchAndBeMarkedSTUDENTS_FOUND() throws IOException, InterruptedException, TimeoutException { - when(this.restUtils.getPenCoordinator(anyString())).thenReturn(Optional.of(PenCoordinator.builder().penCoordinatorEmail("test@test.com").penCoordinatorName("Joe Blow").build())); + when(this.restUtils.getStudentRegistrationContactList(anyString())).thenReturn( + Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())); this.saga = penRequestBatchTestUtils.createSaga("19337120", "12345679", PenRequestBatchStudentStatusCodes.USR_MATCHED.getCode(), TEST_PEN); final var event = Event.builder() .eventType(EventType.INITIATED) @@ -418,15 +407,17 @@ public void testHandleEvent_givenBatchInSagaDataExistsAndUsrMtchStudent_shouldAr assertThat(payload.getFromEmail()).isNotEmpty(); assertThat(payload.getTelephone()).isNotEmpty(); assertThat(payload.getMailingAddress()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorEmail()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorName()).isNotEmpty(); + assertThat(payload.getStudentRegistrationContacts()).hasSize(1); + assertThat(payload.getStudentRegistrationContacts().get(0).getEmail()).isEqualTo("pen@email.com"); + assertThat(payload.getStudentRegistrationContacts().get(0).getFirstName()).isEqualTo("Joe"); assertThat(payload.getPenRequestBatchStudents()).isNotEmpty(); assertThat(payload.getPenRequestBatch()).isNotNull(); } @Test public void testHandleEvent_givenBatchInSagaDataExistsAndSysNewPenStudent_shouldGatherReportDataAndBeMarkedREPORT_DATA_GATHERED() throws IOException, InterruptedException, TimeoutException { - when(this.restUtils.getPenCoordinator(anyString())).thenReturn(Optional.of(PenCoordinator.builder().penCoordinatorEmail("test@test.com").penCoordinatorName("Joe Blow").build())); + when(this.restUtils.getStudentRegistrationContactList(anyString())).thenReturn( + Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())); this.saga = penRequestBatchTestUtils.createSaga("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); final var event = Event.builder() .eventType(EventType.INITIATED) @@ -448,8 +439,9 @@ public void testHandleEvent_givenBatchInSagaDataExistsAndSysNewPenStudent_should assertThat(payload.getFromEmail()).isNotEmpty(); assertThat(payload.getTelephone()).isNotEmpty(); assertThat(payload.getMailingAddress()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorEmail()).isNotEmpty(); - assertThat(payload.getPenCoordinator().getPenCoordinatorName()).isNotEmpty(); + assertThat(payload.getStudentRegistrationContacts()).hasSize(1); + assertThat(payload.getStudentRegistrationContacts().get(0).getEmail()).isEqualTo("pen@email.com"); + assertThat(payload.getStudentRegistrationContacts().get(0).getFirstName()).isEqualTo("Joe"); assertThat(payload.getPenRequestBatchStudents()).isNotEmpty(); assertThat(payload.getPenRequestBatch()).isNotNull(); } @@ -461,7 +453,7 @@ public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_s final PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(this.batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(this.batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), SchoolContact.builder().email("pen@email2.com").firstName("Joe2").lastName("Blow2").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -491,13 +483,13 @@ public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_s } @Test - public void testSaveReportsWithoutPDF_givenEventAndSagaDataHasPenCoordinatorEmail_and_SfasBatchFile_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSaveReportsWithoutPDF_givenEventAndSagaDataHasStudentRegistrationContactEmail_and_SfasBatchFile_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("10200030", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -535,13 +527,13 @@ public void testSaveReportsWithoutPDF_givenEventAndSagaDataHasPenCoordinatorEmai @Test - public void testGeneratePDFReport_givenEventAndSagaDataHasPenCoordinatorEmail_and_NotSfasBatchFile_shouldBeMarkedGENERATE_PEN_REQUEST_BATCH_REPORTS() throws InterruptedException, TimeoutException, IOException { + public void testGeneratePDFReport_givenEventAndSagaDataHasStudentRegistrationContactEmail_and_NotSfasBatchFile_shouldBeMarkedGENERATE_PEN_REQUEST_BATCH_REPORTS() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), SchoolContact.builder().email("pen@email2.com").firstName("Joe2").lastName("Blow2").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -573,13 +565,13 @@ public void testGeneratePDFReport_givenEventAndSagaDataHasPenCoordinatorEmail_an } @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSendhasStudentRegistrationContactEmail_givenEventAndSagaDataHasStudentRegistrationContactEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -617,7 +609,7 @@ public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEm private PenRequestBatchRepository penRequestBatchRepository; @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataNoPenCoordinatorEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSendhasStudentRegistrationContactEmail_givenEventAndSagaDataNoStudentRegistrationContactEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() @@ -656,7 +648,7 @@ public void testSendHasCoordinatorEmail_givenEventAndSagaDataNoPenCoordinatorEma } @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataEmptyPenCoordinatorEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSendhasStudentRegistrationContactEmail_givenEventAndSagaDataEmptyStudentRegistrationContactEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_NO_SCHOOL_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() @@ -695,7 +687,7 @@ public void testSendHasCoordinatorEmail_givenEventAndSagaDataEmptyPenCoordinator } @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT_2() throws InterruptedException, TimeoutException, IOException { + public void testSendhasStudentRegistrationContactEmail_givenEventAndSagaDataHasStudentRegistrationContactEmail_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT_2() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); this.saga.get(0).setPayload(payload_archive_return); this.sagaService.updateAttachedEntityDuringSagaProcess(this.saga.get(0)); diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestratorTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestratorTest.java index c7d7349b..cda25c1b 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestratorTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/orchestrator/PenRequestBatchRepostReportsOrchestratorTest.java @@ -15,14 +15,11 @@ import ca.bc.gov.educ.penreg.api.rest.RestUtils; import ca.bc.gov.educ.penreg.api.service.PenRequestBatchService; import ca.bc.gov.educ.penreg.api.service.SagaService; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.Student; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; -import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchArchiveAndReturnSagaData; +import ca.bc.gov.educ.penreg.api.struct.*; +import ca.bc.gov.educ.penreg.api.struct.v1.*; import ca.bc.gov.educ.penreg.api.support.PenRequestBatchTestUtils; import ca.bc.gov.educ.penreg.api.util.JsonUtil; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.*; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -31,12 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.client.RestTemplate; -import java.io.File; import java.io.IOException; -import java.util.Base64; -import java.util.List; -import java.util.Objects; -import java.util.Optional; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @@ -107,19 +99,22 @@ public class PenRequestBatchRepostReportsOrchestratorTest extends BaseOrchestrat public void setUp() throws Exception { MockitoAnnotations.openMocks(this); this.saga = penRequestBatchTestUtils.createSaga("19337120", "12345678", LOADED.getCode(), TEST_PEN); - final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("mock-pen-coordinator.json")).getFile()); - final List structs = new ObjectMapper().readValue(file, new TypeReference<>() { - }); when(this.restUtils.getProps()).thenReturn(this.props); } @Test public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_shouldBeMarkedGENERATE_PEN_REQUEST_BATCH_REPORTS() throws IOException, InterruptedException, TimeoutException { final PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); + + List studentRegistrationContacts = new ArrayList<>(); + studentRegistrationContacts.add(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build()); + final PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(this.batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(this.batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), + SchoolContact.builder().email("pen@email2.com").firstName("Joe2").lastName("Blow2").build())) + .studentRegistrationContacts(studentRegistrationContacts) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -152,10 +147,14 @@ public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_s public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_and_SfasBatchFile_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws IOException, InterruptedException, TimeoutException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); final PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("10200030", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); + + List studentRegistrationContacts = new ArrayList<>(); + studentRegistrationContacts.add(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build()); + final PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(this.batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(this.batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(studentRegistrationContacts) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -193,13 +192,14 @@ public void testHandleEvent_givenSTUDENTS_FOUNDEventAndCorrectSagaAndEventData_a } @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEmail_and_MyEdSchool_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSendHasStudentRegistrationSchoolContactEmail_givenEventAndSagaDataHasStudentRegistrationSchoolContactEmail_and_MyEdSchool_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "M2345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), + SchoolContact.builder().email("pen@email2.com").firstName("Joe2").lastName("Blow2").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -235,13 +235,13 @@ public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEm } @Test - public void testSendHasCoordinatorEmail_givenEventAndSagaDataHasPenCoordinatorEmail_and_NotMyEdSchool_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { + public void testSendHasStudentRegistrationSchoolContactEmail_givenEventAndSagaDataHasStudentRegistrationSchoolContactEmail_and_NotMyEdSchool_shouldBeMarkedNOTIFY_PEN_REQUEST_BATCH_ARCHIVE_HAS_CONTACT() throws InterruptedException, TimeoutException, IOException { final var invocations = mockingDetails(this.messagePublisher).getInvocations().size(); PenRequestBatchEntity penRequestBatchEntity = penRequestBatchTestUtils.createBatchEntity("19337120", "12345679", PenRequestBatchStudentStatusCodes.SYS_NEW_PEN.getCode(), TEST_PEN); PenRequestBatchArchiveAndReturnSagaData payload = PenRequestBatchArchiveAndReturnSagaData.builder() .penRequestBatch(batchMapper.toStructure(penRequestBatchEntity)) .penRequestBatchStudents(penRequestBatchEntity.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Collections.singletonList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build())) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/rest/RestUtilsTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/rest/RestUtilsTest.java index cf6deae0..30612bd2 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/rest/RestUtilsTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/rest/RestUtilsTest.java @@ -3,14 +3,14 @@ import ca.bc.gov.educ.penreg.api.constants.EventType; import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; import ca.bc.gov.educ.penreg.api.properties.ApplicationProperties; -import ca.bc.gov.educ.penreg.api.struct.Event; -import ca.bc.gov.educ.penreg.api.struct.School; -import ca.bc.gov.educ.penreg.api.struct.Student; -import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchStudentValidationIssueTypeCode; +import ca.bc.gov.educ.penreg.api.struct.*; +import ca.bc.gov.educ.penreg.api.struct.v1.*; import ca.bc.gov.educ.penreg.api.support.NatsMessageImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.nats.client.Message; +import java.net.*; +import java.util.*; import lombok.val; import org.junit.Before; import org.junit.Test; @@ -24,7 +24,6 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.function.Function; @@ -68,7 +67,8 @@ public class RestUtilsTest { @Before public void setUp() throws Exception { when(this.webClient.get()).thenReturn(this.requestHeadersUriMock); - when(this.requestHeadersUriMock.uri(this.applicationProperties.getSchoolApiURL())).thenReturn(this.requestHeadersMock); + + when(this.requestHeadersUriMock.uri(this.applicationProperties.getInstituteApiUrl() + "/school")).thenReturn(this.requestHeadersMock); when(this.requestHeadersMock.header(any(), any())).thenReturn(this.requestHeadersMock); when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock); when(this.responseMock.bodyToFlux(School.class)).thenReturn(Flux.just(createSchoolArray())); @@ -80,12 +80,17 @@ public void setUp() throws Exception { .thenReturn(Flux.just(createValidationIssueTypeCodeArray("GENDER_ERR", "Gender error"))); this.restUtils.populatePenRequestBatchStudentValidationIssueTypeCodeMap(); + when(this.requestHeadersUriMock.uri(this.applicationProperties.getPenServicesApiURL() + "/grade-codes")).thenReturn(this.requestHeadersMock); + when(this.responseMock.bodyToFlux(GradeCode.class)) + .thenReturn(Flux.just(createGradeCodeArray())); + this.restUtils.setGradeCodesMap(); + openMocks(this); } private School[] createSchoolArray() { School[] schools = new School[1]; - schools[0] = School.builder().mincode("10200001").distNo("102").schlNo("00001").build(); + schools[0] = School.builder().mincode("10200001").schoolNumber("00001").schoolId("22b358d728-259b-4d55-98ac-c41dafe66ded").build(); return schools; } @@ -95,6 +100,20 @@ private PenRequestBatchStudentValidationIssueTypeCode[] createValidationIssueTyp return codes; } + private GradeCode[] createGradeCodeArray() { + GradeCode[] codes = new GradeCode[1]; + codes[0] = GradeCode.builder().gradeCode("A").label("A").description("hello").build(); + return codes; + } + + private SchoolContactSearchWrapper createSchoolContactSearchWrapper() { + SchoolContactSearchWrapper schoolSearchWrapper = new SchoolContactSearchWrapper(); + schoolSearchWrapper.setContent(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), + SchoolContact.builder().email("2@email.com").firstName("2").lastName("2").build())); + + return schoolSearchWrapper; + } + @Test public void testGetStudentByStudentID_givenAPICallSuccess_shouldReturnData() { final String studentID = UUID.randomUUID().toString(); @@ -200,6 +219,39 @@ public void testGetSchoolByMincodeWhenEmpty_givenAPICallSuccess_shouldReturnData assertThat(result.get().getMincode()).isEqualTo("10200001"); } + @Test + public void testGetStudentRegistrationContactList_givenAPICallSuccess_shouldReturnEmptyList() { + val result = this.restUtils.getStudentRegistrationContactList("Invalid Mincode"); + assertThat(result).isEmpty(); + } + + @Test + public void testGetGradeCode_shouldReturnData() { + + val result = this.restUtils.getGradeCodes(); + assertThat(result).hasSize(1); + assertThat(result.get(0).getGradeCode()).isEqualTo("A"); + } + + @Test + public void testGetStudentRegistrationContacts_shouldReturnData() { + when(this.webClient.get()).thenReturn(this.requestHeadersUriMock); + when(this.requestHeadersUriMock.uri(any(URI.class))) + .thenReturn(this.requestHeadersMock); + when(this.requestHeadersMock.header(any(), any())).thenReturn(this.requestHeadersMock); + when(this.requestHeadersUriMock.uri(eq(this.applicationProperties.getInstituteApiUrl()), any(Function.class))) + .thenReturn(this.requestHeadersMock); + when(this.requestHeadersMock.retrieve()).thenReturn(this.responseMock); + when(this.responseMock.bodyToFlux(SchoolContactSearchWrapper.class)).thenReturn(Flux.just(createSchoolContactSearchWrapper())); + + final var result = this.restUtils.getStudentRegistrationContactList("10200001"); + assertThat(result).hasSize(2); + assertThat(result.get(0).getEmail()).isEqualTo("pen@email.com"); + assertThat(result.get(0).getFirstName()).isEqualTo("Joe"); + assertThat(result.get(1).getEmail()).isEqualTo("2@email.com"); + assertThat(result.get(1).getFirstName()).isEqualTo("2"); + } + private WebClient.RequestBodySpec returnMockBodySpec() { return this.requestBodyMock; } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/NotificationServiceTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/NotificationServiceTest.java index db791994..5ce68775 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/NotificationServiceTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/NotificationServiceTest.java @@ -2,25 +2,19 @@ import ca.bc.gov.educ.penreg.api.BasePenRegAPITest; import ca.bc.gov.educ.penreg.api.messaging.MessagePublisher; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import io.nats.client.Connection; import io.nats.client.Message; import io.nats.client.Subscription; import io.nats.client.impl.Headers; import io.nats.client.impl.NatsJetStreamMetaData; import io.nats.client.support.Status; +import java.util.*; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.io.File; import java.nio.charset.StandardCharsets; import java.time.Duration; -import java.util.List; -import java.util.Objects; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; @@ -34,22 +28,19 @@ public class NotificationServiceTest extends BasePenRegAPITest { NotificationService notificationService; @Autowired - PenCoordinatorService service; + StudentRegistrationContactService service; @Autowired MessagePublisher messagePublisher; @Before public void setUp() throws Exception { - final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("mock-pen-coordinator.json")).getFile()); - final List structs = new ObjectMapper().readValue(file, new TypeReference<>() { - }); } @Test - public void notifySchoolForLoadFailed_givenMinCodeAndPenCoordinatorPresent_shouldSendMessageToNotifySchool() throws ExecutionException, InterruptedException { + public void notifySchoolForLoadFailed_givenMinCodeAndStudentRegistrationSchoolContactEmailPresent_shouldSendMessageToNotifySchool() throws ExecutionException, InterruptedException { when(this.messagePublisher.requestMessage(any(), any())).thenReturn(this.returnMessage("success")); - this.notificationService.notifySchoolForLoadFailed(UUID.randomUUID().toString(), "PEN_TEST", "123456789", "failed", "test@test.ca").get(); + this.notificationService.notifySchoolForLoadFailed(UUID.randomUUID().toString(), "PEN_TEST", "123456789", "failed", List.of("test@test.ca")).get(); verify(this.messagePublisher, atLeastOnce()).requestMessage(any(), any()); } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorServiceTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorServiceTest.java deleted file mode 100644 index 0bbfbc40..00000000 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/PenCoordinatorServiceTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package ca.bc.gov.educ.penreg.api.service; - -import ca.bc.gov.educ.penreg.api.BasePenRegAPITest; -import ca.bc.gov.educ.penreg.api.rest.RestUtils; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.val; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; -import java.util.stream.Collectors; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - - -public class PenCoordinatorServiceTest extends BasePenRegAPITest { - - private final Map penCoordinatorMap = new ConcurrentHashMap<>(); - - @Autowired - PenCoordinatorService service; - - @Autowired - RestUtils restUtils; - - @Before - public void setup() throws IOException { - Mockito.reset(restUtils); - final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("mock-pen-coordinator.json")).getFile()); - final List structs = new ObjectMapper().readValue(file, new TypeReference<>() { - }); - penCoordinatorMap.putAll(structs.stream().collect(Collectors.toConcurrentMap(key -> String.valueOf(key.getDistrictNumber()).concat(String.valueOf(key.getSchoolNumber())), Function.identity()))); - } - - @Test - public void testGetPenCoordinator_givenDifferentInputs_shouldProduceOutput() { - String mincode = "123546789"; - when(this.restUtils.getPenCoordinator(mincode)).thenReturn(Optional.ofNullable(penCoordinatorMap.get(mincode))); - val data = this.service.getPenCoordinatorByMinCode("123546789"); - assertThat(data).isEmpty(); - when(this.restUtils.getPenCoordinator("19337120")).thenReturn(Optional.ofNullable(penCoordinatorMap.get("19337120"))); - val dataOptional = this.service.getPenCoordinatorByMinCode("19337120"); - assertThat(dataOptional).isPresent(); - } - - @Test - public void testGetPenCoordinatorEmail_givenDifferentInputs_shouldProduceOutput() { - when(this.restUtils.getPenCoordinator("19337120")).thenReturn(Optional.ofNullable(penCoordinatorMap.get("19337120"))); - val dataOptional = this.service.getPenCoordinatorEmailByMinCode("19337120"); - assertThat(dataOptional).isPresent(); - assertThat(dataOptional.get()).isEqualTo("jhamberston0@va.gov"); - } - -} diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorServiceTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorServiceTest.java index 0d6fa086..654fbd78 100644 --- a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorServiceTest.java +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/ResponseFileGeneratorServiceTest.java @@ -8,11 +8,11 @@ import ca.bc.gov.educ.penreg.api.model.v1.PenRequestBatchEntity; import ca.bc.gov.educ.penreg.api.repository.PenRequestBatchRepository; import ca.bc.gov.educ.penreg.api.rest.RestUtils; -import ca.bc.gov.educ.penreg.api.struct.School; -import ca.bc.gov.educ.penreg.api.struct.v1.PenCoordinator; +import ca.bc.gov.educ.penreg.api.struct.*; import ca.bc.gov.educ.penreg.api.struct.v1.PenRequestBatchRepostReportsFilesSagaData; import ca.bc.gov.educ.penreg.api.struct.v1.reportstructs.PenRequestBatchReportData; import ca.bc.gov.educ.penreg.api.support.PenRequestBatchTestUtils; +import java.util.*; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; @@ -21,9 +21,6 @@ import javax.transaction.Transactional; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; @@ -252,6 +249,10 @@ public void testCreateParFile_givenPdfFileData_shouldParFilePenWebBlob() throws private PenRequestBatchReportData getPenRequestBatchReportData(PenRequestBatchEntity batch) { var issues = batch.getPenRequestBatchStudentEntities().stream().filter(student -> student.getPenRequestBatchStudentStatusCode().equals(PenRequestBatchStudentStatusCodes.ERROR.getCode())) .collect(Collectors.toMap(student -> student.getPenRequestBatchStudentID().toString(), student -> "error issue message")); + + List studentRegistrationContacts = new ArrayList<>(); + studentRegistrationContacts.add(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build()); + var sagaData = PenRequestBatchRepostReportsFilesSagaData.builder() .penRequestBatchID(batch.getPenRequestBatchID()) .schoolName(batch.getSchoolName()) @@ -259,7 +260,9 @@ private PenRequestBatchReportData getPenRequestBatchReportData(PenRequestBatchEn .penRequestBatchStudents(batch.getPenRequestBatchStudentEntities().stream().map(batchStudentMapper::toStructure).collect(Collectors.toList())) .penRequestBatchStudentValidationIssues(issues) .students(PenRequestBatchTestUtils.createStudents(batch)) - .penCoordinator(PenCoordinator.builder().penCoordinatorEmail("pen@email.com").penCoordinatorName("Joe Blow").build()) + .studentRegistrationContacts(Arrays.asList(SchoolContact.builder().email("pen@email.com").firstName("Joe").lastName("Blow").build(), + SchoolContact.builder().email("pen@email2.com").firstName("Joe2").lastName("Blow2").build())) + .studentRegistrationContacts(studentRegistrationContacts) .mailingAddress("123 st") .fromEmail("test@email.com") .facsimile("5555555555") @@ -270,12 +273,11 @@ private PenRequestBatchReportData getPenRequestBatchReportData(PenRequestBatchEn private School createMockSchool(String mincode, String facilityTypeCode) { final School school = new School(); - school.setSchoolName("Marco's school"); + school.setDisplayNameNoSpecialChars("Marco's school"); school.setMincode(mincode); - school.setDateOpened("1964-09-01T00:00:00"); - school.setDistNo(mincode.substring(0, 3)); - school.setSchlNo(mincode.substring(3)); + school.setOpenedDate("1964-09-01T00:00:00"); school.setFacilityTypeCode(facilityTypeCode); + school.setSchoolNumber(mincode.substring(3)); return school; } diff --git a/api/src/test/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactServiceTest.java b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactServiceTest.java new file mode 100644 index 00000000..0b76b01e --- /dev/null +++ b/api/src/test/java/ca/bc/gov/educ/penreg/api/service/StudentRegistrationContactServiceTest.java @@ -0,0 +1,68 @@ +package ca.bc.gov.educ.penreg.api.service; + +import ca.bc.gov.educ.penreg.api.BasePenRegAPITest; +import ca.bc.gov.educ.penreg.api.rest.RestUtils; +import ca.bc.gov.educ.penreg.api.struct.*; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + + +public class StudentRegistrationContactServiceTest extends BasePenRegAPITest { + private final Map> studentRegistrationContactMap = new ConcurrentHashMap<>(); + + @Autowired + StudentRegistrationContactService service; + + @Autowired + RestUtils restUtils; + + @Before + public void setup() throws IOException { + Mockito.reset(restUtils); + final File file = new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("mock-student-registration-contact.json")).getFile()); + final List structs = new ObjectMapper().readValue(file, new TypeReference<>() {}); + studentRegistrationContactMap.putAll(structs.stream().collect(Collectors.groupingBy(SchoolContact::getSchoolId))); + } + + @Test + public void testGetStudentRegistrationContactList_givenDifferentInputs_shouldProduceOutput() { + String mincodeNotExist = "123546789"; + when(this.restUtils.getStudentRegistrationContactList(mincodeNotExist)).thenReturn(studentRegistrationContactMap.get(mincodeNotExist)); + var data = this.service.getStudentRegistrationContactsByMincode(mincodeNotExist); + assertThat(data).isEmpty(); + + String mindcodeExists = "12345678"; + when(this.restUtils.getStudentRegistrationContactList(mindcodeExists)).thenReturn(studentRegistrationContactMap.get(mindcodeExists)); + var dataList = this.service.getStudentRegistrationContactEmailsByMincode(mindcodeExists); + assertThat(dataList).hasSize(2); + } + + @Test + public void testGetStudentRegistrationContactEmailsByMincode_givenDifferentInputs_shouldProduceOutput() { + String mincodeExists = "11111111"; + when(this.restUtils.getStudentRegistrationContactList(mincodeExists)).thenReturn(studentRegistrationContactMap.get(mincodeExists)); + var dataList = this.service.getStudentRegistrationContactEmailsByMincode(mincodeExists); + assertThat(dataList).hasSize(1); + assertThat(dataList.get(0)).isEqualTo("fake@gmail.com"); + + String mincodeNotExist = "123546789"; + when(this.restUtils.getStudentRegistrationContactList(mincodeNotExist)).thenReturn(studentRegistrationContactMap.get(mincodeNotExist)); + var dataList2 = this.service.getStudentRegistrationContactEmailsByMincode(mincodeNotExist); + assertThat(dataList2).isEmpty(); + } +} diff --git a/api/src/test/resources/application.properties b/api/src/test/resources/application.properties index ff710089..3a1af27d 100644 --- a/api/src/test/resources/application.properties +++ b/api/src/test/resources/application.properties @@ -38,7 +38,7 @@ url.token=http://abcxyz.com #Below are for making API calls to Student after getting the token. url.api.student=http://abcxyz.com url.api.pen.services=http://abcxyz.com -url.api.school=http://abcxyz.com +url.api.institute=http://abcxyz.com repeat.time.window=60 repeat.time.window.psi=366 repeat.time.window.k12=60 @@ -55,10 +55,10 @@ scheduled.jobs.purge.soft.deleted.batch.records.cron=- #Number of records in batch before it's held back number.records.for.batch.hold=4000 notification.email.school.error.unformatted.file.from.email=test@abc.com -pen.coordinator.email=test@abc.com -pen.coordinator.mailing.address=mailing address -pen.coordinator.telephone=5555555555 -pen.coordinator.facsimile=3333333333 +data.management.unit.email=test@abc.com +data.management.unit.mailing.address=mailing address +data.management.unit.telephone=5555555555 +data.management.unit.facsimile=3333333333 spring.redis.host=localhost spring.redis.port=6370 scheduled.jobs.mark.processed.batches.active.cron=- diff --git a/api/src/test/resources/mock-pen-coordinator.json b/api/src/test/resources/mock-pen-coordinator.json deleted file mode 100644 index 4e24ec29..00000000 --- a/api/src/test/resources/mock-pen-coordinator.json +++ /dev/null @@ -1,8002 +0,0 @@ -[ - { - "districtNumber": 193, - "schoolNumber": 37120, - "penCoordinatorName": "Jenni Hamberston", - "penCoordinatorEmail": "jhamberston0@va.gov", - "penCoordinatorFax": "780-308-6528", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 539, - "schoolNumber": 49998, - "penCoordinatorName": "Prentiss Andras", - "penCoordinatorEmail": "pandras1@vkontakte.ru", - "penCoordinatorFax": "347-242-0533", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 703, - "schoolNumber": 98146, - "penCoordinatorName": "Dorthea Dimitrijevic", - "penCoordinatorEmail": "ddimitrijevic2@forbes.com", - "penCoordinatorFax": "212-415-4677", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 189, - "schoolNumber": 64870, - "penCoordinatorName": "Dewey Petrasek", - "penCoordinatorEmail": "dpetrasek3@acquirethisname.com", - "penCoordinatorFax": "473-199-5914", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 796, - "schoolNumber": 50540, - "penCoordinatorName": "Chrissie Hyett", - "penCoordinatorEmail": "chyett4@cdbaby.com", - "penCoordinatorFax": "126-595-7506", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 112, - "schoolNumber": 53675, - "penCoordinatorName": "Dallis Asher", - "penCoordinatorEmail": "dasher5@youtube.com", - "penCoordinatorFax": "789-596-8970", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 420, - "schoolNumber": 21554, - "penCoordinatorName": "Sergeant Brehat", - "penCoordinatorEmail": "sbrehat6@taobao.com", - "penCoordinatorFax": "617-638-9103", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 764, - "schoolNumber": 94789, - "penCoordinatorName": "Arnoldo Hannigane", - "penCoordinatorEmail": "ahannigane7@mozilla.org", - "penCoordinatorFax": "230-318-4058", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 918, - "schoolNumber": 41179, - "penCoordinatorName": "Stearne Bonnick", - "penCoordinatorEmail": "sbonnick8@irs.gov", - "penCoordinatorFax": "841-964-1589", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 670, - "schoolNumber": 43280, - "penCoordinatorName": "Lammond Frango", - "penCoordinatorEmail": "lfrango9@shareasale.com", - "penCoordinatorFax": "657-289-0778", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 746, - "schoolNumber": 73353, - "penCoordinatorName": "Ciro MacPaike", - "penCoordinatorEmail": "cmacpaikea@myspace.com", - "penCoordinatorFax": "581-380-7087", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 437, - "schoolNumber": 64989, - "penCoordinatorName": "Leela Alesi", - "penCoordinatorEmail": "lalesib@smh.com.au", - "penCoordinatorFax": "212-937-3519", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 594, - "schoolNumber": 88818, - "penCoordinatorName": "Perrine Danielsson", - "penCoordinatorEmail": "pdanielssonc@amazon.com", - "penCoordinatorFax": "815-198-4054", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 786, - "schoolNumber": 20391, - "penCoordinatorName": "Alejandrina Reichhardt", - "penCoordinatorEmail": "areichhardtd@psu.edu", - "penCoordinatorFax": "941-304-7058", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 637, - "schoolNumber": 87367, - "penCoordinatorName": "Seward Girth", - "penCoordinatorEmail": "sgirthe@gov.uk", - "penCoordinatorFax": "578-116-6284", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 639, - "schoolNumber": 12577, - "penCoordinatorName": "Corry Gilby", - "penCoordinatorEmail": "cgilbyf@moonfruit.com", - "penCoordinatorFax": "484-493-4757", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 508, - "schoolNumber": 32223, - "penCoordinatorName": "Berne Parram", - "penCoordinatorEmail": "bparramg@google.ca", - "penCoordinatorFax": "347-569-0284", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 439, - "schoolNumber": 59071, - "penCoordinatorName": "Mortimer Teers", - "penCoordinatorEmail": "mteersh@goo.gl", - "penCoordinatorFax": "603-738-1253", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 432, - "schoolNumber": 70722, - "penCoordinatorName": "Joelly Brimfield", - "penCoordinatorEmail": "jbrimfieldi@weather.com", - "penCoordinatorFax": "425-634-3863", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 680, - "schoolNumber": 91965, - "penCoordinatorName": "Daisey Bysouth", - "penCoordinatorEmail": "dbysouthj@harvard.edu", - "penCoordinatorFax": "402-441-7031", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 905, - "schoolNumber": 35949, - "penCoordinatorName": "Jo-ann Arnaudi", - "penCoordinatorEmail": "jarnaudik@example.com", - "penCoordinatorFax": "304-155-7997", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 804, - "schoolNumber": 84121, - "penCoordinatorName": "Guillaume Verrall", - "penCoordinatorEmail": "gverralll@imageshack.us", - "penCoordinatorFax": "499-715-7665", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 943, - "schoolNumber": 26477, - "penCoordinatorName": "Lorene Clemendet", - "penCoordinatorEmail": "lclemendetm@hud.gov", - "penCoordinatorFax": "806-497-8860", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 752, - "schoolNumber": 16266, - "penCoordinatorName": "Lynea Simester", - "penCoordinatorEmail": "lsimestern@time.com", - "penCoordinatorFax": "852-820-6322", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 726, - "schoolNumber": 53781, - "penCoordinatorName": "Danyelle Wildblood", - "penCoordinatorEmail": "dwildbloodo@opensource.org", - "penCoordinatorFax": "664-446-0569", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 565, - "schoolNumber": 60845, - "penCoordinatorName": "Emmi Le Clercq", - "penCoordinatorEmail": "elep@dedecms.com", - "penCoordinatorFax": "100-726-4748", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 274, - "schoolNumber": 78454, - "penCoordinatorName": "Alonso Hunt", - "penCoordinatorEmail": "ahuntq@latimes.com", - "penCoordinatorFax": "142-419-3358", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 803, - "schoolNumber": 79943, - "penCoordinatorName": "Dario Figura", - "penCoordinatorEmail": "dfigurar@springer.com", - "penCoordinatorFax": "675-911-4131", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 158, - "schoolNumber": 13262, - "penCoordinatorName": "Cornelius Royall", - "penCoordinatorEmail": "croyalls@java.com", - "penCoordinatorFax": "392-294-3907", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 642, - "schoolNumber": 93523, - "penCoordinatorName": "Richard Yurtsev", - "penCoordinatorEmail": "ryurtsevt@hp.com", - "penCoordinatorFax": "217-194-0764", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 985, - "schoolNumber": 22778, - "penCoordinatorName": "Iolande Tolomelli", - "penCoordinatorEmail": "itolomelliu@furl.net", - "penCoordinatorFax": "696-119-8088", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 656, - "schoolNumber": 20509, - "penCoordinatorName": "Parry Hyatt", - "penCoordinatorEmail": "phyattv@photobucket.com", - "penCoordinatorFax": "664-190-8522", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 551, - "schoolNumber": 31696, - "penCoordinatorName": "Annice Petersen", - "penCoordinatorEmail": "apetersenw@nyu.edu", - "penCoordinatorFax": "471-775-5214", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 596, - "schoolNumber": 31232, - "penCoordinatorName": "Bethina Rosenvasser", - "penCoordinatorEmail": "brosenvasserx@dropbox.com", - "penCoordinatorFax": "947-188-6838", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 915, - "schoolNumber": 60701, - "penCoordinatorName": "Deedee Janes", - "penCoordinatorEmail": "djanesy@economist.com", - "penCoordinatorFax": "377-953-8139", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 528, - "schoolNumber": 11133, - "penCoordinatorName": "Nanette Studders", - "penCoordinatorEmail": "nstuddersz@istockphoto.com", - "penCoordinatorFax": "102-487-7229", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 459, - "schoolNumber": 87841, - "penCoordinatorName": "Marcelline Kelloch", - "penCoordinatorEmail": "mkelloch10@ucsd.edu", - "penCoordinatorFax": "718-690-6559", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 368, - "schoolNumber": 35039, - "penCoordinatorName": "Inez Lorkins", - "penCoordinatorEmail": "ilorkins11@accuweather.com", - "penCoordinatorFax": "434-738-5652", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 983, - "schoolNumber": 35236, - "penCoordinatorName": "Leanor Di Baudi", - "penCoordinatorEmail": "ldi12@51.la", - "penCoordinatorFax": "121-165-7590", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 191, - "schoolNumber": 97913, - "penCoordinatorName": "Gayleen Brosnan", - "penCoordinatorEmail": "gbrosnan13@i2i.jp", - "penCoordinatorFax": "607-285-7840", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 156, - "schoolNumber": 11381, - "penCoordinatorName": "Shelbi Scapelhorn", - "penCoordinatorEmail": "sscapelhorn14@amazon.de", - "penCoordinatorFax": "365-206-8084", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 900, - "schoolNumber": 87621, - "penCoordinatorName": "Douglas Soppit", - "penCoordinatorEmail": "dsoppit15@de.vu", - "penCoordinatorFax": "324-125-6560", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 104, - "schoolNumber": 32642, - "penCoordinatorName": "Travus Baalham", - "penCoordinatorEmail": "tbaalham16@woothemes.com", - "penCoordinatorFax": "381-871-0345", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 876, - "schoolNumber": 59025, - "penCoordinatorName": "Zacharias Iacovucci", - "penCoordinatorEmail": "ziacovucci17@biblegateway.com", - "penCoordinatorFax": "980-154-6254", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 451, - "schoolNumber": 95037, - "penCoordinatorName": "Hephzibah Grimoldby", - "penCoordinatorEmail": "hgrimoldby18@wp.com", - "penCoordinatorFax": "456-393-4988", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 951, - "schoolNumber": 50723, - "penCoordinatorName": "Gonzales McLarnon", - "penCoordinatorEmail": "gmclarnon19@tripod.com", - "penCoordinatorFax": "820-614-2474", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 358, - "schoolNumber": 41188, - "penCoordinatorName": "Haywood Cudd", - "penCoordinatorEmail": "hcudd1a@kickstarter.com", - "penCoordinatorFax": "123-474-7573", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 555, - "schoolNumber": 86546, - "penCoordinatorName": "Ardeen Mullarkey", - "penCoordinatorEmail": "amullarkey1b@bigcartel.com", - "penCoordinatorFax": "359-218-8718", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 521, - "schoolNumber": 56267, - "penCoordinatorName": "Hunter Hovenden", - "penCoordinatorEmail": "hhovenden1c@myspace.com", - "penCoordinatorFax": "179-650-9396", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 307, - "schoolNumber": 76168, - "penCoordinatorName": "Bernadette Cuckson", - "penCoordinatorEmail": "bcuckson1d@ameblo.jp", - "penCoordinatorFax": "358-781-2579", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 458, - "schoolNumber": 57877, - "penCoordinatorName": "Corina Randales", - "penCoordinatorEmail": "crandales1e@vkontakte.ru", - "penCoordinatorFax": "805-973-7639", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 710, - "schoolNumber": 13607, - "penCoordinatorName": "Tessa Snasdell", - "penCoordinatorEmail": "tsnasdell1f@blogtalkradio.com", - "penCoordinatorFax": "461-414-3659", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 734, - "schoolNumber": 13793, - "penCoordinatorName": "Bernadette Olek", - "penCoordinatorEmail": "bolek1g@china.com.cn", - "penCoordinatorFax": "735-335-8283", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 139, - "schoolNumber": 85681, - "penCoordinatorName": "Hazel MacMaster", - "penCoordinatorEmail": "hmacmaster1h@baidu.com", - "penCoordinatorFax": "853-983-7283", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 427, - "schoolNumber": 46137, - "penCoordinatorName": "Maxie Kidby", - "penCoordinatorEmail": "mkidby1i@hugedomains.com", - "penCoordinatorFax": "435-140-8420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 898, - "schoolNumber": 43530, - "penCoordinatorName": "Celestia Muslim", - "penCoordinatorEmail": "cmuslim1j@constantcontact.com", - "penCoordinatorFax": "432-544-6887", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 691, - "schoolNumber": 33167, - "penCoordinatorName": "Archibold Poacher", - "penCoordinatorEmail": "apoacher1k@census.gov", - "penCoordinatorFax": "434-832-1419", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 742, - "schoolNumber": 32961, - "penCoordinatorName": "Anselm Bohlens", - "penCoordinatorEmail": "abohlens1l@msn.com", - "penCoordinatorFax": "412-489-5514", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 298, - "schoolNumber": 11367, - "penCoordinatorName": "Tori Mogra", - "penCoordinatorEmail": "tmogra1m@amazonaws.com", - "penCoordinatorFax": "646-309-8377", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 279, - "schoolNumber": 30934, - "penCoordinatorName": "Roosevelt Blaxton", - "penCoordinatorEmail": "rblaxton1n@phpbb.com", - "penCoordinatorFax": "511-303-9243", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 949, - "schoolNumber": 50790, - "penCoordinatorName": "Ulberto Rangell", - "penCoordinatorEmail": "urangell1o@dyndns.org", - "penCoordinatorFax": "964-915-7532", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 424, - "schoolNumber": 71007, - "penCoordinatorName": "Joletta Ivashechkin", - "penCoordinatorEmail": "jivashechkin1p@goodreads.com", - "penCoordinatorFax": "313-744-1741", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 795, - "schoolNumber": 62606, - "penCoordinatorName": "Ashia Renyard", - "penCoordinatorEmail": "arenyard1q@issuu.com", - "penCoordinatorFax": "845-531-6671", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 714, - "schoolNumber": 57364, - "penCoordinatorName": "Nanny Ranvoise", - "penCoordinatorEmail": "nranvoise1r@umich.edu", - "penCoordinatorFax": "711-458-6460", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 835, - "schoolNumber": 63723, - "penCoordinatorName": "Hamid Aron", - "penCoordinatorEmail": "haron1s@nps.gov", - "penCoordinatorFax": "182-156-8386", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 377, - "schoolNumber": 37354, - "penCoordinatorName": "Myrilla Laird-Craig", - "penCoordinatorEmail": "mlairdcraig1t@cdbaby.com", - "penCoordinatorFax": "205-145-1603", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 141, - "schoolNumber": 75623, - "penCoordinatorName": "Cordey Molyneux", - "penCoordinatorEmail": "cmolyneux1u@desdev.cn", - "penCoordinatorFax": "236-953-2552", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 746, - "schoolNumber": 75670, - "penCoordinatorName": "Imelda Bremmer", - "penCoordinatorEmail": "ibremmer1v@china.com.cn", - "penCoordinatorFax": "707-743-0206", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 448, - "schoolNumber": 91299, - "penCoordinatorName": "Buddie Jull", - "penCoordinatorEmail": "bjull1w@reference.com", - "penCoordinatorFax": "727-308-1335", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 939, - "schoolNumber": 36812, - "penCoordinatorName": "Myrvyn Seale", - "penCoordinatorEmail": "mseale1x@tinypic.com", - "penCoordinatorFax": "241-682-7899", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 900, - "schoolNumber": 97781, - "penCoordinatorName": "Riley Pasterfield", - "penCoordinatorEmail": "rpasterfield1y@pen.io", - "penCoordinatorFax": "172-834-6879", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 549, - "schoolNumber": 51739, - "penCoordinatorName": "Calida Eykelhof", - "penCoordinatorEmail": "ceykelhof1z@hexun.com", - "penCoordinatorFax": "604-784-7520", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 206, - "schoolNumber": 43772, - "penCoordinatorName": "Caresse Bende", - "penCoordinatorEmail": "cbende20@usa.gov", - "penCoordinatorFax": "678-423-8848", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 815, - "schoolNumber": 38074, - "penCoordinatorName": "Francoise Stable", - "penCoordinatorEmail": "fstable21@wiley.com", - "penCoordinatorFax": "622-521-5728", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 705, - "schoolNumber": 74482, - "penCoordinatorName": "Beatrice Gorham", - "penCoordinatorEmail": "bgorham22@sun.com", - "penCoordinatorFax": "338-861-7378", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 722, - "schoolNumber": 82532, - "penCoordinatorName": "Lib Swede", - "penCoordinatorEmail": "lswede23@homestead.com", - "penCoordinatorFax": "853-355-5375", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 699, - "schoolNumber": 24091, - "penCoordinatorName": "Husain Trowel", - "penCoordinatorEmail": "htrowel24@bloomberg.com", - "penCoordinatorFax": "777-985-2300", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 976, - "schoolNumber": 21452, - "penCoordinatorName": "Titos Dancy", - "penCoordinatorEmail": "tdancy25@sitemeter.com", - "penCoordinatorFax": "657-377-8675", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 541, - "schoolNumber": 86859, - "penCoordinatorName": "Jorry Stables", - "penCoordinatorEmail": "jstables26@state.gov", - "penCoordinatorFax": "941-105-5805", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 846, - "schoolNumber": 62949, - "penCoordinatorName": "Abra Byard", - "penCoordinatorEmail": "abyard27@cornell.edu", - "penCoordinatorFax": "318-436-2264", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 510, - "schoolNumber": 68637, - "penCoordinatorName": "Sylas Mussettini", - "penCoordinatorEmail": "smussettini28@cisco.com", - "penCoordinatorFax": "913-558-5513", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 303, - "schoolNumber": 80544, - "penCoordinatorName": "Thaxter Melmore", - "penCoordinatorEmail": "tmelmore29@webmd.com", - "penCoordinatorFax": "162-469-6213", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 835, - "schoolNumber": 39357, - "penCoordinatorName": "Alli Trelease", - "penCoordinatorEmail": "atrelease2a@ning.com", - "penCoordinatorFax": "256-721-9475", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 582, - "schoolNumber": 63295, - "penCoordinatorName": "Bink Stuckey", - "penCoordinatorEmail": "bstuckey2b@i2i.jp", - "penCoordinatorFax": "685-496-5958", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 756, - "schoolNumber": 86417, - "penCoordinatorName": "Kellie Boom", - "penCoordinatorEmail": "kboom2c@parallels.com", - "penCoordinatorFax": "931-240-0550", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 308, - "schoolNumber": 33131, - "penCoordinatorName": "Teressa Knock", - "penCoordinatorEmail": "tknock2d@time.com", - "penCoordinatorFax": "204-827-0117", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 504, - "schoolNumber": 88845, - "penCoordinatorName": "Eleanor Domnin", - "penCoordinatorEmail": "edomnin2e@homestead.com", - "penCoordinatorFax": "736-316-5474", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 993, - "schoolNumber": 90014, - "penCoordinatorName": "Jimmy Jacqueminot", - "penCoordinatorEmail": "jjacqueminot2f@bbb.org", - "penCoordinatorFax": "186-794-9244", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 900, - "schoolNumber": 39261, - "penCoordinatorName": "Rustin Vakhonin", - "penCoordinatorEmail": "rvakhonin2g@illinois.edu", - "penCoordinatorFax": "515-694-9884", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 914, - "schoolNumber": 72424, - "penCoordinatorName": "Den Fluin", - "penCoordinatorEmail": "dfluin2h@usnews.com", - "penCoordinatorFax": "278-244-5355", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 191, - "schoolNumber": 21212, - "penCoordinatorName": "Hannis Cockle", - "penCoordinatorEmail": "hcockle2i@sciencedirect.com", - "penCoordinatorFax": "156-983-6737", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 553, - "schoolNumber": 42997, - "penCoordinatorName": "Emile Cornelleau", - "penCoordinatorEmail": "ecornelleau2j@booking.com", - "penCoordinatorFax": "628-237-3609", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 803, - "schoolNumber": 23297, - "penCoordinatorName": "Catlee Kyndred", - "penCoordinatorEmail": "ckyndred2k@acquirethisname.com", - "penCoordinatorFax": "408-344-6976", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 396, - "schoolNumber": 78113, - "penCoordinatorName": "Gearard Mollitt", - "penCoordinatorEmail": "gmollitt2l@gizmodo.com", - "penCoordinatorFax": "290-351-4187", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 144, - "schoolNumber": 13008, - "penCoordinatorName": "Bessie McBratney", - "penCoordinatorEmail": "bmcbratney2m@sbwire.com", - "penCoordinatorFax": "987-182-6479", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 128, - "schoolNumber": 79140, - "penCoordinatorName": "Idalina Doak", - "penCoordinatorEmail": "idoak2n@artisteer.com", - "penCoordinatorFax": "458-511-4512", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 994, - "schoolNumber": 20591, - "penCoordinatorName": "Yulma Duly", - "penCoordinatorEmail": "yduly2o@list-manage.com", - "penCoordinatorFax": "759-456-5766", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 939, - "schoolNumber": 99914, - "penCoordinatorName": "Eugenius Rooney", - "penCoordinatorEmail": "erooney2p@yolasite.com", - "penCoordinatorFax": "185-590-7385", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 496, - "schoolNumber": 65122, - "penCoordinatorName": "Leicester Lodin", - "penCoordinatorEmail": "llodin2q@wordpress.org", - "penCoordinatorFax": "292-441-4456", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 658, - "schoolNumber": 52550, - "penCoordinatorName": "Eve Stidworthy", - "penCoordinatorEmail": "estidworthy2r@digg.com", - "penCoordinatorFax": "555-217-9987", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 520, - "schoolNumber": 68385, - "penCoordinatorName": "Jo Vigus", - "penCoordinatorEmail": "jvigus2s@free.fr", - "penCoordinatorFax": "179-852-0213", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 758, - "schoolNumber": 95175, - "penCoordinatorName": "Harmonia Gatheridge", - "penCoordinatorEmail": "hgatheridge2t@friendfeed.com", - "penCoordinatorFax": "157-613-1849", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 617, - "schoolNumber": 46780, - "penCoordinatorName": "Raddie Bayley", - "penCoordinatorEmail": "rbayley2u@abc.net.au", - "penCoordinatorFax": "846-147-7096", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 408, - "schoolNumber": 83061, - "penCoordinatorName": "Lauren De Rechter", - "penCoordinatorEmail": "lde2v@simplemachines.org", - "penCoordinatorFax": "863-404-8857", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 278, - "schoolNumber": 66632, - "penCoordinatorName": "Montague Burwell", - "penCoordinatorEmail": "mburwell2w@ucsd.edu", - "penCoordinatorFax": "733-570-0689", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 868, - "schoolNumber": 16410, - "penCoordinatorName": "Gage Aylwin", - "penCoordinatorEmail": "gaylwin2x@businessinsider.com", - "penCoordinatorFax": "662-238-8182", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 959, - "schoolNumber": 84187, - "penCoordinatorName": "Yehudi Beckitt", - "penCoordinatorEmail": "ybeckitt2y@amazon.com", - "penCoordinatorFax": "997-953-3227", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 448, - "schoolNumber": 98002, - "penCoordinatorName": "Rikki Gravey", - "penCoordinatorEmail": "rgravey2z@nih.gov", - "penCoordinatorFax": "686-658-0516", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 726, - "schoolNumber": 37007, - "penCoordinatorName": "Sioux Semarke", - "penCoordinatorEmail": "ssemarke30@hubpages.com", - "penCoordinatorFax": "140-178-5276", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 748, - "schoolNumber": 13644, - "penCoordinatorName": "Caresse O'Brien", - "penCoordinatorEmail": "cobrien31@quantcast.com", - "penCoordinatorFax": "571-239-8991", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 339, - "schoolNumber": 12496, - "penCoordinatorName": "Junina Coppock.", - "penCoordinatorEmail": "jcoppock32@cdbaby.com", - "penCoordinatorFax": "290-382-3038", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 780, - "schoolNumber": 76954, - "penCoordinatorName": "Ed McLese", - "penCoordinatorEmail": "emclese33@unicef.org", - "penCoordinatorFax": "416-805-3840", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 841, - "schoolNumber": 99915, - "penCoordinatorName": "Rodolph Lavelle", - "penCoordinatorEmail": "rlavelle34@w3.org", - "penCoordinatorFax": "333-257-4838", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 200, - "schoolNumber": 91842, - "penCoordinatorName": "Inglebert Stearn", - "penCoordinatorEmail": "istearn35@so-net.ne.jp", - "penCoordinatorFax": "630-348-1020", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 910, - "schoolNumber": 67621, - "penCoordinatorName": "Shayne Clementucci", - "penCoordinatorEmail": "sclementucci36@latimes.com", - "penCoordinatorFax": "182-812-8965", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 706, - "schoolNumber": 42343, - "penCoordinatorName": "Esta Forsbey", - "penCoordinatorEmail": "eforsbey37@livejournal.com", - "penCoordinatorFax": "548-233-1619", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 922, - "schoolNumber": 49036, - "penCoordinatorName": "Lori McQuirter", - "penCoordinatorEmail": "lmcquirter38@imdb.com", - "penCoordinatorFax": "670-790-6485", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 461, - "schoolNumber": 46986, - "penCoordinatorName": "Cherlyn Girth", - "penCoordinatorEmail": "cgirth39@whitehouse.gov", - "penCoordinatorFax": "828-600-8185", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 855, - "schoolNumber": 74007, - "penCoordinatorName": "Griselda Gemson", - "penCoordinatorEmail": "ggemson3a@house.gov", - "penCoordinatorFax": "107-955-9227", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 657, - "schoolNumber": 62565, - "penCoordinatorName": "Isidore Brearty", - "penCoordinatorEmail": "ibrearty3b@photobucket.com", - "penCoordinatorFax": "362-218-6214", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 427, - "schoolNumber": 44053, - "penCoordinatorName": "Meara Hulbert", - "penCoordinatorEmail": "mhulbert3c@uiuc.edu", - "penCoordinatorFax": "162-302-2387", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 947, - "schoolNumber": 99021, - "penCoordinatorName": "Charlotta Glanester", - "penCoordinatorEmail": "cglanester3d@wired.com", - "penCoordinatorFax": "283-942-9940", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 963, - "schoolNumber": 12730, - "penCoordinatorName": "Diane-marie Twitching", - "penCoordinatorEmail": "dtwitching3e@cdbaby.com", - "penCoordinatorFax": "971-183-9843", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 678, - "schoolNumber": 90565, - "penCoordinatorName": "Bernadine Scopes", - "penCoordinatorEmail": "bscopes3f@csmonitor.com", - "penCoordinatorFax": "518-301-6512", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 546, - "schoolNumber": 69319, - "penCoordinatorName": "Anita Wakelin", - "penCoordinatorEmail": "awakelin3g@hatena.ne.jp", - "penCoordinatorFax": "113-425-1476", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 544, - "schoolNumber": 78770, - "penCoordinatorName": "Mandy Brodeau", - "penCoordinatorEmail": "mbrodeau3h@amazonaws.com", - "penCoordinatorFax": "250-660-5331", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 787, - "schoolNumber": 79443, - "penCoordinatorName": "Carolyn Goodacre", - "penCoordinatorEmail": "cgoodacre3i@sina.com.cn", - "penCoordinatorFax": "570-964-0674", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 619, - "schoolNumber": 16502, - "penCoordinatorName": "Atalanta Fleischmann", - "penCoordinatorEmail": "afleischmann3j@npr.org", - "penCoordinatorFax": "264-250-7989", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 480, - "schoolNumber": 99550, - "penCoordinatorName": "Thelma Blackleech", - "penCoordinatorEmail": "tblackleech3k@sitemeter.com", - "penCoordinatorFax": "419-436-0689", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 244, - "schoolNumber": 12711, - "penCoordinatorName": "Jesselyn Gatman", - "penCoordinatorEmail": "jgatman3l@networksolutions.com", - "penCoordinatorFax": "801-258-3717", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 190, - "schoolNumber": 96081, - "penCoordinatorName": "Faber Durie", - "penCoordinatorEmail": "fdurie3m@arizona.edu", - "penCoordinatorFax": "257-322-5699", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 794, - "schoolNumber": 41336, - "penCoordinatorName": "Tynan Barkworth", - "penCoordinatorEmail": "tbarkworth3n@dagondesign.com", - "penCoordinatorFax": "738-661-5549", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 264, - "schoolNumber": 83475, - "penCoordinatorName": "Gregorio Fagge", - "penCoordinatorEmail": "gfagge3o@qq.com", - "penCoordinatorFax": "353-242-8200", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 352, - "schoolNumber": 19503, - "penCoordinatorName": "Marietta Pavia", - "penCoordinatorEmail": "mpavia3p@friendfeed.com", - "penCoordinatorFax": "921-195-4104", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 889, - "schoolNumber": 97914, - "penCoordinatorName": "Gaynor Lumly", - "penCoordinatorEmail": "glumly3q@indiatimes.com", - "penCoordinatorFax": "968-499-5907", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 209, - "schoolNumber": 30040, - "penCoordinatorName": "Tallie Faucherand", - "penCoordinatorEmail": "tfaucherand3r@printfriendly.com", - "penCoordinatorFax": "159-103-8287", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 132, - "schoolNumber": 65056, - "penCoordinatorName": "Maybelle Conningham", - "penCoordinatorEmail": "mconningham3s@samsung.com", - "penCoordinatorFax": "378-281-0757", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 252, - "schoolNumber": 90299, - "penCoordinatorName": "Hendrik Castaner", - "penCoordinatorEmail": "hcastaner3t@walmart.com", - "penCoordinatorFax": "449-905-7985", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 704, - "schoolNumber": 67164, - "penCoordinatorName": "Leah Schukert", - "penCoordinatorEmail": "lschukert3u@dailymotion.com", - "penCoordinatorFax": "650-184-7046", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 378, - "schoolNumber": 34369, - "penCoordinatorName": "Luigi Kohrt", - "penCoordinatorEmail": "lkohrt3v@slate.com", - "penCoordinatorFax": "844-210-6934", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 781, - "schoolNumber": 44906, - "penCoordinatorName": "Catharina Abba", - "penCoordinatorEmail": "cabba3w@addthis.com", - "penCoordinatorFax": "701-518-1351", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 678, - "schoolNumber": 13686, - "penCoordinatorName": "Pavlov Dutt", - "penCoordinatorEmail": "pdutt3x@squarespace.com", - "penCoordinatorFax": "527-895-8465", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 107, - "schoolNumber": 44054, - "penCoordinatorName": "Sandra Clixby", - "penCoordinatorEmail": "sclixby3y@dyndns.org", - "penCoordinatorFax": "858-514-0186", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 374, - "schoolNumber": 92126, - "penCoordinatorName": "Candace Asplin", - "penCoordinatorEmail": "casplin3z@mail.ru", - "penCoordinatorFax": "289-828-8387", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 318, - "schoolNumber": 40425, - "penCoordinatorName": "Aubree Skyme", - "penCoordinatorEmail": "askyme40@squarespace.com", - "penCoordinatorFax": "989-673-6464", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 425, - "schoolNumber": 33225, - "penCoordinatorName": "Ephrayim Mithan", - "penCoordinatorEmail": "emithan41@google.cn", - "penCoordinatorFax": "122-375-6067", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 272, - "schoolNumber": 11767, - "penCoordinatorName": "Wain Brunning", - "penCoordinatorEmail": "wbrunning42@sciencedaily.com", - "penCoordinatorFax": "172-592-6021", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 550, - "schoolNumber": 19617, - "penCoordinatorName": "Lincoln Urwen", - "penCoordinatorEmail": "lurwen43@naver.com", - "penCoordinatorFax": "549-284-6741", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 992, - "schoolNumber": 39767, - "penCoordinatorName": "Lenna Lomasney", - "penCoordinatorEmail": "llomasney44@yelp.com", - "penCoordinatorFax": "666-345-0654", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 563, - "schoolNumber": 81643, - "penCoordinatorName": "Margit Briars", - "penCoordinatorEmail": "mbriars45@mapy.cz", - "penCoordinatorFax": "324-462-2764", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 982, - "schoolNumber": 28341, - "penCoordinatorName": "Marina Maestrini", - "penCoordinatorEmail": "mmaestrini46@mail.ru", - "penCoordinatorFax": "439-711-2972", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 603, - "schoolNumber": 75062, - "penCoordinatorName": "Milka Matuszynski", - "penCoordinatorEmail": "mmatuszynski47@goo.ne.jp", - "penCoordinatorFax": "702-130-6237", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 856, - "schoolNumber": 46852, - "penCoordinatorName": "Janeczka Lorenzo", - "penCoordinatorEmail": "jlorenzo48@altervista.org", - "penCoordinatorFax": "989-137-2231", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 931, - "schoolNumber": 64742, - "penCoordinatorName": "Siward Stogill", - "penCoordinatorEmail": "sstogill49@virginia.edu", - "penCoordinatorFax": "936-219-1931", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 569, - "schoolNumber": 14853, - "penCoordinatorName": "Trent Vaar", - "penCoordinatorEmail": "tvaar4a@about.me", - "penCoordinatorFax": "589-942-2274", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 429, - "schoolNumber": 29933, - "penCoordinatorName": "Alard Jeal", - "penCoordinatorEmail": "ajeal4b@yahoo.com", - "penCoordinatorFax": "399-615-5067", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 643, - "schoolNumber": 24904, - "penCoordinatorName": "Pippo Edgeworth", - "penCoordinatorEmail": "pedgeworth4c@theguardian.com", - "penCoordinatorFax": "733-851-7519", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 852, - "schoolNumber": 93641, - "penCoordinatorName": "Roze Frantzeni", - "penCoordinatorEmail": "rfrantzeni4d@elpais.com", - "penCoordinatorFax": "165-132-1667", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 276, - "schoolNumber": 87484, - "penCoordinatorName": "Vaughn Champney", - "penCoordinatorEmail": "vchampney4e@wikispaces.com", - "penCoordinatorFax": "717-642-3773", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 154, - "schoolNumber": 95882, - "penCoordinatorName": "Gipsy Parham", - "penCoordinatorEmail": "gparham4f@dmoz.org", - "penCoordinatorFax": "850-228-8695", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 393, - "schoolNumber": 95069, - "penCoordinatorName": "Jeni Jubert", - "penCoordinatorEmail": "jjubert4g@dmoz.org", - "penCoordinatorFax": "630-603-6211", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 761, - "schoolNumber": 94257, - "penCoordinatorName": "Rose Stirland", - "penCoordinatorEmail": "rstirland4h@liveinternet.ru", - "penCoordinatorFax": "827-159-0178", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 239, - "schoolNumber": 12491, - "penCoordinatorName": "Jacob Bingell", - "penCoordinatorEmail": "jbingell4i@ask.com", - "penCoordinatorFax": "382-827-1440", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 708, - "schoolNumber": 63301, - "penCoordinatorName": "Montague Cobelli", - "penCoordinatorEmail": "mcobelli4j@hibu.com", - "penCoordinatorFax": "944-195-0371", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 278, - "schoolNumber": 59525, - "penCoordinatorName": "Sawyer Breens", - "penCoordinatorEmail": "sbreens4k@slate.com", - "penCoordinatorFax": "630-931-4951", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 627, - "schoolNumber": 49398, - "penCoordinatorName": "Aileen Brooker", - "penCoordinatorEmail": "abrooker4l@apache.org", - "penCoordinatorFax": "277-917-4118", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 327, - "schoolNumber": 60037, - "penCoordinatorName": "Ferris Lindley", - "penCoordinatorEmail": "flindley4m@theguardian.com", - "penCoordinatorFax": "590-486-5249", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 401, - "schoolNumber": 75588, - "penCoordinatorName": "Reeva Greve", - "penCoordinatorEmail": "rgreve4n@wisc.edu", - "penCoordinatorFax": "835-505-6975", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 180, - "schoolNumber": 83970, - "penCoordinatorName": "Jerry Trangmar", - "penCoordinatorEmail": "jtrangmar4o@time.com", - "penCoordinatorFax": "769-350-8434", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 875, - "schoolNumber": 88776, - "penCoordinatorName": "Barbara-anne Martinie", - "penCoordinatorEmail": "bmartinie4p@webeden.co.uk", - "penCoordinatorFax": "323-946-8161", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 401, - "schoolNumber": 67772, - "penCoordinatorName": "Idelle O'Noland", - "penCoordinatorEmail": "ionoland4q@jimdo.com", - "penCoordinatorFax": "277-592-6408", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 285, - "schoolNumber": 95934, - "penCoordinatorName": "Margery Durber", - "penCoordinatorEmail": "mdurber4r@reference.com", - "penCoordinatorFax": "841-583-7140", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 882, - "schoolNumber": 40056, - "penCoordinatorName": "Ofelia Lonnon", - "penCoordinatorEmail": "olonnon4s@squarespace.com", - "penCoordinatorFax": "646-311-6351", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 137, - "schoolNumber": 36494, - "penCoordinatorName": "Ranee Drissell", - "penCoordinatorEmail": "rdrissell4t@multiply.com", - "penCoordinatorFax": "808-652-3245", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 486, - "schoolNumber": 26585, - "penCoordinatorName": "Nikolas Fridaye", - "penCoordinatorEmail": "nfridaye4u@hexun.com", - "penCoordinatorFax": "263-592-7391", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 706, - "schoolNumber": 26569, - "penCoordinatorName": "Constantia Laddle", - "penCoordinatorEmail": "claddle4v@whitehouse.gov", - "penCoordinatorFax": "213-962-0064", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 926, - "schoolNumber": 97013, - "penCoordinatorName": "Eward Palfery", - "penCoordinatorEmail": "epalfery4w@webnode.com", - "penCoordinatorFax": "976-832-7007", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 749, - "schoolNumber": 92997, - "penCoordinatorName": "Morgun Paviour", - "penCoordinatorEmail": "mpaviour4x@discuz.net", - "penCoordinatorFax": "701-777-2546", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 617, - "schoolNumber": 18236, - "penCoordinatorName": "Lorelle Revey", - "penCoordinatorEmail": "lrevey4y@hostgator.com", - "penCoordinatorFax": "886-516-0465", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 845, - "schoolNumber": 63177, - "penCoordinatorName": "Cassandry Thorndycraft", - "penCoordinatorEmail": "cthorndycraft4z@cbc.ca", - "penCoordinatorFax": "239-467-0750", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 159, - "schoolNumber": 50830, - "penCoordinatorName": "Chaddie Swinburne", - "penCoordinatorEmail": "cswinburne50@elegantthemes.com", - "penCoordinatorFax": "805-537-2231", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 329, - "schoolNumber": 36197, - "penCoordinatorName": "Alfreda Kibard", - "penCoordinatorEmail": "akibard51@guardian.co.uk", - "penCoordinatorFax": "887-801-8654", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 221, - "schoolNumber": 45611, - "penCoordinatorName": "Ame MacMenemy", - "penCoordinatorEmail": "amacmenemy52@tamu.edu", - "penCoordinatorFax": "242-682-0188", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 426, - "schoolNumber": 24997, - "penCoordinatorName": "Deane Skerme", - "penCoordinatorEmail": "dskerme53@omniture.com", - "penCoordinatorFax": "444-224-7295", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 546, - "schoolNumber": 66018, - "penCoordinatorName": "Harriot Duckett", - "penCoordinatorEmail": "hduckett54@istockphoto.com", - "penCoordinatorFax": "908-755-6102", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 337, - "schoolNumber": 43880, - "penCoordinatorName": "Marlo Lippatt", - "penCoordinatorEmail": "mlippatt55@economist.com", - "penCoordinatorFax": "295-353-1644", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 492, - "schoolNumber": 70048, - "penCoordinatorName": "Theressa Extall", - "penCoordinatorEmail": "textall56@imdb.com", - "penCoordinatorFax": "749-743-3473", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 758, - "schoolNumber": 71442, - "penCoordinatorName": "Danielle Cator", - "penCoordinatorEmail": "dcator57@blogspot.com", - "penCoordinatorFax": "250-497-5745", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 412, - "schoolNumber": 36544, - "penCoordinatorName": "Frederic Cullinan", - "penCoordinatorEmail": "fcullinan58@naver.com", - "penCoordinatorFax": "908-980-3184", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 721, - "schoolNumber": 95771, - "penCoordinatorName": "Elijah Serridge", - "penCoordinatorEmail": "eserridge59@infoseek.co.jp", - "penCoordinatorFax": "365-993-1313", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 679, - "schoolNumber": 56824, - "penCoordinatorName": "Ibby Penreth", - "penCoordinatorEmail": "ipenreth5a@businessinsider.com", - "penCoordinatorFax": "344-214-7276", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 741, - "schoolNumber": 96613, - "penCoordinatorName": "Amabelle Kopps", - "penCoordinatorEmail": "akopps5b@macromedia.com", - "penCoordinatorFax": "627-152-3220", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 671, - "schoolNumber": 35027, - "penCoordinatorName": "Shell Jiracek", - "penCoordinatorEmail": "sjiracek5c@ezinearticles.com", - "penCoordinatorFax": "260-796-6876", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 547, - "schoolNumber": 24750, - "penCoordinatorName": "Arabelle Charpling", - "penCoordinatorEmail": "acharpling5d@pagesperso-orange.fr", - "penCoordinatorFax": "676-163-6495", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 520, - "schoolNumber": 50750, - "penCoordinatorName": "Tore Philcott", - "penCoordinatorEmail": "tphilcott5e@t.co", - "penCoordinatorFax": "999-455-1795", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 331, - "schoolNumber": 66970, - "penCoordinatorName": "Gusta Dunsire", - "penCoordinatorEmail": "gdunsire5f@moonfruit.com", - "penCoordinatorFax": "199-293-0369", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 278, - "schoolNumber": 58770, - "penCoordinatorName": "Row Fullerton", - "penCoordinatorEmail": "rfullerton5g@1und1.de", - "penCoordinatorFax": "547-798-5680", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 739, - "schoolNumber": 92277, - "penCoordinatorName": "Krispin Durnford", - "penCoordinatorEmail": "kdurnford5h@cornell.edu", - "penCoordinatorFax": "950-546-6683", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 554, - "schoolNumber": 41802, - "penCoordinatorName": "Esmeralda Garrick", - "penCoordinatorEmail": "egarrick5i@list-manage.com", - "penCoordinatorFax": "805-612-5214", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 152, - "schoolNumber": 44267, - "penCoordinatorName": "Fidel Cromwell", - "penCoordinatorEmail": "fcromwell5j@wikia.com", - "penCoordinatorFax": "475-305-3129", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 131, - "schoolNumber": 97074, - "penCoordinatorName": "Melisse Armour", - "penCoordinatorEmail": "marmour5k@acquirethisname.com", - "penCoordinatorFax": "764-583-2603", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 457, - "schoolNumber": 75245, - "penCoordinatorName": "Demetri Nurcombe", - "penCoordinatorEmail": "dnurcombe5l@canalblog.com", - "penCoordinatorFax": "589-445-4122", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 431, - "schoolNumber": 57931, - "penCoordinatorName": "Tiff Erricker", - "penCoordinatorEmail": "terricker5m@ask.com", - "penCoordinatorFax": "766-443-8955", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 450, - "schoolNumber": 84882, - "penCoordinatorName": "Cleavland Iozefovich", - "penCoordinatorEmail": "ciozefovich5n@intel.com", - "penCoordinatorFax": "472-976-7549", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 109, - "schoolNumber": 71146, - "penCoordinatorName": "Raddy Kittley", - "penCoordinatorEmail": "rkittley5o@patch.com", - "penCoordinatorFax": "603-910-2162", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 242, - "schoolNumber": 56126, - "penCoordinatorName": "Ingmar Emms", - "penCoordinatorEmail": "iemms5p@histats.com", - "penCoordinatorFax": "414-280-0153", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 955, - "schoolNumber": 45681, - "penCoordinatorName": "Juanita Tybalt", - "penCoordinatorEmail": "jtybalt5q@webmd.com", - "penCoordinatorFax": "733-473-1197", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 604, - "schoolNumber": 84590, - "penCoordinatorName": "Walden Rasch", - "penCoordinatorEmail": "wrasch5r@elegantthemes.com", - "penCoordinatorFax": "766-358-3521", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 755, - "schoolNumber": 16975, - "penCoordinatorName": "Giovanna Dockerty", - "penCoordinatorEmail": "gdockerty5s@pagesperso-orange.fr", - "penCoordinatorFax": "603-630-6682", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 286, - "schoolNumber": 29498, - "penCoordinatorName": "Damian Danev", - "penCoordinatorEmail": "ddanev5t@shop-pro.jp", - "penCoordinatorFax": "807-837-0041", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 297, - "schoolNumber": 10982, - "penCoordinatorName": "Griffith Swynley", - "penCoordinatorEmail": "gswynley5u@xrea.com", - "penCoordinatorFax": "925-402-6758", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 531, - "schoolNumber": 73230, - "penCoordinatorName": "Fayette Leap", - "penCoordinatorEmail": "fleap5v@fda.gov", - "penCoordinatorFax": "209-562-7244", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 522, - "schoolNumber": 95521, - "penCoordinatorName": "Ruprecht Penbarthy", - "penCoordinatorEmail": "rpenbarthy5w@purevolume.com", - "penCoordinatorFax": "612-138-7705", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 400, - "schoolNumber": 22566, - "penCoordinatorName": "Haskel Bartels", - "penCoordinatorEmail": "hbartels5x@nbcnews.com", - "penCoordinatorFax": "957-263-6090", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 696, - "schoolNumber": 99641, - "penCoordinatorName": "Locke Samsworth", - "penCoordinatorEmail": "lsamsworth5y@examiner.com", - "penCoordinatorFax": "707-183-1829", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 397, - "schoolNumber": 76973, - "penCoordinatorName": "Shaylynn Legon", - "penCoordinatorEmail": "slegon5z@elegantthemes.com", - "penCoordinatorFax": "801-901-9973", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 380, - "schoolNumber": 24603, - "penCoordinatorName": "Fancie Liles", - "penCoordinatorEmail": "fliles60@cbslocal.com", - "penCoordinatorFax": "855-424-7332", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 565, - "schoolNumber": 51478, - "penCoordinatorName": "Letisha MacGow", - "penCoordinatorEmail": "lmacgow61@virginia.edu", - "penCoordinatorFax": "990-374-6646", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 389, - "schoolNumber": 61588, - "penCoordinatorName": "Ingemar Schimke", - "penCoordinatorEmail": "ischimke62@feedburner.com", - "penCoordinatorFax": "710-770-5096", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 143, - "schoolNumber": 36272, - "penCoordinatorName": "Amble Hathaway", - "penCoordinatorEmail": "ahathaway63@bloglines.com", - "penCoordinatorFax": "632-256-6860", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 354, - "schoolNumber": 56703, - "penCoordinatorName": "Galvan MacCaughan", - "penCoordinatorEmail": "gmaccaughan64@quantcast.com", - "penCoordinatorFax": "864-853-2118", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 912, - "schoolNumber": 54192, - "penCoordinatorName": "Marysa Jennins", - "penCoordinatorEmail": "mjennins65@blogger.com", - "penCoordinatorFax": "501-552-5488", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 825, - "schoolNumber": 21064, - "penCoordinatorName": "Kendricks Hek", - "penCoordinatorEmail": "khek66@baidu.com", - "penCoordinatorFax": "858-945-0267", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 732, - "schoolNumber": 73358, - "penCoordinatorName": "Bonni Shepperd", - "penCoordinatorEmail": "bshepperd67@networkadvertising.org", - "penCoordinatorFax": "900-141-7827", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 377, - "schoolNumber": 46617, - "penCoordinatorName": "Cassie Santostefano.", - "penCoordinatorEmail": "csantostefano68@shareasale.com", - "penCoordinatorFax": "321-160-4454", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 860, - "schoolNumber": 61054, - "penCoordinatorName": "Grannie Yakebovich", - "penCoordinatorEmail": "gyakebovich69@twitter.com", - "penCoordinatorFax": "443-123-8274", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 937, - "schoolNumber": 58791, - "penCoordinatorName": "Roze McClintock", - "penCoordinatorEmail": "rmcclintock6a@weebly.com", - "penCoordinatorFax": "897-958-3119", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 937, - "schoolNumber": 17373, - "penCoordinatorName": "Dermot Manzell", - "penCoordinatorEmail": "dmanzell6b@webeden.co.uk", - "penCoordinatorFax": "722-279-4091", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 654, - "schoolNumber": 25225, - "penCoordinatorName": "Melania McClary", - "penCoordinatorEmail": "mmcclary6c@themeforest.net", - "penCoordinatorFax": "475-437-4215", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 744, - "schoolNumber": 76056, - "penCoordinatorName": "Star Braghini", - "penCoordinatorEmail": "sbraghini6d@yandex.ru", - "penCoordinatorFax": "563-808-5362", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 988, - "schoolNumber": 25950, - "penCoordinatorName": "Robby Pickett", - "penCoordinatorEmail": "rpickett6e@lycos.com", - "penCoordinatorFax": "929-876-5029", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 619, - "schoolNumber": 61655, - "penCoordinatorName": "Tyson Kemme", - "penCoordinatorEmail": "tkemme6f@stanford.edu", - "penCoordinatorFax": "944-506-7431", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 865, - "schoolNumber": 40747, - "penCoordinatorName": "Orly Stickings", - "penCoordinatorEmail": "ostickings6g@ebay.co.uk", - "penCoordinatorFax": "151-626-6223", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 423, - "schoolNumber": 22211, - "penCoordinatorName": "Kat Boeck", - "penCoordinatorEmail": "kboeck6h@infoseek.co.jp", - "penCoordinatorFax": "891-922-6871", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 494, - "schoolNumber": 22778, - "penCoordinatorName": "Brynne Varley", - "penCoordinatorEmail": "bvarley6i@nih.gov", - "penCoordinatorFax": "425-461-7128", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 640, - "schoolNumber": 43800, - "penCoordinatorName": "Alli O'Curran", - "penCoordinatorEmail": "aocurran6j@feedburner.com", - "penCoordinatorFax": "112-143-1308", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 329, - "schoolNumber": 98511, - "penCoordinatorName": "Leah Goodread", - "penCoordinatorEmail": "lgoodread6k@twitpic.com", - "penCoordinatorFax": "157-594-2236", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 928, - "schoolNumber": 94234, - "penCoordinatorName": "Edin Sayle", - "penCoordinatorEmail": "esayle6l@whitehouse.gov", - "penCoordinatorFax": "951-325-3656", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 997, - "schoolNumber": 72313, - "penCoordinatorName": "Lindie Winn", - "penCoordinatorEmail": "lwinn6m@apache.org", - "penCoordinatorFax": "657-265-3117", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 579, - "schoolNumber": 17596, - "penCoordinatorName": "Diane-marie Rottcher", - "penCoordinatorEmail": "drottcher6n@hp.com", - "penCoordinatorFax": "863-107-5679", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 696, - "schoolNumber": 29024, - "penCoordinatorName": "Benjie Lantuff", - "penCoordinatorEmail": "blantuff6o@tinyurl.com", - "penCoordinatorFax": "557-427-9144", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 822, - "schoolNumber": 87322, - "penCoordinatorName": "Wyn Alleburton", - "penCoordinatorEmail": "walleburton6p@reuters.com", - "penCoordinatorFax": "267-134-8908", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 954, - "schoolNumber": 20849, - "penCoordinatorName": "Victoria Droogan", - "penCoordinatorEmail": "vdroogan6q@sphinn.com", - "penCoordinatorFax": "540-589-3979", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 822, - "schoolNumber": 19165, - "penCoordinatorName": "Rea Novacek", - "penCoordinatorEmail": "rnovacek6r@google.ca", - "penCoordinatorFax": "354-953-4829", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 144, - "schoolNumber": 75101, - "penCoordinatorName": "Wait Willsmore", - "penCoordinatorEmail": "wwillsmore6s@cnet.com", - "penCoordinatorFax": "834-707-0093", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 878, - "schoolNumber": 12204, - "penCoordinatorName": "Fields Ewdale", - "penCoordinatorEmail": "fewdale6t@harvard.edu", - "penCoordinatorFax": "268-963-0029", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 366, - "schoolNumber": 54505, - "penCoordinatorName": "Glenn Ferby", - "penCoordinatorEmail": "gferby6u@wp.com", - "penCoordinatorFax": "550-681-2249", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 370, - "schoolNumber": 34617, - "penCoordinatorName": "Bonnibelle Sherman", - "penCoordinatorEmail": "bsherman6v@ehow.com", - "penCoordinatorFax": "532-799-8044", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 826, - "schoolNumber": 33079, - "penCoordinatorName": "Lewes Tosspell", - "penCoordinatorEmail": "ltosspell6w@upenn.edu", - "penCoordinatorFax": "889-475-3719", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 483, - "schoolNumber": 93063, - "penCoordinatorName": "Amalea Rorke", - "penCoordinatorEmail": "arorke6x@plala.or.jp", - "penCoordinatorFax": "822-123-8912", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 813, - "schoolNumber": 90146, - "penCoordinatorName": "Guillema Brattan", - "penCoordinatorEmail": "gbrattan6y@nifty.com", - "penCoordinatorFax": "452-961-9420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 140, - "schoolNumber": 79264, - "penCoordinatorName": "Madelon Hawse", - "penCoordinatorEmail": "mhawse6z@berkeley.edu", - "penCoordinatorFax": "324-981-5221", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 504, - "schoolNumber": 74925, - "penCoordinatorName": "Tamara Richmont", - "penCoordinatorEmail": "trichmont70@chronoengine.com", - "penCoordinatorFax": "726-816-2810", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 543, - "schoolNumber": 96178, - "penCoordinatorName": "Buddy Cowap", - "penCoordinatorEmail": "bcowap71@wsj.com", - "penCoordinatorFax": "644-654-2143", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 946, - "schoolNumber": 14044, - "penCoordinatorName": "Gillie Neeson", - "penCoordinatorEmail": "gneeson72@miibeian.gov.cn", - "penCoordinatorFax": "901-856-1297", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 287, - "schoolNumber": 74871, - "penCoordinatorName": "Elianora Dullingham", - "penCoordinatorEmail": "edullingham73@csmonitor.com", - "penCoordinatorFax": "976-840-0835", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 939, - "schoolNumber": 41217, - "penCoordinatorName": "Kally Taaffe", - "penCoordinatorEmail": "ktaaffe74@census.gov", - "penCoordinatorFax": "801-428-5418", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 626, - "schoolNumber": 29972, - "penCoordinatorName": "Beryl Kenney", - "penCoordinatorEmail": "bkenney75@cdbaby.com", - "penCoordinatorFax": "189-124-9737", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 243, - "schoolNumber": 23661, - "penCoordinatorName": "Phil Bernhart", - "penCoordinatorEmail": "pbernhart76@sitemeter.com", - "penCoordinatorFax": "894-919-6289", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 838, - "schoolNumber": 30307, - "penCoordinatorName": "Meredith Giovani", - "penCoordinatorEmail": "mgiovani77@sbwire.com", - "penCoordinatorFax": "610-483-1827", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 401, - "schoolNumber": 29006, - "penCoordinatorName": "Danika Fazackerley", - "penCoordinatorEmail": "dfazackerley78@wordpress.com", - "penCoordinatorFax": "510-130-8166", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 364, - "schoolNumber": 34948, - "penCoordinatorName": "Debbie MacDowal", - "penCoordinatorEmail": "dmacdowal79@shop-pro.jp", - "penCoordinatorFax": "232-957-8991", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 125, - "schoolNumber": 71393, - "penCoordinatorName": "Bevin Fransson", - "penCoordinatorEmail": "bfransson7a@imgur.com", - "penCoordinatorFax": "179-202-3389", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 316, - "schoolNumber": 59009, - "penCoordinatorName": "Axe Aronstam", - "penCoordinatorEmail": "aaronstam7b@t.co", - "penCoordinatorFax": "507-541-9195", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 109, - "schoolNumber": 40124, - "penCoordinatorName": "Damita Balm", - "penCoordinatorEmail": "dbalm7c@constantcontact.com", - "penCoordinatorFax": "519-704-5980", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 910, - "schoolNumber": 83934, - "penCoordinatorName": "Maiga Abelov", - "penCoordinatorEmail": "mabelov7d@dailymail.co.uk", - "penCoordinatorFax": "186-388-5328", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 308, - "schoolNumber": 30387, - "penCoordinatorName": "Noak O'Kenny", - "penCoordinatorEmail": "nokenny7e@cbc.ca", - "penCoordinatorFax": "465-390-5689", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 938, - "schoolNumber": 67796, - "penCoordinatorName": "Scottie Spittles", - "penCoordinatorEmail": "sspittles7f@clickbank.net", - "penCoordinatorFax": "825-773-4763", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 331, - "schoolNumber": 96276, - "penCoordinatorName": "Fredra Brouncker", - "penCoordinatorEmail": "fbrouncker7g@zimbio.com", - "penCoordinatorFax": "218-406-0152", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 822, - "schoolNumber": 65446, - "penCoordinatorName": "Damian Eadmeades", - "penCoordinatorEmail": "deadmeades7h@barnesandnoble.com", - "penCoordinatorFax": "715-650-6144", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 729, - "schoolNumber": 87531, - "penCoordinatorName": "Kirsteni Culmer", - "penCoordinatorEmail": "kculmer7i@example.com", - "penCoordinatorFax": "276-430-4319", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 516, - "schoolNumber": 75549, - "penCoordinatorName": "Tuckie Kail", - "penCoordinatorEmail": "tkail7j@prlog.org", - "penCoordinatorFax": "334-580-0978", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 314, - "schoolNumber": 41069, - "penCoordinatorName": "Amalle Calbaithe", - "penCoordinatorEmail": "acalbaithe7k@blinklist.com", - "penCoordinatorFax": "674-377-0597", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 750, - "schoolNumber": 33511, - "penCoordinatorName": "Melva Calam", - "penCoordinatorEmail": "mcalam7l@stanford.edu", - "penCoordinatorFax": "311-986-8632", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 305, - "schoolNumber": 76969, - "penCoordinatorName": "Justina Weald", - "penCoordinatorEmail": "jweald7m@blogger.com", - "penCoordinatorFax": "712-934-5093", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 454, - "schoolNumber": 40315, - "penCoordinatorName": "Odelle Gwinnell", - "penCoordinatorEmail": "ogwinnell7n@imageshack.us", - "penCoordinatorFax": "232-751-3119", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 871, - "schoolNumber": 17705, - "penCoordinatorName": "Eustace Gobolos", - "penCoordinatorEmail": "egobolos7o@uiuc.edu", - "penCoordinatorFax": "188-803-0692", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 714, - "schoolNumber": 67287, - "penCoordinatorName": "Vince Bowller", - "penCoordinatorEmail": "vbowller7p@alexa.com", - "penCoordinatorFax": "336-534-3233", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 806, - "schoolNumber": 91036, - "penCoordinatorName": "Loise Romanetti", - "penCoordinatorEmail": "lromanetti7q@msu.edu", - "penCoordinatorFax": "784-731-3944", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 265, - "schoolNumber": 18175, - "penCoordinatorName": "Mireielle Arias", - "penCoordinatorEmail": "marias7r@wikia.com", - "penCoordinatorFax": "570-150-4849", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 112, - "schoolNumber": 13872, - "penCoordinatorName": "Moises Rivilis", - "penCoordinatorEmail": "mrivilis7s@slate.com", - "penCoordinatorFax": "425-980-7258", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 521, - "schoolNumber": 80700, - "penCoordinatorName": "Sarah Boch", - "penCoordinatorEmail": "sboch7t@mysql.com", - "penCoordinatorFax": "342-591-4991", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 663, - "schoolNumber": 67842, - "penCoordinatorName": "Maurice Woolager", - "penCoordinatorEmail": "mwoolager7u@nps.gov", - "penCoordinatorFax": "920-158-7020", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 223, - "schoolNumber": 10124, - "penCoordinatorName": "Sander Style", - "penCoordinatorEmail": "sstyle7v@intel.com", - "penCoordinatorFax": "832-439-7650", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 745, - "schoolNumber": 49787, - "penCoordinatorName": "Maddie Rosenvasser", - "penCoordinatorEmail": "mrosenvasser7w@hhs.gov", - "penCoordinatorFax": "337-203-5623", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 835, - "schoolNumber": 90794, - "penCoordinatorName": "Hector Dulieu", - "penCoordinatorEmail": "hdulieu7x@goo.gl", - "penCoordinatorFax": "701-844-9510", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 449, - "schoolNumber": 85428, - "penCoordinatorName": "Pegeen Wollacott", - "penCoordinatorEmail": "pwollacott7y@netvibes.com", - "penCoordinatorFax": "861-848-5578", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 203, - "schoolNumber": 64552, - "penCoordinatorName": "Mickey Fyall", - "penCoordinatorEmail": "mfyall7z@woothemes.com", - "penCoordinatorFax": "600-670-4374", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 579, - "schoolNumber": 73358, - "penCoordinatorName": "Sascha Burdass", - "penCoordinatorEmail": "sburdass80@indiegogo.com", - "penCoordinatorFax": "922-720-3072", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 184, - "schoolNumber": 26394, - "penCoordinatorName": "Rikki Label", - "penCoordinatorEmail": "rlabel81@wunderground.com", - "penCoordinatorFax": "908-995-2267", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 800, - "schoolNumber": 23897, - "penCoordinatorName": "Kasey Malsher", - "penCoordinatorEmail": "kmalsher82@shop-pro.jp", - "penCoordinatorFax": "461-147-2909", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 185, - "schoolNumber": 98093, - "penCoordinatorName": "Donica Bibby", - "penCoordinatorEmail": "dbibby83@scientificamerican.com", - "penCoordinatorFax": "461-521-2618", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 102, - "schoolNumber": 69038, - "penCoordinatorName": "Erda Lighten", - "penCoordinatorEmail": "elighten84@china.com.cn", - "penCoordinatorFax": "975-542-5340", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 326, - "schoolNumber": 20686, - "penCoordinatorName": "Brewer Keigher", - "penCoordinatorEmail": "bkeigher85@hexun.com", - "penCoordinatorFax": "271-727-4858", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 150, - "schoolNumber": 91100, - "penCoordinatorName": "Kellen Wilkins", - "penCoordinatorEmail": "kwilkins86@privacy.gov.au", - "penCoordinatorFax": "609-255-2268", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 756, - "schoolNumber": 12565, - "penCoordinatorName": "Mitzi Raulston", - "penCoordinatorEmail": "mraulston87@blogspot.com", - "penCoordinatorFax": "925-818-7409", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 533, - "schoolNumber": 88352, - "penCoordinatorName": "Emmie Allans", - "penCoordinatorEmail": "eallans88@aol.com", - "penCoordinatorFax": "590-429-0223", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 482, - "schoolNumber": 39366, - "penCoordinatorName": "Omar Bidewel", - "penCoordinatorEmail": "obidewel89@patch.com", - "penCoordinatorFax": "139-504-0380", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 417, - "schoolNumber": 34647, - "penCoordinatorName": "Ross Aviss", - "penCoordinatorEmail": "raviss8a@blogspot.com", - "penCoordinatorFax": "814-230-6059", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 871, - "schoolNumber": 84705, - "penCoordinatorName": "Tobiah Gopsill", - "penCoordinatorEmail": "tgopsill8b@taobao.com", - "penCoordinatorFax": "187-392-2659", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 476, - "schoolNumber": 69121, - "penCoordinatorName": "Korrie Klimas", - "penCoordinatorEmail": "kklimas8c@nba.com", - "penCoordinatorFax": "327-474-7998", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 364, - "schoolNumber": 10330, - "penCoordinatorName": "Lily Sibray", - "penCoordinatorEmail": "lsibray8d@cnn.com", - "penCoordinatorFax": "621-116-3690", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 491, - "schoolNumber": 56105, - "penCoordinatorName": "Laryssa Marcussen", - "penCoordinatorEmail": "lmarcussen8e@bbc.co.uk", - "penCoordinatorFax": "529-224-5604", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 563, - "schoolNumber": 74255, - "penCoordinatorName": "Alfredo Jinkins", - "penCoordinatorEmail": "ajinkins8f@upenn.edu", - "penCoordinatorFax": "351-120-5710", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 453, - "schoolNumber": 28674, - "penCoordinatorName": "Haywood Vedishchev", - "penCoordinatorEmail": "hvedishchev8g@123-reg.co.uk", - "penCoordinatorFax": "923-387-3358", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 185, - "schoolNumber": 44735, - "penCoordinatorName": "Elbert Wicklin", - "penCoordinatorEmail": "ewicklin8h@sun.com", - "penCoordinatorFax": "935-361-0160", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 860, - "schoolNumber": 87476, - "penCoordinatorName": "Edvard Dunderdale", - "penCoordinatorEmail": "edunderdale8i@howstuffworks.com", - "penCoordinatorFax": "287-587-5649", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 125, - "schoolNumber": 17743, - "penCoordinatorName": "Denice Netley", - "penCoordinatorEmail": "dnetley8j@github.io", - "penCoordinatorFax": "164-398-7856", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 746, - "schoolNumber": 97960, - "penCoordinatorName": "Katrina Tomik", - "penCoordinatorEmail": "ktomik8k@go.com", - "penCoordinatorFax": "403-280-9577", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 594, - "schoolNumber": 71364, - "penCoordinatorName": "Virginie Tanzig", - "penCoordinatorEmail": "vtanzig8l@google.cn", - "penCoordinatorFax": "270-562-5063", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 910, - "schoolNumber": 95846, - "penCoordinatorName": "Melisse Cathro", - "penCoordinatorEmail": "mcathro8m@trellian.com", - "penCoordinatorFax": "366-270-2277", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 544, - "schoolNumber": 55155, - "penCoordinatorName": "Carlos Boykett", - "penCoordinatorEmail": "cboykett8n@umn.edu", - "penCoordinatorFax": "643-457-6675", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 102, - "schoolNumber": 95653, - "penCoordinatorName": "Joane Motte", - "penCoordinatorEmail": "jmotte8o@state.gov", - "penCoordinatorFax": "281-708-3492", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 453, - "schoolNumber": 97086, - "penCoordinatorName": "Cinda Konert", - "penCoordinatorEmail": "ckonert8p@istockphoto.com", - "penCoordinatorFax": "897-603-2278", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 706, - "schoolNumber": 24170, - "penCoordinatorName": "Eden Paxeford", - "penCoordinatorEmail": "epaxeford8q@spiegel.de", - "penCoordinatorFax": "102-523-3432", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 516, - "schoolNumber": 13580, - "penCoordinatorName": "Katy MacVagh", - "penCoordinatorEmail": "kmacvagh8r@blogtalkradio.com", - "penCoordinatorFax": "873-257-7573", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 780, - "schoolNumber": 84603, - "penCoordinatorName": "Agna Karp", - "penCoordinatorEmail": "akarp8s@webs.com", - "penCoordinatorFax": "323-144-2155", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 799, - "schoolNumber": 94982, - "penCoordinatorName": "Zackariah Courtin", - "penCoordinatorEmail": "zcourtin8t@nbcnews.com", - "penCoordinatorFax": "866-721-2003", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 550, - "schoolNumber": 70281, - "penCoordinatorName": "Lester Goodered", - "penCoordinatorEmail": "lgoodered8u@nih.gov", - "penCoordinatorFax": "896-983-4462", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 396, - "schoolNumber": 91736, - "penCoordinatorName": "Blanca Jowett", - "penCoordinatorEmail": "bjowett8v@unblog.fr", - "penCoordinatorFax": "559-943-5277", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 708, - "schoolNumber": 91270, - "penCoordinatorName": "Jacquette Conklin", - "penCoordinatorEmail": "jconklin8w@ezinearticles.com", - "penCoordinatorFax": "854-713-4620", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 572, - "schoolNumber": 62567, - "penCoordinatorName": "Theda Metham", - "penCoordinatorEmail": "tmetham8x@clickbank.net", - "penCoordinatorFax": "840-670-0289", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 286, - "schoolNumber": 34566, - "penCoordinatorName": "Olenka Haws", - "penCoordinatorEmail": "ohaws8y@privacy.gov.au", - "penCoordinatorFax": "811-359-3873", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 683, - "schoolNumber": 96714, - "penCoordinatorName": "Milena Verbeke", - "penCoordinatorEmail": "mverbeke8z@pinterest.com", - "penCoordinatorFax": "598-674-2149", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 165, - "schoolNumber": 52784, - "penCoordinatorName": "Eleonora Spollen", - "penCoordinatorEmail": "espollen90@devhub.com", - "penCoordinatorFax": "574-463-2673", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 820, - "schoolNumber": 59265, - "penCoordinatorName": "Caria Besson", - "penCoordinatorEmail": "cbesson91@usatoday.com", - "penCoordinatorFax": "638-196-9844", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 555, - "schoolNumber": 73552, - "penCoordinatorName": "Lind Perryman", - "penCoordinatorEmail": "lperryman92@patch.com", - "penCoordinatorFax": "469-330-8876", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 997, - "schoolNumber": 28554, - "penCoordinatorName": "Dre Villaret", - "penCoordinatorEmail": "dvillaret93@paginegialle.it", - "penCoordinatorFax": "837-598-9891", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 385, - "schoolNumber": 38863, - "penCoordinatorName": "Kessiah Titterington", - "penCoordinatorEmail": "ktitterington94@epa.gov", - "penCoordinatorFax": "414-683-8299", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 469, - "schoolNumber": 79120, - "penCoordinatorName": "Lavina Dabney", - "penCoordinatorEmail": "ldabney95@narod.ru", - "penCoordinatorFax": "670-316-0346", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 254, - "schoolNumber": 10991, - "penCoordinatorName": "Ferris Smitherham", - "penCoordinatorEmail": "fsmitherham96@va.gov", - "penCoordinatorFax": "852-479-5763", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 713, - "schoolNumber": 11552, - "penCoordinatorName": "Kennie Shimman", - "penCoordinatorEmail": "kshimman97@dell.com", - "penCoordinatorFax": "950-802-8665", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 437, - "schoolNumber": 28039, - "penCoordinatorName": "Ceil Trumpeter", - "penCoordinatorEmail": "ctrumpeter98@delicious.com", - "penCoordinatorFax": "971-108-0078", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 335, - "schoolNumber": 90923, - "penCoordinatorName": "Pablo Chaney", - "penCoordinatorEmail": "pchaney99@cdc.gov", - "penCoordinatorFax": "125-165-1127", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 487, - "schoolNumber": 10304, - "penCoordinatorName": "Levin MacCombe", - "penCoordinatorEmail": "lmaccombe9a@europa.eu", - "penCoordinatorFax": "855-576-5193", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 109, - "schoolNumber": 38114, - "penCoordinatorName": "Neddie Prandini", - "penCoordinatorEmail": "nprandini9b@cargocollective.com", - "penCoordinatorFax": "138-158-7283", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 829, - "schoolNumber": 23592, - "penCoordinatorName": "Gwendolyn Gilbertson", - "penCoordinatorEmail": "ggilbertson9c@newyorker.com", - "penCoordinatorFax": "125-688-8114", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 189, - "schoolNumber": 66018, - "penCoordinatorName": "Lari Roberds", - "penCoordinatorEmail": "lroberds9d@uiuc.edu", - "penCoordinatorFax": "610-757-9702", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 170, - "schoolNumber": 84931, - "penCoordinatorName": "Stanleigh Manktelow", - "penCoordinatorEmail": "smanktelow9e@google.cn", - "penCoordinatorFax": "616-259-6005", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 480, - "schoolNumber": 80182, - "penCoordinatorName": "Roobbie Exall", - "penCoordinatorEmail": "rexall9f@senate.gov", - "penCoordinatorFax": "598-725-3986", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 826, - "schoolNumber": 11547, - "penCoordinatorName": "Karin Vasilischev", - "penCoordinatorEmail": "kvasilischev9g@spotify.com", - "penCoordinatorFax": "997-374-6507", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 908, - "schoolNumber": 56747, - "penCoordinatorName": "Lesli Tether", - "penCoordinatorEmail": "ltether9h@drupal.org", - "penCoordinatorFax": "690-158-1835", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 496, - "schoolNumber": 56130, - "penCoordinatorName": "Breanne Dooman", - "penCoordinatorEmail": "bdooman9i@marketwatch.com", - "penCoordinatorFax": "893-501-2432", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 650, - "schoolNumber": 56608, - "penCoordinatorName": "Laverna Tillard", - "penCoordinatorEmail": "ltillard9j@cmu.edu", - "penCoordinatorFax": "658-135-0021", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 616, - "schoolNumber": 28960, - "penCoordinatorName": "Liza Chalcroft", - "penCoordinatorEmail": "lchalcroft9k@house.gov", - "penCoordinatorFax": "833-780-3509", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 424, - "schoolNumber": 51265, - "penCoordinatorName": "Ursulina Binden", - "penCoordinatorEmail": "ubinden9l@cnet.com", - "penCoordinatorFax": "269-609-0526", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 326, - "schoolNumber": 32179, - "penCoordinatorName": "Vonnie Danielsohn", - "penCoordinatorEmail": "vdanielsohn9m@cornell.edu", - "penCoordinatorFax": "129-934-9051", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 280, - "schoolNumber": 25952, - "penCoordinatorName": "Linnell Jacox", - "penCoordinatorEmail": "ljacox9n@usda.gov", - "penCoordinatorFax": "670-926-1393", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 410, - "schoolNumber": 50214, - "penCoordinatorName": "Eloise Gribbin", - "penCoordinatorEmail": "egribbin9o@miitbeian.gov.cn", - "penCoordinatorFax": "952-138-9048", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 276, - "schoolNumber": 75226, - "penCoordinatorName": "Tracie Dunsleve", - "penCoordinatorEmail": "tdunsleve9p@w3.org", - "penCoordinatorFax": "311-443-6863", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 163, - "schoolNumber": 81126, - "penCoordinatorName": "Amil Walworche", - "penCoordinatorEmail": "awalworche9q@yolasite.com", - "penCoordinatorFax": "999-746-2360", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 628, - "schoolNumber": 29798, - "penCoordinatorName": "Zahara Balsom", - "penCoordinatorEmail": "zbalsom9r@dagondesign.com", - "penCoordinatorFax": "737-640-5844", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 552, - "schoolNumber": 23166, - "penCoordinatorName": "Aubrette Illesley", - "penCoordinatorEmail": "aillesley9s@hexun.com", - "penCoordinatorFax": "623-516-5366", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 230, - "schoolNumber": 26411, - "penCoordinatorName": "Rahal Lethabridge", - "penCoordinatorEmail": "rlethabridge9t@mediafire.com", - "penCoordinatorFax": "857-608-0863", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 383, - "schoolNumber": 60994, - "penCoordinatorName": "Vlad Guilloud", - "penCoordinatorEmail": "vguilloud9u@arizona.edu", - "penCoordinatorFax": "729-138-4221", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 894, - "schoolNumber": 26952, - "penCoordinatorName": "Sarette Lambole", - "penCoordinatorEmail": "slambole9v@uol.com.br", - "penCoordinatorFax": "771-781-2542", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 786, - "schoolNumber": 47707, - "penCoordinatorName": "Delainey Downer", - "penCoordinatorEmail": "ddowner9w@google.it", - "penCoordinatorFax": "580-956-4221", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 729, - "schoolNumber": 29935, - "penCoordinatorName": "Lucilia Fawdery", - "penCoordinatorEmail": "lfawdery9x@blinklist.com", - "penCoordinatorFax": "404-747-8776", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 953, - "schoolNumber": 83153, - "penCoordinatorName": "Early Muscroft", - "penCoordinatorEmail": "emuscroft9y@netlog.com", - "penCoordinatorFax": "285-789-0580", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 961, - "schoolNumber": 80189, - "penCoordinatorName": "Janina Munro", - "penCoordinatorEmail": "jmunro9z@dagondesign.com", - "penCoordinatorFax": "980-876-3494", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 477, - "schoolNumber": 15099, - "penCoordinatorName": "Fonsie Stallan", - "penCoordinatorEmail": "fstallana0@cdc.gov", - "penCoordinatorFax": "729-530-9245", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 804, - "schoolNumber": 88721, - "penCoordinatorName": "Patrice Thick", - "penCoordinatorEmail": "pthicka1@google.fr", - "penCoordinatorFax": "355-324-4932", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 118, - "schoolNumber": 52149, - "penCoordinatorName": "Graehme Birrane", - "penCoordinatorEmail": "gbirranea2@google.cn", - "penCoordinatorFax": "823-466-9959", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 764, - "schoolNumber": 23355, - "penCoordinatorName": "Aili Domini", - "penCoordinatorEmail": "adominia3@state.gov", - "penCoordinatorFax": "327-631-5143", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 135, - "schoolNumber": 52282, - "penCoordinatorName": "Iain McDermott-Row", - "penCoordinatorEmail": "imcdermottrowa4@mysql.com", - "penCoordinatorFax": "671-749-0701", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 651, - "schoolNumber": 78899, - "penCoordinatorName": "Thornie Jeffries", - "penCoordinatorEmail": "tjeffriesa5@4shared.com", - "penCoordinatorFax": "757-371-8312", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 903, - "schoolNumber": 29845, - "penCoordinatorName": "Iona Dackombe", - "penCoordinatorEmail": "idackombea6@goodreads.com", - "penCoordinatorFax": "447-171-1456", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 238, - "schoolNumber": 22390, - "penCoordinatorName": "Nananne Stilly", - "penCoordinatorEmail": "nstillya7@princeton.edu", - "penCoordinatorFax": "913-855-3921", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 399, - "schoolNumber": 54258, - "penCoordinatorName": "Ilise Jeppe", - "penCoordinatorEmail": "ijeppea8@usda.gov", - "penCoordinatorFax": "447-330-3908", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 386, - "schoolNumber": 39613, - "penCoordinatorName": "Marc Shillitto", - "penCoordinatorEmail": "mshillittoa9@dyndns.org", - "penCoordinatorFax": "210-619-2904", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 190, - "schoolNumber": 84903, - "penCoordinatorName": "Farlee Klesl", - "penCoordinatorEmail": "fkleslaa@apache.org", - "penCoordinatorFax": "616-186-0394", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 882, - "schoolNumber": 43032, - "penCoordinatorName": "Ilario Warrick", - "penCoordinatorEmail": "iwarrickab@last.fm", - "penCoordinatorFax": "903-795-7950", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 431, - "schoolNumber": 53190, - "penCoordinatorName": "Sherline Haker", - "penCoordinatorEmail": "shakerac@ocn.ne.jp", - "penCoordinatorFax": "248-771-3447", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 319, - "schoolNumber": 46527, - "penCoordinatorName": "Marlane Harcourt", - "penCoordinatorEmail": "mharcourtad@hexun.com", - "penCoordinatorFax": "924-905-3343", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 355, - "schoolNumber": 66851, - "penCoordinatorName": "Corrianne Chansonne", - "penCoordinatorEmail": "cchansonneae@salon.com", - "penCoordinatorFax": "699-800-8160", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 414, - "schoolNumber": 77342, - "penCoordinatorName": "Paulina McCrone", - "penCoordinatorEmail": "pmccroneaf@google.co.uk", - "penCoordinatorFax": "640-240-0650", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 348, - "schoolNumber": 53239, - "penCoordinatorName": "Addison Lumpkin", - "penCoordinatorEmail": "alumpkinag@techcrunch.com", - "penCoordinatorFax": "681-608-1213", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 591, - "schoolNumber": 88738, - "penCoordinatorName": "Sergent Tibalt", - "penCoordinatorEmail": "stibaltah@google.com.hk", - "penCoordinatorFax": "267-124-4340", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 881, - "schoolNumber": 12126, - "penCoordinatorName": "Elnora Degoe", - "penCoordinatorEmail": "edegoeai@japanpost.jp", - "penCoordinatorFax": "359-447-4510", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 505, - "schoolNumber": 64078, - "penCoordinatorName": "Kerby Kinner", - "penCoordinatorEmail": "kkinneraj@youku.com", - "penCoordinatorFax": "899-835-8854", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 494, - "schoolNumber": 30592, - "penCoordinatorName": "Gayla Danko", - "penCoordinatorEmail": "gdankoak@craigslist.org", - "penCoordinatorFax": "378-112-3666", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 853, - "schoolNumber": 87113, - "penCoordinatorName": "Bunny Margerrison", - "penCoordinatorEmail": "bmargerrisonal@washingtonpost.com", - "penCoordinatorFax": "443-411-3530", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 327, - "schoolNumber": 76861, - "penCoordinatorName": "Vergil Niess", - "penCoordinatorEmail": "vniessam@time.com", - "penCoordinatorFax": "457-345-1642", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 345, - "schoolNumber": 89786, - "penCoordinatorName": "Juliette Darco", - "penCoordinatorEmail": "jdarcoan@admin.ch", - "penCoordinatorFax": "245-513-7936", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 505, - "schoolNumber": 20883, - "penCoordinatorName": "Layla MacGillacolm", - "penCoordinatorEmail": "lmacgillacolmao@addthis.com", - "penCoordinatorFax": "383-836-7861", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 539, - "schoolNumber": 46764, - "penCoordinatorName": "Madelena Purtell", - "penCoordinatorEmail": "mpurtellap@sitemeter.com", - "penCoordinatorFax": "723-125-8283", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 442, - "schoolNumber": 41630, - "penCoordinatorName": "Aliza O'Doherty", - "penCoordinatorEmail": "aodohertyaq@unicef.org", - "penCoordinatorFax": "329-117-9277", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 385, - "schoolNumber": 11408, - "penCoordinatorName": "Victoria Matiasek", - "penCoordinatorEmail": "vmatiasekar@walmart.com", - "penCoordinatorFax": "542-123-7839", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 473, - "schoolNumber": 22031, - "penCoordinatorName": "Ewan Dransfield", - "penCoordinatorEmail": "edransfieldas@smh.com.au", - "penCoordinatorFax": "931-459-0768", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 709, - "schoolNumber": 42862, - "penCoordinatorName": "Minnaminnie Laboune", - "penCoordinatorEmail": "mlabouneat@skype.com", - "penCoordinatorFax": "583-120-3496", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 401, - "schoolNumber": 96792, - "penCoordinatorName": "Gabbey Dyter", - "penCoordinatorEmail": "gdyterau@scientificamerican.com", - "penCoordinatorFax": "760-568-9411", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 436, - "schoolNumber": 77585, - "penCoordinatorName": "Fleming Valiant", - "penCoordinatorEmail": "fvaliantav@networkadvertising.org", - "penCoordinatorFax": "228-325-1022", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 319, - "schoolNumber": 84831, - "penCoordinatorName": "Darryl Belhome", - "penCoordinatorEmail": "dbelhomeaw@drupal.org", - "penCoordinatorFax": "361-305-7946", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 806, - "schoolNumber": 14913, - "penCoordinatorName": "Ciro Coldman", - "penCoordinatorEmail": "ccoldmanax@etsy.com", - "penCoordinatorFax": "811-609-1977", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 262, - "schoolNumber": 48590, - "penCoordinatorName": "Mordy Stebbin", - "penCoordinatorEmail": "mstebbinay@liveinternet.ru", - "penCoordinatorFax": "927-726-9839", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 246, - "schoolNumber": 78154, - "penCoordinatorName": "Lesley McKim", - "penCoordinatorEmail": "lmckimaz@ox.ac.uk", - "penCoordinatorFax": "971-296-4804", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 702, - "schoolNumber": 69882, - "penCoordinatorName": "Sande Theodoris", - "penCoordinatorEmail": "stheodorisb0@artisteer.com", - "penCoordinatorFax": "260-717-3881", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 462, - "schoolNumber": 19319, - "penCoordinatorName": "Ardith Gristock", - "penCoordinatorEmail": "agristockb1@mtv.com", - "penCoordinatorFax": "598-824-2080", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 784, - "schoolNumber": 29829, - "penCoordinatorName": "Johna Bemwell", - "penCoordinatorEmail": "jbemwellb2@instagram.com", - "penCoordinatorFax": "924-138-8871", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 223, - "schoolNumber": 19099, - "penCoordinatorName": "Antonina Wilkie", - "penCoordinatorEmail": "awilkieb3@unicef.org", - "penCoordinatorFax": "366-716-8839", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 418, - "schoolNumber": 82556, - "penCoordinatorName": "Idaline Dunnion", - "penCoordinatorEmail": "idunnionb4@ihg.com", - "penCoordinatorFax": "732-933-7159", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 533, - "schoolNumber": 34034, - "penCoordinatorName": "Mabel Beaulieu", - "penCoordinatorEmail": "mbeaulieub5@europa.eu", - "penCoordinatorFax": "722-803-3089", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 202, - "schoolNumber": 76695, - "penCoordinatorName": "Bernelle Filkin", - "penCoordinatorEmail": "bfilkinb6@newyorker.com", - "penCoordinatorFax": "912-711-8026", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 438, - "schoolNumber": 23430, - "penCoordinatorName": "Ardyth Giacubbo", - "penCoordinatorEmail": "agiacubbob7@go.com", - "penCoordinatorFax": "215-204-7301", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 817, - "schoolNumber": 23290, - "penCoordinatorName": "Tomasina Overton", - "penCoordinatorEmail": "tovertonb8@apple.com", - "penCoordinatorFax": "418-962-3509", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 583, - "schoolNumber": 79259, - "penCoordinatorName": "Carolann Ingold", - "penCoordinatorEmail": "cingoldb9@salon.com", - "penCoordinatorFax": "950-734-6545", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 938, - "schoolNumber": 31460, - "penCoordinatorName": "Wenonah Mullins", - "penCoordinatorEmail": "wmullinsba@unblog.fr", - "penCoordinatorFax": "741-423-2648", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 380, - "schoolNumber": 28889, - "penCoordinatorName": "Krissie Camfield", - "penCoordinatorEmail": "kcamfieldbb@narod.ru", - "penCoordinatorFax": "783-615-8610", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 527, - "schoolNumber": 76915, - "penCoordinatorName": "Lyda L'Episcopio", - "penCoordinatorEmail": "llepiscopiobc@tamu.edu", - "penCoordinatorFax": "282-461-7059", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 140, - "schoolNumber": 66214, - "penCoordinatorName": "Antone Harome", - "penCoordinatorEmail": "aharomebd@seesaa.net", - "penCoordinatorFax": "185-777-7136", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 344, - "schoolNumber": 32193, - "penCoordinatorName": "Dukie Malek", - "penCoordinatorEmail": "dmalekbe@imdb.com", - "penCoordinatorFax": "609-879-1578", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 520, - "schoolNumber": 24063, - "penCoordinatorName": "Murvyn Matterson", - "penCoordinatorEmail": "mmattersonbf@fc2.com", - "penCoordinatorFax": "127-748-4370", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 465, - "schoolNumber": 26052, - "penCoordinatorName": "Merrili Ralph", - "penCoordinatorEmail": "mralphbg@smugmug.com", - "penCoordinatorFax": "713-354-3035", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 961, - "schoolNumber": 13950, - "penCoordinatorName": "Frasier Wrightam", - "penCoordinatorEmail": "fwrightambh@pen.io", - "penCoordinatorFax": "977-338-5989", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 979, - "schoolNumber": 48395, - "penCoordinatorName": "Jaquenetta Taplow", - "penCoordinatorEmail": "jtaplowbi@unc.edu", - "penCoordinatorFax": "235-437-9300", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 826, - "schoolNumber": 15924, - "penCoordinatorName": "Genvieve Velez", - "penCoordinatorEmail": "gvelezbj@yale.edu", - "penCoordinatorFax": "237-203-8402", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 122, - "schoolNumber": 18785, - "penCoordinatorName": "Aluin Foat", - "penCoordinatorEmail": "afoatbk@uiuc.edu", - "penCoordinatorFax": "959-740-8556", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 735, - "schoolNumber": 90170, - "penCoordinatorName": "Ilse Curthoys", - "penCoordinatorEmail": "icurthoysbl@globo.com", - "penCoordinatorFax": "880-110-0326", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 921, - "schoolNumber": 22358, - "penCoordinatorName": "Eugene Chaudron", - "penCoordinatorEmail": "echaudronbm@mysql.com", - "penCoordinatorFax": "477-517-8771", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 385, - "schoolNumber": 10941, - "penCoordinatorName": "Estele Lauridsen", - "penCoordinatorEmail": "elauridsenbn@shinystat.com", - "penCoordinatorFax": "716-711-6521", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 151, - "schoolNumber": 20001, - "penCoordinatorName": "Harriott Japp", - "penCoordinatorEmail": "hjappbo@shutterfly.com", - "penCoordinatorFax": "173-411-9280", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 936, - "schoolNumber": 76770, - "penCoordinatorName": "Leif Domenc", - "penCoordinatorEmail": "ldomencbp@aol.com", - "penCoordinatorFax": "204-910-6361", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 523, - "schoolNumber": 96347, - "penCoordinatorName": "Mariel Creek", - "penCoordinatorEmail": "mcreekbq@comsenz.com", - "penCoordinatorFax": "513-173-6380", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 966, - "schoolNumber": 17964, - "penCoordinatorName": "Buddy Condie", - "penCoordinatorEmail": "bcondiebr@zimbio.com", - "penCoordinatorFax": "366-927-3804", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 146, - "schoolNumber": 76974, - "penCoordinatorName": "Yanaton Labin", - "penCoordinatorEmail": "ylabinbs@oracle.com", - "penCoordinatorFax": "331-678-7121", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 201, - "schoolNumber": 68461, - "penCoordinatorName": "Oren Wasselin", - "penCoordinatorEmail": "owasselinbt@live.com", - "penCoordinatorFax": "877-410-1709", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 299, - "schoolNumber": 26973, - "penCoordinatorName": "Del Morit", - "penCoordinatorEmail": "dmoritbu@mozilla.org", - "penCoordinatorFax": "624-722-1652", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 113, - "schoolNumber": 39767, - "penCoordinatorName": "Diane Grisenthwaite", - "penCoordinatorEmail": "dgrisenthwaitebv@istockphoto.com", - "penCoordinatorFax": "930-729-4363", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 395, - "schoolNumber": 12135, - "penCoordinatorName": "Annetta Woolmington", - "penCoordinatorEmail": "awoolmingtonbw@census.gov", - "penCoordinatorFax": "783-280-9966", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 186, - "schoolNumber": 77613, - "penCoordinatorName": "Mirella Bilverstone", - "penCoordinatorEmail": "mbilverstonebx@engadget.com", - "penCoordinatorFax": "214-777-1718", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 443, - "schoolNumber": 12662, - "penCoordinatorName": "Rianon Fillingham", - "penCoordinatorEmail": "rfillinghamby@nytimes.com", - "penCoordinatorFax": "428-293-9468", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 492, - "schoolNumber": 14941, - "penCoordinatorName": "Gae Yellowley", - "penCoordinatorEmail": "gyellowleybz@theguardian.com", - "penCoordinatorFax": "330-212-7703", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 978, - "schoolNumber": 11416, - "penCoordinatorName": "Eva Ruffli", - "penCoordinatorEmail": "erufflic0@biblegateway.com", - "penCoordinatorFax": "914-234-9935", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 148, - "schoolNumber": 29686, - "penCoordinatorName": "Cthrine Ruger", - "penCoordinatorEmail": "crugerc1@comcast.net", - "penCoordinatorFax": "284-773-5103", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 702, - "schoolNumber": 75120, - "penCoordinatorName": "Lanny Verduin", - "penCoordinatorEmail": "lverduinc2@google.ru", - "penCoordinatorFax": "680-571-6843", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 430, - "schoolNumber": 38463, - "penCoordinatorName": "Crichton Kirmond", - "penCoordinatorEmail": "ckirmondc3@ed.gov", - "penCoordinatorFax": "322-859-3452", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 982, - "schoolNumber": 81999, - "penCoordinatorName": "Noelani Arno", - "penCoordinatorEmail": "narnoc4@elegantthemes.com", - "penCoordinatorFax": "300-111-2156", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 665, - "schoolNumber": 81333, - "penCoordinatorName": "Blythe Stronghill", - "penCoordinatorEmail": "bstronghillc5@kickstarter.com", - "penCoordinatorFax": "969-715-7873", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 633, - "schoolNumber": 96961, - "penCoordinatorName": "Geraldine Hriinchenko", - "penCoordinatorEmail": "ghriinchenkoc6@hp.com", - "penCoordinatorFax": "287-629-5809", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 393, - "schoolNumber": 33081, - "penCoordinatorName": "Audre Muriel", - "penCoordinatorEmail": "amurielc7@etsy.com", - "penCoordinatorFax": "135-608-5792", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 679, - "schoolNumber": 70886, - "penCoordinatorName": "Lian Posen", - "penCoordinatorEmail": "lposenc8@uiuc.edu", - "penCoordinatorFax": "942-758-1088", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 280, - "schoolNumber": 31546, - "penCoordinatorName": "Debbie Andrei", - "penCoordinatorEmail": "dandreic9@wp.com", - "penCoordinatorFax": "147-606-3602", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 432, - "schoolNumber": 66995, - "penCoordinatorName": "Drusy De Bernardis", - "penCoordinatorEmail": "ddeca@canalblog.com", - "penCoordinatorFax": "311-337-7346", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 153, - "schoolNumber": 52602, - "penCoordinatorName": "Xymenes O'Beirne", - "penCoordinatorEmail": "xobeirnecb@msu.edu", - "penCoordinatorFax": "240-788-9141", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 608, - "schoolNumber": 59673, - "penCoordinatorName": "Marcus Austen", - "penCoordinatorEmail": "maustencc@topsy.com", - "penCoordinatorFax": "492-220-7148", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 764, - "schoolNumber": 29220, - "penCoordinatorName": "Remy Elloy", - "penCoordinatorEmail": "relloycd@aboutads.info", - "penCoordinatorFax": "874-263-9985", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 338, - "schoolNumber": 47016, - "penCoordinatorName": "Lyell De Gouy", - "penCoordinatorEmail": "ldece@cbslocal.com", - "penCoordinatorFax": "214-834-0137", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 860, - "schoolNumber": 49083, - "penCoordinatorName": "Cart Willingham", - "penCoordinatorEmail": "cwillinghamcf@squarespace.com", - "penCoordinatorFax": "126-538-6711", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 184, - "schoolNumber": 90958, - "penCoordinatorName": "Norma Doutch", - "penCoordinatorEmail": "ndoutchcg@businessinsider.com", - "penCoordinatorFax": "346-449-1260", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 321, - "schoolNumber": 52366, - "penCoordinatorName": "Andre Gladdin", - "penCoordinatorEmail": "agladdinch@purevolume.com", - "penCoordinatorFax": "793-122-1958", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 452, - "schoolNumber": 51388, - "penCoordinatorName": "Roxie Rhymer", - "penCoordinatorEmail": "rrhymerci@hugedomains.com", - "penCoordinatorFax": "346-871-0866", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 419, - "schoolNumber": 18237, - "penCoordinatorName": "Vivyan Ferrierio", - "penCoordinatorEmail": "vferrieriocj@apple.com", - "penCoordinatorFax": "171-123-7463", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 498, - "schoolNumber": 33353, - "penCoordinatorName": "Benedikt Dodworth", - "penCoordinatorEmail": "bdodworthck@uol.com.br", - "penCoordinatorFax": "633-639-8244", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 735, - "schoolNumber": 51528, - "penCoordinatorName": "Curr Menhci", - "penCoordinatorEmail": "cmenhcicl@joomla.org", - "penCoordinatorFax": "374-827-0629", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 773, - "schoolNumber": 93612, - "penCoordinatorName": "Demott Mathevon", - "penCoordinatorEmail": "dmathevoncm@biblegateway.com", - "penCoordinatorFax": "392-624-5519", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 629, - "schoolNumber": 40326, - "penCoordinatorName": "Melamie Verman", - "penCoordinatorEmail": "mvermancn@wunderground.com", - "penCoordinatorFax": "972-504-9772", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 898, - "schoolNumber": 52825, - "penCoordinatorName": "Godfrey Cassel", - "penCoordinatorEmail": "gcasselco@aboutads.info", - "penCoordinatorFax": "739-255-5471", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 786, - "schoolNumber": 44798, - "penCoordinatorName": "Gilberte Burdis", - "penCoordinatorEmail": "gburdiscp@virginia.edu", - "penCoordinatorFax": "217-781-4788", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 329, - "schoolNumber": 13775, - "penCoordinatorName": "Tanhya Keeble", - "penCoordinatorEmail": "tkeeblecq@nyu.edu", - "penCoordinatorFax": "349-729-6491", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 135, - "schoolNumber": 49573, - "penCoordinatorName": "Wyatt Schoolcroft", - "penCoordinatorEmail": "wschoolcroftcr@fc2.com", - "penCoordinatorFax": "593-345-6158", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 310, - "schoolNumber": 42021, - "penCoordinatorName": "Allx Tout", - "penCoordinatorEmail": "atoutcs@macromedia.com", - "penCoordinatorFax": "153-647-5247", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 533, - "schoolNumber": 92937, - "penCoordinatorName": "Marty McKern", - "penCoordinatorEmail": "mmckernct@ebay.com", - "penCoordinatorFax": "846-428-5728", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 268, - "schoolNumber": 12809, - "penCoordinatorName": "Almire Bordessa", - "penCoordinatorEmail": "abordessacu@paginegialle.it", - "penCoordinatorFax": "465-324-8812", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 537, - "schoolNumber": 12820, - "penCoordinatorName": "Henryetta Holttom", - "penCoordinatorEmail": "hholttomcv@artisteer.com", - "penCoordinatorFax": "511-494-9265", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 219, - "schoolNumber": 99304, - "penCoordinatorName": "Lynnet Cantua", - "penCoordinatorEmail": "lcantuacw@comcast.net", - "penCoordinatorFax": "668-282-6301", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 430, - "schoolNumber": 72741, - "penCoordinatorName": "Ricky Elsom", - "penCoordinatorEmail": "relsomcx@de.vu", - "penCoordinatorFax": "792-658-9604", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 869, - "schoolNumber": 60975, - "penCoordinatorName": "Wye Buggs", - "penCoordinatorEmail": "wbuggscy@nhs.uk", - "penCoordinatorFax": "340-452-3424", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 936, - "schoolNumber": 58816, - "penCoordinatorName": "Mohandis Dudman", - "penCoordinatorEmail": "mdudmancz@behance.net", - "penCoordinatorFax": "351-940-4865", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 568, - "schoolNumber": 91537, - "penCoordinatorName": "Koo Brownlow", - "penCoordinatorEmail": "kbrownlowd0@ocn.ne.jp", - "penCoordinatorFax": "217-984-7703", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 108, - "schoolNumber": 61041, - "penCoordinatorName": "Loleta Thandi", - "penCoordinatorEmail": "lthandid1@springer.com", - "penCoordinatorFax": "342-712-6162", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 593, - "schoolNumber": 31714, - "penCoordinatorName": "Vinnie Berkowitz", - "penCoordinatorEmail": "vberkowitzd2@hp.com", - "penCoordinatorFax": "399-568-5379", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 280, - "schoolNumber": 52150, - "penCoordinatorName": "Cara Airs", - "penCoordinatorEmail": "cairsd3@mlb.com", - "penCoordinatorFax": "324-909-0728", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 741, - "schoolNumber": 23602, - "penCoordinatorName": "Lek Railton", - "penCoordinatorEmail": "lrailtond4@unblog.fr", - "penCoordinatorFax": "730-892-7134", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 123, - "schoolNumber": 61012, - "penCoordinatorName": "Shelbi Aldritt", - "penCoordinatorEmail": "saldrittd5@chicagotribune.com", - "penCoordinatorFax": "590-440-3440", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 110, - "schoolNumber": 97062, - "penCoordinatorName": "Torr Samweyes", - "penCoordinatorEmail": "tsamweyesd6@delicious.com", - "penCoordinatorFax": "823-931-5075", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 564, - "schoolNumber": 20164, - "penCoordinatorName": "Sibyl O'Hingerty", - "penCoordinatorEmail": "sohingertyd7@baidu.com", - "penCoordinatorFax": "777-997-9913", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 721, - "schoolNumber": 20944, - "penCoordinatorName": "Meggie Stait", - "penCoordinatorEmail": "mstaitd8@berkeley.edu", - "penCoordinatorFax": "125-976-5397", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 809, - "schoolNumber": 42178, - "penCoordinatorName": "Carney Hancke", - "penCoordinatorEmail": "chancked9@buzzfeed.com", - "penCoordinatorFax": "305-802-2526", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 218, - "schoolNumber": 21187, - "penCoordinatorName": "Fredericka Lafflin", - "penCoordinatorEmail": "flafflinda@si.edu", - "penCoordinatorFax": "612-294-2796", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 941, - "schoolNumber": 31842, - "penCoordinatorName": "Darcey Ilymanov", - "penCoordinatorEmail": "dilymanovdb@canalblog.com", - "penCoordinatorFax": "150-233-9459", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 322, - "schoolNumber": 52296, - "penCoordinatorName": "Brook Hitzschke", - "penCoordinatorEmail": "bhitzschkedc@xing.com", - "penCoordinatorFax": "202-659-6061", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 603, - "schoolNumber": 31381, - "penCoordinatorName": "Micheline Shiril", - "penCoordinatorEmail": "mshirildd@barnesandnoble.com", - "penCoordinatorFax": "205-312-7686", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 593, - "schoolNumber": 70084, - "penCoordinatorName": "Nara Giacomozzo", - "penCoordinatorEmail": "ngiacomozzode@shareasale.com", - "penCoordinatorFax": "225-908-8919", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 640, - "schoolNumber": 29835, - "penCoordinatorName": "Winfield Antognetti", - "penCoordinatorEmail": "wantognettidf@npr.org", - "penCoordinatorFax": "783-663-6475", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 644, - "schoolNumber": 38597, - "penCoordinatorName": "Blane Wallwood", - "penCoordinatorEmail": "bwallwooddg@pcworld.com", - "penCoordinatorFax": "969-951-9388", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 457, - "schoolNumber": 45930, - "penCoordinatorName": "Marcus Bresman", - "penCoordinatorEmail": "mbresmandh@symantec.com", - "penCoordinatorFax": "747-937-0027", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 969, - "schoolNumber": 29580, - "penCoordinatorName": "Fredelia Batters", - "penCoordinatorEmail": "fbattersdi@sun.com", - "penCoordinatorFax": "572-367-6086", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 834, - "schoolNumber": 55952, - "penCoordinatorName": "Webster Retchford", - "penCoordinatorEmail": "wretchforddj@purevolume.com", - "penCoordinatorFax": "312-159-5078", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 991, - "schoolNumber": 73520, - "penCoordinatorName": "Zsazsa Madsen", - "penCoordinatorEmail": "zmadsendk@elpais.com", - "penCoordinatorFax": "509-394-6918", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 218, - "schoolNumber": 21145, - "penCoordinatorName": "Janifer MacCurlye", - "penCoordinatorEmail": "jmaccurlyedl@hp.com", - "penCoordinatorFax": "217-242-5285", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 135, - "schoolNumber": 16855, - "penCoordinatorName": "Cornall Lay", - "penCoordinatorEmail": "claydm@hao123.com", - "penCoordinatorFax": "150-141-9724", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 983, - "schoolNumber": 57037, - "penCoordinatorName": "Eunice Larwell", - "penCoordinatorEmail": "elarwelldn@prnewswire.com", - "penCoordinatorFax": "200-670-8224", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 429, - "schoolNumber": 36843, - "penCoordinatorName": "Justen Papworth", - "penCoordinatorEmail": "jpapworthdo@typepad.com", - "penCoordinatorFax": "883-548-7623", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 967, - "schoolNumber": 22023, - "penCoordinatorName": "Anton Kissick", - "penCoordinatorEmail": "akissickdp@japanpost.jp", - "penCoordinatorFax": "453-400-7437", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 496, - "schoolNumber": 80823, - "penCoordinatorName": "Yancey Argont", - "penCoordinatorEmail": "yargontdq@list-manage.com", - "penCoordinatorFax": "708-165-8803", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 444, - "schoolNumber": 68476, - "penCoordinatorName": "Silvester Celiz", - "penCoordinatorEmail": "scelizdr@un.org", - "penCoordinatorFax": "128-260-7803", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 170, - "schoolNumber": 43847, - "penCoordinatorName": "Darsie Kelsey", - "penCoordinatorEmail": "dkelseyds@cnet.com", - "penCoordinatorFax": "742-730-7364", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 244, - "schoolNumber": 50950, - "penCoordinatorName": "Adolphus Pere", - "penCoordinatorEmail": "aperedt@wired.com", - "penCoordinatorFax": "438-532-2584", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 718, - "schoolNumber": 62276, - "penCoordinatorName": "Midge Ryder", - "penCoordinatorEmail": "mryderdu@addthis.com", - "penCoordinatorFax": "724-346-2013", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 154, - "schoolNumber": 17422, - "penCoordinatorName": "Babara Broader", - "penCoordinatorEmail": "bbroaderdv@ucoz.ru", - "penCoordinatorFax": "387-882-5207", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 663, - "schoolNumber": 51092, - "penCoordinatorName": "Vassili Tunnadine", - "penCoordinatorEmail": "vtunnadinedw@aol.com", - "penCoordinatorFax": "863-681-2609", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 872, - "schoolNumber": 24001, - "penCoordinatorName": "Gloriana Swarbrick", - "penCoordinatorEmail": "gswarbrickdx@google.ca", - "penCoordinatorFax": "652-449-9395", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 349, - "schoolNumber": 62094, - "penCoordinatorName": "Carlie Nice", - "penCoordinatorEmail": "cnicedy@comsenz.com", - "penCoordinatorFax": "100-307-9739", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 216, - "schoolNumber": 56192, - "penCoordinatorName": "Trisha Duberry", - "penCoordinatorEmail": "tduberrydz@plala.or.jp", - "penCoordinatorFax": "762-361-9070", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 201, - "schoolNumber": 47184, - "penCoordinatorName": "Roxie Fifoot", - "penCoordinatorEmail": "rfifoote0@un.org", - "penCoordinatorFax": "372-974-1280", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 694, - "schoolNumber": 28927, - "penCoordinatorName": "Bartie Sousa", - "penCoordinatorEmail": "bsousae1@trellian.com", - "penCoordinatorFax": "358-966-5068", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 130, - "schoolNumber": 96553, - "penCoordinatorName": "Guenna Collie", - "penCoordinatorEmail": "gcolliee2@thetimes.co.uk", - "penCoordinatorFax": "311-381-2631", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 226, - "schoolNumber": 95178, - "penCoordinatorName": "Kareem Dunstall", - "penCoordinatorEmail": "kdunstalle3@simplemachines.org", - "penCoordinatorFax": "543-438-3820", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 979, - "schoolNumber": 86142, - "penCoordinatorName": "Bobby Lamprey", - "penCoordinatorEmail": "blampreye4@sciencedaily.com", - "penCoordinatorFax": "788-593-1886", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 748, - "schoolNumber": 75977, - "penCoordinatorName": "Gerty Potier", - "penCoordinatorEmail": "gpotiere5@cloudflare.com", - "penCoordinatorFax": "582-349-0857", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 219, - "schoolNumber": 39780, - "penCoordinatorName": "Kerri McKerley", - "penCoordinatorEmail": "kmckerleye6@chicagotribune.com", - "penCoordinatorFax": "957-502-7201", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 580, - "schoolNumber": 10701, - "penCoordinatorName": "Micheil Fitchell", - "penCoordinatorEmail": "mfitchelle7@e-recht24.de", - "penCoordinatorFax": "843-307-3821", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 297, - "schoolNumber": 26747, - "penCoordinatorName": "Natale Patesel", - "penCoordinatorEmail": "npatesele8@yellowpages.com", - "penCoordinatorFax": "804-237-8817", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 467, - "schoolNumber": 25447, - "penCoordinatorName": "Lenora Mackriell", - "penCoordinatorEmail": "lmackrielle9@yellowpages.com", - "penCoordinatorFax": "160-775-7016", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 229, - "schoolNumber": 34644, - "penCoordinatorName": "Alvy Hallet", - "penCoordinatorEmail": "ahalletea@gov.uk", - "penCoordinatorFax": "306-615-0237", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 968, - "schoolNumber": 10926, - "penCoordinatorName": "Rogers Wathell", - "penCoordinatorEmail": "rwathelleb@123-reg.co.uk", - "penCoordinatorFax": "620-988-8699", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 640, - "schoolNumber": 67030, - "penCoordinatorName": "Beryle Yorston", - "penCoordinatorEmail": "byorstonec@dropbox.com", - "penCoordinatorFax": "745-514-6279", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 389, - "schoolNumber": 99229, - "penCoordinatorName": "Jackelyn Jolley", - "penCoordinatorEmail": "jjolleyed@ibm.com", - "penCoordinatorFax": "855-200-4237", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 809, - "schoolNumber": 13797, - "penCoordinatorName": "Christin Franzetti", - "penCoordinatorEmail": "cfranzettiee@hibu.com", - "penCoordinatorFax": "508-813-5628", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 893, - "schoolNumber": 61157, - "penCoordinatorName": "Miner Severns", - "penCoordinatorEmail": "msevernsef@abc.net.au", - "penCoordinatorFax": "520-553-2937", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 375, - "schoolNumber": 58725, - "penCoordinatorName": "Florry Kristof", - "penCoordinatorEmail": "fkristofeg@un.org", - "penCoordinatorFax": "646-154-0313", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 506, - "schoolNumber": 82710, - "penCoordinatorName": "Kikelia Doherty", - "penCoordinatorEmail": "kdohertyeh@flavors.me", - "penCoordinatorFax": "546-417-6411", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 350, - "schoolNumber": 23150, - "penCoordinatorName": "Fran Dumberell", - "penCoordinatorEmail": "fdumberellei@arizona.edu", - "penCoordinatorFax": "266-549-0319", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 748, - "schoolNumber": 87445, - "penCoordinatorName": "Seumas Odda", - "penCoordinatorEmail": "soddaej@xing.com", - "penCoordinatorFax": "107-598-3283", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 199, - "schoolNumber": 60460, - "penCoordinatorName": "Agneta Fairnie", - "penCoordinatorEmail": "afairnieek@hostgator.com", - "penCoordinatorFax": "386-370-8766", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 238, - "schoolNumber": 86797, - "penCoordinatorName": "Gayler Britian", - "penCoordinatorEmail": "gbritianel@odnoklassniki.ru", - "penCoordinatorFax": "569-580-0126", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 964, - "schoolNumber": 13187, - "penCoordinatorName": "Pietro Arunowicz", - "penCoordinatorEmail": "parunowiczem@behance.net", - "penCoordinatorFax": "818-454-9384", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 153, - "schoolNumber": 24197, - "penCoordinatorName": "Elene Abrahamsson", - "penCoordinatorEmail": "eabrahamssonen@themeforest.net", - "penCoordinatorFax": "569-479-4993", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 676, - "schoolNumber": 72364, - "penCoordinatorName": "Costa Marcus", - "penCoordinatorEmail": "cmarcuseo@yellowpages.com", - "penCoordinatorFax": "510-901-4262", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 340, - "schoolNumber": 40135, - "penCoordinatorName": "Tremain McIlwain", - "penCoordinatorEmail": "tmcilwainep@pbs.org", - "penCoordinatorFax": "764-927-2981", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 803, - "schoolNumber": 34271, - "penCoordinatorName": "Schuyler Forsyth", - "penCoordinatorEmail": "sforsytheq@webnode.com", - "penCoordinatorFax": "404-762-7245", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 410, - "schoolNumber": 48545, - "penCoordinatorName": "Cesya Brawn", - "penCoordinatorEmail": "cbrawner@sciencedirect.com", - "penCoordinatorFax": "321-704-3828", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 705, - "schoolNumber": 78962, - "penCoordinatorName": "Thorsten Merryweather", - "penCoordinatorEmail": "tmerryweatheres@tinyurl.com", - "penCoordinatorFax": "419-352-4976", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 802, - "schoolNumber": 11859, - "penCoordinatorName": "Claudio Pendell", - "penCoordinatorEmail": "cpendellet@odnoklassniki.ru", - "penCoordinatorFax": "331-559-7677", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 420, - "schoolNumber": 88564, - "penCoordinatorName": "Norris Roskelley", - "penCoordinatorEmail": "nroskelleyeu@china.com.cn", - "penCoordinatorFax": "342-262-4088", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 209, - "schoolNumber": 78462, - "penCoordinatorName": "Casar O'Corrane", - "penCoordinatorEmail": "cocorraneev@dedecms.com", - "penCoordinatorFax": "480-926-2998", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 405, - "schoolNumber": 65855, - "penCoordinatorName": "Harriette Theaker", - "penCoordinatorEmail": "htheakerew@chicagotribune.com", - "penCoordinatorFax": "726-501-6076", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 924, - "schoolNumber": 85455, - "penCoordinatorName": "Giffy Hayles", - "penCoordinatorEmail": "ghaylesex@youtu.be", - "penCoordinatorFax": "626-548-5534", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 604, - "schoolNumber": 85861, - "penCoordinatorName": "Tadd Smewings", - "penCoordinatorEmail": "tsmewingsey@rediff.com", - "penCoordinatorFax": "420-977-1150", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 291, - "schoolNumber": 32744, - "penCoordinatorName": "Lancelot Erik", - "penCoordinatorEmail": "lerikez@slashdot.org", - "penCoordinatorFax": "514-870-0256", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 872, - "schoolNumber": 33850, - "penCoordinatorName": "Chase Bowkley", - "penCoordinatorEmail": "cbowkleyf0@dagondesign.com", - "penCoordinatorFax": "299-489-8518", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 731, - "schoolNumber": 98201, - "penCoordinatorName": "Pinchas Courson", - "penCoordinatorEmail": "pcoursonf1@guardian.co.uk", - "penCoordinatorFax": "855-466-6263", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 234, - "schoolNumber": 54956, - "penCoordinatorName": "Ermentrude Kundt", - "penCoordinatorEmail": "ekundtf2@xing.com", - "penCoordinatorFax": "646-258-2100", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 938, - "schoolNumber": 25749, - "penCoordinatorName": "Fernando Bayne", - "penCoordinatorEmail": "fbaynef3@flickr.com", - "penCoordinatorFax": "693-998-1212", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 342, - "schoolNumber": 39067, - "penCoordinatorName": "Susie Looby", - "penCoordinatorEmail": "sloobyf4@irs.gov", - "penCoordinatorFax": "557-930-9810", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 709, - "schoolNumber": 62213, - "penCoordinatorName": "Miner Wakerley", - "penCoordinatorEmail": "mwakerleyf5@cisco.com", - "penCoordinatorFax": "798-668-3969", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 826, - "schoolNumber": 56096, - "penCoordinatorName": "Leeann Piell", - "penCoordinatorEmail": "lpiellf6@naver.com", - "penCoordinatorFax": "103-254-2813", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 426, - "schoolNumber": 60349, - "penCoordinatorName": "Audie Posselwhite", - "penCoordinatorEmail": "aposselwhitef7@prweb.com", - "penCoordinatorFax": "916-872-8528", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 741, - "schoolNumber": 72821, - "penCoordinatorName": "Owen Kellert", - "penCoordinatorEmail": "okellertf8@alexa.com", - "penCoordinatorFax": "735-182-3208", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 182, - "schoolNumber": 57347, - "penCoordinatorName": "Chantalle Gutierrez", - "penCoordinatorEmail": "cgutierrezf9@usatoday.com", - "penCoordinatorFax": "111-386-8460", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 590, - "schoolNumber": 85385, - "penCoordinatorName": "Lindsey Sprigings", - "penCoordinatorEmail": "lsprigingsfa@nhs.uk", - "penCoordinatorFax": "106-303-3295", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 724, - "schoolNumber": 40965, - "penCoordinatorName": "Stearne Pettegree", - "penCoordinatorEmail": "spettegreefb@un.org", - "penCoordinatorFax": "525-853-0277", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 880, - "schoolNumber": 82953, - "penCoordinatorName": "Sylas Herculeson", - "penCoordinatorEmail": "sherculesonfc@si.edu", - "penCoordinatorFax": "477-838-8155", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 647, - "schoolNumber": 71753, - "penCoordinatorName": "Gaynor Vinas", - "penCoordinatorEmail": "gvinasfd@sitemeter.com", - "penCoordinatorFax": "320-646-0436", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 812, - "schoolNumber": 26902, - "penCoordinatorName": "Aldus Stockhill", - "penCoordinatorEmail": "astockhillfe@rakuten.co.jp", - "penCoordinatorFax": "485-958-2914", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 373, - "schoolNumber": 16232, - "penCoordinatorName": "Donnajean Crannage", - "penCoordinatorEmail": "dcrannageff@php.net", - "penCoordinatorFax": "330-388-5188", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 103, - "schoolNumber": 75791, - "penCoordinatorName": "Urson Champneys", - "penCoordinatorEmail": "uchampneysfg@addtoany.com", - "penCoordinatorFax": "341-964-5912", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 107, - "schoolNumber": 86784, - "penCoordinatorName": "Theo Tschirschky", - "penCoordinatorEmail": "ttschirschkyfh@quantcast.com", - "penCoordinatorFax": "534-875-7063", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 633, - "schoolNumber": 57387, - "penCoordinatorName": "Luciano Edgson", - "penCoordinatorEmail": "ledgsonfi@umn.edu", - "penCoordinatorFax": "365-131-2389", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 753, - "schoolNumber": 56179, - "penCoordinatorName": "Mic Lanahan", - "penCoordinatorEmail": "mlanahanfj@samsung.com", - "penCoordinatorFax": "732-593-3705", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 892, - "schoolNumber": 69412, - "penCoordinatorName": "Daryn Ferrini", - "penCoordinatorEmail": "dferrinifk@wp.com", - "penCoordinatorFax": "266-748-8664", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 163, - "schoolNumber": 22845, - "penCoordinatorName": "Kellie Kerfut", - "penCoordinatorEmail": "kkerfutfl@ebay.co.uk", - "penCoordinatorFax": "740-585-8427", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 964, - "schoolNumber": 23261, - "penCoordinatorName": "Venita Howick", - "penCoordinatorEmail": "vhowickfm@mit.edu", - "penCoordinatorFax": "620-336-4399", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 297, - "schoolNumber": 89978, - "penCoordinatorName": "Hali Rosebotham", - "penCoordinatorEmail": "hrosebothamfn@foxnews.com", - "penCoordinatorFax": "304-560-9439", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 976, - "schoolNumber": 28128, - "penCoordinatorName": "Thalia Rizzolo", - "penCoordinatorEmail": "trizzolofo@nsw.gov.au", - "penCoordinatorFax": "904-181-3179", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 589, - "schoolNumber": 28666, - "penCoordinatorName": "Marjy Biasotti", - "penCoordinatorEmail": "mbiasottifp@stumbleupon.com", - "penCoordinatorFax": "590-747-7819", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 458, - "schoolNumber": 12147, - "penCoordinatorName": "Donica Cess", - "penCoordinatorEmail": "dcessfq@ted.com", - "penCoordinatorFax": "695-840-0550", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 173, - "schoolNumber": 59006, - "penCoordinatorName": "Fee Kiss", - "penCoordinatorEmail": "fkissfr@nifty.com", - "penCoordinatorFax": "674-916-0170", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 605, - "schoolNumber": 37131, - "penCoordinatorName": "Correna Klesse", - "penCoordinatorEmail": "cklessefs@ycombinator.com", - "penCoordinatorFax": "865-492-0456", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 233, - "schoolNumber": 16272, - "penCoordinatorName": "Rhody MacSherry", - "penCoordinatorEmail": "rmacsherryft@technorati.com", - "penCoordinatorFax": "897-616-5372", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 525, - "schoolNumber": 69284, - "penCoordinatorName": "Boyce Thurlow", - "penCoordinatorEmail": "bthurlowfu@github.io", - "penCoordinatorFax": "782-967-1565", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 123, - "schoolNumber": 43992, - "penCoordinatorName": "Teena Winspar", - "penCoordinatorEmail": "twinsparfv@engadget.com", - "penCoordinatorFax": "946-175-8892", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 611, - "schoolNumber": 53047, - "penCoordinatorName": "Cullen Worland", - "penCoordinatorEmail": "cworlandfw@jalbum.net", - "penCoordinatorFax": "542-152-4003", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 369, - "schoolNumber": 22731, - "penCoordinatorName": "Clo Renac", - "penCoordinatorEmail": "crenacfx@shareasale.com", - "penCoordinatorFax": "730-137-4971", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 482, - "schoolNumber": 66346, - "penCoordinatorName": "Marion Riehm", - "penCoordinatorEmail": "mriehmfy@etsy.com", - "penCoordinatorFax": "365-358-4821", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 833, - "schoolNumber": 70458, - "penCoordinatorName": "Peg Hannaford", - "penCoordinatorEmail": "phannafordfz@techcrunch.com", - "penCoordinatorFax": "233-544-5603", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 151, - "schoolNumber": 61040, - "penCoordinatorName": "Gunther Beggin", - "penCoordinatorEmail": "gbegging0@netlog.com", - "penCoordinatorFax": "332-204-5450", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 575, - "schoolNumber": 64599, - "penCoordinatorName": "Gilburt Beedell", - "penCoordinatorEmail": "gbeedellg1@psu.edu", - "penCoordinatorFax": "791-134-6127", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 198, - "schoolNumber": 64385, - "penCoordinatorName": "Mark Kelloch", - "penCoordinatorEmail": "mkellochg2@usatoday.com", - "penCoordinatorFax": "577-989-1920", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 794, - "schoolNumber": 44991, - "penCoordinatorName": "Thomasin Bartoleyn", - "penCoordinatorEmail": "tbartoleyng3@unc.edu", - "penCoordinatorFax": "103-308-0308", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 575, - "schoolNumber": 19413, - "penCoordinatorName": "Jerrold Steart", - "penCoordinatorEmail": "jsteartg4@mtv.com", - "penCoordinatorFax": "295-984-1383", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 390, - "schoolNumber": 47206, - "penCoordinatorName": "Karisa Pinckard", - "penCoordinatorEmail": "kpinckardg5@accuweather.com", - "penCoordinatorFax": "846-383-2367", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 268, - "schoolNumber": 67776, - "penCoordinatorName": "Ferrell Vinden", - "penCoordinatorEmail": "fvindeng6@artisteer.com", - "penCoordinatorFax": "232-373-5274", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 281, - "schoolNumber": 82389, - "penCoordinatorName": "Tara Kinnett", - "penCoordinatorEmail": "tkinnettg7@guardian.co.uk", - "penCoordinatorFax": "337-817-0070", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 959, - "schoolNumber": 36337, - "penCoordinatorName": "Batsheva Heard", - "penCoordinatorEmail": "bheardg8@ca.gov", - "penCoordinatorFax": "800-948-5657", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 358, - "schoolNumber": 50341, - "penCoordinatorName": "Zebedee Armer", - "penCoordinatorEmail": "zarmerg9@sciencedirect.com", - "penCoordinatorFax": "831-598-0052", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 957, - "schoolNumber": 12230, - "penCoordinatorName": "Geordie Metrick", - "penCoordinatorEmail": "gmetrickga@jugem.jp", - "penCoordinatorFax": "775-650-4750", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 165, - "schoolNumber": 69311, - "penCoordinatorName": "Toma Blandford", - "penCoordinatorEmail": "tblandfordgb@about.com", - "penCoordinatorFax": "954-630-8639", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 411, - "schoolNumber": 19716, - "penCoordinatorName": "Maurizia Moodey", - "penCoordinatorEmail": "mmoodeygc@youtu.be", - "penCoordinatorFax": "982-350-7675", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 539, - "schoolNumber": 34828, - "penCoordinatorName": "Alastair Pettman", - "penCoordinatorEmail": "apettmangd@yelp.com", - "penCoordinatorFax": "381-311-7717", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 870, - "schoolNumber": 92877, - "penCoordinatorName": "Artus Smoote", - "penCoordinatorEmail": "asmootege@intel.com", - "penCoordinatorFax": "508-533-4444", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 872, - "schoolNumber": 16540, - "penCoordinatorName": "Florette Douch", - "penCoordinatorEmail": "fdouchgf@creativecommons.org", - "penCoordinatorFax": "193-132-4723", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 142, - "schoolNumber": 18590, - "penCoordinatorName": "Johannes Aspinell", - "penCoordinatorEmail": "jaspinellgg@bandcamp.com", - "penCoordinatorFax": "249-236-0633", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 628, - "schoolNumber": 72036, - "penCoordinatorName": "Josi Sommerly", - "penCoordinatorEmail": "jsommerlygh@newyorker.com", - "penCoordinatorFax": "149-600-9477", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 720, - "schoolNumber": 61259, - "penCoordinatorName": "Chico Satford", - "penCoordinatorEmail": "csatfordgi@dagondesign.com", - "penCoordinatorFax": "567-822-5407", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 284, - "schoolNumber": 24642, - "penCoordinatorName": "Eberto Hoppner", - "penCoordinatorEmail": "ehoppnergj@youtube.com", - "penCoordinatorFax": "965-122-4801", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 949, - "schoolNumber": 58748, - "penCoordinatorName": "Reine Trigg", - "penCoordinatorEmail": "rtrigggk@about.me", - "penCoordinatorFax": "380-375-6734", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 421, - "schoolNumber": 84511, - "penCoordinatorName": "Elvira Burgher", - "penCoordinatorEmail": "eburghergl@yale.edu", - "penCoordinatorFax": "568-464-7489", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 986, - "schoolNumber": 13083, - "penCoordinatorName": "Mannie Mohammed", - "penCoordinatorEmail": "mmohammedgm@phpbb.com", - "penCoordinatorFax": "581-753-9011", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 311, - "schoolNumber": 56277, - "penCoordinatorName": "Nadeen Cheeseman", - "penCoordinatorEmail": "ncheesemangn@reuters.com", - "penCoordinatorFax": "565-682-7355", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 600, - "schoolNumber": 23523, - "penCoordinatorName": "Meade Mordin", - "penCoordinatorEmail": "mmordingo@mtv.com", - "penCoordinatorFax": "365-394-7339", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 518, - "schoolNumber": 39199, - "penCoordinatorName": "Leela Dibson", - "penCoordinatorEmail": "ldibsongp@bbb.org", - "penCoordinatorFax": "576-676-9547", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 612, - "schoolNumber": 64045, - "penCoordinatorName": "Chas Havard", - "penCoordinatorEmail": "chavardgq@symantec.com", - "penCoordinatorFax": "505-820-6097", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 658, - "schoolNumber": 35794, - "penCoordinatorName": "Raymond Swaffield", - "penCoordinatorEmail": "rswaffieldgr@japanpost.jp", - "penCoordinatorFax": "731-438-4213", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 946, - "schoolNumber": 51785, - "penCoordinatorName": "Gabbie Keay", - "penCoordinatorEmail": "gkeaygs@washington.edu", - "penCoordinatorFax": "942-567-5707", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 476, - "schoolNumber": 18261, - "penCoordinatorName": "Levey Chalk", - "penCoordinatorEmail": "lchalkgt@nih.gov", - "penCoordinatorFax": "464-163-7426", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 453, - "schoolNumber": 45074, - "penCoordinatorName": "Brodie Jickells", - "penCoordinatorEmail": "bjickellsgu@indiegogo.com", - "penCoordinatorFax": "243-638-8007", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 845, - "schoolNumber": 34209, - "penCoordinatorName": "Latrena Entreis", - "penCoordinatorEmail": "lentreisgv@examiner.com", - "penCoordinatorFax": "924-697-6699", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 562, - "schoolNumber": 24964, - "penCoordinatorName": "Ki Guppy", - "penCoordinatorEmail": "kguppygw@wp.com", - "penCoordinatorFax": "589-108-0063", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 387, - "schoolNumber": 83223, - "penCoordinatorName": "Cara Sinfield", - "penCoordinatorEmail": "csinfieldgx@xing.com", - "penCoordinatorFax": "699-654-7017", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 857, - "schoolNumber": 89724, - "penCoordinatorName": "Valencia Slite", - "penCoordinatorEmail": "vslitegy@smh.com.au", - "penCoordinatorFax": "664-435-8016", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 610, - "schoolNumber": 94213, - "penCoordinatorName": "Blinni Bax", - "penCoordinatorEmail": "bbaxgz@yolasite.com", - "penCoordinatorFax": "665-187-3547", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 570, - "schoolNumber": 60819, - "penCoordinatorName": "Paulita Piscot", - "penCoordinatorEmail": "ppiscoth0@si.edu", - "penCoordinatorFax": "214-387-3277", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 328, - "schoolNumber": 30837, - "penCoordinatorName": "Sullivan Jessope", - "penCoordinatorEmail": "sjessopeh1@github.io", - "penCoordinatorFax": "503-652-6214", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 854, - "schoolNumber": 48548, - "penCoordinatorName": "Kippie Hornung", - "penCoordinatorEmail": "khornungh2@123-reg.co.uk", - "penCoordinatorFax": "688-233-7413", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 363, - "schoolNumber": 67314, - "penCoordinatorName": "Arden Odby", - "penCoordinatorEmail": "aodbyh3@unicef.org", - "penCoordinatorFax": "415-183-7851", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 819, - "schoolNumber": 24552, - "penCoordinatorName": "Ivett Odgers", - "penCoordinatorEmail": "iodgersh4@mediafire.com", - "penCoordinatorFax": "662-542-3294", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 430, - "schoolNumber": 80780, - "penCoordinatorName": "Christyna MacArd", - "penCoordinatorEmail": "cmacardh5@photobucket.com", - "penCoordinatorFax": "834-820-7588", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 640, - "schoolNumber": 92808, - "penCoordinatorName": "Hi Colam", - "penCoordinatorEmail": "hcolamh6@surveymonkey.com", - "penCoordinatorFax": "857-856-8041", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 498, - "schoolNumber": 29913, - "penCoordinatorName": "Felicity Wymer", - "penCoordinatorEmail": "fwymerh7@sbwire.com", - "penCoordinatorFax": "626-717-3302", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 476, - "schoolNumber": 78078, - "penCoordinatorName": "Rad Sidwick", - "penCoordinatorEmail": "rsidwickh8@fema.gov", - "penCoordinatorFax": "382-514-2682", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 680, - "schoolNumber": 30646, - "penCoordinatorName": "Guthrie McLelland", - "penCoordinatorEmail": "gmclellandh9@bloglines.com", - "penCoordinatorFax": "766-756-6443", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 946, - "schoolNumber": 43696, - "penCoordinatorName": "Fonsie Buttery", - "penCoordinatorEmail": "fbutteryha@pcworld.com", - "penCoordinatorFax": "681-290-9446", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 633, - "schoolNumber": 49891, - "penCoordinatorName": "Mechelle Wetherald", - "penCoordinatorEmail": "mwetheraldhb@spiegel.de", - "penCoordinatorFax": "161-876-1531", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 272, - "schoolNumber": 62640, - "penCoordinatorName": "Scottie Dukelow", - "penCoordinatorEmail": "sdukelowhc@soundcloud.com", - "penCoordinatorFax": "940-117-1946", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 983, - "schoolNumber": 47721, - "penCoordinatorName": "Mareah Caines", - "penCoordinatorEmail": "mcaineshd@newyorker.com", - "penCoordinatorFax": "990-182-8432", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 988, - "schoolNumber": 92596, - "penCoordinatorName": "Valle Strathern", - "penCoordinatorEmail": "vstrathernhe@time.com", - "penCoordinatorFax": "239-833-8043", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 650, - "schoolNumber": 78443, - "penCoordinatorName": "Kalindi Caseley", - "penCoordinatorEmail": "kcaseleyhf@cisco.com", - "penCoordinatorFax": "445-344-1691", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 809, - "schoolNumber": 29573, - "penCoordinatorName": "Holden Embra", - "penCoordinatorEmail": "hembrahg@indiatimes.com", - "penCoordinatorFax": "578-280-0209", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 880, - "schoolNumber": 37647, - "penCoordinatorName": "Cynthea Shitliffe", - "penCoordinatorEmail": "cshitliffehh@exblog.jp", - "penCoordinatorFax": "964-301-8517", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 545, - "schoolNumber": 78653, - "penCoordinatorName": "Filberte Malenoir", - "penCoordinatorEmail": "fmalenoirhi@ucoz.com", - "penCoordinatorFax": "440-934-5355", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 314, - "schoolNumber": 76523, - "penCoordinatorName": "Faith Radwell", - "penCoordinatorEmail": "fradwellhj@fastcompany.com", - "penCoordinatorFax": "881-754-3312", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 553, - "schoolNumber": 21382, - "penCoordinatorName": "Penn Viner", - "penCoordinatorEmail": "pvinerhk@goo.gl", - "penCoordinatorFax": "803-158-0442", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 387, - "schoolNumber": 88070, - "penCoordinatorName": "Iosep Aggio", - "penCoordinatorEmail": "iaggiohl@zdnet.com", - "penCoordinatorFax": "280-478-8953", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 558, - "schoolNumber": 20066, - "penCoordinatorName": "Woody Lescop", - "penCoordinatorEmail": "wlescophm@wiley.com", - "penCoordinatorFax": "283-106-9166", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 696, - "schoolNumber": 33865, - "penCoordinatorName": "Felicity Corkel", - "penCoordinatorEmail": "fcorkelhn@geocities.jp", - "penCoordinatorFax": "454-833-8489", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 393, - "schoolNumber": 55347, - "penCoordinatorName": "Catlaina Wesker", - "penCoordinatorEmail": "cweskerho@gnu.org", - "penCoordinatorFax": "307-498-4304", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 968, - "schoolNumber": 70688, - "penCoordinatorName": "Cristionna Duffield", - "penCoordinatorEmail": "cduffieldhp@mlb.com", - "penCoordinatorFax": "509-852-9420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 920, - "schoolNumber": 40751, - "penCoordinatorName": "Avigdor Westberg", - "penCoordinatorEmail": "awestberghq@europa.eu", - "penCoordinatorFax": "774-443-5301", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 889, - "schoolNumber": 49469, - "penCoordinatorName": "Sander McFeat", - "penCoordinatorEmail": "smcfeathr@npr.org", - "penCoordinatorFax": "897-732-9420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 518, - "schoolNumber": 62565, - "penCoordinatorName": "Oralee Corwood", - "penCoordinatorEmail": "ocorwoodhs@squidoo.com", - "penCoordinatorFax": "374-824-2187", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 351, - "schoolNumber": 55341, - "penCoordinatorName": "Pennie Bevan", - "penCoordinatorEmail": "pbevanht@mysql.com", - "penCoordinatorFax": "150-345-7059", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 977, - "schoolNumber": 69803, - "penCoordinatorName": "Waverley Cowdroy", - "penCoordinatorEmail": "wcowdroyhu@unesco.org", - "penCoordinatorFax": "304-477-3694", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 220, - "schoolNumber": 93834, - "penCoordinatorName": "Ladonna Cawdron", - "penCoordinatorEmail": "lcawdronhv@nih.gov", - "penCoordinatorFax": "183-565-9487", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 983, - "schoolNumber": 49725, - "penCoordinatorName": "Maible Grimsdell", - "penCoordinatorEmail": "mgrimsdellhw@g.co", - "penCoordinatorFax": "792-285-1019", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 546, - "schoolNumber": 73165, - "penCoordinatorName": "Arleta Dymott", - "penCoordinatorEmail": "adymotthx@goodreads.com", - "penCoordinatorFax": "796-604-7914", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 848, - "schoolNumber": 29818, - "penCoordinatorName": "Armando Lowfill", - "penCoordinatorEmail": "alowfillhy@hao123.com", - "penCoordinatorFax": "863-154-2044", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 275, - "schoolNumber": 87698, - "penCoordinatorName": "Trevor Fullard", - "penCoordinatorEmail": "tfullardhz@statcounter.com", - "penCoordinatorFax": "903-334-6159", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 105, - "schoolNumber": 48209, - "penCoordinatorName": "Alvy MacNeachtain", - "penCoordinatorEmail": "amacneachtaini0@harvard.edu", - "penCoordinatorFax": "644-248-2653", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 458, - "schoolNumber": 90842, - "penCoordinatorName": "Bernarr Jeffcoate", - "penCoordinatorEmail": "bjeffcoatei1@ca.gov", - "penCoordinatorFax": "999-149-6115", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 413, - "schoolNumber": 48984, - "penCoordinatorName": "Alexia Kitteman", - "penCoordinatorEmail": "akittemani2@youtu.be", - "penCoordinatorFax": "839-522-3750", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 894, - "schoolNumber": 65770, - "penCoordinatorName": "Patton Beardwell", - "penCoordinatorEmail": "pbeardwelli3@nydailynews.com", - "penCoordinatorFax": "228-839-0230", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 157, - "schoolNumber": 10603, - "penCoordinatorName": "Micaela Juleff", - "penCoordinatorEmail": "mjuleffi4@ftc.gov", - "penCoordinatorFax": "410-922-3526", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 406, - "schoolNumber": 89791, - "penCoordinatorName": "Dunstan Danick", - "penCoordinatorEmail": "ddanicki5@friendfeed.com", - "penCoordinatorFax": "944-709-6282", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 911, - "schoolNumber": 15837, - "penCoordinatorName": "Dermot Hearnes", - "penCoordinatorEmail": "dhearnesi6@ifeng.com", - "penCoordinatorFax": "428-641-7467", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 826, - "schoolNumber": 96285, - "penCoordinatorName": "Miof mela Niemetz", - "penCoordinatorEmail": "mmelai7@salon.com", - "penCoordinatorFax": "314-534-1889", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 856, - "schoolNumber": 97492, - "penCoordinatorName": "Onofredo Leere", - "penCoordinatorEmail": "oleerei8@is.gd", - "penCoordinatorFax": "175-835-5938", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 676, - "schoolNumber": 71267, - "penCoordinatorName": "Christine Chugg", - "penCoordinatorEmail": "cchuggi9@godaddy.com", - "penCoordinatorFax": "475-667-0624", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 284, - "schoolNumber": 40051, - "penCoordinatorName": "Jodie Whitehall", - "penCoordinatorEmail": "jwhitehallia@chicagotribune.com", - "penCoordinatorFax": "264-941-8510", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 531, - "schoolNumber": 90965, - "penCoordinatorName": "Dicky Coggeshall", - "penCoordinatorEmail": "dcoggeshallib@phoca.cz", - "penCoordinatorFax": "283-408-8000", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 400, - "schoolNumber": 36004, - "penCoordinatorName": "Barry Nasi", - "penCoordinatorEmail": "bnasiic@bloglovin.com", - "penCoordinatorFax": "498-386-4962", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 306, - "schoolNumber": 36849, - "penCoordinatorName": "Daryl Worshall", - "penCoordinatorEmail": "dworshallid@usatoday.com", - "penCoordinatorFax": "514-325-8062", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 287, - "schoolNumber": 82069, - "penCoordinatorName": "Marcia Leverich", - "penCoordinatorEmail": "mleverichie@tumblr.com", - "penCoordinatorFax": "370-322-7874", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 251, - "schoolNumber": 28624, - "penCoordinatorName": "Marice Handke", - "penCoordinatorEmail": "mhandkeif@cbsnews.com", - "penCoordinatorFax": "483-464-4267", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 949, - "schoolNumber": 73418, - "penCoordinatorName": "Shelby Corah", - "penCoordinatorEmail": "scorahig@odnoklassniki.ru", - "penCoordinatorFax": "235-616-2384", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 251, - "schoolNumber": 63831, - "penCoordinatorName": "Miquela Iannetti", - "penCoordinatorEmail": "miannettiih@godaddy.com", - "penCoordinatorFax": "965-242-5761", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 325, - "schoolNumber": 42805, - "penCoordinatorName": "Llewellyn Alekseev", - "penCoordinatorEmail": "lalekseevii@over-blog.com", - "penCoordinatorFax": "805-679-7416", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 202, - "schoolNumber": 83337, - "penCoordinatorName": "Cody Snalom", - "penCoordinatorEmail": "csnalomij@wikimedia.org", - "penCoordinatorFax": "506-841-3145", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 165, - "schoolNumber": 82958, - "penCoordinatorName": "Torin Baltrushaitis", - "penCoordinatorEmail": "tbaltrushaitisik@seesaa.net", - "penCoordinatorFax": "235-958-0270", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 929, - "schoolNumber": 20753, - "penCoordinatorName": "Salomo Frede", - "penCoordinatorEmail": "sfredeil@clickbank.net", - "penCoordinatorFax": "762-512-8719", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 265, - "schoolNumber": 18986, - "penCoordinatorName": "Adriano Gouth", - "penCoordinatorEmail": "agouthim@walmart.com", - "penCoordinatorFax": "291-310-8893", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 541, - "schoolNumber": 26390, - "penCoordinatorName": "Meredith Amberg", - "penCoordinatorEmail": "mambergin@opera.com", - "penCoordinatorFax": "101-965-9227", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 114, - "schoolNumber": 78817, - "penCoordinatorName": "Trent Jaimez", - "penCoordinatorEmail": "tjaimezio@virginia.edu", - "penCoordinatorFax": "235-774-9536", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 219, - "schoolNumber": 85532, - "penCoordinatorName": "Shermy MacDiarmond", - "penCoordinatorEmail": "smacdiarmondip@tumblr.com", - "penCoordinatorFax": "750-113-0052", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 555, - "schoolNumber": 82945, - "penCoordinatorName": "Brockie Churms", - "penCoordinatorEmail": "bchurmsiq@bizjournals.com", - "penCoordinatorFax": "382-933-5961", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 191, - "schoolNumber": 96148, - "penCoordinatorName": "Chilton Purtell", - "penCoordinatorEmail": "cpurtellir@printfriendly.com", - "penCoordinatorFax": "193-638-7858", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 356, - "schoolNumber": 83880, - "penCoordinatorName": "Pascal Lanceter", - "penCoordinatorEmail": "planceteris@nydailynews.com", - "penCoordinatorFax": "966-728-1724", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 779, - "schoolNumber": 79002, - "penCoordinatorName": "Fern Conahy", - "penCoordinatorEmail": "fconahyit@unblog.fr", - "penCoordinatorFax": "152-989-8761", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 296, - "schoolNumber": 13286, - "penCoordinatorName": "Opaline Vacher", - "penCoordinatorEmail": "ovacheriu@bluehost.com", - "penCoordinatorFax": "459-342-2643", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 298, - "schoolNumber": 67910, - "penCoordinatorName": "Essa Pinnington", - "penCoordinatorEmail": "epinningtoniv@dot.gov", - "penCoordinatorFax": "256-947-9000", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 729, - "schoolNumber": 83399, - "penCoordinatorName": "Seana Hanne", - "penCoordinatorEmail": "shanneiw@tiny.cc", - "penCoordinatorFax": "982-883-5365", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 156, - "schoolNumber": 39340, - "penCoordinatorName": "Kass Waker", - "penCoordinatorEmail": "kwakerix@addtoany.com", - "penCoordinatorFax": "663-961-6737", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 740, - "schoolNumber": 37586, - "penCoordinatorName": "Paule Leyninye", - "penCoordinatorEmail": "pleyninyeiy@ycombinator.com", - "penCoordinatorFax": "560-884-9653", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 996, - "schoolNumber": 67914, - "penCoordinatorName": "Owen Belt", - "penCoordinatorEmail": "obeltiz@people.com.cn", - "penCoordinatorFax": "992-937-7612", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 272, - "schoolNumber": 63819, - "penCoordinatorName": "Junie Barmadier", - "penCoordinatorEmail": "jbarmadierj0@soundcloud.com", - "penCoordinatorFax": "425-649-2079", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 549, - "schoolNumber": 44997, - "penCoordinatorName": "Breena Stidson", - "penCoordinatorEmail": "bstidsonj1@alexa.com", - "penCoordinatorFax": "609-865-0155", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 757, - "schoolNumber": 11266, - "penCoordinatorName": "Denyse Beevors", - "penCoordinatorEmail": "dbeevorsj2@ca.gov", - "penCoordinatorFax": "324-819-1555", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 548, - "schoolNumber": 17705, - "penCoordinatorName": "Parrnell Darridon", - "penCoordinatorEmail": "pdarridonj3@wikimedia.org", - "penCoordinatorFax": "650-166-7678", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 364, - "schoolNumber": 84599, - "penCoordinatorName": "Buck Attreed", - "penCoordinatorEmail": "battreedj4@phoca.cz", - "penCoordinatorFax": "146-411-8353", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 787, - "schoolNumber": 94899, - "penCoordinatorName": "Leshia Paolicchi", - "penCoordinatorEmail": "lpaolicchij5@blogs.com", - "penCoordinatorFax": "162-162-3886", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 230, - "schoolNumber": 14445, - "penCoordinatorName": "Philippa Ellen", - "penCoordinatorEmail": "pellenj6@4shared.com", - "penCoordinatorFax": "452-398-3158", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 604, - "schoolNumber": 18466, - "penCoordinatorName": "Weber Gaitley", - "penCoordinatorEmail": "wgaitleyj7@mozilla.org", - "penCoordinatorFax": "640-196-4069", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 815, - "schoolNumber": 85849, - "penCoordinatorName": "Jewelle Tripp", - "penCoordinatorEmail": "jtrippj8@google.it", - "penCoordinatorFax": "266-608-5776", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 345, - "schoolNumber": 76944, - "penCoordinatorName": "Broddy Ullock", - "penCoordinatorEmail": "bullockj9@unc.edu", - "penCoordinatorFax": "856-263-5361", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 111, - "schoolNumber": 23630, - "penCoordinatorName": "Tudor Roseborough", - "penCoordinatorEmail": "troseboroughja@miitbeian.gov.cn", - "penCoordinatorFax": "208-499-8675", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 652, - "schoolNumber": 53213, - "penCoordinatorName": "Sadella Stonary", - "penCoordinatorEmail": "sstonaryjb@cbc.ca", - "penCoordinatorFax": "509-430-3519", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 155, - "schoolNumber": 54540, - "penCoordinatorName": "Vidovic Arkow", - "penCoordinatorEmail": "varkowjc@whitehouse.gov", - "penCoordinatorFax": "540-738-5838", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 410, - "schoolNumber": 39377, - "penCoordinatorName": "Jody Rust", - "penCoordinatorEmail": "jrustjd@mlb.com", - "penCoordinatorFax": "917-916-1965", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 802, - "schoolNumber": 19901, - "penCoordinatorName": "Mareah Shireff", - "penCoordinatorEmail": "mshireffje@blinklist.com", - "penCoordinatorFax": "784-291-7658", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 318, - "schoolNumber": 12766, - "penCoordinatorName": "Hinda Grieswood", - "penCoordinatorEmail": "hgrieswoodjf@marketwatch.com", - "penCoordinatorFax": "441-942-2420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 817, - "schoolNumber": 61902, - "penCoordinatorName": "Colby MacVean", - "penCoordinatorEmail": "cmacveanjg@addthis.com", - "penCoordinatorFax": "469-361-3878", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 851, - "schoolNumber": 52891, - "penCoordinatorName": "Sonya Wreakes", - "penCoordinatorEmail": "swreakesjh@usnews.com", - "penCoordinatorFax": "751-547-4335", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 553, - "schoolNumber": 58042, - "penCoordinatorName": "Ilse Cabbell", - "penCoordinatorEmail": "icabbellji@woothemes.com", - "penCoordinatorFax": "539-768-0583", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 256, - "schoolNumber": 69554, - "penCoordinatorName": "Athena Southwood", - "penCoordinatorEmail": "asouthwoodjj@example.com", - "penCoordinatorFax": "463-356-0387", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 688, - "schoolNumber": 58334, - "penCoordinatorName": "Kalindi Edmondson", - "penCoordinatorEmail": "kedmondsonjk@ebay.co.uk", - "penCoordinatorFax": "514-247-3146", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 193, - "schoolNumber": 56742, - "penCoordinatorName": "Tudor Roderighi", - "penCoordinatorEmail": "troderighijl@hc360.com", - "penCoordinatorFax": "813-815-1263", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 534, - "schoolNumber": 77597, - "penCoordinatorName": "Laure Amies", - "penCoordinatorEmail": "lamiesjm@unicef.org", - "penCoordinatorFax": "281-842-4251", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 937, - "schoolNumber": 88936, - "penCoordinatorName": "Jess Klulicek", - "penCoordinatorEmail": "jklulicekjn@soundcloud.com", - "penCoordinatorFax": "719-235-1776", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 453, - "schoolNumber": 52787, - "penCoordinatorName": "Cary Foister", - "penCoordinatorEmail": "cfoisterjo@icio.us", - "penCoordinatorFax": "573-306-4921", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 786, - "schoolNumber": 30876, - "penCoordinatorName": "Susann Pitrelli", - "penCoordinatorEmail": "spitrellijp@cbslocal.com", - "penCoordinatorFax": "386-773-3017", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 942, - "schoolNumber": 61954, - "penCoordinatorName": "Gabrila Diamond", - "penCoordinatorEmail": "gdiamondjq@accuweather.com", - "penCoordinatorFax": "464-573-7340", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 233, - "schoolNumber": 67641, - "penCoordinatorName": "Monika Vittel", - "penCoordinatorEmail": "mvitteljr@nih.gov", - "penCoordinatorFax": "770-325-3022", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 734, - "schoolNumber": 32658, - "penCoordinatorName": "Idalia Gumery", - "penCoordinatorEmail": "igumeryjs@umn.edu", - "penCoordinatorFax": "852-428-2440", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 423, - "schoolNumber": 59334, - "penCoordinatorName": "Hollis Tong", - "penCoordinatorEmail": "htongjt@last.fm", - "penCoordinatorFax": "497-416-7933", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 620, - "schoolNumber": 35065, - "penCoordinatorName": "Meir Zaczek", - "penCoordinatorEmail": "mzaczekju@omniture.com", - "penCoordinatorFax": "588-174-3431", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 694, - "schoolNumber": 50046, - "penCoordinatorName": "Yorke Wallenger", - "penCoordinatorEmail": "ywallengerjv@gizmodo.com", - "penCoordinatorFax": "754-322-6847", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 163, - "schoolNumber": 87560, - "penCoordinatorName": "Cedric Aldham", - "penCoordinatorEmail": "caldhamjw@cornell.edu", - "penCoordinatorFax": "148-344-0699", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 908, - "schoolNumber": 60705, - "penCoordinatorName": "Reinold Poge", - "penCoordinatorEmail": "rpogejx@ox.ac.uk", - "penCoordinatorFax": "360-221-3518", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 111, - "schoolNumber": 40645, - "penCoordinatorName": "Ruthie Dinneges", - "penCoordinatorEmail": "rdinnegesjy@dailymotion.com", - "penCoordinatorFax": "333-799-6791", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 808, - "schoolNumber": 25327, - "penCoordinatorName": "Arabella Anchor", - "penCoordinatorEmail": "aanchorjz@nba.com", - "penCoordinatorFax": "726-453-9421", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 179, - "schoolNumber": 58952, - "penCoordinatorName": "Jillene Trusslove", - "penCoordinatorEmail": "jtrusslovek0@dot.gov", - "penCoordinatorFax": "877-623-2054", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 949, - "schoolNumber": 54405, - "penCoordinatorName": "Aurelia Dobbs", - "penCoordinatorEmail": "adobbsk1@prweb.com", - "penCoordinatorFax": "322-816-9211", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 204, - "schoolNumber": 26499, - "penCoordinatorName": "Rafaela Cosstick", - "penCoordinatorEmail": "rcosstickk2@cyberchimps.com", - "penCoordinatorFax": "786-953-1455", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 694, - "schoolNumber": 96568, - "penCoordinatorName": "Phylys Apfel", - "penCoordinatorEmail": "papfelk3@businessweek.com", - "penCoordinatorFax": "747-385-6374", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 839, - "schoolNumber": 70496, - "penCoordinatorName": "Brade Berzons", - "penCoordinatorEmail": "bberzonsk4@statcounter.com", - "penCoordinatorFax": "160-287-2382", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 966, - "schoolNumber": 53831, - "penCoordinatorName": "Blanca Pearcehouse", - "penCoordinatorEmail": "bpearcehousek5@example.com", - "penCoordinatorFax": "395-202-6312", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 852, - "schoolNumber": 26121, - "penCoordinatorName": "Raynell Jozef", - "penCoordinatorEmail": "rjozefk6@google.nl", - "penCoordinatorFax": "788-776-9374", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 242, - "schoolNumber": 77708, - "penCoordinatorName": "Abel Grishukhin", - "penCoordinatorEmail": "agrishukhink7@prweb.com", - "penCoordinatorFax": "997-122-2139", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 322, - "schoolNumber": 58771, - "penCoordinatorName": "Perry Doey", - "penCoordinatorEmail": "pdoeyk8@apache.org", - "penCoordinatorFax": "431-801-7135", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 557, - "schoolNumber": 56096, - "penCoordinatorName": "Jemimah Round", - "penCoordinatorEmail": "jroundk9@reference.com", - "penCoordinatorFax": "216-941-0533", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 810, - "schoolNumber": 35160, - "penCoordinatorName": "Hansiain Capper", - "penCoordinatorEmail": "hcapperka@loc.gov", - "penCoordinatorFax": "968-900-5161", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 657, - "schoolNumber": 78786, - "penCoordinatorName": "Lethia Stoves", - "penCoordinatorEmail": "lstoveskb@nationalgeographic.com", - "penCoordinatorFax": "898-605-2039", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 904, - "schoolNumber": 65502, - "penCoordinatorName": "Angelina Rennock", - "penCoordinatorEmail": "arennockkc@weebly.com", - "penCoordinatorFax": "221-461-6440", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 109, - "schoolNumber": 74360, - "penCoordinatorName": "Barth Wellman", - "penCoordinatorEmail": "bwellmankd@elegantthemes.com", - "penCoordinatorFax": "574-981-1483", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 824, - "schoolNumber": 51698, - "penCoordinatorName": "Stafford Wheelton", - "penCoordinatorEmail": "swheeltonke@csmonitor.com", - "penCoordinatorFax": "323-849-0828", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 346, - "schoolNumber": 61225, - "penCoordinatorName": "Arley Arnao", - "penCoordinatorEmail": "aarnaokf@furl.net", - "penCoordinatorFax": "392-504-5101", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 809, - "schoolNumber": 88153, - "penCoordinatorName": "Marv Mishaw", - "penCoordinatorEmail": "mmishawkg@nps.gov", - "penCoordinatorFax": "996-933-0772", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 500, - "schoolNumber": 58041, - "penCoordinatorName": "Carlen Pauel", - "penCoordinatorEmail": "cpauelkh@google.nl", - "penCoordinatorFax": "624-342-9333", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 687, - "schoolNumber": 15566, - "penCoordinatorName": "Goldy Scamadin", - "penCoordinatorEmail": "gscamadinki@twitpic.com", - "penCoordinatorFax": "258-202-4455", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 967, - "schoolNumber": 10586, - "penCoordinatorName": "Paulo Wanka", - "penCoordinatorEmail": "pwankakj@unesco.org", - "penCoordinatorFax": "768-814-6469", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 529, - "schoolNumber": 34848, - "penCoordinatorName": "Lonna Beggini", - "penCoordinatorEmail": "lbegginikk@si.edu", - "penCoordinatorFax": "260-229-1523", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 738, - "schoolNumber": 42951, - "penCoordinatorName": "Lorne Potteril", - "penCoordinatorEmail": "lpotterilkl@tinypic.com", - "penCoordinatorFax": "817-395-7367", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 882, - "schoolNumber": 95629, - "penCoordinatorName": "Dorri Spragg", - "penCoordinatorEmail": "dspraggkm@unc.edu", - "penCoordinatorFax": "350-181-6427", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 902, - "schoolNumber": 31410, - "penCoordinatorName": "Nikolaos Pummery", - "penCoordinatorEmail": "npummerykn@noaa.gov", - "penCoordinatorFax": "770-524-9685", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 932, - "schoolNumber": 46192, - "penCoordinatorName": "Butch Jerrold", - "penCoordinatorEmail": "bjerroldko@delicious.com", - "penCoordinatorFax": "582-419-6677", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 523, - "schoolNumber": 42084, - "penCoordinatorName": "Desi Lowy", - "penCoordinatorEmail": "dlowykp@vinaora.com", - "penCoordinatorFax": "860-436-6377", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 149, - "schoolNumber": 10709, - "penCoordinatorName": "Mychal Gaytor", - "penCoordinatorEmail": "mgaytorkq@whitehouse.gov", - "penCoordinatorFax": "142-462-5430", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 230, - "schoolNumber": 68046, - "penCoordinatorName": "Pollyanna Astlet", - "penCoordinatorEmail": "pastletkr@imdb.com", - "penCoordinatorFax": "415-241-1943", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 629, - "schoolNumber": 27003, - "penCoordinatorName": "Tedd Goodspeed", - "penCoordinatorEmail": "tgoodspeedks@prlog.org", - "penCoordinatorFax": "749-617-5751", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 249, - "schoolNumber": 21026, - "penCoordinatorName": "Angus Acosta", - "penCoordinatorEmail": "aacostakt@trellian.com", - "penCoordinatorFax": "299-428-2567", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 989, - "schoolNumber": 38127, - "penCoordinatorName": "Zacharie Papes", - "penCoordinatorEmail": "zpapesku@last.fm", - "penCoordinatorFax": "368-628-5521", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 534, - "schoolNumber": 69014, - "penCoordinatorName": "Leontine Seebright", - "penCoordinatorEmail": "lseebrightkv@fema.gov", - "penCoordinatorFax": "459-198-8709", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 647, - "schoolNumber": 83148, - "penCoordinatorName": "Norman Jiruca", - "penCoordinatorEmail": "njirucakw@vistaprint.com", - "penCoordinatorFax": "165-794-1132", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 345, - "schoolNumber": 79419, - "penCoordinatorName": "Kristy Genney", - "penCoordinatorEmail": "kgenneykx@go.com", - "penCoordinatorFax": "513-883-5396", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 656, - "schoolNumber": 73707, - "penCoordinatorName": "Leelah Richmont", - "penCoordinatorEmail": "lrichmontky@bbc.co.uk", - "penCoordinatorFax": "404-632-4666", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 315, - "schoolNumber": 18427, - "penCoordinatorName": "Welbie Sykes", - "penCoordinatorEmail": "wsykeskz@usatoday.com", - "penCoordinatorFax": "675-884-2987", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 181, - "schoolNumber": 98185, - "penCoordinatorName": "Franklyn Pitceathly", - "penCoordinatorEmail": "fpitceathlyl0@g.co", - "penCoordinatorFax": "129-364-4026", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 454, - "schoolNumber": 87994, - "penCoordinatorName": "Leisha Simunek", - "penCoordinatorEmail": "lsimunekl1@hostgator.com", - "penCoordinatorFax": "619-683-6063", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 832, - "schoolNumber": 20476, - "penCoordinatorName": "Tildy Demonge", - "penCoordinatorEmail": "tdemongel2@dmoz.org", - "penCoordinatorFax": "864-266-5538", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 335, - "schoolNumber": 58837, - "penCoordinatorName": "Mimi Pocklington", - "penCoordinatorEmail": "mpocklingtonl3@mozilla.org", - "penCoordinatorFax": "917-476-9597", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 226, - "schoolNumber": 28460, - "penCoordinatorName": "Gwyn Bysshe", - "penCoordinatorEmail": "gbysshel4@epa.gov", - "penCoordinatorFax": "764-642-4672", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 345, - "schoolNumber": 95968, - "penCoordinatorName": "Paulita Limbert", - "penCoordinatorEmail": "plimbertl5@mail.ru", - "penCoordinatorFax": "239-173-3599", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 904, - "schoolNumber": 96544, - "penCoordinatorName": "Randy Keough", - "penCoordinatorEmail": "rkeoughl6@army.mil", - "penCoordinatorFax": "920-940-5622", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 537, - "schoolNumber": 16095, - "penCoordinatorName": "Randal McNeigh", - "penCoordinatorEmail": "rmcneighl7@wordpress.com", - "penCoordinatorFax": "780-825-5428", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 689, - "schoolNumber": 30803, - "penCoordinatorName": "Jaymie Hallen", - "penCoordinatorEmail": "jhallenl8@deviantart.com", - "penCoordinatorFax": "996-365-3758", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 231, - "schoolNumber": 45499, - "penCoordinatorName": "Neille Fenney", - "penCoordinatorEmail": "nfenneyl9@epa.gov", - "penCoordinatorFax": "476-767-5690", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 799, - "schoolNumber": 64651, - "penCoordinatorName": "Charlotte Colvin", - "penCoordinatorEmail": "ccolvinla@t-online.de", - "penCoordinatorFax": "545-248-8907", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 763, - "schoolNumber": 73051, - "penCoordinatorName": "Suellen Levinge", - "penCoordinatorEmail": "slevingelb@com.com", - "penCoordinatorFax": "549-260-4908", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 430, - "schoolNumber": 78192, - "penCoordinatorName": "Malena Eam", - "penCoordinatorEmail": "meamlc@stumbleupon.com", - "penCoordinatorFax": "199-356-4443", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 316, - "schoolNumber": 92908, - "penCoordinatorName": "Vanya Castagne", - "penCoordinatorEmail": "vcastagneld@dmoz.org", - "penCoordinatorFax": "235-396-3015", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 390, - "schoolNumber": 52350, - "penCoordinatorName": "Nicholle Pipping", - "penCoordinatorEmail": "npippingle@godaddy.com", - "penCoordinatorFax": "486-102-4875", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 788, - "schoolNumber": 21076, - "penCoordinatorName": "Dugald Coey", - "penCoordinatorEmail": "dcoeylf@sciencedirect.com", - "penCoordinatorFax": "401-652-4246", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 972, - "schoolNumber": 25343, - "penCoordinatorName": "Sheela Pinock", - "penCoordinatorEmail": "spinocklg@reddit.com", - "penCoordinatorFax": "897-876-9186", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 646, - "schoolNumber": 30020, - "penCoordinatorName": "Ceciley Pessold", - "penCoordinatorEmail": "cpessoldlh@ted.com", - "penCoordinatorFax": "405-313-2370", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 331, - "schoolNumber": 95046, - "penCoordinatorName": "Henriette Colley", - "penCoordinatorEmail": "hcolleyli@vimeo.com", - "penCoordinatorFax": "878-443-8454", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 399, - "schoolNumber": 97697, - "penCoordinatorName": "Davita Rudyard", - "penCoordinatorEmail": "drudyardlj@exblog.jp", - "penCoordinatorFax": "628-197-0213", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 976, - "schoolNumber": 78392, - "penCoordinatorName": "Riki Brikner", - "penCoordinatorEmail": "rbriknerlk@free.fr", - "penCoordinatorFax": "849-776-6488", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 678, - "schoolNumber": 22556, - "penCoordinatorName": "Maren Ivanovic", - "penCoordinatorEmail": "mivanovicll@sciencedirect.com", - "penCoordinatorFax": "835-399-6244", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 252, - "schoolNumber": 93583, - "penCoordinatorName": "Bruce Goudie", - "penCoordinatorEmail": "bgoudielm@devhub.com", - "penCoordinatorFax": "654-726-9027", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 503, - "schoolNumber": 77401, - "penCoordinatorName": "Tracee Matten", - "penCoordinatorEmail": "tmattenln@hugedomains.com", - "penCoordinatorFax": "687-921-0884", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 967, - "schoolNumber": 88807, - "penCoordinatorName": "Reinwald Premble", - "penCoordinatorEmail": "rpremblelo@newsvine.com", - "penCoordinatorFax": "609-799-4165", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 214, - "schoolNumber": 32233, - "penCoordinatorName": "Isis Tesmond", - "penCoordinatorEmail": "itesmondlp@shop-pro.jp", - "penCoordinatorFax": "808-138-6424", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 279, - "schoolNumber": 19248, - "penCoordinatorName": "Raphaela Howe", - "penCoordinatorEmail": "rhowelq@360.cn", - "penCoordinatorFax": "847-941-3654", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 644, - "schoolNumber": 42354, - "penCoordinatorName": "Salem Adolf", - "penCoordinatorEmail": "sadolflr@netvibes.com", - "penCoordinatorFax": "957-354-0561", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 876, - "schoolNumber": 10694, - "penCoordinatorName": "Fidelity Kenneford", - "penCoordinatorEmail": "fkennefordls@booking.com", - "penCoordinatorFax": "673-304-7844", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 751, - "schoolNumber": 36930, - "penCoordinatorName": "Tiffanie Sheal", - "penCoordinatorEmail": "tsheallt@sina.com.cn", - "penCoordinatorFax": "151-775-5689", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 866, - "schoolNumber": 31307, - "penCoordinatorName": "Xymenes Witts", - "penCoordinatorEmail": "xwittslu@over-blog.com", - "penCoordinatorFax": "299-537-1638", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 687, - "schoolNumber": 88369, - "penCoordinatorName": "Morten Ciottoi", - "penCoordinatorEmail": "mciottoilv@phpbb.com", - "penCoordinatorFax": "372-942-8064", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 104, - "schoolNumber": 18600, - "penCoordinatorName": "Kate Bettington", - "penCoordinatorEmail": "kbettingtonlw@example.com", - "penCoordinatorFax": "639-900-6987", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 278, - "schoolNumber": 70360, - "penCoordinatorName": "Amalea Kleinbaum", - "penCoordinatorEmail": "akleinbaumlx@cocolog-nifty.com", - "penCoordinatorFax": "891-939-0989", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 688, - "schoolNumber": 85736, - "penCoordinatorName": "Lew Ganny", - "penCoordinatorEmail": "lgannyly@amazon.com", - "penCoordinatorFax": "847-123-1199", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 978, - "schoolNumber": 12054, - "penCoordinatorName": "Cahra Konig", - "penCoordinatorEmail": "ckoniglz@webmd.com", - "penCoordinatorFax": "796-610-1041", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 825, - "schoolNumber": 17728, - "penCoordinatorName": "Cosette Grassick", - "penCoordinatorEmail": "cgrassickm0@jimdo.com", - "penCoordinatorFax": "533-500-4944", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 155, - "schoolNumber": 45738, - "penCoordinatorName": "Trevar Hadwick", - "penCoordinatorEmail": "thadwickm1@multiply.com", - "penCoordinatorFax": "588-674-0458", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 161, - "schoolNumber": 89352, - "penCoordinatorName": "Tate Bruyett", - "penCoordinatorEmail": "tbruyettm2@nhs.uk", - "penCoordinatorFax": "172-299-4382", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 586, - "schoolNumber": 36619, - "penCoordinatorName": "Phelia Klimkowski", - "penCoordinatorEmail": "pklimkowskim3@bloglovin.com", - "penCoordinatorFax": "728-919-8042", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 157, - "schoolNumber": 18659, - "penCoordinatorName": "Celestyn Lecky", - "penCoordinatorEmail": "cleckym4@desdev.cn", - "penCoordinatorFax": "598-336-6404", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 488, - "schoolNumber": 92865, - "penCoordinatorName": "Darill Plose", - "penCoordinatorEmail": "dplosem5@acquirethisname.com", - "penCoordinatorFax": "225-201-6502", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 789, - "schoolNumber": 78389, - "penCoordinatorName": "Elane Cersey", - "penCoordinatorEmail": "ecerseym6@technorati.com", - "penCoordinatorFax": "256-237-6118", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 537, - "schoolNumber": 60553, - "penCoordinatorName": "Kendra Harriott", - "penCoordinatorEmail": "kharriottm7@bloglines.com", - "penCoordinatorFax": "829-600-0064", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 763, - "schoolNumber": 73471, - "penCoordinatorName": "Alric Elsmore", - "penCoordinatorEmail": "aelsmorem8@opensource.org", - "penCoordinatorFax": "829-369-8745", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 206, - "schoolNumber": 49308, - "penCoordinatorName": "Frederigo Aumerle", - "penCoordinatorEmail": "faumerlem9@google.co.jp", - "penCoordinatorFax": "891-214-0353", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 343, - "schoolNumber": 96624, - "penCoordinatorName": "Tomlin Stepney", - "penCoordinatorEmail": "tstepneyma@google.co.jp", - "penCoordinatorFax": "428-566-2206", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 408, - "schoolNumber": 41918, - "penCoordinatorName": "Stewart Lardnar", - "penCoordinatorEmail": "slardnarmb@youtu.be", - "penCoordinatorFax": "207-572-8867", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 331, - "schoolNumber": 27828, - "penCoordinatorName": "Fanchette Gabb", - "penCoordinatorEmail": "fgabbmc@ow.ly", - "penCoordinatorFax": "576-462-1440", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 994, - "schoolNumber": 46936, - "penCoordinatorName": "Evvy Patnelli", - "penCoordinatorEmail": "epatnellimd@nhs.uk", - "penCoordinatorFax": "460-275-0386", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 892, - "schoolNumber": 37372, - "penCoordinatorName": "Erica Dimitriou", - "penCoordinatorEmail": "edimitrioume@buzzfeed.com", - "penCoordinatorFax": "838-557-1979", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 875, - "schoolNumber": 23365, - "penCoordinatorName": "Webster Loughman", - "penCoordinatorEmail": "wloughmanmf@illinois.edu", - "penCoordinatorFax": "130-412-5082", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 417, - "schoolNumber": 28334, - "penCoordinatorName": "Marylynne Lenaghen", - "penCoordinatorEmail": "mlenaghenmg@elegantthemes.com", - "penCoordinatorFax": "901-268-1922", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 592, - "schoolNumber": 47648, - "penCoordinatorName": "Benn Manssuer", - "penCoordinatorEmail": "bmanssuermh@dell.com", - "penCoordinatorFax": "554-903-1803", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 361, - "schoolNumber": 34082, - "penCoordinatorName": "Liuka Popley", - "penCoordinatorEmail": "lpopleymi@etsy.com", - "penCoordinatorFax": "319-678-5327", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 172, - "schoolNumber": 76254, - "penCoordinatorName": "Gardner Gouldbourn", - "penCoordinatorEmail": "ggouldbournmj@ovh.net", - "penCoordinatorFax": "795-171-3821", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 870, - "schoolNumber": 88207, - "penCoordinatorName": "Merola Attoe", - "penCoordinatorEmail": "mattoemk@ask.com", - "penCoordinatorFax": "937-347-7550", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 977, - "schoolNumber": 16628, - "penCoordinatorName": "Amii De Bruyn", - "penCoordinatorEmail": "ademl@cpanel.net", - "penCoordinatorFax": "991-923-1587", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 344, - "schoolNumber": 62246, - "penCoordinatorName": "Mil Kett", - "penCoordinatorEmail": "mkettmm@reverbnation.com", - "penCoordinatorFax": "948-537-9835", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 431, - "schoolNumber": 26112, - "penCoordinatorName": "Enriqueta Manneville", - "penCoordinatorEmail": "emannevillemn@eventbrite.com", - "penCoordinatorFax": "499-730-2629", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 757, - "schoolNumber": 22898, - "penCoordinatorName": "Rosina Korneichik", - "penCoordinatorEmail": "rkorneichikmo@toplist.cz", - "penCoordinatorFax": "506-553-6246", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 135, - "schoolNumber": 75746, - "penCoordinatorName": "Ash Ranby", - "penCoordinatorEmail": "aranbymp@ebay.co.uk", - "penCoordinatorFax": "227-811-8339", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 845, - "schoolNumber": 58138, - "penCoordinatorName": "Asher Dowdney", - "penCoordinatorEmail": "adowdneymq@t.co", - "penCoordinatorFax": "578-311-9055", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 873, - "schoolNumber": 63988, - "penCoordinatorName": "Caesar Greaves", - "penCoordinatorEmail": "cgreavesmr@bluehost.com", - "penCoordinatorFax": "800-104-3537", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 151, - "schoolNumber": 22365, - "penCoordinatorName": "Beverie Schnieder", - "penCoordinatorEmail": "bschniederms@illinois.edu", - "penCoordinatorFax": "645-802-2796", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 162, - "schoolNumber": 37163, - "penCoordinatorName": "Baxie Fetters", - "penCoordinatorEmail": "bfettersmt@kickstarter.com", - "penCoordinatorFax": "883-100-0314", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 490, - "schoolNumber": 22408, - "penCoordinatorName": "Janelle Moorcraft", - "penCoordinatorEmail": "jmoorcraftmu@dailymail.co.uk", - "penCoordinatorFax": "329-498-4740", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 578, - "schoolNumber": 62864, - "penCoordinatorName": "Moise Wharram", - "penCoordinatorEmail": "mwharrammv@engadget.com", - "penCoordinatorFax": "130-983-5006", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 854, - "schoolNumber": 91485, - "penCoordinatorName": "Mei Stainland", - "penCoordinatorEmail": "mstainlandmw@nasa.gov", - "penCoordinatorFax": "245-556-3427", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 730, - "schoolNumber": 91711, - "penCoordinatorName": "Kenny Purdy", - "penCoordinatorEmail": "kpurdymx@samsung.com", - "penCoordinatorFax": "743-640-4602", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 252, - "schoolNumber": 33260, - "penCoordinatorName": "Kinnie L'oiseau", - "penCoordinatorEmail": "kloiseaumy@wikipedia.org", - "penCoordinatorFax": "104-814-2289", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 691, - "schoolNumber": 16169, - "penCoordinatorName": "Adan Legg", - "penCoordinatorEmail": "aleggmz@miibeian.gov.cn", - "penCoordinatorFax": "217-249-4659", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 315, - "schoolNumber": 30014, - "penCoordinatorName": "Bjorn Trimming", - "penCoordinatorEmail": "btrimmingn0@ihg.com", - "penCoordinatorFax": "503-606-4478", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 375, - "schoolNumber": 44984, - "penCoordinatorName": "Brett Matyushonok", - "penCoordinatorEmail": "bmatyushonokn1@usda.gov", - "penCoordinatorFax": "605-586-7498", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 146, - "schoolNumber": 36248, - "penCoordinatorName": "Valeria Bartoszinski", - "penCoordinatorEmail": "vbartoszinskin2@booking.com", - "penCoordinatorFax": "138-526-4995", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 690, - "schoolNumber": 63675, - "penCoordinatorName": "Haroun Brack", - "penCoordinatorEmail": "hbrackn3@hugedomains.com", - "penCoordinatorFax": "977-232-9207", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 697, - "schoolNumber": 24025, - "penCoordinatorName": "Darice Nuttey", - "penCoordinatorEmail": "dnutteyn4@taobao.com", - "penCoordinatorFax": "895-618-2592", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 125, - "schoolNumber": 56207, - "penCoordinatorName": "Portie Stit", - "penCoordinatorEmail": "pstitn5@icq.com", - "penCoordinatorFax": "918-208-7994", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 398, - "schoolNumber": 28226, - "penCoordinatorName": "Florinda Chardin", - "penCoordinatorEmail": "fchardinn6@meetup.com", - "penCoordinatorFax": "786-315-9442", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 873, - "schoolNumber": 32116, - "penCoordinatorName": "Gabie Gonzalez", - "penCoordinatorEmail": "ggonzalezn7@google.com", - "penCoordinatorFax": "263-675-0756", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 103, - "schoolNumber": 23098, - "penCoordinatorName": "Lenore Stendall", - "penCoordinatorEmail": "lstendalln8@arizona.edu", - "penCoordinatorFax": "691-177-0604", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 812, - "schoolNumber": 29974, - "penCoordinatorName": "Harman Gaskins", - "penCoordinatorEmail": "hgaskinsn9@ask.com", - "penCoordinatorFax": "640-759-0911", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 561, - "schoolNumber": 65413, - "penCoordinatorName": "Rosabella Toghill", - "penCoordinatorEmail": "rtoghillna@mayoclinic.com", - "penCoordinatorFax": "757-106-2163", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 921, - "schoolNumber": 45879, - "penCoordinatorName": "Rahal Brydell", - "penCoordinatorEmail": "rbrydellnb@free.fr", - "penCoordinatorFax": "431-376-0553", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 109, - "schoolNumber": 21213, - "penCoordinatorName": "Rina Crus", - "penCoordinatorEmail": "rcrusnc@t.co", - "penCoordinatorFax": "730-277-9345", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 850, - "schoolNumber": 73249, - "penCoordinatorName": "Gerek Vasilchenko", - "penCoordinatorEmail": "gvasilchenkond@nytimes.com", - "penCoordinatorFax": "718-693-4180", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 810, - "schoolNumber": 65426, - "penCoordinatorName": "Haley Leng", - "penCoordinatorEmail": "hlengne@quantcast.com", - "penCoordinatorFax": "339-630-4016", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 602, - "schoolNumber": 27793, - "penCoordinatorName": "Bald Shuttlewood", - "penCoordinatorEmail": "bshuttlewoodnf@nifty.com", - "penCoordinatorFax": "310-377-3740", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 605, - "schoolNumber": 79970, - "penCoordinatorName": "Krista Server", - "penCoordinatorEmail": "kserverng@java.com", - "penCoordinatorFax": "871-343-5188", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 470, - "schoolNumber": 20505, - "penCoordinatorName": "Iggy Brookton", - "penCoordinatorEmail": "ibrooktonnh@hp.com", - "penCoordinatorFax": "403-420-2446", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 771, - "schoolNumber": 10975, - "penCoordinatorName": "Gretchen Eltone", - "penCoordinatorEmail": "geltoneni@addtoany.com", - "penCoordinatorFax": "857-427-0238", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 686, - "schoolNumber": 86446, - "penCoordinatorName": "Brittany Avraam", - "penCoordinatorEmail": "bavraamnj@yale.edu", - "penCoordinatorFax": "679-153-6143", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 324, - "schoolNumber": 89311, - "penCoordinatorName": "Leelah McClaurie", - "penCoordinatorEmail": "lmcclaurienk@webs.com", - "penCoordinatorFax": "216-703-6872", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 264, - "schoolNumber": 65665, - "penCoordinatorName": "Sallee De Miranda", - "penCoordinatorEmail": "sdenl@cdbaby.com", - "penCoordinatorFax": "321-683-5316", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 177, - "schoolNumber": 58796, - "penCoordinatorName": "Rikki Swaddle", - "penCoordinatorEmail": "rswaddlenm@ft.com", - "penCoordinatorFax": "495-504-4644", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 584, - "schoolNumber": 95557, - "penCoordinatorName": "Malissia Gracey", - "penCoordinatorEmail": "mgraceynn@cnet.com", - "penCoordinatorFax": "750-704-9147", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 384, - "schoolNumber": 55417, - "penCoordinatorName": "Rosemonde MacGraith", - "penCoordinatorEmail": "rmacgraithno@google.ru", - "penCoordinatorFax": "274-143-8426", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 456, - "schoolNumber": 51176, - "penCoordinatorName": "Alfie Durtnal", - "penCoordinatorEmail": "adurtnalnp@elpais.com", - "penCoordinatorFax": "554-237-2028", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 933, - "schoolNumber": 65725, - "penCoordinatorName": "Barbee Peel", - "penCoordinatorEmail": "bpeelnq@ning.com", - "penCoordinatorFax": "703-715-7989", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 881, - "schoolNumber": 97786, - "penCoordinatorName": "Jabez Widdop", - "penCoordinatorEmail": "jwiddopnr@reuters.com", - "penCoordinatorFax": "554-258-9886", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 371, - "schoolNumber": 51960, - "penCoordinatorName": "Courtenay Liston", - "penCoordinatorEmail": "clistonns@lycos.com", - "penCoordinatorFax": "427-159-2816", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 935, - "schoolNumber": 65089, - "penCoordinatorName": "Pincus Pock", - "penCoordinatorEmail": "ppocknt@ehow.com", - "penCoordinatorFax": "960-829-0261", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 248, - "schoolNumber": 35750, - "penCoordinatorName": "Brady Vedishchev", - "penCoordinatorEmail": "bvedishchevnu@un.org", - "penCoordinatorFax": "401-171-0620", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 183, - "schoolNumber": 41176, - "penCoordinatorName": "Jarad Goody", - "penCoordinatorEmail": "jgoodynv@gravatar.com", - "penCoordinatorFax": "965-904-5078", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 959, - "schoolNumber": 35275, - "penCoordinatorName": "Brigid Guitel", - "penCoordinatorEmail": "bguitelnw@parallels.com", - "penCoordinatorFax": "776-687-5344", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 251, - "schoolNumber": 89614, - "penCoordinatorName": "Lacey Siggers", - "penCoordinatorEmail": "lsiggersnx@shutterfly.com", - "penCoordinatorFax": "876-694-5987", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 493, - "schoolNumber": 65917, - "penCoordinatorName": "Vikky Rickersey", - "penCoordinatorEmail": "vrickerseyny@hostgator.com", - "penCoordinatorFax": "476-205-1856", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 960, - "schoolNumber": 94884, - "penCoordinatorName": "Rawley Summerly", - "penCoordinatorEmail": "rsummerlynz@google.com.hk", - "penCoordinatorFax": "715-740-9692", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 971, - "schoolNumber": 94099, - "penCoordinatorName": "Alisander Lucock", - "penCoordinatorEmail": "alucocko0@princeton.edu", - "penCoordinatorFax": "791-415-8445", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 381, - "schoolNumber": 96907, - "penCoordinatorName": "Penny Hankinson", - "penCoordinatorEmail": "phankinsono1@ebay.com", - "penCoordinatorFax": "262-398-5746", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 597, - "schoolNumber": 90870, - "penCoordinatorName": "Caril Eckery", - "penCoordinatorEmail": "ceckeryo2@bandcamp.com", - "penCoordinatorFax": "270-916-6781", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 934, - "schoolNumber": 15733, - "penCoordinatorName": "Hilary Welbeck", - "penCoordinatorEmail": "hwelbecko3@paypal.com", - "penCoordinatorFax": "148-211-4945", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 646, - "schoolNumber": 39787, - "penCoordinatorName": "Diandra Giacobini", - "penCoordinatorEmail": "dgiacobinio4@dyndns.org", - "penCoordinatorFax": "406-486-1361", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 623, - "schoolNumber": 87787, - "penCoordinatorName": "Abbey Hammerson", - "penCoordinatorEmail": "ahammersono5@va.gov", - "penCoordinatorFax": "650-887-8999", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 928, - "schoolNumber": 87381, - "penCoordinatorName": "Domenic Ramberg", - "penCoordinatorEmail": "drambergo6@samsung.com", - "penCoordinatorFax": "652-697-8928", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 694, - "schoolNumber": 24645, - "penCoordinatorName": "Aggie Biasioli", - "penCoordinatorEmail": "abiasiolio7@multiply.com", - "penCoordinatorFax": "364-353-6262", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 820, - "schoolNumber": 31604, - "penCoordinatorName": "Lothario Mertel", - "penCoordinatorEmail": "lmertelo8@bandcamp.com", - "penCoordinatorFax": "903-813-2265", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 351, - "schoolNumber": 59972, - "penCoordinatorName": "Peggi Keeting", - "penCoordinatorEmail": "pkeetingo9@odnoklassniki.ru", - "penCoordinatorFax": "893-104-0966", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 780, - "schoolNumber": 90796, - "penCoordinatorName": "Stearn Hellmer", - "penCoordinatorEmail": "shellmeroa@youtube.com", - "penCoordinatorFax": "807-387-6086", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 741, - "schoolNumber": 88513, - "penCoordinatorName": "Desirae Idale", - "penCoordinatorEmail": "didaleob@ucsd.edu", - "penCoordinatorFax": "443-713-7958", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 439, - "schoolNumber": 71949, - "penCoordinatorName": "Zuzana Cuttles", - "penCoordinatorEmail": "zcuttlesoc@hibu.com", - "penCoordinatorFax": "236-653-0758", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 541, - "schoolNumber": 45588, - "penCoordinatorName": "Rubin Guyonneau", - "penCoordinatorEmail": "rguyonneauod@toplist.cz", - "penCoordinatorFax": "731-866-2408", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 493, - "schoolNumber": 98502, - "penCoordinatorName": "Pace Bortoluzzi", - "penCoordinatorEmail": "pbortoluzzioe@nature.com", - "penCoordinatorFax": "800-290-9702", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 562, - "schoolNumber": 90702, - "penCoordinatorName": "Beryle Ben", - "penCoordinatorEmail": "bbenof@parallels.com", - "penCoordinatorFax": "149-467-2418", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 218, - "schoolNumber": 62956, - "penCoordinatorName": "Bevan Duncan", - "penCoordinatorEmail": "bduncanog@prweb.com", - "penCoordinatorFax": "399-794-5179", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 193, - "schoolNumber": 12127, - "penCoordinatorName": "Margarethe Garralts", - "penCoordinatorEmail": "mgarraltsoh@patch.com", - "penCoordinatorFax": "143-712-0910", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 662, - "schoolNumber": 65527, - "penCoordinatorName": "Vivyan O'Neil", - "penCoordinatorEmail": "voneiloi@washingtonpost.com", - "penCoordinatorFax": "987-558-1631", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 378, - "schoolNumber": 57690, - "penCoordinatorName": "Cameron Pickering", - "penCoordinatorEmail": "cpickeringoj@hugedomains.com", - "penCoordinatorFax": "864-317-2564", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 803, - "schoolNumber": 90257, - "penCoordinatorName": "Sanford Corns", - "penCoordinatorEmail": "scornsok@globo.com", - "penCoordinatorFax": "785-549-0783", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 157, - "schoolNumber": 33004, - "penCoordinatorName": "Casie Gruszecki", - "penCoordinatorEmail": "cgruszeckiol@goo.gl", - "penCoordinatorFax": "906-559-9908", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 351, - "schoolNumber": 88332, - "penCoordinatorName": "Irina Borge", - "penCoordinatorEmail": "iborgeom@wsj.com", - "penCoordinatorFax": "995-346-3286", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 941, - "schoolNumber": 51038, - "penCoordinatorName": "Jandy Addenbrooke", - "penCoordinatorEmail": "jaddenbrookeon@surveymonkey.com", - "penCoordinatorFax": "546-648-9136", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 437, - "schoolNumber": 65635, - "penCoordinatorName": "Gerri Garfath", - "penCoordinatorEmail": "ggarfathoo@123-reg.co.uk", - "penCoordinatorFax": "517-329-8757", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 173, - "schoolNumber": 94633, - "penCoordinatorName": "Vaughn Byllam", - "penCoordinatorEmail": "vbyllamop@businesswire.com", - "penCoordinatorFax": "221-331-5988", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 576, - "schoolNumber": 39913, - "penCoordinatorName": "Adelind Kinze", - "penCoordinatorEmail": "akinzeoq@amazonaws.com", - "penCoordinatorFax": "619-963-7491", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 464, - "schoolNumber": 24682, - "penCoordinatorName": "Terrance Bone", - "penCoordinatorEmail": "tboneor@timesonline.co.uk", - "penCoordinatorFax": "794-516-2668", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 610, - "schoolNumber": 27266, - "penCoordinatorName": "Godfree Balentyne", - "penCoordinatorEmail": "gbalentyneos@1und1.de", - "penCoordinatorFax": "356-479-1409", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 850, - "schoolNumber": 22143, - "penCoordinatorName": "Tessi Wentworth", - "penCoordinatorEmail": "twentworthot@salon.com", - "penCoordinatorFax": "236-856-8464", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 150, - "schoolNumber": 88930, - "penCoordinatorName": "Diane Dyson", - "penCoordinatorEmail": "ddysonou@constantcontact.com", - "penCoordinatorFax": "371-846-5212", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 939, - "schoolNumber": 98551, - "penCoordinatorName": "Lazaro Seaman", - "penCoordinatorEmail": "lseamanov@google.pl", - "penCoordinatorFax": "924-198-9248", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 961, - "schoolNumber": 88612, - "penCoordinatorName": "Milty Atwel", - "penCoordinatorEmail": "matwelow@dion.ne.jp", - "penCoordinatorFax": "825-448-4621", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 252, - "schoolNumber": 45180, - "penCoordinatorName": "Erie Witcher", - "penCoordinatorEmail": "ewitcherox@cargocollective.com", - "penCoordinatorFax": "278-210-6122", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 841, - "schoolNumber": 81883, - "penCoordinatorName": "Derrik Fetters", - "penCoordinatorEmail": "dfettersoy@pcworld.com", - "penCoordinatorFax": "137-215-6394", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 893, - "schoolNumber": 82462, - "penCoordinatorName": "Riccardo Ranscombe", - "penCoordinatorEmail": "rranscombeoz@timesonline.co.uk", - "penCoordinatorFax": "510-772-7426", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 741, - "schoolNumber": 86917, - "penCoordinatorName": "Wilhelmine Hendrix", - "penCoordinatorEmail": "whendrixp0@shareasale.com", - "penCoordinatorFax": "671-263-7692", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 142, - "schoolNumber": 20288, - "penCoordinatorName": "Kala Nehlsen", - "penCoordinatorEmail": "knehlsenp1@cornell.edu", - "penCoordinatorFax": "423-407-7925", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 545, - "schoolNumber": 83533, - "penCoordinatorName": "Kamilah Jellett", - "penCoordinatorEmail": "kjellettp2@timesonline.co.uk", - "penCoordinatorFax": "282-869-0851", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 192, - "schoolNumber": 50027, - "penCoordinatorName": "Jilly Sam", - "penCoordinatorEmail": "jsamp3@marriott.com", - "penCoordinatorFax": "194-802-9799", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 438, - "schoolNumber": 98340, - "penCoordinatorName": "Dalenna Scholefield", - "penCoordinatorEmail": "dscholefieldp4@economist.com", - "penCoordinatorFax": "285-315-8045", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 629, - "schoolNumber": 20933, - "penCoordinatorName": "Aeriel Spering", - "penCoordinatorEmail": "asperingp5@spotify.com", - "penCoordinatorFax": "326-388-4441", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 272, - "schoolNumber": 83910, - "penCoordinatorName": "Laurie Itzig", - "penCoordinatorEmail": "litzigp6@java.com", - "penCoordinatorFax": "695-184-7928", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 912, - "schoolNumber": 80377, - "penCoordinatorName": "Charity Tennick", - "penCoordinatorEmail": "ctennickp7@google.ca", - "penCoordinatorFax": "281-839-4061", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 294, - "schoolNumber": 78320, - "penCoordinatorName": "Katharine Purple", - "penCoordinatorEmail": "kpurplep8@barnesandnoble.com", - "penCoordinatorFax": "317-670-0350", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 367, - "schoolNumber": 78644, - "penCoordinatorName": "Gerry Laxston", - "penCoordinatorEmail": "glaxstonp9@instagram.com", - "penCoordinatorFax": "998-209-6811", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 964, - "schoolNumber": 16004, - "penCoordinatorName": "Barth Wyss", - "penCoordinatorEmail": "bwysspa@shareasale.com", - "penCoordinatorFax": "247-180-8400", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 633, - "schoolNumber": 15878, - "penCoordinatorName": "Malinde Murrock", - "penCoordinatorEmail": "mmurrockpb@ucoz.com", - "penCoordinatorFax": "198-836-5938", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 394, - "schoolNumber": 12676, - "penCoordinatorName": "Dru Tombling", - "penCoordinatorEmail": "dtomblingpc@blogtalkradio.com", - "penCoordinatorFax": "135-864-1789", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 683, - "schoolNumber": 74809, - "penCoordinatorName": "Aeriela Bougen", - "penCoordinatorEmail": "abougenpd@kickstarter.com", - "penCoordinatorFax": "890-701-8952", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 485, - "schoolNumber": 51354, - "penCoordinatorName": "Birgitta Loudiane", - "penCoordinatorEmail": "bloudianepe@woothemes.com", - "penCoordinatorFax": "876-764-4427", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 152, - "schoolNumber": 72989, - "penCoordinatorName": "Linette Lawrance", - "penCoordinatorEmail": "llawrancepf@free.fr", - "penCoordinatorFax": "711-395-7886", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 866, - "schoolNumber": 23604, - "penCoordinatorName": "Ingemar Brookfield", - "penCoordinatorEmail": "ibrookfieldpg@bravesites.com", - "penCoordinatorFax": "173-508-6269", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 178, - "schoolNumber": 89722, - "penCoordinatorName": "Isadore Treagust", - "penCoordinatorEmail": "itreagustph@nationalgeographic.com", - "penCoordinatorFax": "431-486-1980", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 139, - "schoolNumber": 50174, - "penCoordinatorName": "Yasmeen Galloway", - "penCoordinatorEmail": "ygallowaypi@admin.ch", - "penCoordinatorFax": "936-526-8944", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 963, - "schoolNumber": 58906, - "penCoordinatorName": "Armstrong Vossing", - "penCoordinatorEmail": "avossingpj@amazon.co.jp", - "penCoordinatorFax": "217-958-7923", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 174, - "schoolNumber": 70252, - "penCoordinatorName": "Guthrie Hamlington", - "penCoordinatorEmail": "ghamlingtonpk@slashdot.org", - "penCoordinatorFax": "312-802-9624", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 350, - "schoolNumber": 74804, - "penCoordinatorName": "Inesita Munday", - "penCoordinatorEmail": "imundaypl@nbcnews.com", - "penCoordinatorFax": "882-458-9717", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 670, - "schoolNumber": 58897, - "penCoordinatorName": "Abdel Ticksall", - "penCoordinatorEmail": "aticksallpm@adobe.com", - "penCoordinatorFax": "249-720-7294", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 676, - "schoolNumber": 43879, - "penCoordinatorName": "Karlee Yakunchikov", - "penCoordinatorEmail": "kyakunchikovpn@state.gov", - "penCoordinatorFax": "132-311-0133", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 474, - "schoolNumber": 59838, - "penCoordinatorName": "Juanita Trethewey", - "penCoordinatorEmail": "jtretheweypo@wp.com", - "penCoordinatorFax": "279-106-5152", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 765, - "schoolNumber": 47431, - "penCoordinatorName": "Jennica Menichino", - "penCoordinatorEmail": "jmenichinopp@salon.com", - "penCoordinatorFax": "541-912-8061", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 490, - "schoolNumber": 46974, - "penCoordinatorName": "Marchall Beamish", - "penCoordinatorEmail": "mbeamishpq@mail.ru", - "penCoordinatorFax": "445-129-5329", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 848, - "schoolNumber": 29476, - "penCoordinatorName": "Lynsey Johnes", - "penCoordinatorEmail": "ljohnespr@storify.com", - "penCoordinatorFax": "430-351-2480", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 573, - "schoolNumber": 83161, - "penCoordinatorName": "Nickey Howey", - "penCoordinatorEmail": "nhoweyps@oracle.com", - "penCoordinatorFax": "418-637-6936", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 228, - "schoolNumber": 68321, - "penCoordinatorName": "Pryce Knowlys", - "penCoordinatorEmail": "pknowlyspt@free.fr", - "penCoordinatorFax": "669-665-5618", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 712, - "schoolNumber": 56723, - "penCoordinatorName": "Lynnette Frane", - "penCoordinatorEmail": "lfranepu@columbia.edu", - "penCoordinatorFax": "102-575-2812", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 878, - "schoolNumber": 49008, - "penCoordinatorName": "Lillis Sussans", - "penCoordinatorEmail": "lsussanspv@netscape.com", - "penCoordinatorFax": "111-543-5338", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 301, - "schoolNumber": 58726, - "penCoordinatorName": "Antonin Pesterfield", - "penCoordinatorEmail": "apesterfieldpw@google.nl", - "penCoordinatorFax": "960-220-6292", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 837, - "schoolNumber": 53353, - "penCoordinatorName": "Rosie Tunnicliff", - "penCoordinatorEmail": "rtunnicliffpx@prnewswire.com", - "penCoordinatorFax": "509-470-0173", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 127, - "schoolNumber": 59090, - "penCoordinatorName": "Grant Bartkowiak", - "penCoordinatorEmail": "gbartkowiakpy@geocities.com", - "penCoordinatorFax": "562-281-1555", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 407, - "schoolNumber": 77250, - "penCoordinatorName": "Kinnie Cawt", - "penCoordinatorEmail": "kcawtpz@amazonaws.com", - "penCoordinatorFax": "145-584-5342", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 330, - "schoolNumber": 32808, - "penCoordinatorName": "Rolland Seddon", - "penCoordinatorEmail": "rseddonq0@addthis.com", - "penCoordinatorFax": "696-149-7300", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 210, - "schoolNumber": 34888, - "penCoordinatorName": "Inger Harberer", - "penCoordinatorEmail": "iharbererq1@elegantthemes.com", - "penCoordinatorFax": "336-999-4193", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 315, - "schoolNumber": 99074, - "penCoordinatorName": "Rachelle Tuplin", - "penCoordinatorEmail": "rtuplinq2@tinyurl.com", - "penCoordinatorFax": "134-441-0476", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 788, - "schoolNumber": 99527, - "penCoordinatorName": "Wandis Gurdon", - "penCoordinatorEmail": "wgurdonq3@salon.com", - "penCoordinatorFax": "583-471-4340", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 267, - "schoolNumber": 16994, - "penCoordinatorName": "Del Matonin", - "penCoordinatorEmail": "dmatoninq4@posterous.com", - "penCoordinatorFax": "412-909-0028", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 179, - "schoolNumber": 42431, - "penCoordinatorName": "Godard Collocott", - "penCoordinatorEmail": "gcollocottq5@ed.gov", - "penCoordinatorFax": "841-939-0898", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 811, - "schoolNumber": 46161, - "penCoordinatorName": "Adan Hankinson", - "penCoordinatorEmail": "ahankinsonq6@geocities.com", - "penCoordinatorFax": "987-726-7407", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 293, - "schoolNumber": 32426, - "penCoordinatorName": "Godwin Godlip", - "penCoordinatorEmail": "ggodlipq7@icio.us", - "penCoordinatorFax": "738-976-8313", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 545, - "schoolNumber": 13077, - "penCoordinatorName": "Sheba Siflet", - "penCoordinatorEmail": "ssifletq8@twitpic.com", - "penCoordinatorFax": "710-431-9828", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 287, - "schoolNumber": 10432, - "penCoordinatorName": "Josepha Plaskett", - "penCoordinatorEmail": "jplaskettq9@hao123.com", - "penCoordinatorFax": "958-939-8791", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 186, - "schoolNumber": 17119, - "penCoordinatorName": "Alexandr Hewkin", - "penCoordinatorEmail": "ahewkinqa@phpbb.com", - "penCoordinatorFax": "375-651-8800", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 355, - "schoolNumber": 17380, - "penCoordinatorName": "Tyrus Purdie", - "penCoordinatorEmail": "tpurdieqb@google.com", - "penCoordinatorFax": "361-754-4890", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 939, - "schoolNumber": 47221, - "penCoordinatorName": "Tedd Prettejohns", - "penCoordinatorEmail": "tprettejohnsqc@unc.edu", - "penCoordinatorFax": "746-411-0655", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 808, - "schoolNumber": 57293, - "penCoordinatorName": "Fernando Jaffra", - "penCoordinatorEmail": "fjaffraqd@a8.net", - "penCoordinatorFax": "340-435-9362", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 419, - "schoolNumber": 78334, - "penCoordinatorName": "Eleanora Yansons", - "penCoordinatorEmail": "eyansonsqe@netvibes.com", - "penCoordinatorFax": "196-468-9420", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 752, - "schoolNumber": 80419, - "penCoordinatorName": "Kat Stanlack", - "penCoordinatorEmail": "kstanlackqf@cnn.com", - "penCoordinatorFax": "189-707-8397", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 934, - "schoolNumber": 92208, - "penCoordinatorName": "Aldwin McGarvie", - "penCoordinatorEmail": "amcgarvieqg@go.com", - "penCoordinatorFax": "642-603-6589", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 599, - "schoolNumber": 31391, - "penCoordinatorName": "Reamonn Olsen", - "penCoordinatorEmail": "rolsenqh@google.ca", - "penCoordinatorFax": "117-600-1079", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 449, - "schoolNumber": 11566, - "penCoordinatorName": "Briney Burkett", - "penCoordinatorEmail": "bburkettqi@apache.org", - "penCoordinatorFax": "491-614-7498", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 972, - "schoolNumber": 55497, - "penCoordinatorName": "Stanwood Crosdill", - "penCoordinatorEmail": "scrosdillqj@icio.us", - "penCoordinatorFax": "518-209-0483", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 436, - "schoolNumber": 98825, - "penCoordinatorName": "Omero Danaher", - "penCoordinatorEmail": "odanaherqk@is.gd", - "penCoordinatorFax": "899-123-8632", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 569, - "schoolNumber": 94795, - "penCoordinatorName": "Florrie Reimers", - "penCoordinatorEmail": "freimersql@npr.org", - "penCoordinatorFax": "525-790-3869", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 388, - "schoolNumber": 95235, - "penCoordinatorName": "Lisabeth Toffel", - "penCoordinatorEmail": "ltoffelqm@ucsd.edu", - "penCoordinatorFax": "338-102-0461", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 195, - "schoolNumber": 50296, - "penCoordinatorName": "Kali Roskam", - "penCoordinatorEmail": "kroskamqn@oaic.gov.au", - "penCoordinatorFax": "120-174-9074", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 956, - "schoolNumber": 41535, - "penCoordinatorName": "Robbyn Penburton", - "penCoordinatorEmail": "rpenburtonqo@nps.gov", - "penCoordinatorFax": "605-365-7105", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 461, - "schoolNumber": 69847, - "penCoordinatorName": "Jakob Claxson", - "penCoordinatorEmail": "jclaxsonqp@berkeley.edu", - "penCoordinatorFax": "449-954-3732", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 106, - "schoolNumber": 34008, - "penCoordinatorName": "Bjorn Lehemann", - "penCoordinatorEmail": "blehemannqq@epa.gov", - "penCoordinatorFax": "773-200-8584", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 803, - "schoolNumber": 17886, - "penCoordinatorName": "Nelia Martugin", - "penCoordinatorEmail": "nmartuginqr@cyberchimps.com", - "penCoordinatorFax": "390-265-7114", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 125, - "schoolNumber": 74322, - "penCoordinatorName": "Fan Marks", - "penCoordinatorEmail": "fmarksqs@topsy.com", - "penCoordinatorFax": "472-628-2505", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 193, - "schoolNumber": 95044, - "penCoordinatorName": "Stanfield Ruddy", - "penCoordinatorEmail": "sruddyqt@hc360.com", - "penCoordinatorFax": "942-996-8126", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 144, - "schoolNumber": 20230, - "penCoordinatorName": "Edin Coleshill", - "penCoordinatorEmail": "ecoleshillqu@vinaora.com", - "penCoordinatorFax": "401-838-8533", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 933, - "schoolNumber": 13736, - "penCoordinatorName": "Phyllida Fetherston", - "penCoordinatorEmail": "pfetherstonqv@livejournal.com", - "penCoordinatorFax": "911-611-4633", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 319, - "schoolNumber": 59708, - "penCoordinatorName": "Valina Gedling", - "penCoordinatorEmail": "vgedlingqw@taobao.com", - "penCoordinatorFax": "870-946-2041", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 185, - "schoolNumber": 98676, - "penCoordinatorName": "Walt Spiers", - "penCoordinatorEmail": "wspiersqx@webmd.com", - "penCoordinatorFax": "236-118-2319", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 859, - "schoolNumber": 19853, - "penCoordinatorName": "Darsie Langrish", - "penCoordinatorEmail": "dlangrishqy@who.int", - "penCoordinatorFax": "441-334-1606", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 461, - "schoolNumber": 64536, - "penCoordinatorName": "Alvira Dyton", - "penCoordinatorEmail": "adytonqz@theatlantic.com", - "penCoordinatorFax": "710-674-7696", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 151, - "schoolNumber": 26476, - "penCoordinatorName": "Bren Tocknell", - "penCoordinatorEmail": "btocknellr0@gravatar.com", - "penCoordinatorFax": "473-244-5557", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 562, - "schoolNumber": 23321, - "penCoordinatorName": "Sharl Bewly", - "penCoordinatorEmail": "sbewlyr1@a8.net", - "penCoordinatorFax": "413-199-1842", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 845, - "schoolNumber": 87523, - "penCoordinatorName": "Katie Petcher", - "penCoordinatorEmail": "kpetcherr2@army.mil", - "penCoordinatorFax": "687-904-4351", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 621, - "schoolNumber": 22968, - "penCoordinatorName": "Umeko Strauss", - "penCoordinatorEmail": "ustraussr3@miibeian.gov.cn", - "penCoordinatorFax": "555-582-6906", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 992, - "schoolNumber": 81041, - "penCoordinatorName": "Janeva Corley", - "penCoordinatorEmail": "jcorleyr4@mac.com", - "penCoordinatorFax": "387-628-4427", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 842, - "schoolNumber": 11085, - "penCoordinatorName": "Hana Egle of Germany", - "penCoordinatorEmail": "hegler5@google.cn", - "penCoordinatorFax": "610-859-8821", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 181, - "schoolNumber": 13598, - "penCoordinatorName": "Normie Penson", - "penCoordinatorEmail": "npensonr6@japanpost.jp", - "penCoordinatorFax": "633-692-0447", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 521, - "schoolNumber": 21537, - "penCoordinatorName": "Gloriana Phethean", - "penCoordinatorEmail": "gphetheanr7@hhs.gov", - "penCoordinatorFax": "384-501-3868", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 940, - "schoolNumber": 62116, - "penCoordinatorName": "Lonnie Augustin", - "penCoordinatorEmail": "laugustinr8@yahoo.co.jp", - "penCoordinatorFax": "892-123-9361", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 541, - "schoolNumber": 48184, - "penCoordinatorName": "Bing Rudolf", - "penCoordinatorEmail": "brudolfr9@prlog.org", - "penCoordinatorFax": "462-192-5261", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 427, - "schoolNumber": 93188, - "penCoordinatorName": "Nadean Mitchel", - "penCoordinatorEmail": "nmitchelra@walmart.com", - "penCoordinatorFax": "910-256-6944", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 384, - "schoolNumber": 65634, - "penCoordinatorName": "Lizbeth Pinchon", - "penCoordinatorEmail": "lpinchonrb@gnu.org", - "penCoordinatorFax": "216-787-5970", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 339, - "schoolNumber": 47767, - "penCoordinatorName": "Trip Tomsett", - "penCoordinatorEmail": "ttomsettrc@reuters.com", - "penCoordinatorFax": "973-569-3524", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 160, - "schoolNumber": 60953, - "penCoordinatorName": "Aindrea Plesing", - "penCoordinatorEmail": "aplesingrd@cam.ac.uk", - "penCoordinatorFax": "595-324-3919", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 881, - "schoolNumber": 65866, - "penCoordinatorName": "Yuma Gainsford", - "penCoordinatorEmail": "ygainsfordre@miibeian.gov.cn", - "penCoordinatorFax": "770-132-0086", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 129, - "schoolNumber": 47601, - "penCoordinatorName": "Roselia Tomkies", - "penCoordinatorEmail": "rtomkiesrf@unesco.org", - "penCoordinatorFax": "331-203-7301", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 270, - "schoolNumber": 87881, - "penCoordinatorName": "Yorgo Scanderet", - "penCoordinatorEmail": "yscanderetrg@w3.org", - "penCoordinatorFax": "738-643-9274", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 286, - "schoolNumber": 55789, - "penCoordinatorName": "Orlan Clever", - "penCoordinatorEmail": "ocleverrh@ucoz.com", - "penCoordinatorFax": "894-214-0491", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 474, - "schoolNumber": 19475, - "penCoordinatorName": "Herc Keppel", - "penCoordinatorEmail": "hkeppelri@fema.gov", - "penCoordinatorFax": "701-708-3487", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 884, - "schoolNumber": 22596, - "penCoordinatorName": "Dolores Camilli", - "penCoordinatorEmail": "dcamillirj@oracle.com", - "penCoordinatorFax": "357-523-1684", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 706, - "schoolNumber": 72278, - "penCoordinatorName": "Stepha Hearfield", - "penCoordinatorEmail": "shearfieldrk@infoseek.co.jp", - "penCoordinatorFax": "582-661-6934", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 523, - "schoolNumber": 51730, - "penCoordinatorName": "Rik Gorey", - "penCoordinatorEmail": "rgoreyrl@imgur.com", - "penCoordinatorFax": "651-959-2769", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 389, - "schoolNumber": 86932, - "penCoordinatorName": "Sylvan Blaszczynski", - "penCoordinatorEmail": "sblaszczynskirm@va.gov", - "penCoordinatorFax": "870-912-5145", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 855, - "schoolNumber": 16854, - "penCoordinatorName": "Tarrah Haddleston", - "penCoordinatorEmail": "thaddlestonrn@toplist.cz", - "penCoordinatorFax": "712-799-3295", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 932, - "schoolNumber": 66031, - "penCoordinatorName": "Erich O'Hoey", - "penCoordinatorEmail": "eohoeyro@multiply.com", - "penCoordinatorFax": "459-357-3791", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 735, - "schoolNumber": 51737, - "penCoordinatorName": "Stesha Jiles", - "penCoordinatorEmail": "sjilesrp@hibu.com", - "penCoordinatorFax": "534-970-2786", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 965, - "schoolNumber": 27209, - "penCoordinatorName": "Antone Baniard", - "penCoordinatorEmail": "abaniardrq@miitbeian.gov.cn", - "penCoordinatorFax": "477-649-2579", - "sendPenResultsVia": "E" - }, - { - "districtNumber": 278, - "schoolNumber": 51555, - "penCoordinatorName": "Thebault Sheardown", - "penCoordinatorEmail": "tsheardownrr@infoseek.co.jp", - "penCoordinatorFax": "854-777-3271", - "sendPenResultsVia": "E" - } -] diff --git a/api/src/test/resources/mock-student-registration-contact.json b/api/src/test/resources/mock-student-registration-contact.json new file mode 100644 index 00000000..9ccf4226 --- /dev/null +++ b/api/src/test/resources/mock-student-registration-contact.json @@ -0,0 +1,28 @@ + + [ + { + "schoolId": "12345678", + "schoolContactTypeCode": "STUDREGIS", + "phoneNumber": "1112223333", + "email": "fake@gmail.com", + "firstName": "Joe", + "lastName": "Blow" + }, + { + "schoolId": "12345678", + "schoolContactTypeCode": "STUDREGIS", + "phoneNumber": "1112223333", + "email": "fake@gmail.com", + "firstName": "Joe2", + "lastName": "Blow2" + }, + { + "schoolId": "11111111", + "schoolContactTypeCode": "STUDREGIS", + "phoneNumber": "1112223333", + "email": "fake@gmail.com", + "firstName": "Joe3", + "lastName": "Blow3" + } + ] + diff --git a/tools/config/update-configmap.sh b/tools/config/update-configmap.sh index b724f695..225a43cb 100644 --- a/tools/config/update-configmap.sh +++ b/tools/config/update-configmap.sh @@ -42,7 +42,7 @@ echo Creating client pen-reg-batch-api-service curl -sX POST "https://$SOAM_KC/auth/admin/realms/$SOAM_KC_REALM_ID/clients" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TKN" \ - -d "{\"clientId\" : \"pen-reg-batch-api-service\",\"surrogateAuthRequired\" : false,\"enabled\" : true,\"clientAuthenticatorType\" : \"client-secret\",\"redirectUris\" : [ ],\"webOrigins\" : [ ],\"notBefore\" : 0,\"bearerOnly\" : false,\"consentRequired\" : false,\"standardFlowEnabled\" : false,\"implicitFlowEnabled\" : false,\"directAccessGrantsEnabled\" : false,\"serviceAccountsEnabled\" : true,\"publicClient\" : false,\"frontchannelLogout\" : false,\"protocol\" : \"openid-connect\",\"attributes\" : {\"saml.assertion.signature\" : \"false\",\"saml.multivalued.roles\" : \"false\",\"saml.force.post.binding\" : \"false\",\"saml.encrypt\" : \"false\",\"saml.server.signature\" : \"false\",\"saml.server.signature.keyinfo.ext\" : \"false\",\"exclude.session.state.from.auth.response\" : \"false\",\"saml_force_name_id_format\" : \"false\",\"saml.client.signature\" : \"false\",\"tls.client.certificate.bound.access.tokens\" : \"false\",\"saml.authnstatement\" : \"false\",\"display.on.consent.screen\" : \"false\",\"saml.onetimeuse.condition\" : \"false\"},\"authenticationFlowBindingOverrides\" : { },\"fullScopeAllowed\" : true,\"nodeReRegistrationTimeout\" : -1,\"protocolMappers\" : [ {\"name\" : \"Client ID\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientId\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientId\",\"jsonType.label\" : \"String\"}}, {\"name\" : \"Client Host\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientHost\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientHost\",\"jsonType.label\" : \"String\"}}, {\"name\" : \"Client IP Address\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientAddress\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientAddress\",\"jsonType.label\" : \"String\"}} ],\"defaultClientScopes\" : [ \"web-origins\", \"WRITE_STUDENT\", \"role_list\", \"profile\", \"roles\", \"READ_STUDENT\",\"GET_NEXT_PEN_NUMBER\", \"READ_SCHOOL\", \"READ_PEN_COORDINATOR\", \"email\",\"READ_STUDENT_CODES\",\"READ_VALIDATION_CODES\"],\"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\" ],\"access\" : {\"view\" : true,\"configure\" : true,\"manage\" : true}}" + -d "{\"clientId\" : \"pen-reg-batch-api-service\",\"surrogateAuthRequired\" : false,\"enabled\" : true,\"clientAuthenticatorType\" : \"client-secret\",\"redirectUris\" : [ ],\"webOrigins\" : [ ],\"notBefore\" : 0,\"bearerOnly\" : false,\"consentRequired\" : false,\"standardFlowEnabled\" : false,\"implicitFlowEnabled\" : false,\"directAccessGrantsEnabled\" : false,\"serviceAccountsEnabled\" : true,\"publicClient\" : false,\"frontchannelLogout\" : false,\"protocol\" : \"openid-connect\",\"attributes\" : {\"saml.assertion.signature\" : \"false\",\"saml.multivalued.roles\" : \"false\",\"saml.force.post.binding\" : \"false\",\"saml.encrypt\" : \"false\",\"saml.server.signature\" : \"false\",\"saml.server.signature.keyinfo.ext\" : \"false\",\"exclude.session.state.from.auth.response\" : \"false\",\"saml_force_name_id_format\" : \"false\",\"saml.client.signature\" : \"false\",\"tls.client.certificate.bound.access.tokens\" : \"false\",\"saml.authnstatement\" : \"false\",\"display.on.consent.screen\" : \"false\",\"saml.onetimeuse.condition\" : \"false\"},\"authenticationFlowBindingOverrides\" : { },\"fullScopeAllowed\" : true,\"nodeReRegistrationTimeout\" : -1,\"protocolMappers\" : [ {\"name\" : \"Client ID\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientId\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientId\",\"jsonType.label\" : \"String\"}}, {\"name\" : \"Client Host\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientHost\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientHost\",\"jsonType.label\" : \"String\"}}, {\"name\" : \"Client IP Address\",\"protocol\" : \"openid-connect\",\"protocolMapper\" : \"oidc-usersessionmodel-note-mapper\",\"consentRequired\" : false,\"config\" : {\"user.session.note\" : \"clientAddress\",\"id.token.claim\" : \"true\",\"access.token.claim\" : \"true\",\"claim.name\" : \"clientAddress\",\"jsonType.label\" : \"String\"}} ],\"defaultClientScopes\" : [ \"web-origins\", \"WRITE_STUDENT\", \"role_list\", \"profile\", \"roles\", \"READ_STUDENT\",\"GET_NEXT_PEN_NUMBER\", \"READ_SCHOOL\", \"email\",\"READ_STUDENT_CODES\",\"READ_VALIDATION_CODES\"],\"optionalClientScopes\" : [ \"address\", \"phone\", \"offline_access\" ],\"access\" : {\"view\" : true,\"configure\" : true,\"manage\" : true}}" echo echo Retrieving client ID for pen-reg-batch-api-service @@ -214,17 +214,17 @@ SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON="0 0/1 * * * *" SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON="0 0/2 * * * *" if [ "$envValue" = "dev" ]; then - PEN_COORDINATOR_EMAIL=derek.so@gov.bc.ca + DATA_MANAGEMENT_UNIT_EMAIL=derek.so@gov.bc.ca SOFT_DELETED_RETENTION_DAYS=2 fi if [ "$envValue" = "test" ]; then - PEN_COORDINATOR_EMAIL=derek.so@gov.bc.ca + DATA_MANAGEMENT_UNIT_EMAIL=derek.so@gov.bc.ca SOFT_DELETED_RETENTION_DAYS=2 fi # when it will be time for go live the value of SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON will be set to "0 0/10 18-23,00-05 * * *" so that it runs from 6PM to 6AM if [ "$envValue" = "prod" ]; then - PEN_COORDINATOR_EMAIL=pens.coordinator@gov.bc.ca + DATA_MANAGEMENT_UNIT_EMAIL=pens.coordinator@gov.bc.ca SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PENWEB_PEN_WEB_BLOBS_CRON="0 0/10 7-17 * * *" SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON="0 0/10 18-23,00-05 * * *" SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON="0 0/1 * * * *" @@ -237,7 +237,7 @@ fi echo echo Creating config map "$APP_NAME"-config-map -oc create -n "$OPENSHIFT_NAMESPACE"-"$envValue" configmap "$APP_NAME"-config-map --from-literal=TZ=$TZVALUE --from-literal=JDBC_URL="$DB_JDBC_CONNECT_STRING" --from-literal=ORACLE_USERNAME="$DB_USER" --from-literal=ORACLE_PASSWORD="$DB_PWD" --from-literal=SPRING_SECURITY_LOG_LEVEL=INFO --from-literal=SPRING_WEB_LOG_LEVEL=INFO --from-literal=APP_LOG_LEVEL=INFO --from-literal=SPRING_BOOT_AUTOCONFIG_LOG_LEVEL=INFO --from-literal=SPRING_SHOW_REQUEST_DETAILS=false --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PENWEB_PEN_WEB_BLOBS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PENWEB_PEN_WEB_BLOBS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON_LOCK_AT_LEAST_FOR="540s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON_LOCK_AT_MOST_FOR="580s" --from-literal=NATS_URL="$NATS_URL" --from-literal=NATS_CLUSTER="$NATS_CLUSTER" --from-literal=SPRING_JPA_SHOW_SQL="false" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON="$SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON_LOCK_AT_LEAST_FOR="55s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON_LOCK_AT_MOST_FOR="57s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON_LOCK_AT_LEAST_FOR="8s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON_LOCK_AT_MOST_FOR="8s" --from-literal=CLIENT_ID="pen-reg-batch-api-service" --from-literal=CLIENT_SECRET="$PRB_APIServiceClientSecret" --from-literal=STUDENT_API_URL="http://student-api-master.$COMMON_NAMESPACE-$envValue.svc.cluster.local:8080/api/v1/student" --from-literal=SCHOOL_API_URL="http://school-api-master.$COMMON_NAMESPACE-$envValue.svc.cluster.local:8080/api/v1/schools" --from-literal=TOKEN_URL="https://$SOAM_KC/auth/realms/$SOAM_KC_REALM_ID/protocol/openid-connect/token" --from-literal=URL_REDIS="redis.$OPENSHIFT_NAMESPACE-$envValue.svc.cluster.local:6379" --from-literal=REPEAT_TIME_WINDOW_K12=0 --from-literal=REPEAT_TIME_WINDOW_PSI=0 --from-literal=SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=16 --from-literal=SPRING_DATASOURCE_HIKARI_MINIMUM_IDLE=16 --from-literal=PEN_SERVICES_API_URL="http://pen-services-api-master.$OPENSHIFT_NAMESPACE-$envValue.svc.cluster.local:8080" --from-literal=HIBERNATE_SQL_PARAM_LOG_LEVEL=INFO --from-literal=PURGE_RECORDS_SAGA_AFTER_DAYS=365 --from-literal=SCHEDULED_JOBS_PURGE_OLD_SAGA_RECORDS_CRON="$SCHEDULED_JOBS_PURGE_OLD_SAGA_RECORDS_CRON" --from-literal=SOFT_DELETED_RETENTION_DAYS="$SOFT_DELETED_RETENTION_DAYS" --from-literal=SCHEDULED_JOBS_PURGE_SOFT_DELETED_RECORDS_CRON="$SCHEDULED_JOBS_PURGE_SOFT_DELETED_RECORDS_CRON" --from-literal=NATS_MAX_RECONNECT=60 --from-literal=HOLD_BATCHES_EQUAL_OR_LARGER_THAN=2500 --from-literal=PEN_COORDINATOR_EMAIL="$PEN_COORDINATOR_EMAIL" --from-literal=TOKEN_ISSUER_URL="https://$SOAM_KC/auth/realms/$SOAM_KC_REALM_ID" --from-literal=PEN_COORDINATOR_MAILING_ADDRESS="Ministry of Education and Child Care, Data Collection Unit PO Box 9886, Stn. Prov. Govt, Victoria BC, V8W 9T6" --from-literal=PEN_COORDINATOR_TELEPHONE="(250)356-8020" --from-literal=PEN_COORDINATOR_FACSIMILE="(250)953-0450" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON="$SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON_LOCK_AT_LEAST_FOR="50s" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_LOCK_AT_MOST_FOR="55s" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON="$SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON_LOCK_AT_LEAST_FOR="100s" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON_LOCK_AT_MOST_FOR="110s" --from-literal=SKIP_VALIDATION_FOR_DISTRICT_CODES="102,104" --from-literal=STUDENT_THRESHOLD_GENERATE_PDF="500" --from-literal=THREADS_MIN_SUBSCRIBER="$THREADS_MIN_SUBSCRIBER" --from-literal=THREADS_MAX_SUBSCRIBER="$THREADS_MAX_SUBSCRIBER" --from-literal=SAGAS_MAX_PENDING="$SAGAS_MAX_PENDING" --from-literal=SAGAS_MAX_PARALLEL="$SAGAS_MAX_PARALLEL" --dry-run -o yaml | oc apply -f - +oc create -n "$OPENSHIFT_NAMESPACE"-"$envValue" configmap "$APP_NAME"-config-map --from-literal=TZ=$TZVALUE --from-literal=JDBC_URL="$DB_JDBC_CONNECT_STRING" --from-literal=ORACLE_USERNAME="$DB_USER" --from-literal=ORACLE_PASSWORD="$DB_PWD" --from-literal=SPRING_SECURITY_LOG_LEVEL=INFO --from-literal=SPRING_WEB_LOG_LEVEL=INFO --from-literal=APP_LOG_LEVEL=INFO --from-literal=SPRING_BOOT_AUTOCONFIG_LOG_LEVEL=INFO --from-literal=SPRING_SHOW_REQUEST_DETAILS=false --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON" --from-literal=INSTITUTE_API_URL="http://institute-api-master.$COMMON_NAMESPACE-$envValue.svc.cluster.local:8080/api/v1/institute" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PENWEB_PEN_WEB_BLOBS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PENWEB_PEN_WEB_BLOBS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON_LOCK_AT_LEAST_FOR="540s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_PEN_WEB_BLOBS_CRON_LOCK_AT_MOST_FOR="580s" --from-literal=NATS_URL="$NATS_URL" --from-literal=NATS_CLUSTER="$NATS_CLUSTER" --from-literal=SPRING_JPA_SHOW_SQL="false" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON="$SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON_LOCK_AT_LEAST_FOR="55s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNCOMPLETED_SAGAS_CRON_LOCK_AT_MOST_FOR="57s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON="$SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON_LOCK_AT_LEAST_FOR="8s" --from-literal=SCHEDULED_JOBS_EXTRACT_UNPROCESSED_STUDENTS_CRON_LOCK_AT_MOST_FOR="8s" --from-literal=CLIENT_ID="pen-reg-batch-api-service" --from-literal=CLIENT_SECRET="$PRB_APIServiceClientSecret" --from-literal=STUDENT_API_URL="http://student-api-master.$COMMON_NAMESPACE-$envValue.svc.cluster.local:8080/api/v1/student" --from-literal=INSTITUTE_API_URL="http://institute-api-master.$COMMON_NAMESPACE-$envValue.svc.cluster.local:8080/api/v1/institute" --from-literal=TOKEN_URL="https://$SOAM_KC/auth/realms/$SOAM_KC_REALM_ID/protocol/openid-connect/token" --from-literal=URL_REDIS="redis.$OPENSHIFT_NAMESPACE-$envValue.svc.cluster.local:6379" --from-literal=REPEAT_TIME_WINDOW_K12=0 --from-literal=REPEAT_TIME_WINDOW_PSI=0 --from-literal=SPRING_DATASOURCE_HIKARI_MAXIMUM_POOL_SIZE=16 --from-literal=SPRING_DATASOURCE_HIKARI_MINIMUM_IDLE=16 --from-literal=PEN_SERVICES_API_URL="http://pen-services-api-master.$OPENSHIFT_NAMESPACE-$envValue.svc.cluster.local:8080" --from-literal=HIBERNATE_SQL_PARAM_LOG_LEVEL=INFO --from-literal=PURGE_RECORDS_SAGA_AFTER_DAYS=365 --from-literal=SCHEDULED_JOBS_PURGE_OLD_SAGA_RECORDS_CRON="$SCHEDULED_JOBS_PURGE_OLD_SAGA_RECORDS_CRON" --from-literal=SOFT_DELETED_RETENTION_DAYS="$SOFT_DELETED_RETENTION_DAYS" --from-literal=SCHEDULED_JOBS_PURGE_SOFT_DELETED_RECORDS_CRON="$SCHEDULED_JOBS_PURGE_SOFT_DELETED_RECORDS_CRON" --from-literal=NATS_MAX_RECONNECT=60 --from-literal=HOLD_BATCHES_EQUAL_OR_LARGER_THAN=2500 --from-literal=DATA_MANAGEMENT_UNIT_EMAIL="$DATA_MANAGEMENT_UNIT_EMAIL" --from-literal=TOKEN_ISSUER_URL="https://$SOAM_KC/auth/realms/$SOAM_KC_REALM_ID" --from-literal=DATA_MANAGEMENT_UNIT_MAILING_ADDRESS="Ministry of Education and Child Care, Data Collection Unit PO Box 9886, Stn. Prov. Govt, Victoria BC, V8W 9T6" --from-literal=DATA_MANAGEMENT_UNIT_TELEPHONE="(250)356-8020" --from-literal=DATA_MANAGEMENT_UNIT_FACSIMILE="(250)953-0450" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON="$SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_CRON_LOCK_AT_LEAST_FOR="50s" --from-literal=SCHEDULED_JOBS_MARK_PROCESSED_BATCHES_ACTIVE_LOCK_AT_MOST_FOR="55s" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON="$SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON_LOCK_AT_LEAST_FOR="100s" --from-literal=SCHEDULED_JOBS_PROCESS_LOADED_BATCHES_FOR_REPEATS_CRON_LOCK_AT_MOST_FOR="110s" --from-literal=SKIP_VALIDATION_FOR_DISTRICT_CODES="102,104" --from-literal=STUDENT_THRESHOLD_GENERATE_PDF="500" --from-literal=THREADS_MIN_SUBSCRIBER="$THREADS_MIN_SUBSCRIBER" --from-literal=THREADS_MAX_SUBSCRIBER="$THREADS_MAX_SUBSCRIBER" --from-literal=SAGAS_MAX_PENDING="$SAGAS_MAX_PENDING" --from-literal=SAGAS_MAX_PARALLEL="$SAGAS_MAX_PARALLEL" --dry-run -o yaml | oc apply -f - echo echo Setting environment variables for $APP_NAME-$SOAM_KC_REALM_ID application