Files
Projektarbeit-MYP/frontend/src/utils/printers.ts

42 lines
961 B
TypeScript

import type { InferResultType } from "@/utils/drizzle";
export enum PrinterStatus {
IDLE = 0,
OUT_OF_ORDER = 1,
RESERVED = 2,
}
export function derivePrinterStatus(
printer: InferResultType<"printers", { printJobs: true }>,
) {
if (printer.status === PrinterStatus.OUT_OF_ORDER) {
return PrinterStatus.OUT_OF_ORDER;
}
const activePrintJob = printer.printJobs[0];
if (!activePrintJob || activePrintJob.aborted) {
return PrinterStatus.IDLE;
}
const now = Date.now();
const startAt = new Date(activePrintJob.startAt).getTime();
const endAt = startAt + activePrintJob.durationInMinutes * 60 * 1000;
if (now < endAt) {
return PrinterStatus.RESERVED;
}
return PrinterStatus.IDLE;
}
export function translatePrinterStatus(status: PrinterStatus) {
switch (status) {
case PrinterStatus.IDLE:
return "Verfügbar";
case PrinterStatus.OUT_OF_ORDER:
return "Außer Betrieb";
case PrinterStatus.RESERVED:
return "Reserviert";
}
}