diff --git a/packages/server/__tests__/db/db.test.js b/packages/server/__tests__/db/db.test.js index f14b23f26..2c6b1f14e 100644 --- a/packages/server/__tests__/db/db.test.js +++ b/packages/server/__tests__/db/db.test.js @@ -764,6 +764,16 @@ describe('db', () => { const result = await db.getNewGrantsForAgency(fixtures.agencies.accountancy); expect(result.length).to.equal(1); }); + it('does not return forecasted grants', async () => { + const newGrant = fixtures.grants.healthAide; + newGrant.grant_id = '444817'; + newGrant.open_date = new Date('2022-06-21'); + newGrant.opportunity_status = 'forecasted'; + await knex(TABLES.grants).insert(Object.values([newGrant])); + const result = await db.getNewGrantsForAgency(fixtures.agencies.accountancy); + const forecastedGrant = result.filter((grant) => { grant.grant_id === '444817'}); + expect(forecastedGrant.length).to.equal(0); + }); }); context('createUser', () => { diff --git a/packages/server/src/db/index.js b/packages/server/src/db/index.js index 36e4e73c5..c41df23a8 100755 --- a/packages/server/src/db/index.js +++ b/packages/server/src/db/index.js @@ -349,7 +349,8 @@ async function getNewGrantsForAgency(agency) { .select(knex.raw(`${TABLES.grants}.*, count(*) OVER() AS total_grants`)) .modify(helpers.whereAgencyCriteriaMatch, agencyCriteria) .modify((qb) => { - qb.where({ open_date: moment().subtract(1, 'day').format('YYYY-MM-DD') }); + qb.where({ open_date: moment().subtract(1, 'day').format('YYYY-MM-DD') }) + .whereNot({ opportunity_status: 'forecasted' }); }) .limit(3); @@ -751,6 +752,7 @@ async function getGrantsNew(filters, paginationParams, orderingParams, tenantId, CASE WHEN grants.archive_date <= now() THEN 'archived' WHEN grants.close_date <= now() THEN 'closed' + WHEN grants.open_date > now() THEN 'forecasted' ELSE 'posted' END as opportunity_status `)) @@ -761,6 +763,7 @@ async function getGrantsNew(filters, paginationParams, orderingParams, tenantId, .select(knex.raw(` count(*) OVER() AS full_count `)) + .whereNot({ opportunity_status: 'forecasted' }) .groupBy( 'grants.grant_id', 'grants.grant_number', @@ -844,6 +847,7 @@ async function getGrants({ currentPage, perPage, tenantId, filters, orderBy, searchTerm, orderDesc, } = {}) { const data = await knex(TABLES.grants) + .whereNot(`${TABLES.grants}.opportunity_status`, 'forecasted') .modify((queryBuilder) => { if (searchTerm && searchTerm !== 'null') { queryBuilder.andWhere( @@ -1005,14 +1009,16 @@ async function getGrants({ async function getGrant({ grantId }) { const results = await knex.table(TABLES.grants) .select('*') - .where({ grant_id: grantId }); + .where({ grant_id: grantId }) + .whereNot({ opportunity_status: 'forecasted'}); return results[0]; } async function getSingleGrantDetails({ grantId, tenantId }) { const results = await knex.table(TABLES.grants) .select('*') - .where({ grant_id: grantId }); + .where({ grant_id: grantId }) + .whereNot({ opportunity_status: 'forecasted'}); const enhancedResults = await enhanceGrantData(tenantId, results); return enhancedResults.length ? enhancedResults[0] : null; }