@cityssm/worktech-api
Version:
Integrations with the WorkTech work order management system.
50 lines (43 loc) • 1.52 kB
text/typescript
import { connect, type mssql } from '@cityssm/mssql-multi-pool'
import type { JobActivityObjectCode } from './types.js'
const sql = `SELECT [Job_ID] as jobId,
[Actv_ID] as activityId,
[ObjCode] as objectCode,
rtrim([Year]) as fiscalYear,
coalesce([AcctSeg], '') as accountNumber
FROM [WMABCA] WITH (NOLOCK)`
/**
* Retrieves a job - activity - object code.
* @param mssqlConfig - SQL Server configuration.
* @param keys - The keys to search on.
* @param keys.jobId - The job id.
* @param keys.activityId - The activity id.
* @param keys.objectCode - The object code.
* @param keys.fiscalYear - The fiscal year.
* @returns - The job - activity - object code combination if available.
*/
export async function getJobActivityObjectCodeByKeys(
mssqlConfig: mssql.config,
keys: {
jobId: string
activityId: string
objectCode: string
fiscalYear: number | string
}
): Promise<JobActivityObjectCode | undefined> {
const pool = await connect(mssqlConfig)
const result = (await pool
.request()
.input('jobId', keys.jobId)
.input('activityId', keys.activityId)
.input('objectCode', keys.objectCode)
.input('fiscalYear', keys.fiscalYear).query(`${sql}
where Job_ID = @jobId
and Actv_ID = @activityId
and ObjCode = @objectCode
and Year = @fiscalYear`)) as mssql.IResult<JobActivityObjectCode>
if (result.recordset.length === 0) {
return undefined
}
return result.recordset[0]
}