Include ALL campus option. Make user campus the default
This commit is contained in:
parent
8ff1fe3f32
commit
44e247703d
|
@ -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: {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ const { smAndUp } = useDisplay()
|
||||||
const campiSelectItems = [
|
const campiSelectItems = [
|
||||||
{
|
{
|
||||||
title: 'Todos',
|
title: 'Todos',
|
||||||
value: ''
|
value: 'ALL'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Aquidauana',
|
title: 'Aquidauana',
|
||||||
|
|
|
@ -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[]>(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user