phx-node
Version:
PHX NODE
135 lines • 6.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PHXConvertStringToDateISO = exports.PHXConvertHeadersRequest = exports.generateValue = exports.sumTotalFee = exports.getTotalDetailPromoByCode = exports.findAdjustmentForOtherService = exports.findAdjustmentForTuition = exports.parseToObject = exports.prevYearDate = exports.nextYearDate = exports.timeYearActive = void 0;
exports.getConfigByDepartmentId = getConfigByDepartmentId;
const dayjs = require("dayjs");
const constant_1 = require("./constant");
const tuition_1 = require("./types/tuition");
exports.timeYearActive = new Date().toISOString().slice(0, 10);
// Lấy năm sau
const nextYear = new Date();
nextYear.setFullYear(nextYear.getFullYear() + 1);
exports.nextYearDate = nextYear.toISOString().slice(0, 10);
// Lấy năm trước
const prevYear = new Date();
prevYear.setFullYear(prevYear.getFullYear() - 1);
exports.prevYearDate = prevYear.toISOString().slice(0, 10);
// parse env trên devtool thành dạng object
const parseToObject = (value) => {
return value
.split("\n") // Tách thành các dòng
.filter((line) => line.trim() && !line.startsWith("#")) // Bỏ các dòng rỗng và comment
.reduce((acc, line) => {
const [key, value] = line.split("="); // Tách key và value theo dấu '='
if (key && value) {
acc[key.trim()] = value.trim(); // Thêm key-value vào object
}
return acc;
}, {});
};
exports.parseToObject = parseToObject;
//Tìm giảm trừ bổ sung cho học phí
const findAdjustmentForTuition = (list_detail_fee_adjustment) => {
const listAdjustmentFeeForTuition = list_detail_fee_adjustment.filter(({ tuition_fee_adjustment: { fee_type_code, tuition_fee_project_code: { tuition_fee_type_of_service: { type_code }, }, }, }) => {
const isDescFee = fee_type_code === tuition_1.FEE_TYPE.DESC; // phí giảm trừ ghi danh
//Phần này về sau sẽ cho kế toán config từ ngoài dasboard - muốn giảm trừ phí ghi danh vào học phí không, giảm trừ dịch vụ nào,...
return isDescFee && type_code === constant_1.CODE_TUITION;
});
return listAdjustmentFeeForTuition;
};
exports.findAdjustmentForTuition = findAdjustmentForTuition;
//Tìm giảm trừ bổ sung cho phí dịch vụ khác
const findAdjustmentForOtherService = (list_detail_fee_adjustment) => {
const listAdjustmentFeeForOtherService = list_detail_fee_adjustment.filter(({ tuition_fee_adjustment: { fee_type_code, tuition_fee_project_code: { tuition_fee_type_of_service: { type_code }, }, }, }) => {
const isDescFee = fee_type_code === tuition_1.FEE_TYPE.DESC; // phí giảm
return isDescFee && type_code !== constant_1.CODE_TUITION;
});
return listAdjustmentFeeForOtherService;
};
exports.findAdjustmentForOtherService = findAdjustmentForOtherService;
const getTotalDetailPromoByCode = (list_detail_promo, code) => {
const admissionPromoForTuition = list_detail_promo.filter((item) => (item === null || item === void 0 ? void 0 : item.code) === code);
return (0, exports.sumTotalFee)(admissionPromoForTuition);
};
exports.getTotalDetailPromoByCode = getTotalDetailPromoByCode;
const sumTotalFee = (listFee, isFeeAdjustment = false) => {
var _a;
const listFeeLength = listFee.length;
if (listFeeLength === 0)
return 0;
let sumTotalFee = 0;
for (const feeItem of listFee) {
let totalPromo = 0;
if (isFeeAdjustment) {
totalPromo = ((_a = feeItem === null || feeItem === void 0 ? void 0 : feeItem.tuition_fee_adjustment) === null || _a === void 0 ? void 0 : _a.total_fee) || 0;
}
else {
totalPromo = (feeItem === null || feeItem === void 0 ? void 0 : feeItem.total_promo) || (feeItem === null || feeItem === void 0 ? void 0 : feeItem.value) || 0;
}
sumTotalFee += totalPromo;
}
return sumTotalFee;
};
exports.sumTotalFee = sumTotalFee;
const generateValue = (value) => {
if (!value)
return 0;
return Math.abs(value);
};
exports.generateValue = generateValue;
const extractAppVersion = (userAgent) => {
const match = userAgent.match(/(\d+\.\d+\.\d+)/);
return match ? match[1] : null;
};
const parseNumber = (value) => typeof value === "string" && /^\d+$/.test(value) ? Number(value) : value;
const PHXConvertHeadersRequest = (headers) => {
const parseSchoolsHeader = (data) => {
if (!data || data === "{null: null}")
return; // mobile gửi lên giá trị {null: null}
// Thêm dấu " cho key và value
const schoolsHeaderToJsonString = data
.replace(/(\d+):/g, '"$1":')
.replace(/:\s*(https?:\/\/[^,}]+)/g, ':"$1"');
// Parse thành object
const result = JSON.parse(schoolsHeaderToJsonString);
return Object.entries(result).map(([userId, hostname]) => ({
user_id: parseNumber(userId),
hostname: String(hostname),
}));
};
return {
authorizationId: parseNumber(headers["authorization-id"]),
appId: headers["app-id"],
app: headers["app"] || headers["app-name"],
hostname: headers["hostname"] || headers["origin"],
phoneNumber: headers["phone-number"] || headers["x-phone-number"],
parentId: parseNumber(headers["parent-id"]),
studentId: parseNumber(headers["student-id"]),
language: headers["language"],
os: headers["os"],
osVersion: headers["os-version"],
deviceModel: headers["device-model"],
deviceId: headers["device-id"],
listUserSchool: parseSchoolsHeader(headers["hostnames-and-parents-ids"]),
userId: parseNumber(headers["x-user-id"]),
currentVersion: extractAppVersion(headers["user-agent"]),
clientPath: headers["x-client-path"],
teacherId: headers["teacher-id"],
schoolId: headers["x-tenant-id"],
};
};
exports.PHXConvertHeadersRequest = PHXConvertHeadersRequest;
function getConfigByDepartmentId(listConfigs, departmentId) {
var _a;
// Ưu tiên tìm config theo departmentId, nếu không có thì lấy config chung (department_id = null)
const configData = (_a = listConfigs.find((configItem) => configItem.department_id === departmentId)) !== null && _a !== void 0 ? _a : listConfigs.find((configItem) => configItem.department_id === null);
return configData || {};
}
const PHXConvertStringToDateISO = (time) => {
const result = dayjs(time)
.startOf("day")
.format("YYYY-MM-DDTHH:mm:ss.SSSSSSZ");
return result;
};
exports.PHXConvertStringToDateISO = PHXConvertStringToDateISO;
//# sourceMappingURL=helper.js.map