import config from "./config/config"; import logging from "./config/logging"; 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"; const VERSION = "1.0"; let isRunning: boolean = false; logging.info(NAME_SPACE, "Starting " + VERSION); const on_init = async () => { logging.info(NAME_SPACE, "On Init Start"); await jurnalTxJob(); await jurnalArJob(); await jurnalArPayJob(); await jurnalJPADJob(); logging.info(NAME_SPACE, "On Init End"); }; on_init(); async function jurnalTxJob() { if (isRunning) { logging.info(NAME_SPACE, "Still Running"); return; } isRunning = true; try { logging.info(NAME_SPACE, "Starting Job Jurnal TX" + VERSION); // UPLOAD logging.info(NAME_SPACE, "Start Get Jurnal Tx"); // 2024 - 09 - 17; var respJurnal = await getJurnal(""); if (respJurnal["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respJurnal); } else { logging.info(NAME_SPACE, "\t Success Get Jurnal TX "); } // console.log(respJurnal["data"]); // console.log(respJurnal["jurnalID"]); 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 Tx, JURNAL ID :" + respJurnal["jurnalID"].toString() ); var respInsert = await injectJurnalTx(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 Tx, JURNAL ID :" + respJurnal["jurnalID"].toString() ); await delay(1000); } } logging.info(NAME_SPACE, "End Job Jurnal TX"); isRunning = false; } catch (e) { isRunning = false; if (e instanceof Error) { logging.error(NAME_SPACE, e.message); } else { logging.error(NAME_SPACE, "Unknown"); } } } async function jurnalArJob() { if (isRunning) { logging.info(NAME_SPACE, "Still Running"); return; } isRunning = true; try { logging.info(NAME_SPACE, "Starting Job Jurnal AR" + VERSION); // UPLOAD logging.info(NAME_SPACE, "Start Get Jurnal AR"); // 2024 - 09 - 17; var respJurnal = await getJurnalAr(""); if (respJurnal["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respJurnal); } else { logging.info(NAME_SPACE, "\t Success Get Jurnal AR"); } 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 AR, JURNAL ID :" + respJurnal["jurnalID"].toString() ); var respInsert = await injectJurnalAr(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 AR, JURNAL ID :" + respJurnal["jurnalID"].toString() ); await delay(1000); } } logging.info(NAME_SPACE, "End Job Jurnal AR"); isRunning = false; } catch (e) { isRunning = false; if (e instanceof Error) { logging.error(NAME_SPACE, e.message); } else { logging.error(NAME_SPACE, "Unknown"); } } } async function jurnalArPayJob() { if (isRunning) { logging.info(NAME_SPACE, "Still Running"); return; } isRunning = true; try { logging.info(NAME_SPACE, "Starting Job Jurnal AR Pay" + VERSION); // UPLOAD logging.info(NAME_SPACE, "Start Get Jurnal AR Pay"); // 2024 - 09 - 17; var respJurnal = await getJurnalArPay(""); if (respJurnal["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respJurnal); } else { logging.info(NAME_SPACE, "\t Success Get Jurnal AR Pay"); } 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 AR Pay, JURNAL ID :" + respJurnal["jurnalID"].toString() ); var respInsert = await injectJurnalArPay(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 AR Pay, JURNAL ID :" + respJurnal["jurnalID"].toString() ); await delay(1000); } } logging.info(NAME_SPACE, "End Job Jurnal AR Pay"); isRunning = false; } catch (e) { isRunning = false; if (e instanceof Error) { logging.error(NAME_SPACE, e.message); } else { logging.error(NAME_SPACE, "Unknown"); } } } 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( sched, async () => { await jurnalTxJob(); await jurnalArJob(); await jurnalArPayJob(); await jurnalJPADJob(); }, { timezone: "Asia/Jakarta", } ); } // ------------- function async function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); }