add: looping days in schedule_date

This commit is contained in:
Muhammad Afif
2025-10-17 13:02:50 +07:00
parent c71da2d3bb
commit d0394f27eb
2 changed files with 34 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
const pool = require("../config");
// const formattedDate = require("../utils/date");
const { formattedDate } = require("../utils/date");
// Get all schedules
const getAllScheduleDb = async (searchParams = {}) => {
@@ -60,16 +60,36 @@ const getScheduleByIdDb = async (id) => {
WHERE a.schedule_id = $1 AND a.deleted_at IS NULL
`;
const result = await pool.query(queryText, [id]);
return result.recordset?.[0] || null;
};
const insertScheduleDb = async (store) => {
const { query: queryText, values } = pool.buildDynamicInsert("schedule", store);
const nextDays = Number(store.next_day ?? 0);
const insertedRecords = [];
for (let i = 0; i <= nextDays; i++) {
const nextDate = new Date(store.schedule_date);
nextDate.setDate(nextDate.getDate() + i);
const formatted = formattedDate(nextDate);
const newStore = {
...store,
schedule_date: formatted,
};
delete newStore.next_day;
const { query: queryText, values } = pool.buildDynamicInsert("schedule", newStore);
const result = await pool.query(queryText, values);
const insertedId = result.recordset?.[0]?.inserted_id;
return insertedId ? await getScheduleByIdDb(insertedId) : null;
if (insertedId) {
const record = await getScheduleByIdDb(insertedId);
insertedRecords.push(record);
}
}
return insertedRecords;
};
const updateScheduleDb = async (id, data) => {

View File

@@ -12,6 +12,7 @@ const insertScheduleSchema = Joi.object({
}),
is_active: Joi.boolean().required(),
shift_id: Joi.number(),
next_day: Joi.number().required(),
});
const updateScheduleSchema = Joi.object({