Skip to content

Commit

Permalink
Merge pull request #401 from USEPA/feature/include-salesforce-ids-in-…
Browse files Browse the repository at this point in the history
…prf-data

Feature/include salesforce ids in prf data
  • Loading branch information
courtneymyers authored Mar 28, 2024
2 parents 7907274 + 379c3ea commit a8bc7f6
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 49 deletions.
1 change: 1 addition & 0 deletions app/client/src/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ type ConfigData = {
};

export type BapSamEntity = {
Id: string;
ENTITY_COMBO_KEY__c: string;
UNIQUE_ENTITY_ID__c: string;
ENTITY_EFT_INDICATOR__c: string;
Expand Down
8 changes: 3 additions & 5 deletions app/server/app/routes/bap.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ router.get("/sam", (req, res) => {
entities,
});
})
.catch((error) => {
.catch((_error) => {
// NOTE: logged in bap verifyBapConnection
const errorStatus = 500;
const errorMessage = `Error getting SAM.gov data from the BAP.`;
Expand All @@ -61,11 +61,9 @@ router.get("/sam", (req, res) => {

// --- get user's form submissions statuses from EPA's BAP
router.get("/submissions", storeBapComboKeys, (req, res) => {
const { bapComboKeys } = req;

return getBapFormSubmissionsStatuses(req, bapComboKeys)
return getBapFormSubmissionsStatuses(req)
.then((submissions) => res.json(submissions))
.catch((error) => {
.catch((_error) => {
// NOTE: logged in bap verifyBapConnection
const errorStatus = 500;
const errorMessage = `Error getting form submissions statuses from the BAP.`;
Expand Down
49 changes: 31 additions & 18 deletions app/server/app/utilities/bap.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const { submissionPeriodOpen } = require("../config/formio");

/**
* @typedef {Object} BapSamEntity
* @property {string} Id
* @property {string} ENTITY_COMBO_KEY__c
* @property {string} ENTITY_STATUS__c
* @property {string} UNIQUE_ENTITY_ID__c
Expand Down Expand Up @@ -114,27 +115,31 @@ const { submissionPeriodOpen } = require("../config/formio");
* JSON_Snapshot__c: string
* }
* Primary_Applicant__r: {
* Id: string
* FirstName: string
* LastName: string
* Title: string
* Email: string
* Phone: string
* } | null
* Alternate_Applicant__r: {
* Id: string
* FirstName: string
* LastName: string
* Title: string
* Email: string
* Phone: string
* } | null
* CSB_School_District__r: {
* Id: string
* Name: string
* BillingStreet: string
* BillingCity: string
* BillingState: string
* BillingPostalCode: string
* } | null
* School_District_Contact__r: {
* Id: string
* FirstName: string
* LastName: string
* Title: string
Expand Down Expand Up @@ -173,7 +178,6 @@ const { submissionPeriodOpen } = require("../config/formio");
* Id: string
* Related_Line_Item__c: string
* Relationship_Type__c: string
* Contact_Organization_Name__c: string
* Contact__r: {
* Id: string
* FirstName: string
Expand Down Expand Up @@ -330,10 +334,11 @@ async function queryForSamEntities(req, email) {
const logMessage = `Querying the BAP for SAM.gov entities for user with email: '${email}'.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

// `SELECT
// Id,
// ENTITY_COMBO_KEY__c,
// ENTITY_STATUS__c,
// UNIQUE_ENTITY_ID__c,
Expand Down Expand Up @@ -379,6 +384,7 @@ async function queryForSamEntities(req, email) {
},
{
// "*": 1,
Id: 1,
ENTITY_COMBO_KEY__c: 1,
ENTITY_STATUS__c: 1,
UNIQUE_ENTITY_ID__c: 1,
Expand Down Expand Up @@ -431,7 +437,7 @@ async function queryForBapFormSubmissionData(
`associated with ${logId}.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

const developerNameField = {
Expand Down Expand Up @@ -528,24 +534,26 @@ async function queryForBapFormSubmissionData(
* and related metadata.
*
* @param {express.Request} req
* @param {string[]} comboKeys
* @returns {Promise<BapFormSubmission[]>} collection of fields associated with each form submission
*/
async function queryForBapFormSubmissionsStatuses(req, comboKeys) {
async function queryForBapFormSubmissionsStatuses(req) {
/** @type {{ bapComboKeys: string[] }} */
const { bapComboKeys } = req;

const logMessage =
`Querying the BAP for form submissions statuses associated with ` +
`combokeys: '${comboKeys}'.`;
`combokeys: '${bapComboKeys}'.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

// `SELECT
// Parent_Rebate_ID__c,
// FROM
// Order_Request__c
// WHERE
// (${comboKeys
// (${bapComboKeys
// .map((key) => `UEI_EFTI_Combo_Key__c = '${key}'`)
// .join(" OR ")}) AND
// Latest_Version__c = TRUE`
Expand All @@ -554,7 +562,7 @@ async function queryForBapFormSubmissionsStatuses(req, comboKeys) {
.sobject("Order_Request__c")
.find(
{
UEI_EFTI_Combo_Key__c: { $in: comboKeys },
UEI_EFTI_Combo_Key__c: { $in: bapComboKeys },
Latest_Version__c: true,
},
{
Expand Down Expand Up @@ -633,7 +641,7 @@ async function queryBapFor2022PRFData(req, frfReviewItemId) {
`FRF Review Item ID: '${frfReviewItemId}'.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

// `SELECT
Expand Down Expand Up @@ -797,7 +805,7 @@ async function queryBapFor2023PRFData(req, frfReviewItemId) {
`FRF Review Item ID: '${frfReviewItemId}'.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

// `SELECT
Expand Down Expand Up @@ -829,21 +837,25 @@ async function queryBapFor2023PRFData(req, frfReviewItemId) {
// `SELECT
// Id,
// CSB_Snapshot__r.JSON_Snapshot__c
// Primary_Applicant__r.Id,
// 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.FirstName,
// Alternate_Applicant__r.LastName,
// Alternate_Applicant__r.Title,
// Alternate_Applicant__r.Email,
// Alternate_Applicant__r.Phone,
// CSB_School_District__r.Id,
// CSB_School_District__r.Name,
// CSB_School_District__r.BillingStreet,
// CSB_School_District__r.BillingCity,
// CSB_School_District__r.BillingState,
// CSB_School_District__r.BillingPostalCode,
// School_District_Contact__r.Id,
// School_District_Contact__r.FirstName,
// School_District_Contact__r.LastName,
// School_District_Contact__r.Title,
Expand Down Expand Up @@ -874,21 +886,25 @@ async function queryBapFor2023PRFData(req, frfReviewItemId) {
// "*": 1,
Id: 1, // Salesforce record ID
"CSB_Snapshot__r.JSON_Snapshot__c": 1,
"Primary_Applicant__r.Id": 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.FirstName": 1,
"Alternate_Applicant__r.LastName": 1,
"Alternate_Applicant__r.Title": 1,
"Alternate_Applicant__r.Email": 1,
"Alternate_Applicant__r.Phone": 1,
"CSB_School_District__r.Id": 1,
"CSB_School_District__r.Name": 1,
"CSB_School_District__r.BillingStreet": 1,
"CSB_School_District__r.BillingCity": 1,
"CSB_School_District__r.BillingState": 1,
"CSB_School_District__r.BillingPostalCode": 1,
"School_District_Contact__r.Id": 1,
"School_District_Contact__r.FirstName": 1,
"School_District_Contact__r.LastName": 1,
"School_District_Contact__r.Title": 1,
Expand Down Expand Up @@ -1001,7 +1017,6 @@ async function queryBapFor2023PRFData(req, frfReviewItemId) {
// Id,
// Related_Line_Item__c,
// Relationship_Type__c,
// Contact_Organization_Name__c,
// Contact__r.Id,
// Contact__r.FirstName,
// Contact__r.LastName
Expand Down Expand Up @@ -1029,7 +1044,6 @@ async function queryBapFor2023PRFData(req, frfReviewItemId) {
Id: 1, // Salesforce record ID
Related_Line_Item__c: 1,
Relationship_Type__c: 1,
Contact_Organization_Name__c: 1,
"Contact__r.Id": 1,
"Contact__r.FirstName": 1,
"Contact__r.LastName": 1,
Expand Down Expand Up @@ -1081,7 +1095,7 @@ async function queryBapFor2022CRFData(req, frfReviewItemId, prfReviewItemId) {
`PRF Review Item ID: '${prfReviewItemId}'.`;
log({ level: "info", message: logMessage, req });

/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

// `SELECT
Expand Down Expand Up @@ -1351,7 +1365,7 @@ async function queryBapFor2022CRFData(req, frfReviewItemId, prfReviewItemId) {
* @param {any[]} fn.args arguments to pass to the callback function
*/
function verifyBapConnection(req, { name, args }) {
/** @type {jsforce.Connection} */
/** @type {{ bapConnection: jsforce.Connection }} */
const { bapConnection } = req.app.locals;

function callback() {
Expand Down Expand Up @@ -1438,13 +1452,12 @@ function getBapFormSubmissionData({
* Fetches form submissions statuses associated with a provided set of combo keys.
*
* @param {express.Request} req
* @param {string[]} comboKeys
* @returns {ReturnType<queryForBapFormSubmissionsStatuses>}
*/
function getBapFormSubmissionsStatuses(req, comboKeys) {
function getBapFormSubmissionsStatuses(req) {
return verifyBapConnection(req, {
name: queryForBapFormSubmissionsStatuses,
args: [req, comboKeys],
args: [req],
});
}

Expand Down
Loading

0 comments on commit a8bc7f6

Please sign in to comment.