ifms-printer-manager/src/controllers/PrinterStatusController.ts
2023-07-03 15:49:29 -04:00

49 lines
1.3 KiB
TypeScript

import { Router, Request, Response } from 'express'
import { prisma } from '../prisma.js'
import { PrinterStatusService } from '../services/PrinterStatusService.js'
import { hasRolesMiddleware } from '../middlewares/hasRolesMiddleware.js'
import { distributedCopy } from '../utils/distributedCopy.js'
const router = Router()
class PrinterStatusController {
static async update(req: Request, res: Response) {
const printers = await prisma.printer.findMany()
printers.forEach(async printer => {
new PrinterStatusService(printer)
})
res.json({ message: 'Updating printer status' })
}
static async status(req: Request, res: Response) {
const { printerId } = req.params
const { take = 32, days = 60 } = req.query
const gte = new Date(Date.now() - 1000 * 60 * 60 * 24 * Number(days))
const status = await prisma.printerStatus.findMany({
where: {
printerId: Number(printerId),
timestamp: {
gte
}
},
orderBy: { timestamp: 'desc' }
})
const distributedStatus = distributedCopy(status, Number(take))
res.json(distributedStatus)
}
}
router.use(hasRolesMiddleware(['ADMIN', 'INSPECTOR']))
router.post('/update', PrinterStatusController.update)
router.get('/:printerId', PrinterStatusController.status)
export default router