Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/include salesforce ids in prf data #401

Merged
merged 8 commits into from
Mar 28, 2024
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
Loading