UNPKG

@digigov-oss/get-valid-disability-certification-client

Version:

Client for getValidDisabilityCertification service of GSIS

131 lines (119 loc) 3.78 kB
import soapClient from "./soapClient.js"; import { generateAuditRecord, AuditRecord, FileEngine, AuditEngine, } from "@digigov-oss/gsis-audit-record-db"; import config from "./config.json"; export type AuditInit = AuditRecord; export type GetValidDisabilityCertificationOutputRecord = { committeeNum: string; decisionNum: string; disabilityDesc: string; disabilityRate: string; issuedDate: string; responseMessage: string; responseSuccess: boolean; validFromDate: string; validToDate: string; }; export type GetValidDisabilityCertPercOutputRecord = { committeeNum: string; decisionNum: string; disabilityRate: string; issuedDate: string; responseMessage: string; responseSuccess: boolean; validFromDate: string; validToDate: string; }; export type ErrorRecord = { errorCode: string; errorDescr: string; }; /** * @type Overrides * @description Overrides for the SOAP client * @param {boolean} prod - Set to true for production environment * @param {string} auditInit - Audit record initializer to be used for the audit record produced * @param {string} auditStoragePath - Path to the audit record storage */ export type Overrides = { endpoint?: string; prod?: boolean; auditInit?: AuditRecord; auditStoragePath?: string; auditEngine?: AuditEngine; }; /** * @param passportNumber * @param reasonDesc * @param user username * @param pass password * @param overrides options overrides * @returns AuditRecord | errorRecord */ export const getValidDisabilityCertification = async ( amka: string, date: string, user: string, pass: string, overrides?: Overrides ) => { const endpoint = overrides?.endpoint ?? ""; const prod = overrides?.prod ?? false; const auditInit = overrides?.auditInit ?? ({} as AuditRecord); const auditStoragePath = overrides?.auditStoragePath ?? "/tmp"; const auditEngine = overrides?.auditEngine ?? new FileEngine(auditStoragePath); const wsdl = prod == true ? config.prod.wsdl : config.test.wsdl; const auditRecord = await generateAuditRecord(auditInit, auditEngine); if (!auditRecord) throw new Error("Audit record is not initialized"); try { const s = new soapClient(wsdl, user, pass, auditRecord, endpoint); const response: | GetValidDisabilityCertificationOutputRecord | ErrorRecord = await s.getValidDisabilityCertification(amka, date); return { kedResponse: response, auditRecord: auditRecord }; } catch (error) { throw error; } }; /** * @param name * @param surname * @param dateOfBirth * @param reasonDesc * @param user username * @param pass password * @param overrides options overrides * @returns AuditRecord | errorRecord */ export const getValidDisabilityCertPerc = async ( amka: string, date: string, user: string, pass: string, overrides?: Overrides ) => { const endpoint = overrides?.endpoint ?? ""; const prod = overrides?.prod ?? false; const auditInit = overrides?.auditInit ?? ({} as AuditRecord); const auditStoragePath = overrides?.auditStoragePath ?? "/tmp"; const auditEngine = overrides?.auditEngine ?? new FileEngine(auditStoragePath); const wsdl = prod == true ? config.prod.wsdl : config.test.wsdl; const auditRecord = await generateAuditRecord(auditInit, auditEngine); if (!auditRecord) throw new Error("Audit record is not initialized"); try { const s = new soapClient(wsdl, user, pass, auditRecord, endpoint); const response: | GetValidDisabilityCertPercOutputRecord | ErrorRecord = await s.getValidDisabilityCertPerc(amka, date); return { kedResponse: response, auditRecord: auditRecord }; } catch (error) { throw error; } }; export default { getValidDisabilityCertification, getValidDisabilityCertPerc };