diff --git a/apps/backend/src/datasources/postgres/CallDataSource.ts b/apps/backend/src/datasources/postgres/CallDataSource.ts index 350123685e..8a0181426c 100644 --- a/apps/backend/src/datasources/postgres/CallDataSource.ts +++ b/apps/backend/src/datasources/postgres/CallDataSource.ts @@ -43,8 +43,10 @@ export default class PostgresCallDataSource implements CallDataSource { } async getCalls(filter?: CallsFilter): Promise { - const query = database('call').select(['*']); - + const query = database('call').select([ + '*', + 'call.description as description', + ]); if (filter?.shortCode) { query.where('call_short_code', 'like', `%${filter.shortCode}%`); } @@ -136,6 +138,22 @@ export default class PostgresCallDataSource implements CallDataSource { query.where('call_ended', false); } + if (filter?.proposalStatusShortCode) { + query + .join( + 'proposal_workflow_connections as w', + 'call.proposal_workflow_id', + 'w.proposal_workflow_id' + ) + .leftJoin( + 'proposal_statuses as s', + 'w.proposal_status_id', + 's.proposal_status_id' + ) + .where('s.short_code', filter.proposalStatusShortCode) + .distinctOn('call.call_id'); + } + return query.then((callDB: CallRecord[]) => callDB.map((call) => createCallObject(call)) ); diff --git a/apps/backend/src/resolvers/queries/CallsQuery.ts b/apps/backend/src/resolvers/queries/CallsQuery.ts index 1465f2b1d7..d733eec817 100644 --- a/apps/backend/src/resolvers/queries/CallsQuery.ts +++ b/apps/backend/src/resolvers/queries/CallsQuery.ts @@ -8,6 +8,9 @@ export class CallsFilter { @Field(() => String, { nullable: true }) public shortCode?: string; + @Field(() => String, { nullable: true }) + public proposalStatusShortCode?: string; + @Field(() => [Int], { nullable: true }) public templateIds?: number[];