From 44e247703de69f751b4a25575ca32f2e4b105d4c Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Wed, 5 Jul 2023 08:29:03 -0400 Subject: [PATCH] Include ALL campus option. Make user campus the default --- src/controllers/PrinterController.ts | 7 ++- src/services/PrinterStatusService.ts | 88 +++++++++++++++------------- web/src/layouts/default/View.vue | 2 +- web/src/store/appStore.ts | 2 - 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/src/controllers/PrinterController.ts b/src/controllers/PrinterController.ts index 3e609a0..9b02c6f 100644 --- a/src/controllers/PrinterController.ts +++ b/src/controllers/PrinterController.ts @@ -10,7 +10,9 @@ const router = Router() class PrinterController { static async index(req: Request, res: Response) { - const { campus, force } = req.query + let { campus, force } = req.query + + if (!campus) campus = res.locals.user?.campus if (force) { const printers = await prisma.printer.findMany() @@ -27,8 +29,9 @@ class PrinterController { if (campus == 'RT') networkCriteria = { OR: [{ shortName: 'RT1' }, { shortName: 'RT2' }] } + + if (campus == 'ALL') networkCriteria = undefined else if (campus) networkCriteria = { shortName: String(campus) } - else networkCriteria = undefined const printers = await prisma.printer.findMany({ where: { diff --git a/src/services/PrinterStatusService.ts b/src/services/PrinterStatusService.ts index 891a0d5..5ff8395 100644 --- a/src/services/PrinterStatusService.ts +++ b/src/services/PrinterStatusService.ts @@ -43,50 +43,57 @@ export type PrinterInfo = { export class PrinterStatusService { constructor(private printer: Printer) { - this.getPrinterSnmpStatus().then(async printerStatus => { - const lastStatus = await prisma.printerStatus.findFirst({ - where: { printerId: this.printer.id }, - orderBy: { timestamp: 'desc' } - }) - - if ( - lastStatus?.counter == printerStatus.counter && - lastStatus?.tonerBlackLevel == printerStatus.toners.black.level && - lastStatus?.tonerCyanLevel == printerStatus.toners.cyan?.level && - lastStatus?.tonerMagentaLevel == printerStatus.toners.magenta?.level && - lastStatus?.tonerYellowLevel == printerStatus.toners.yellow?.level - ) { - await prisma.printerStatus.update({ - where: { id: lastStatus.id }, - data: { timestamp: new Date() } + this.getPrinterSnmpStatus() + .then(async printerStatus => { + const lastStatus = await prisma.printerStatus.findFirst({ + where: { printerId: this.printer.id }, + orderBy: { timestamp: 'desc' } }) - } else { - console.log( - `Updating printer status ${this.printer.serialNumber} (${this.printer.ip}). Counter:${lastStatus?.counter} to ${printerStatus.counter}` - ) - await prisma.printer.update({ - where: { serialNumber: this.printer.serialNumber }, - data: { - location: printerStatus.location, - blackTonerModel: printerStatus.toners.black.model, - cyanTonerModel: printerStatus.toners.cyan?.model, - magentaTonerModel: printerStatus.toners.magenta?.model, - yellowTonerModel: printerStatus.toners.yellow?.model, + if ( + lastStatus?.counter == printerStatus.counter && + lastStatus?.tonerBlackLevel == printerStatus.toners.black.level && + lastStatus?.tonerCyanLevel == printerStatus.toners.cyan?.level && + lastStatus?.tonerMagentaLevel == + printerStatus.toners.magenta?.level && + lastStatus?.tonerYellowLevel == printerStatus.toners.yellow?.level + ) { + await prisma.printerStatus.update({ + where: { id: lastStatus.id }, + data: { timestamp: new Date() } + }) + } else { + console.log( + `Updating printer status ${this.printer.serialNumber} (${this.printer.ip}). Counter:${lastStatus?.counter} to ${printerStatus.counter}` + ) - status: { - create: { - counter: printerStatus.counter, - tonerBlackLevel: printerStatus.toners.black.level, - tonerCyanLevel: printerStatus.toners.cyan?.level, - tonerMagentaLevel: printerStatus.toners.magenta?.level, - tonerYellowLevel: printerStatus.toners.yellow?.level + await prisma.printer.update({ + where: { serialNumber: this.printer.serialNumber }, + data: { + location: printerStatus.location, + blackTonerModel: printerStatus.toners.black.model, + cyanTonerModel: printerStatus.toners.cyan?.model, + magentaTonerModel: printerStatus.toners.magenta?.model, + yellowTonerModel: printerStatus.toners.yellow?.model, + + status: { + create: { + counter: printerStatus.counter, + tonerBlackLevel: printerStatus.toners.black.level, + tonerCyanLevel: printerStatus.toners.cyan?.level, + tonerMagentaLevel: printerStatus.toners.magenta?.level, + tonerYellowLevel: printerStatus.toners.yellow?.level + } } } - } - }) - } - }) + }) + } + }) + .catch(err => { + console.log( + `Couldn't get printer status for ${printer.serialNumber} (IP:${printer.ip}). Error: ${err}` + ) + }) } private objectIdsArray(): string[] { @@ -178,8 +185,7 @@ export class PrinterStatusService { current: string | undefined, max: string | undefined ) { - if (typeof current === 'undefined' || typeof max === 'undefined') - throw new Error('current or max is undefined') + if (typeof current === 'undefined' || typeof max === 'undefined') return 0 return Math.floor((+current! / +max!) * 100) } diff --git a/web/src/layouts/default/View.vue b/web/src/layouts/default/View.vue index 24159cc..443548b 100644 --- a/web/src/layouts/default/View.vue +++ b/web/src/layouts/default/View.vue @@ -74,7 +74,7 @@ const { smAndUp } = useDisplay() const campiSelectItems = [ { title: 'Todos', - value: '' + value: 'ALL' }, { title: 'Aquidauana', diff --git a/web/src/store/appStore.ts b/web/src/store/appStore.ts index 94f9ed2..cbf7f52 100644 --- a/web/src/store/appStore.ts +++ b/web/src/store/appStore.ts @@ -15,8 +15,6 @@ export const useAppStore = defineStore('app', { actions: { async fetchPrinters(force = false) { - if (!this.me) return [] - this.loadingPrinters = true try { this.printers = await api(