diff --git a/README.md b/README.md index 771593c..c461e50 100644 --- a/README.md +++ b/README.md @@ -170,12 +170,22 @@ No input or output. Changes will be fetched from IDM Fetches person info from [Det sentrale folkeregister](/~https://github.com/vtfk/azf-dsf) +#### `With ssn as parameter` ```json { "ssn": "01010101010" } ``` +#### `With birthdate and name as parameter (only works with one match)` +```json +{ + "birthdate": "010101", + "firstName": "Per", + "lastName": "Son" +} +``` + ## Templates Currently available archive templates diff --git a/SyncElevmappe/index.js b/SyncElevmappe/index.js index 4e23a80..4458090 100644 --- a/SyncElevmappe/index.js +++ b/SyncElevmappe/index.js @@ -21,16 +21,18 @@ module.exports = async function (context, req) { } const { ssn } = req.body - if (!ssn) { - logger('error', ['Missing required parameter "ssn"']) - return new HTTPError(400, 'Missing required parameter "ssn"').toJSON() + const { birthdate, firstName, lastName } = req.body + if (!ssn && !(birthdate && firstName && lastName)) { + logger('error', ['Missing required parameter "ssn" or "birthdate, firstname, lastname"']) + return new HTTPError(400, 'Missing required parameter "ssn" or "birthdate, firstname, lastname"').toJSON() } - + const dsfSearchParameter = ssn ? { ssn } : { birthdate, firstName, lastName } try { - const dsfData = await getDsfData(ssn) + const dsfData = await getDsfData(dsfSearchParameter) const dsfPerson = repackDsfObject(dsfData.RESULT.HOV) const privatePerson = await syncPrivatePerson(dsfPerson) const elevmappe = await syncElevmappe(privatePerson) + return getResponseObject({ msg: 'Succesfully synced elevmappe', dsfPerson, diff --git a/lib/dsf/get-dsf-data.js b/lib/dsf/get-dsf-data.js index a2d2c35..079e08a 100644 --- a/lib/dsf/get-dsf-data.js +++ b/lib/dsf/get-dsf-data.js @@ -4,21 +4,38 @@ const generateSystemJwt = require('../generate-system-jwt') const HTTPError = require('../http-error') const { DSF: { saksref, url, jwtSecret } } = require('../../config') -module.exports = async ssn => { - const payload = { - method: 'hentDetaljer', - massLookup: true, - query: { - saksref, - foedselsnr: ssn +module.exports = async dsfSearchParameter => { + let payload + if (dsfSearchParameter.ssn) { + payload = { + method: 'hentDetaljer', + massLookup: true, + query: { + saksref, + foedselsnr: dsfSearchParameter.ssn + } + } + } else { + payload = { + method: 'hentDetaljer', + massLookup: true, + query: { + saksref, + foedselsdato: dsfSearchParameter.birthdate, + etternavn: dsfSearchParameter.lastName, + fornavn: dsfSearchParameter.firstName + } } } try { const { data } = await axios.post(url, payload, { headers: { Authorization: generateSystemJwt(jwtSecret) } }) + if (data.RESULT.ANTA === '0000') throw new HTTPError(404, 'Could not find any persons with given identification') + if (data.RESULT.ANTA) throw new HTTPError(404, 'Found several persons with given identification, cannot automate') return data } catch (error) { - const { status, data } = error.response + const status = error.response ? error.response.status : error.statusCode + const data = error.response ? error.response.data : error.message logger('error', ['get-dsf-data', status, data]) throw new HTTPError(status, data) } diff --git a/templates/vigo-SIGNOFF.json b/templates/vigo-SIGNOFF.json new file mode 100644 index 0000000..924f1cb --- /dev/null +++ b/templates/vigo-SIGNOFF.json @@ -0,0 +1,14 @@ +{ + "archive": { + "service": "DocumentService", + "method": "SignOffDocument", + "parameter": { + "Document": "<<>>", + "ResponseCode": "TO", + "Note": "Dokumentet er avskrevet med koden TO – Tatt til orientering" + } + }, + "data": { + "documentNumber": "30/00000-1" + } +}