94 lines
3.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Дополнительный модуль: Интеграция с ГАР (GAR) - вспомогательные функции
*/
//--------------------------
// Глобальные идентификаторы
//--------------------------
//Типы сообщений
const LOG_ERR = "LOG_ERR"; //Ошибка
const LOG_WRN = "LOG_WRN"; //Предупреждение
const LOG_INF = "LOG_INF"; //Информация
//Типы сообщений обработчиков
const WRK_MSG_TYPE = {
TASK: "TASK",
RESULT: "RESULT",
STOP: "STOP"
};
//------------
// Тело модуля
//------------
//Протоколирование
const log = (type, message, module, stream) => {
let d = new Date();
if (stream)
stream.write(
`${d.toLocaleString("ru-RU")}${module ? ` (${module})` : ""}${
type === LOG_ERR ? " ОШИБКА" : type === LOG_WRN ? " ПРЕДУПРЕЖДЕНИЕ" : " ИНФОРМАЦИЯ"
}: ${message}\n`
);
};
//Протоколирование - ошибка
const logErr = (message, module, stream) => log(LOG_ERR, message, module, stream);
//Протоколирование - предупреждение
const logWrn = (message, module, stream) => log(LOG_WRN, message, module, stream);
//Протоколирование - информация
const logInf = (message, module, stream) => log(LOG_INF, message, module, stream);
//Формирование сообщения для останова
const makeStopMessage = () => ({ type: WRK_MSG_TYPE.STOP });
//Формирование сообщения с задачей
const makeTaskMessage = ({ payload }) => ({ type: WRK_MSG_TYPE.TASK, payload });
//Формирование ответа на задачу
const makeTaskResult = ({ err, payload }) => ({ type: WRK_MSG_TYPE.RESULT, err, payload });
//Формирование ответа на задачу (с успехом)
const makeTaskOKResult = payload => makeTaskResult({ err: null, payload });
//Формирование ответа на задачу (с ошибкой)
const makeTaskErrResult = err => makeTaskResult({ err, payload: null });
// Преобразование строки в дату в формате DD.MM.YYYY
const stringToDate = dateString => {
const dateStringSplit = dateString.split(".");
if (dateStringSplit.length == 3) {
try {
return new Date(+dateStringSplit[2], +dateStringSplit[1] - 1, +dateStringSplit[0] + 1);
} catch (e) {
return null;
}
} else {
return null;
}
};
// Преобразование даты в ISO строку в формате YYYY.MM.DD
const dateToISOString = date => {
return date.toISOString().substr(0, 10);
};
//-----------------
// Интерфейс модуля
//-----------------
exports.WRK_MSG_TYPE = WRK_MSG_TYPE;
exports.logErr = logErr;
exports.logWrn = logWrn;
exports.logInf = logInf;
exports.makeStopMessage = makeStopMessage;
exports.makeTaskMessage = makeTaskMessage;
exports.makeTaskOKResult = makeTaskOKResult;
exports.makeTaskErrResult = makeTaskErrResult;
exports.stringToDate = stringToDate;
exports.dateToISOString = dateToISOString;