Merge branch 'main' of https://git.shiblysolution.id/SAUDE-TL/service-master-data
This commit is contained in:
@ -248,12 +248,11 @@ export class ScheduleController {
|
|||||||
roomId: Joi.string().uuid().required(),
|
roomId: Joi.string().uuid().required(),
|
||||||
doctorId: Joi.string().uuid().required(),
|
doctorId: Joi.string().uuid().required(),
|
||||||
title: Joi.string().max(256).required(),
|
title: Joi.string().max(256).required(),
|
||||||
timezone: Joi.string().max(64).required(),
|
|
||||||
quota: Joi.number().integer().min(0).allow(null).optional(),
|
quota: Joi.number().integer().min(0).allow(null).optional(),
|
||||||
startDate: Joi.string().required(),
|
startDate: Joi.string().required(),
|
||||||
untilDate: Joi.string().allow("", null).optional(),
|
untilDate: Joi.string().allow("", null).optional(),
|
||||||
startTimeLocal: Joi.string().required(),
|
startTime: Joi.string().required(),
|
||||||
endTimeLocal: Joi.string().required(),
|
endTime: Joi.string().required(),
|
||||||
recurrence: Joi.object({
|
recurrence: Joi.object({
|
||||||
type: Joi.string().valid("daily", "weekly", "monthly").required(),
|
type: Joi.string().valid("daily", "weekly", "monthly").required(),
|
||||||
interval: Joi.number().min(1).optional(),
|
interval: Joi.number().min(1).optional(),
|
||||||
@ -292,12 +291,11 @@ export class ScheduleController {
|
|||||||
roomId: Joi.string().uuid().required(),
|
roomId: Joi.string().uuid().required(),
|
||||||
doctorId: Joi.string().uuid().required(),
|
doctorId: Joi.string().uuid().required(),
|
||||||
title: Joi.string().max(256).required(),
|
title: Joi.string().max(256).required(),
|
||||||
timezone: Joi.string().max(64).required(),
|
|
||||||
quota: Joi.number().integer().min(0).allow(null).optional(),
|
quota: Joi.number().integer().min(0).allow(null).optional(),
|
||||||
startDate: Joi.string().required(),
|
startDate: Joi.string().required(),
|
||||||
untilDate: Joi.string().allow("", null).optional(),
|
untilDate: Joi.string().allow("", null).optional(),
|
||||||
startTimeLocal: Joi.string().required(),
|
startTime: Joi.string().required(),
|
||||||
endTimeLocal: Joi.string().required(),
|
endTime: Joi.string().required(),
|
||||||
recurrence: Joi.object({
|
recurrence: Joi.object({
|
||||||
type: Joi.string().valid("daily", "weekly", "monthly").required(),
|
type: Joi.string().valid("daily", "weekly", "monthly").required(),
|
||||||
interval: Joi.number().min(1).optional(),
|
interval: Joi.number().min(1).optional(),
|
||||||
|
|||||||
@ -13,12 +13,11 @@ type ScheduleSeriesPayload = {
|
|||||||
roomId: string;
|
roomId: string;
|
||||||
doctorId: string;
|
doctorId: string;
|
||||||
title: string;
|
title: string;
|
||||||
timezone: string;
|
|
||||||
quota?: number | null;
|
quota?: number | null;
|
||||||
startDate: string;
|
startDate: string;
|
||||||
untilDate?: string | null;
|
untilDate?: string | null;
|
||||||
startTimeLocal: string;
|
startTime: string;
|
||||||
endTimeLocal: string;
|
endTime: string;
|
||||||
recurrence?: RecurrenceInput | null;
|
recurrence?: RecurrenceInput | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -112,8 +111,8 @@ export class ScheduleModel {
|
|||||||
const exception = exceptionMap.get(`${series.id}:${occurrenceYmd}`);
|
const exception = exceptionMap.get(`${series.id}:${occurrenceYmd}`);
|
||||||
if (exception && exception.is_cancelled) continue;
|
if (exception && exception.is_cancelled) continue;
|
||||||
|
|
||||||
const defaultStart = ScheduleModel.combineDateAndTime(occurrenceYmd, series.start_time_local);
|
const defaultStart = ScheduleModel.combineDateAndTime(occurrenceYmd, series.start_time);
|
||||||
const defaultEnd = ScheduleModel.combineDateAndTime(occurrenceYmd, series.end_time_local);
|
const defaultEnd = ScheduleModel.combineDateAndTime(occurrenceYmd, series.end_time);
|
||||||
|
|
||||||
const doctor = exception?.override_doctor ?? series.doctor;
|
const doctor = exception?.override_doctor ?? series.doctor;
|
||||||
const room = exception?.override_room ?? series.room;
|
const room = exception?.override_room ?? series.room;
|
||||||
@ -262,12 +261,11 @@ export class ScheduleModel {
|
|||||||
series.room = room;
|
series.room = room;
|
||||||
series.doctor = doctor;
|
series.doctor = doctor;
|
||||||
series.title = payload.title;
|
series.title = payload.title;
|
||||||
series.timezone = payload.timezone;
|
|
||||||
series.quota = payload.quota ?? null;
|
series.quota = payload.quota ?? null;
|
||||||
series.start_date = new Date(payload.startDate);
|
series.start_date = new Date(payload.startDate);
|
||||||
series.until_date = payload.untilDate ? new Date(payload.untilDate) : null;
|
series.until_date = payload.untilDate ? new Date(payload.untilDate) : null;
|
||||||
series.start_time_local = payload.startTimeLocal;
|
series.start_time = payload.startTime;
|
||||||
series.end_time_local = payload.endTimeLocal;
|
series.end_time = payload.endTime;
|
||||||
series.recurrence_rule = ScheduleModel.recurrenceToRRule(payload.recurrence || null);
|
series.recurrence_rule = ScheduleModel.recurrenceToRRule(payload.recurrence || null);
|
||||||
series.status = Status.Active;
|
series.status = Status.Active;
|
||||||
series.created_by = actor;
|
series.created_by = actor;
|
||||||
@ -295,12 +293,11 @@ export class ScheduleModel {
|
|||||||
series.room = room;
|
series.room = room;
|
||||||
series.doctor = doctor;
|
series.doctor = doctor;
|
||||||
series.title = payload.title;
|
series.title = payload.title;
|
||||||
series.timezone = payload.timezone;
|
|
||||||
series.quota = payload.quota ?? null;
|
series.quota = payload.quota ?? null;
|
||||||
series.start_date = new Date(payload.startDate);
|
series.start_date = new Date(payload.startDate);
|
||||||
series.until_date = payload.untilDate ? new Date(payload.untilDate) : null;
|
series.until_date = payload.untilDate ? new Date(payload.untilDate) : null;
|
||||||
series.start_time_local = payload.startTimeLocal;
|
series.start_time = payload.startTime;
|
||||||
series.end_time_local = payload.endTimeLocal;
|
series.end_time = payload.endTime;
|
||||||
series.recurrence_rule = ScheduleModel.recurrenceToRRule(payload.recurrence || null);
|
series.recurrence_rule = ScheduleModel.recurrenceToRRule(payload.recurrence || null);
|
||||||
series.updated_by = actor;
|
series.updated_by = actor;
|
||||||
|
|
||||||
|
|||||||
@ -401,24 +401,22 @@ const doc = {
|
|||||||
$roomId: "uuid-string",
|
$roomId: "uuid-string",
|
||||||
$doctorId: "uuid-string",
|
$doctorId: "uuid-string",
|
||||||
$title: "Practice Schedule",
|
$title: "Practice Schedule",
|
||||||
$timezone: "Asia/Jakarta",
|
|
||||||
$quota: 20,
|
$quota: 20,
|
||||||
$startDate: "2026-03-20",
|
$startDate: "2026-03-20",
|
||||||
$untilDate: "2026-06-30",
|
$untilDate: "2026-06-30",
|
||||||
$startTimeLocal: "09:00:00",
|
$startTime: "09:00:00",
|
||||||
$endTimeLocal: "12:00:00",
|
$endTime: "12:00:00",
|
||||||
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
||||||
},
|
},
|
||||||
scheduleSeriesUpdate: {
|
scheduleSeriesUpdate: {
|
||||||
$roomId: "uuid-string",
|
$roomId: "uuid-string",
|
||||||
$doctorId: "uuid-string",
|
$doctorId: "uuid-string",
|
||||||
$title: "Practice Schedule Updated",
|
$title: "Practice Schedule Updated",
|
||||||
$timezone: "Asia/Jakarta",
|
|
||||||
$quota: 25,
|
$quota: 25,
|
||||||
$startDate: "2026-03-20",
|
$startDate: "2026-03-20",
|
||||||
$untilDate: "2026-07-31",
|
$untilDate: "2026-07-31",
|
||||||
$startTimeLocal: "10:00:00",
|
$startTime: "10:00:00",
|
||||||
$endTimeLocal: "13:00:00",
|
$endTime: "13:00:00",
|
||||||
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
||||||
},
|
},
|
||||||
scheduleSeriesDetail: {
|
scheduleSeriesDetail: {
|
||||||
@ -426,12 +424,11 @@ const doc = {
|
|||||||
$room_id: "uuid-string",
|
$room_id: "uuid-string",
|
||||||
$doctor_id: "uuid-string",
|
$doctor_id: "uuid-string",
|
||||||
$title: "Practice Schedule",
|
$title: "Practice Schedule",
|
||||||
$timezone: "Asia/Jakarta",
|
|
||||||
$quota: 20,
|
$quota: 20,
|
||||||
$start_date: "2026-03-20",
|
$start_date: "2026-03-20",
|
||||||
$until_date: "2026-06-30",
|
$until_date: "2026-06-30",
|
||||||
$start_time_local: "09:00:00",
|
$start_time: "09:00:00",
|
||||||
$end_time_local: "12:00:00",
|
$end_time: "12:00:00",
|
||||||
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
$recurrence: { $ref: "#/components/schemas/scheduleRecurrence" },
|
||||||
$status: "Active",
|
$status: "Active",
|
||||||
$room: { id: "uuid-string", room: "Room 1" },
|
$room: { id: "uuid-string", room: "Room 1" },
|
||||||
|
|||||||
Reference in New Issue
Block a user