UNPKG

phx-node

Version:

PHX NODE

135 lines 6.74 kB
"use strict"; 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