feat(plan): listEntries/listOverrides with employee scoping
This commit is contained in:
@@ -541,3 +541,48 @@ export async function deleteOverride(
|
||||
|
||||
return { data: { ok: true }, oldData: existing };
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Raw-row list endpoints
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** List raw work_plan_entries rows in a date range, excluding soft-deleted.
|
||||
* When isAdmin is false, the user_id filter is forced to the actor's own id
|
||||
* (so a non-admin cannot read another user's plan via the user_id query param). */
|
||||
export async function listEntries(
|
||||
query: { user_id?: number; date_from: string; date_to: string },
|
||||
actorUserId: number,
|
||||
isAdmin: boolean,
|
||||
) {
|
||||
const effectiveUserId = isAdmin ? query.user_id : actorUserId;
|
||||
return prisma.work_plan_entries.findMany({
|
||||
where: {
|
||||
user_id: effectiveUserId,
|
||||
is_deleted: false,
|
||||
date_from: { lte: toDateOnly(query.date_to) },
|
||||
date_to: { gte: toDateOnly(query.date_from) },
|
||||
},
|
||||
orderBy: [{ date_from: "asc" }, { id: "asc" }],
|
||||
});
|
||||
}
|
||||
|
||||
/** List raw work_plan_overrides rows in a date range, excluding soft-deleted.
|
||||
* Same employee-scoping rules as listEntries. */
|
||||
export async function listOverrides(
|
||||
query: { user_id?: number; date_from: string; date_to: string },
|
||||
actorUserId: number,
|
||||
isAdmin: boolean,
|
||||
) {
|
||||
const effectiveUserId = isAdmin ? query.user_id : actorUserId;
|
||||
return prisma.work_plan_overrides.findMany({
|
||||
where: {
|
||||
user_id: effectiveUserId,
|
||||
is_deleted: false,
|
||||
shift_date: {
|
||||
gte: toDateOnly(query.date_from),
|
||||
lte: toDateOnly(query.date_to),
|
||||
},
|
||||
},
|
||||
orderBy: [{ shift_date: "asc" }, { id: "asc" }],
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user