diff --git a/source/lib_jurnaljpad.ts b/source/lib_jurnaljpad.ts new file mode 100644 index 0000000..73a443c --- /dev/null +++ b/source/lib_jurnaljpad.ts @@ -0,0 +1,46 @@ +import axios from "axios"; +import config from "./config/config"; +import logging from "./config/logging"; +import { NAME_SPACE } from "./server"; + +export const getJurnalJPAD = async ( + startDate: string = "", + endDate: string = "" +) => { + const url = `${config.base_url}mockup/accounting/injectjurnaljpadokter/getJurnal/${startDate}/${endDate}`; + logging.info(NAME_SPACE, `\t INFO : ${url}`); + + try { + const resp = await axios.get(url, { + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; + +export const injectJurnalJPAD = async (prm: any) => { + const url = `${config.base_url}mockup/accounting/injectjurnaljpadokter/inject`; + logging.info(NAME_SPACE, `\t INFO : ${url}`); + + try { + const resp = await axios.post(url, prm, { + headers: { "Content-Type": "application/json; charset=UTF-8" }, + responseType: "arraybuffer", + }); + const jresp = JSON.parse(resp.data.toString()); + return jresp; + } catch (e) { + if (axios.isAxiosError(e)) { + logging.error(NAME_SPACE, e.response?.data.toString()); + } else if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } + } +}; diff --git a/source/server.ts b/source/server.ts index 1424369..4ef53e9 100644 --- a/source/server.ts +++ b/source/server.ts @@ -5,6 +5,7 @@ import * as Xcron from "node-cron"; import { getJurnal, injectJurnalTx } from "./lib_jurnaltx"; import { getJurnalAr, injectJurnalAr } from "./lib_jurnalar"; import { getJurnalArPay, injectJurnalArPay } from "./lib_jurnalarpay"; +import { getJurnalJPAD, injectJurnalJPAD } from "./lib_jurnaljpad"; import axios from "axios"; export const NAME_SPACE = "Point Member Gateway"; @@ -20,6 +21,7 @@ const on_init = async () => { await jurnalTxJob(); await jurnalArJob(); await jurnalArPayJob(); + await jurnalJPADJob(); logging.info(NAME_SPACE, "On Init End"); }; @@ -201,6 +203,64 @@ async function jurnalArPayJob() { } } } +async function jurnalJPADJob() { + if (isRunning) { + logging.info(NAME_SPACE, "Still Running"); + return; + } + isRunning = true; + try { + logging.info(NAME_SPACE, "Starting Job Jurnal JPA Dokter" + VERSION); + // UPLOAD + logging.info(NAME_SPACE, "Start Get Jurnal JPA Dokter"); + // 2024 - 09 - 17; + var respJurnal = await getJurnalJPAD(); + if (respJurnal["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", respJurnal); + } else { + logging.info(NAME_SPACE, "\t Success Get Jurnal JPA Dokter"); + } + logging.info(NAME_SPACE, "\t wait 1s"); + if (respJurnal["data"].length === 0) { + logging.info(NAME_SPACE, "\t Tidak ada jurnal"); + } else { + for (let i = 0; i < respJurnal["data"].length; i++) { + const e = respJurnal["data"][i]; + e.jurnalID = respJurnal["jurnalID"]; + logging.info( + NAME_SPACE, + "Start Insert Jurnal JPA Dokter, JURNAL ID :" + + respJurnal["jurnalID"].toString() + ); + var respInsert = await injectJurnalJPAD(e); + if (respInsert["status"] != "OK") { + logging.error(NAME_SPACE, "\t Error", respInsert); + } else { + logging.info(NAME_SPACE, "\t " + respInsert["data"]); + } + //Sleep + logging.info(NAME_SPACE, "\t wait 1s"); + logging.info( + NAME_SPACE, + "End Insert Jurnal JPA Dokter, JURNAL ID :" + + respJurnal["jurnalID"].toString() + ); + await delay(1000); + } + } + + logging.info(NAME_SPACE, "End Job Jurnal JPA Dokter"); + + isRunning = false; + } catch (e) { + isRunning = false; + if (e instanceof Error) { + logging.error(NAME_SPACE, e.message); + } else { + logging.error(NAME_SPACE, "Unknown"); + } + } +} // console.log(config); for (const sched of config.schedule) { Xcron.schedule( @@ -209,6 +269,7 @@ for (const sched of config.schedule) { await jurnalTxJob(); await jurnalArJob(); await jurnalArPayJob(); + await jurnalJPADJob(); }, { timezone: "Asia/Jakarta",