first commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Copyright (c) 2026 Niolla
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is proprietary and confidential.
|
||||
* Unauthorized copying, modification, distribution, or use
|
||||
* of this file, via any medium, is strictly prohibited.
|
||||
*/
|
||||
|
||||
// app/utils/calendar.util.js
|
||||
|
||||
const db = require("../models");
|
||||
const { log } = require("./consoleLog.utill");
|
||||
|
||||
const Calendar = db.calender;
|
||||
const CalenderHoliday = db.calenderHolidays;
|
||||
|
||||
|
||||
const calculateDeadline = async () => {
|
||||
let deadlineDate = new Date();
|
||||
|
||||
const currentYear = deadlineDate.getFullYear();
|
||||
|
||||
// Get calendar for current year
|
||||
const calendar = await Calendar.findOne({
|
||||
where: {
|
||||
year: currentYear
|
||||
}
|
||||
});
|
||||
|
||||
if (!calendar) {
|
||||
throw new Error(`Calendar for year ${currentYear} not found`);
|
||||
}
|
||||
|
||||
|
||||
deadlineDate.setDate(deadlineDate.getDate() + 1);
|
||||
|
||||
|
||||
while (true) {
|
||||
|
||||
const month = deadlineDate.getMonth() + 1;
|
||||
const day = deadlineDate.getDate();
|
||||
|
||||
|
||||
// Get holidays for this month
|
||||
const holidays = await CalenderHoliday.findAll({
|
||||
where: {
|
||||
calender_id: calendar.calender_id,
|
||||
month: month,
|
||||
shouldConsiderAsHoliday: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const isWeekend =
|
||||
deadlineDate.getDay() === 0 ||
|
||||
deadlineDate.getDay() === 6;
|
||||
|
||||
|
||||
const holiday = holidays.find(
|
||||
h => h.day === day
|
||||
);
|
||||
|
||||
|
||||
const isHoliday =
|
||||
isWeekend || !!holiday;
|
||||
|
||||
|
||||
log(
|
||||
`${deadlineDate.toISOString().split("T")[0]} => Holiday: ${isHoliday}`
|
||||
);
|
||||
|
||||
|
||||
if (!isHoliday) {
|
||||
return deadlineDate;
|
||||
}
|
||||
|
||||
|
||||
// Move one more day
|
||||
deadlineDate.setDate(
|
||||
deadlineDate.getDate() + 1
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
calculateDeadline
|
||||
};
|
||||
Reference in New Issue
Block a user