93 lines
2.8 KiB
TypeScript
93 lines
2.8 KiB
TypeScript
import { Request, Response } from "express";
|
|
import cameraModel from "../../../shared/model/camera/camera-Model.ts";
|
|
import userModel from "../../../shared/model/user-Model.ts";
|
|
|
|
export class Camera {
|
|
static async createCamera(req: Request, res: Response) {
|
|
try {
|
|
const { userId, position, target, rotation, organization } = req.body;
|
|
|
|
const findCamera = await cameraModel(organization).findOne({
|
|
userId: userId,
|
|
});
|
|
|
|
if (findCamera) {
|
|
const updateCamera = await cameraModel(organization).findOneAndUpdate(
|
|
{ userId: userId },
|
|
{ position: position, target: target, rotation: rotation },
|
|
{ new: true }
|
|
);
|
|
res.status(201).json(updateCamera);
|
|
} else {
|
|
const newCamera = await cameraModel(organization).create({
|
|
userId,
|
|
position,
|
|
target,
|
|
rotation,
|
|
});
|
|
|
|
res.status(201).json(newCamera);
|
|
}
|
|
} catch (error) {
|
|
console.error("Error creating camera:", error);
|
|
res.status(500).json({ message: "Failed to create camera" });
|
|
}
|
|
}
|
|
static async getCamera(req: Request, res: Response) {
|
|
try {
|
|
const { userId, organization } = req.params;
|
|
const findCamera = await cameraModel(organization).findOne({
|
|
userId: userId,
|
|
});
|
|
if (!findCamera) {
|
|
res.status(200).json("user not found");
|
|
} else {
|
|
res.status(201).json(findCamera);
|
|
}
|
|
} catch (error) {
|
|
console.error("Error get camera:", error);
|
|
res.status(500).json({ error: "Failed to get camera" });
|
|
}
|
|
}
|
|
|
|
static async onlineActiveDatas(req: Request, res: Response) {
|
|
const { organization } = req.params;
|
|
try {
|
|
const findactiveUsers = await userModel(organization).find({
|
|
activeStatus: "online",
|
|
});
|
|
|
|
const cameraDataPromises = findactiveUsers.map(
|
|
async (activeUser: any) => {
|
|
const cameraData = await cameraModel(organization)
|
|
.findOne({ userId: activeUser._id })
|
|
.select("position target rotation -_id");
|
|
|
|
if (cameraData) {
|
|
return {
|
|
position: cameraData.position,
|
|
target: cameraData.target,
|
|
rotation: cameraData.rotation,
|
|
userData: {
|
|
_id: activeUser._id,
|
|
userName: activeUser.userName,
|
|
email: activeUser.email,
|
|
activeStatus: activeUser.activeStatus,
|
|
},
|
|
};
|
|
}
|
|
return null;
|
|
}
|
|
);
|
|
|
|
const cameraDatas = (await Promise.all(cameraDataPromises)).filter(
|
|
(singledata: any) => singledata !== null
|
|
);
|
|
|
|
res.status(200).send({ cameraDatas });
|
|
} catch (error: any) {
|
|
res.status(500).send(error);
|
|
}
|
|
}
|
|
}
|