| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import { Request, Response } from 'express'
- import { User } from '../database/models/User'
- import { Equipment } from '../database/models/Equipment'
- import { sequelize } from '../database'
- import { networkError } from './Error'
- import { Site } from '../database/models/Site'
- import { EquipmentData } from '../database/models/EquipmentData'
- import { sendUpdateRequest, sendAlarm } from '../firebase'
- class EquipmentController {
- async getEquipments(req: Request, res: Response) {
- try {
- const [equipments] = await sequelize.query(
- `SELECT equipment_data.*, equipments.id AS equipment_id, equipments.name AS equipment_name, equipments.site_id, equipments.current_user_id, users.name AS user_name
- FROM equipment_data
- JOIN equipments ON aid_id = equipments.id
- LEFT JOIN users ON equipments.current_user_id = users.id
- WHERE equipment_data.id IN
- (SELECT max(id) FROM equipment_data GROUP BY aid_id)
- `
- )
- const sites = await Site.findAll()
- res.json({ equipments, sites })
- } catch (error) {
- networkError(res, JSON.stringify(error))
- }
- }
- async assignUserToEquipment(req: Request, res: Response) {
- try {
- const { user_id: userId, equipment_id: equipmentId } = req.body
- const user = await User.findByPk(userId)
- const equipment = await Equipment.findByPk(equipmentId)
- if (!user) {
- res.status(404).json({
- message: 'User not found'
- })
- return
- }
- if (!equipment) {
- res.status(400).json({
- message: 'Equipment not found'
- })
- return
- }
- await equipment.update({ current_user_id: user.id })
- res.status(200).json({ message: 'ok' })
- } catch (error) {
- networkError(res, JSON.stringify(error))
- }
- }
- async receiveEquipmentData(req: Request, res: Response) {
- const Status: { [index: string]: Number } = {
- Offline: 0,
- Normal: 1,
- Rest: 2,
- SOS: 3
- }
- var statusId = Status[req.body.Status] ? Status[req.body.Status] : 1
- const equipment = await Equipment.findByPk(req.body.AidID)
- if (req.body.Alarm.length > 0) {
- sendAlarm(equipment ? equipment.name : `輔具ID ${req.body.AidID}`, req.body.Alarm[0])
- }
- await EquipmentData.create({
- ap_id: req.body.APID,
- aid_id: req.body.AidID,
- beacon_id: req.body.Baecon,
- status: statusId,
- battery: req.body.Battery,
- latitude: req.body.GPS_Lat,
- longitude: req.body.GPS_Lon,
- alarm: JSON.stringify(req.body.Alarm)
- })
- sendUpdateRequest()
- res.json({ message: 'ok' })
- }
- }
- export default EquipmentController
|