Include ALL campus option. Make user campus the default

This commit is contained in:
Douglas Barone 2023-07-05 08:29:03 -04:00
parent 8ff1fe3f32
commit 44e247703d
4 changed files with 53 additions and 46 deletions

View File

@ -10,7 +10,9 @@ const router = Router()
class PrinterController { class PrinterController {
static async index(req: Request, res: Response) { 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) { if (force) {
const printers = await prisma.printer.findMany() const printers = await prisma.printer.findMany()
@ -27,8 +29,9 @@ class PrinterController {
if (campus == 'RT') if (campus == 'RT')
networkCriteria = { OR: [{ shortName: 'RT1' }, { shortName: 'RT2' }] } networkCriteria = { OR: [{ shortName: 'RT1' }, { shortName: 'RT2' }] }
if (campus == 'ALL') networkCriteria = undefined
else if (campus) networkCriteria = { shortName: String(campus) } else if (campus) networkCriteria = { shortName: String(campus) }
else networkCriteria = undefined
const printers = await prisma.printer.findMany({ const printers = await prisma.printer.findMany({
where: { where: {

View File

@ -43,50 +43,57 @@ export type PrinterInfo = {
export class PrinterStatusService { export class PrinterStatusService {
constructor(private printer: Printer) { constructor(private printer: Printer) {
this.getPrinterSnmpStatus().then(async printerStatus => { this.getPrinterSnmpStatus()
const lastStatus = await prisma.printerStatus.findFirst({ .then(async printerStatus => {
where: { printerId: this.printer.id }, const lastStatus = await prisma.printerStatus.findFirst({
orderBy: { timestamp: 'desc' } 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() }
}) })
} else {
console.log(
`Updating printer status ${this.printer.serialNumber} (${this.printer.ip}). Counter:${lastStatus?.counter} to ${printerStatus.counter}`
)
await prisma.printer.update({ if (
where: { serialNumber: this.printer.serialNumber }, lastStatus?.counter == printerStatus.counter &&
data: { lastStatus?.tonerBlackLevel == printerStatus.toners.black.level &&
location: printerStatus.location, lastStatus?.tonerCyanLevel == printerStatus.toners.cyan?.level &&
blackTonerModel: printerStatus.toners.black.model, lastStatus?.tonerMagentaLevel ==
cyanTonerModel: printerStatus.toners.cyan?.model, printerStatus.toners.magenta?.level &&
magentaTonerModel: printerStatus.toners.magenta?.model, lastStatus?.tonerYellowLevel == printerStatus.toners.yellow?.level
yellowTonerModel: printerStatus.toners.yellow?.model, ) {
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: { await prisma.printer.update({
create: { where: { serialNumber: this.printer.serialNumber },
counter: printerStatus.counter, data: {
tonerBlackLevel: printerStatus.toners.black.level, location: printerStatus.location,
tonerCyanLevel: printerStatus.toners.cyan?.level, blackTonerModel: printerStatus.toners.black.model,
tonerMagentaLevel: printerStatus.toners.magenta?.level, cyanTonerModel: printerStatus.toners.cyan?.model,
tonerYellowLevel: printerStatus.toners.yellow?.level 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[] { private objectIdsArray(): string[] {
@ -178,8 +185,7 @@ export class PrinterStatusService {
current: string | undefined, current: string | undefined,
max: string | undefined max: string | undefined
) { ) {
if (typeof current === 'undefined' || typeof max === 'undefined') if (typeof current === 'undefined' || typeof max === 'undefined') return 0
throw new Error('current or max is undefined')
return Math.floor((+current! / +max!) * 100) return Math.floor((+current! / +max!) * 100)
} }

View File

@ -74,7 +74,7 @@ const { smAndUp } = useDisplay()
const campiSelectItems = [ const campiSelectItems = [
{ {
title: 'Todos', title: 'Todos',
value: '' value: 'ALL'
}, },
{ {
title: 'Aquidauana', title: 'Aquidauana',

View File

@ -15,8 +15,6 @@ export const useAppStore = defineStore('app', {
actions: { actions: {
async fetchPrinters(force = false) { async fetchPrinters(force = false) {
if (!this.me) return []
this.loadingPrinters = true this.loadingPrinters = true
try { try {
this.printers = await api<any[]>( this.printers = await api<any[]>(