import type { ShiftSchedule, ShiftPlacement, Schema, Shift, ShiftPattern } from "../lib/types"; // Segments are embedded on ShiftPattern / Shift (ADR-022); no separate segment fixtures. export const baseShiftPattern = { id: "shift-pattern-1", code: "SP-DAY", scopeId: null, name: "Day Shift Pattern", kind: "DAY", segments: [ { sequence: 1, startTime: 540, endTime: 1080, spansMidnight: false, breakMinutes: 60 }, ], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftPattern; export const earlyShiftPattern = { id: "shift-pattern-2", code: "SP-EARLY", scopeId: null, name: "Early Shift Pattern", kind: "EARLY", segments: [ { sequence: 1, startTime: 480, endTime: 1020, spansMidnight: false, breakMinutes: 60 }, ], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftPattern; export const nightShiftPattern = { id: "shift-pattern-3", code: "SP-NIGHT", scopeId: null, name: "Night Shift Pattern", kind: "NIGHT", segments: [{ sequence: 1, startTime: 1320, endTime: 300, spansMidnight: true, breakMinutes: 60 }], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftPattern; export const offShiftPattern = { id: "shift-pattern-4", code: "SP-OFF", scopeId: null, name: "Day Off", kind: "OFF", segments: [], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftPattern; // A shiftSchedule period is the container every Shift hangs off; the draft one is the editable state. export const baseShiftSchedule = { id: "shift-schedule-1", startDate: new Date("2024-02-01T00:00:00.000Z"), endDate: new Date("2024-02-29T00:00:00.000Z"), status: "DRAFT", confirmedAt: null, createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftSchedule; export const confirmedShiftSchedule = { id: "shift-schedule-2", startDate: new Date("2024-02-01T00:00:00.000Z"), endDate: new Date("2024-02-29T00:00:00.000Z"), status: "CONFIRMED", confirmedAt: new Date("2024-01-20T00:00:00.000Z"), createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftSchedule; export const baseShift = { id: "shift-1", shiftScheduleId: baseShiftSchedule.id, date: new Date("2024-02-01T00:00:00.000Z"), shiftType: "NORMAL", cancelledAt: null, plannedStartAt: new Date("2024-02-01T09:00:00.000Z"), plannedEndAt: new Date("2024-02-01T18:00:00.000Z"), shiftPatternId: baseShiftPattern.id, siteId: "site-1", segments: [ { sequence: 1, plannedStartAt: new Date("2024-02-01T09:00:00.000Z"), plannedEndAt: new Date("2024-02-01T18:00:00.000Z"), breakMinutes: 60, }, ], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies Shift; // A slot in a confirmed shiftSchedule that no ACTIVE placement staffs — the open-shift case. export const openShift = { id: "shift-2", shiftScheduleId: confirmedShiftSchedule.id, date: new Date("2024-02-02T00:00:00.000Z"), shiftType: "NORMAL", cancelledAt: null, plannedStartAt: new Date("2024-02-02T09:00:00.000Z"), plannedEndAt: new Date("2024-02-02T18:00:00.000Z"), shiftPatternId: null, siteId: null, segments: [ { sequence: 1, plannedStartAt: new Date("2024-02-02T09:00:00.000Z"), plannedEndAt: new Date("2024-02-02T18:00:00.000Z"), breakMinutes: 60, }, ], createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies Shift; export const baseShiftPlacement = { id: "shift-placement-1", shiftId: baseShift.id, assignmentId: "assignment-1", status: "ACTIVE", supersededById: null, assignedAt: new Date("2024-01-15T00:00:00.000Z"), releasedAt: null, provenance: "MANUAL", createdAt: new Date("2024-01-01T00:00:00.000Z"), updatedAt: new Date("2024-01-01T00:00:00.000Z"), } as const satisfies ShiftPlacement;