Skip to content

Commit

Permalink
Merge pull request #535 from USEPA/feature/update-new-2024-prf-data
Browse files Browse the repository at this point in the history
Feature/update new 2024 prf data
  • Loading branch information
courtneymyers authored Jan 22, 2025
2 parents 47259aa + 47618be commit bac0b55
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 4 deletions.
2 changes: 1 addition & 1 deletion app/server/app/routes/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const router = express.Router();
router.use(ensureAuthenticated);

// --- get CSB app specific configuration
router.get("/", (req, res) => {
router.get("/", (_req, res) => {
// NOTE: fallback to current year if CSB_REBATE_YEAR is not set
const date = new Date();
const year = date.getFullYear().toString();
Expand Down
2 changes: 1 addition & 1 deletion app/server/app/routes/status.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ function verifySchema({ schema, substring }) {

const router = express.Router();

router.get("/app", (req, res) => {
router.get("/app", (_req, res) => {
return res.json({ status: true });
});

Expand Down
62 changes: 61 additions & 1 deletion app/server/app/utilities/bap.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ const { submissionPeriodOpen } = require("../config/formio");
* Primary_Applicant__r: {
* attributes: { type: "Contact", url: string }
* Id: string
* RecordTypeId: string
* FirstName: string
* LastName: string
* Title: string
Expand All @@ -259,6 +260,7 @@ const { submissionPeriodOpen } = require("../config/formio");
* Alternate_Applicant__r: {
* attributes: { type: "Contact", url: string }
* Id: string
* RecordTypeId: string
* FirstName: string
* LastName: string
* Title: string
Expand All @@ -277,6 +279,7 @@ const { submissionPeriodOpen } = require("../config/formio");
* School_District_Contact__r: {
* attributes: { type: "Contact", url: string }
* Id: string
* RecordTypeId: string
* FirstName: string
* LastName: string
* Title: string
Expand Down Expand Up @@ -320,6 +323,7 @@ const { submissionPeriodOpen } = require("../config/formio");
* Contact__r: {
* attributes: { type: "Contact", url: string }
* Id: string
* RecordTypeId: string
* FirstName: string
* LastName: string
* Title: string
Expand All @@ -337,6 +341,12 @@ const { submissionPeriodOpen } = require("../config/formio");
* }
* }
* }[]} frf2024BusRecordsContactsQueries
* @property {{
* attributes: { type: "RecordType", url: string }
* Id: string
* Name: string
* Description: string
* }[]} frf2024ContactsRecordTypesQuery
*/

/**
Expand Down Expand Up @@ -1341,12 +1351,14 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
// Applicant_Organization__r.Id
// Applicant_Organization__r.County__c
// Primary_Applicant__r.Id,
// Primary_Applicant__r.RecordTypeId,
// Primary_Applicant__r.FirstName,
// Primary_Applicant__r.LastName,
// Primary_Applicant__r.Title,
// Primary_Applicant__r.Email,
// Primary_Applicant__r.Phone,
// Alternate_Applicant__r.Id,
// Alternate_Applicant__r.RecordTypeId,
// Alternate_Applicant__r.FirstName,
// Alternate_Applicant__r.LastName,
// Alternate_Applicant__r.Title,
Expand All @@ -1359,6 +1371,7 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
// CSB_School_District__r.BillingState,
// CSB_School_District__r.BillingPostalCode,
// School_District_Contact__r.Id,
// School_District_Contact__r.RecordTypeId
// School_District_Contact__r.FirstName,
// School_District_Contact__r.LastName,
// School_District_Contact__r.Title,
Expand Down Expand Up @@ -1393,12 +1406,14 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
"Applicant_Organization__r.Id": 1,
"Applicant_Organization__r.County__c": 1,
"Primary_Applicant__r.Id": 1,
"Primary_Applicant__r.RecordTypeId": 1,
"Primary_Applicant__r.FirstName": 1,
"Primary_Applicant__r.LastName": 1,
"Primary_Applicant__r.Title": 1,
"Primary_Applicant__r.Email": 1,
"Primary_Applicant__r.Phone": 1,
"Alternate_Applicant__r.Id": 1,
"Alternate_Applicant__r.RecordTypeId": 1,
"Alternate_Applicant__r.FirstName": 1,
"Alternate_Applicant__r.LastName": 1,
"Alternate_Applicant__r.Title": 1,
Expand All @@ -1411,6 +1426,7 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
"CSB_School_District__r.BillingState": 1,
"CSB_School_District__r.BillingPostalCode": 1,
"School_District_Contact__r.Id": 1,
"School_District_Contact__r.RecordTypeId": 1,
"School_District_Contact__r.FirstName": 1,
"School_District_Contact__r.LastName": 1,
"School_District_Contact__r.Title": 1,
Expand All @@ -1426,7 +1442,8 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
)
.execute(async (err, records) => ((await err) ? err : records));

const frf2024RecordId = frf2024RecordQuery["0"].Id;
const frf2024Record = frf2024RecordQuery["0"];
const frf2024RecordId = frf2024Record.Id;

// `SELECT
// Id
Expand Down Expand Up @@ -1524,6 +1541,7 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
// Related_Line_Item__c,
// Relationship_Type__c,
// Contact__r.Id,
// Contant__r.RecordTypeId,
// Contact__r.FirstName,
// Contact__r.LastName
// Contact__r.Title,
Expand Down Expand Up @@ -1557,6 +1575,7 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
Related_Line_Item__c: 1,
Relationship_Type__c: 1,
"Contact__r.Id": 1,
"Contact__r.RecordTypeId": 1,
"Contact__r.FirstName": 1,
"Contact__r.LastName": 1,
"Contact__r.Title": 1,
Expand All @@ -1576,10 +1595,51 @@ async function queryBapFor2024PRFData(req, frfReviewItemId) {
)
).flat();

const recordTypeIds = [];

recordTypeIds.push(frf2024Record?.Primary_Applicant__r?.RecordTypeId);
recordTypeIds.push(frf2024Record?.Alternate_Applicant__r?.RecordTypeId);
recordTypeIds.push(frf2024Record?.School_District_Contact__r?.RecordTypeId);

for (const busRecordsContactsQuery of frf2024BusRecordsContactsQueries) {
const { Contact__r } = busRecordsContactsQuery;
recordTypeIds.push(Contact__r?.RecordTypeId);
}

const uniqueRecordTypeIds = [...new Set(recordTypeIds)].filter(Boolean);

// `SELECT
// Id,
// Name,
// Description
// FROM
// RecordType
// WHERE
// Id IN(${uniqueRecordTypeIds.map((id) => `'${id}'`)})`

const frf2024ContactsRecordTypesQuery =
uniqueRecordTypeIds.length === 0
? []
: await bapConnection
.sobject("RecordType")
.find(
{
Id: { $in: uniqueRecordTypeIds },
},
{
// "*": 1,
Id: 1, // Salesforce record ID
Name: 1,
Description: 1,
},
)
.execute(async (err, records) => ((await err) ? err : records));

return {
frf2024RecordQuery,
frf2024BusRecordsQuery,
frf2024BusRecordsContactsQueries,
frf2024ContactsRecordTypesQuery,
};
}

Expand Down
34 changes: 33 additions & 1 deletion app/server/app/utilities/formio.js
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
frf2024RecordQuery,
frf2024BusRecordsQuery,
frf2024BusRecordsContactsQueries,
frf2024ContactsRecordTypesQuery,
} = results;

const existingBusOwnerType = "Old Bus Private Fleet Owner (if changed)";
Expand Down Expand Up @@ -535,6 +536,7 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {

const {
Id: contactId,
RecordTypeId,
FirstName,
LastName,
Title,
Expand Down Expand Up @@ -577,6 +579,10 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
BillingStreet ?? "\n"
).split("\n");

const orgContactRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === RecordTypeId,
);

array.push({
_bap_org_frf: true,
org_number: jsonOrg.org_number,
Expand All @@ -588,6 +594,7 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
_bap_org_id: orgId,
_bap_org_name: orgName,
_bap_org_contact_id_frf: contactId,
_bap_org_contact_recordtype: orgContactRecordType?.Name || "",
_bap_org_contact_fname: FirstName,
_bap_org_contact_lname: LastName,
_bap_org_contact_title: Title,
Expand Down Expand Up @@ -642,12 +649,21 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
item.Relationship_Type__c === newBusOwnerType,
);

const existingOwnerRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === existingOwnerRecord?.Contact__r?.RecordTypeId,
);

const newOwnerRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === newOwnerRecord?.Contact__r?.RecordTypeId,
);

return {
bus_number: Rebate_Item_num__c,
bus_existing_owner: {
org_id: existingOwnerRecord?.Contact__r?.Account?.Id,
org_name: existingOwnerRecord?.Contact__r?.Account?.Name,
org_contact_id: existingOwnerRecord?.Contact__r?.Id,
org_contact_recordtype: existingOwnerRecordType?.Name || "",
org_contact_fname: existingOwnerRecord?.Contact__r?.FirstName,
org_contact_lname: existingOwnerRecord?.Contact__r?.LastName,
},
Expand All @@ -668,6 +684,7 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
org_id: newOwnerRecord?.Contact__r?.Account?.Id,
org_name: newOwnerRecord?.Contact__r?.Account?.Name,
org_contact_id: newOwnerRecord?.Contact__r?.Id,
org_contact_recordtype: newOwnerRecordType?.Name || "",
org_contact_fname: newOwnerRecord?.Contact__r?.FirstName,
org_contact_lname: newOwnerRecord?.Contact__r?.LastName,
},
Expand All @@ -678,6 +695,18 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
};
});

const primaryContactRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === Primary_Applicant__r?.RecordTypeId,
);

const alternateContactRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === Alternate_Applicant__r?.RecordTypeId,
);

const districtContactRecordType = frf2024ContactsRecordTypesQuery.find(
(item) => item.Id === School_District_Contact__r?.RecordTypeId,
);

return {
data: {
_frf_modified: frfModified,
Expand All @@ -704,12 +733,14 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
_bap_govt_bus_poc_email: GOVT_BUS_POC_EMAIL__c,
_bap_alt_govt_bus_poc_email: ALT_GOVT_BUS_POC_EMAIL__c,
_bap_primary_id: Primary_Applicant__r?.Id,
_bap_primary_recordtype: primaryContactRecordType?.Name || "",
_bap_primary_fname: Primary_Applicant__r?.FirstName,
_bap_primary_lname: Primary_Applicant__r?.LastName,
_bap_primary_title: Primary_Applicant__r?.Title,
_bap_primary_email: Primary_Applicant__r?.Email,
_bap_primary_phone: Primary_Applicant__r?.Phone,
_bap_alternate_id: Alternate_Applicant__r?.Id,
_bap_alternate_recordtype: alternateContactRecordType?.Name,
_bap_alternate_fname: Alternate_Applicant__r?.FirstName,
_bap_alternate_lname: Alternate_Applicant__r?.LastName,
_bap_alternate_title: Alternate_Applicant__r?.Title,
Expand All @@ -731,6 +762,7 @@ function fetchDataForPRFSubmission({ rebateYear, req, res }) {
},
_bap_district_self_certify: Self_Certification_Category__c,
_bap_district_contact_id: School_District_Contact__r?.Id,
_bap_district_contact_recordtype: districtContactRecordType?.Name || "", // prettier-ignore
_bap_district_contact_fname: School_District_Contact__r?.FirstName,
_bap_district_contact_lname: School_District_Contact__r?.LastName,
_bap_district_contact_title: School_District_Contact__r?.Title,
Expand Down Expand Up @@ -1999,7 +2031,7 @@ function updateCRFSubmission({ rebateYear, req, res }) {
return res.status(errorStatus).json({ message: errorMessage });
});
})
.catch((error) => {
.catch((_error) => {
const logMessage =
`User with email '${mail}' attempted to update ${rebateYear} CRF ` +
`submission '${rebateId}' when the CSB CRF enrollment period was closed.`;
Expand Down

0 comments on commit bac0b55

Please sign in to comment.