| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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,
- Alarm: 3,
- SOS: 4
- };
- var statusId = Status[req.body.Status] ? Status[req.body.Status] : 1;
- const equipment = await Equipment.findByPk(Number(req.body.AidID));
- if (!equipment) {
- res.status(400).json({ message: "Equipment not found." });
- return;
- }
- 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,
- hook_battery_1: req.body.BattHook1,
- hook_battery_2: req.body.BattHook2,
- alarm: JSON.stringify(req.body.Alarm)
- });
- if (
- req.body.Alarm.length > 0 &&
- equipment.current_alarm_type != req.body.Alarm[0]
- ) {
- sendAlarm(equipment.name, String(req.body.Alarm[0]));
- } else {
- sendUpdateRequest();
- }
- equipment.update({
- current_alarm_type: req.body.Alarm.length > 0 ? req.body.Alarm[0] : null
- });
- res.json({ message: "ok" });
- }
- }
- export default EquipmentController;
|