swagger documentation for Api

This commit is contained in:
2025-01-30 12:44:04 +05:30
parent 5984f445f7
commit 465f713624
45 changed files with 5201 additions and 2308 deletions

View File

@@ -1,35 +1,35 @@
ARG NODE_VERSION=lts
FROM node:${NODE_VERSION}-alpine AS development
# Use production node environment by default.
ENV NODE_ENV development
WORKDIR /usr/src/app
RUN npm install -g npm
COPY package.json /usr/src/app/package.json
# COPY package-lock.json /usr/src/app/package-lock.json
RUN npm install
# Run the application as a non-root user.
USER root
# Copy the rest of the source files into the image.
COPY . .
# Expose the port that the application listens on.
EXPOSE 1059
# Run the application.
ARG NODE_VERSION=lts
FROM node:${NODE_VERSION}-alpine AS development
# Use production node environment by default.
ENV NODE_ENV development
WORKDIR /usr/src/app
RUN npm install -g npm
COPY package.json /usr/src/app/package.json
# COPY package-lock.json /usr/src/app/package-lock.json
RUN npm install
# Run the application as a non-root user.
USER root
# Copy the rest of the source files into the image.
COPY . .
# Expose the port that the application listens on.
EXPOSE 1059
# Run the application.
CMD ["npm", "run", "start:socket"]

View File

@@ -1,22 +1,23 @@
import express from "express"
import { Response, Request } from "express";
import http from "http";
import dotenv from "dotenv"; // Import dotenv
dotenv.config();
import { initSocketServer } from "./socket/socketManager";
const app = express();
const PORT = process.env.SOCKET_PORT;
const server = http.createServer(app);
app.get('/', (req: Request, res: Response) => {
res.send('Hello, I am Major-Dwinzo RealTime!');
});
initSocketServer(server);
server.listen(PORT, () => {
console.log(`socket-Server is running on http://localhost:${PORT}`);
});
import express from "express"
import { Response, Request } from "express";
import http from "http";
import ip from 'ip';
import dotenv from "dotenv"; // Import dotenv
dotenv.config();
import { initSocketServer } from "./socket/socketManager";
const app = express();
const PORT = process.env.SOCKET_PORT;
const server = http.createServer(app);
app.get('/', (req: Request, res: Response) => {
res.send('Hello, I am Major-Dwinzo RealTime!');
});
initSocketServer(server);
server.listen(PORT, () => {
console.log(`socket-Server is running on http://localhost:${PORT}`);
});

View File

@@ -1,53 +1,53 @@
import { Request, Response } from "express";
import floorItemsModel from "../../../shared/model/assets/flooritems-Model";
export const setFloorItems = async (data: any) => {
try {
const { modelfileID,modeluuid, modelname, position, rotation,isLocked,isVisible, organization } = data
const findvalue = await floorItemsModel(organization).findOne({ modeluuid: modeluuid, modelname: modelname })
if (findvalue) {
const updatevalue = await floorItemsModel(organization).findOneAndUpdate(
{ modeluuid: modeluuid, modelname: modelname }, { position: position, rotation: rotation ,isVisible:isVisible,isLocked:isLocked}, { new: true });
return { success: true, message: 'flooritems updated', data: updatevalue,organization:organization }
} else {
const newValue = await floorItemsModel(organization).create({ modeluuid, modelname, modelfileID,position, rotation,isLocked,isVisible });
return { success: true, message: 'flooritem created', data: newValue,organization:organization }
}
// Send response with the created document
} catch (error) {
console.error('Error creating flooritems:', error);
return { success: false, message: 'Error creating or updating camera', error }
}
}
export const deleteFloorItems = async (data: any)=>{
try {
const { modeluuid,modelname,organization } = data;
const findValue = await floorItemsModel(organization).findOneAndDelete({modeluuid:modeluuid,modelname:modelname})
if (!findValue) {
return { success: false, message: 'model not found',organization:organization }
} else {
return { success: true, message: 'flooritem deleted', data: findValue,organization:organization }
}
} catch (error) {
console.error('Error get flooritems:', error);
return { success: false, message: 'Failed to delete flooritems', error }
}
}
import { Request, Response } from "express";
import floorItemsModel from "../../../shared/model/assets/flooritems-Model";
export const setFloorItems = async (data: any) => {
try {
const { modelfileID,modeluuid, modelname, position, rotation,isLocked,isVisible, organization } = data
const findvalue = await floorItemsModel(organization).findOne({ modeluuid: modeluuid, modelname: modelname })
if (findvalue) {
const updatevalue = await floorItemsModel(organization).findOneAndUpdate(
{ modeluuid: modeluuid, modelname: modelname }, { position: position, rotation: rotation ,isVisible:isVisible,isLocked:isLocked}, { new: true });
return { success: true, message: 'flooritems updated', data: updatevalue,organization:organization }
} else {
const newValue = await floorItemsModel(organization).create({ modeluuid, modelname, modelfileID,position, rotation,isLocked,isVisible });
return { success: true, message: 'flooritem created', data: newValue,organization:organization }
}
// Send response with the created document
} catch (error) {
console.error('Error creating flooritems:', error);
return { success: false, message: 'Error creating or updating camera', error }
}
}
export const deleteFloorItems = async (data: any)=>{
try {
const { modeluuid,modelname,organization } = data;
const findValue = await floorItemsModel(organization).findOneAndDelete({modeluuid:modeluuid,modelname:modelname})
if (!findValue) {
return { success: false, message: 'model not found',organization:organization }
} else {
return { success: true, message: 'flooritem deleted', data: findValue,organization:organization }
}
} catch (error) {
console.error('Error get flooritems:', error);
return { success: false, message: 'Failed to delete flooritems', error }
}
}

View File

@@ -1,60 +1,60 @@
import { Request, Response } from "express";
import wallItenmModel from "../../../shared/model/assets/wallitems-Model";
export const setWallItems = async (data: any) => {
try {
const { modeluuid, modelname, position, type, csgposition, csgscale, quaternion, scale, organization } = data
const findvalue = await wallItenmModel(organization).findOne({ modeluuid: modeluuid })
if (findvalue) {
const updatevalue = await wallItenmModel(organization).findOneAndUpdate(
{ modeluuid: modeluuid },
{
modelname,
position,
type,
csgposition,
csgscale,
quaternion,
scale,
},
{ new: true } // Return the updated document
);
return { success: true, message: 'wallIitem updated', data: updatevalue, organization: organization }
} else {
const newValue = await wallItenmModel(organization).create({ modeluuid, modelname, position, type, csgposition, csgscale, quaternion, scale });
return { success: true, message: 'wallIitem created', data: newValue, organization: organization }
}
// Send response with the created document
} catch (error) {
console.error('Error creating wallIitem:', error);
return { success: false, message: 'Error creating or updating camera', error }
}
}
export const deleteWallItems = async (data: any) => {
try {
const { modeluuid, modelname, organization } = data;
const findValue = await wallItenmModel(organization).findOneAndDelete({ modeluuid: modeluuid, modelname: modelname })
if (!findValue) {
return { success: false, message: 'model not found', organization: organization }
} else {
return { success: true, message: 'wallitem deleted', data: findValue, organization: organization }
}
} catch (error) {
console.error('Error get wallitem:', error);
return { success: false, message: 'Failed to delete wallitem', error }
}
}
import { Request, Response } from "express";
import wallItenmModel from "../../../shared/model/assets/wallitems-Model";
export const setWallItems = async (data: any) => {
try {
const { modeluuid, modelname, position, type, csgposition, csgscale, quaternion, scale, organization } = data
const findvalue = await wallItenmModel(organization).findOne({ modeluuid: modeluuid })
if (findvalue) {
const updatevalue = await wallItenmModel(organization).findOneAndUpdate(
{ modeluuid: modeluuid },
{
modelname,
position,
type,
csgposition,
csgscale,
quaternion,
scale,
},
{ new: true } // Return the updated document
);
return { success: true, message: 'wallIitem updated', data: updatevalue, organization: organization }
} else {
const newValue = await wallItenmModel(organization).create({ modeluuid, modelname, position, type, csgposition, csgscale, quaternion, scale });
return { success: true, message: 'wallIitem created', data: newValue, organization: organization }
}
// Send response with the created document
} catch (error) {
console.error('Error creating wallIitem:', error);
return { success: false, message: 'Error creating or updating camera', error }
}
}
export const deleteWallItems = async (data: any) => {
try {
const { modeluuid, modelname, organization } = data;
const findValue = await wallItenmModel(organization).findOneAndDelete({ modeluuid: modeluuid, modelname: modelname })
if (!findValue) {
return { success: false, message: 'model not found', organization: organization }
} else {
return { success: true, message: 'wallitem deleted', data: findValue, organization: organization }
}
} catch (error) {
console.error('Error get wallitem:', error);
return { success: false, message: 'Failed to delete wallitem', error }
}
}

View File

@@ -1,31 +1,31 @@
import { Request, Response } from "express";
import { Socket } from "socket.io";
import cameraModel from "../../../shared/model/camera/camera-Model";
export const createCamera = async (data: any,) => {
try {
const { userId, position, target, organization,rotation } = data
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 });
// io.emit('cameraUpdateResponse', { success: true, message: 'Camera updated', data: updateCamera });
return { success: true, message: 'Camera updated', data: updateCamera,organization:organization}
}
else {
const newCamera = await cameraModel(organization).create({ userId, position, target,rotation })
return { success: false, message: 'Camera created' ,data:newCamera,organization:organization}
}
// Send response with the created document
} catch (error) {
console.error('Error creating camera:', error);
return { success: false, message: 'Error creating or updating camera', error, }
}
}
import { Request, Response } from "express";
import { Socket } from "socket.io";
import cameraModel from "../../../shared/model/camera/camera-Model";
export const createCamera = async (data: any,) => {
try {
const { userId, position, target, organization,rotation } = data
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 });
// io.emit('cameraUpdateResponse', { success: true, message: 'Camera updated', data: updateCamera });
return { success: true, message: 'Camera updated', data: updateCamera,organization:organization}
}
else {
const newCamera = await cameraModel(organization).create({ userId, position, target,rotation })
return { success: false, message: 'Camera created' ,data:newCamera,organization:organization}
}
// Send response with the created document
} catch (error) {
console.error('Error creating camera:', error);
return { success: false, message: 'Error creating or updating camera', error, }
}
}

View File

@@ -1,33 +1,33 @@
import { Request, Response } from "express";
import environmentModel from "../../../shared/model/environments/environments-Model";
export const setEnvironment = async (data: any,) => {
try {
const { userId,roofVisibility,wallVisibility,shadowVisibility, organization } = data
const findvalue = await environmentModel(organization).findOne({ userId: userId })
if (findvalue) {
const updatevalue = await environmentModel(organization).findOneAndUpdate(
{ userId: userId }, { roofVisibility:roofVisibility,wallVisibility:wallVisibility,shadowVisibility:shadowVisibility }, { new: true });
// res.status(201).json(updatevalue);
return { success: true, message: 'evironments updated', data: updatevalue,organization:organization }
} else {
const newValue = await environmentModel(organization).create({ userId, roofVisibility, wallVisibility,shadowVisibility });
return { success: true, message: 'evironments created', data: newValue,organization:organization }
// res.status(201).json(newValue);
}
// Send response with the created document
} catch (error) {
console.error('Error creating evironments:', error);
return { success: false, message: 'Error creating or updating evironments', error }
}
}
import { Request, Response } from "express";
import environmentModel from "../../../shared/model/environments/environments-Model";
export const setEnvironment = async (data: any,) => {
try {
const { userId,roofVisibility,wallVisibility,shadowVisibility, organization } = data
const findvalue = await environmentModel(organization).findOne({ userId: userId })
if (findvalue) {
const updatevalue = await environmentModel(organization).findOneAndUpdate(
{ userId: userId }, { roofVisibility:roofVisibility,wallVisibility:wallVisibility,shadowVisibility:shadowVisibility }, { new: true });
// res.status(201).json(updatevalue);
return { success: true, message: 'evironments updated', data: updatevalue,organization:organization }
} else {
const newValue = await environmentModel(organization).create({ userId, roofVisibility, wallVisibility,shadowVisibility });
return { success: true, message: 'evironments created', data: newValue,organization:organization }
// res.status(201).json(newValue);
}
// Send response with the created document
} catch (error) {
console.error('Error creating evironments:', error);
return { success: false, message: 'Error creating or updating evironments', error }
}
}

View File

@@ -1,100 +1,100 @@
import { Request, Response } from "express";
import lineModel from "../../../shared/model/lines/lines-Model";
export const createLineItems = async (data: any)=>{
try {
const {organization,layer,line,type}=data
const newLine = await lineModel(organization).create({ layer,line,type });
return { success: true, message: 'line create', data: newLine,organization:organization }
// Send response with the created document
} catch (error) {
return { success: false, message: 'Error create line', error }
}
}
export const updateLineItems = async (data: any)=>{
try {
const {organization,uuid,position,}=data
// const findLine = await lineModel(organization).find({ 'line.uuid': uuid });
// Update the position of the line matching the uuid
const updateResult = await lineModel(organization).updateMany(
{ 'line.uuid': uuid }, // Filter: Find the line with the given uuid
{ $set: { 'line.$.position': position } } // Update the position and type
);
return { success: true, message: 'line updated', data: {uuid:uuid,position:position},organization:organization }
// Send response with the created document
} catch (error) {
console.error('Error creating Lines:', error);
return { success: false, message: 'Error updating line', error }
}
}
export const deleteLineItems = async (data: any)=>{
try {
const {organization,line}=data
const inputUuids = line.map((item: any) => item.uuid);
// const findValue = await lineModel(organization).findOneAndDelete({
// line: { $elemMatch: { uuid: { $in: inputUuids } } },
// });
const findValue = await lineModel(organization).findOneAndDelete({
"line.uuid": { $all: inputUuids } // Ensure all UUIDs are present in the `line` key
});
if (!findValue) {
return { success: false, message: 'line not found',organization:organization }
} else {
return { success: true, message: 'line deleted', data: findValue,organization:organization }
}
} catch (error) {
console.error('Error delete Lines:', error);
return { success: false, message: 'Failed to delete line', error }
}
}
export const deleteLayer = async (data: any)=>{
try {
const {organization,layer}=data
const findValue = await lineModel(organization).find({ layer: layer });
if (!findValue) {
return { success: false, message: 'layer not found' }
} else {
await lineModel(organization).deleteMany({ layer: layer });
// Update documents with layer greater than -1
const updateResult = await lineModel(organization).updateMany(
{ layer: { $gt:layer} },
{ $inc: { layer: -1 } } // Example operation: decrementing layer by 1
);
return { success: true, message: 'layer deleted', data: layer,organization:organization }
}
} catch (error) {
console.error('Error delete layer:', error);
return { success: false, message: 'Failed to delete layer', error }
}
}
export const deleteLinPoiteItems = async (data: any)=>{
try {
const {organization,uuid}=data
const findValue = await lineModel(organization).deleteMany({ 'line.uuid': uuid })
if (!findValue) {
return { success: false, message: 'line not found',organization:organization }
} else {
return { success: true, message: 'point deleted', data: uuid ,organization:organization}
}
} catch (error) {
console.error('Error delete Lines:', error);
return { success: false, message: 'Failed to delete point', error }
}
}
import { Request, Response } from "express";
import lineModel from "../../../shared/model/lines/lines-Model";
export const createLineItems = async (data: any)=>{
try {
const {organization,layer,line,type}=data
const newLine = await lineModel(organization).create({ layer,line,type });
return { success: true, message: 'line create', data: newLine,organization:organization }
// Send response with the created document
} catch (error) {
return { success: false, message: 'Error create line', error }
}
}
export const updateLineItems = async (data: any)=>{
try {
const {organization,uuid,position,}=data
// const findLine = await lineModel(organization).find({ 'line.uuid': uuid });
// Update the position of the line matching the uuid
const updateResult = await lineModel(organization).updateMany(
{ 'line.uuid': uuid }, // Filter: Find the line with the given uuid
{ $set: { 'line.$.position': position } } // Update the position and type
);
return { success: true, message: 'line updated', data: {uuid:uuid,position:position},organization:organization }
// Send response with the created document
} catch (error) {
console.error('Error creating Lines:', error);
return { success: false, message: 'Error updating line', error }
}
}
export const deleteLineItems = async (data: any)=>{
try {
const {organization,line}=data
const inputUuids = line.map((item: any) => item.uuid);
// const findValue = await lineModel(organization).findOneAndDelete({
// line: { $elemMatch: { uuid: { $in: inputUuids } } },
// });
const findValue = await lineModel(organization).findOneAndDelete({
"line.uuid": { $all: inputUuids } // Ensure all UUIDs are present in the `line` key
});
if (!findValue) {
return { success: false, message: 'line not found',organization:organization }
} else {
return { success: true, message: 'line deleted', data: findValue,organization:organization }
}
} catch (error) {
console.error('Error delete Lines:', error);
return { success: false, message: 'Failed to delete line', error }
}
}
export const deleteLayer = async (data: any)=>{
try {
const {organization,layer}=data
const findValue = await lineModel(organization).find({ layer: layer });
if (!findValue) {
return { success: false, message: 'layer not found' }
} else {
await lineModel(organization).deleteMany({ layer: layer });
// Update documents with layer greater than -1
const updateResult = await lineModel(organization).updateMany(
{ layer: { $gt:layer} },
{ $inc: { layer: -1 } } // Example operation: decrementing layer by 1
);
return { success: true, message: 'layer deleted', data: layer,organization:organization }
}
} catch (error) {
console.error('Error delete layer:', error);
return { success: false, message: 'Failed to delete layer', error }
}
}
export const deleteLinPoiteItems = async (data: any)=>{
try {
const {organization,uuid}=data
const findValue = await lineModel(organization).deleteMany({ 'line.uuid': uuid })
if (!findValue) {
return { success: false, message: 'line not found',organization:organization }
} else {
return { success: true, message: 'point deleted', data: uuid ,organization:organization}
}
} catch (error) {
console.error('Error delete Lines:', error);
return { success: false, message: 'Failed to delete point', error }
}
}

View File

@@ -1,97 +1,97 @@
import cameraModel from "../../../shared/model/camera/camera-Model"
import userModel from "../../../shared/model/user-Model"
export const activeUsers = async (data: any) => {
try {
if (data && data.email) {
const email = data.email
const organization = email.split("@")[1].split(".")[0]
const findUser = await userModel(organization).findOne({email})
if (findUser) {
const updateActiveStatus = await userModel(organization).findOneAndUpdate({email:findUser.email},{activeStatus:"online"},{new:true})
if (updateActiveStatus) {
const cameraDatas=await cameraModel(organization).findOne({userId:updateActiveStatus._id})
.select("position target rotation -_id");
if (cameraDatas) {
const result = {
position: cameraDatas.position,
target: cameraDatas.target,
rotation: cameraDatas.rotation,
userData: {
_id: updateActiveStatus._id,
userName: updateActiveStatus.userName,
email: updateActiveStatus.email,
},
};
return { success: true, message: 'user connect ', data: result,organization:organization }
// return result;
}
}
}
}else {
console.error('Invalid data or missing email:', data);
// Handle the error or return a default value
// Example: Return an error response if the email is invalid
return { success: false, message: 'Email is missing or invalid', }
// return res.status(400).send({ message: 'Email is missing or invalid' });
}
// // return [];
} catch (error) {
return { success: false, message:error}
}
}
export const activeUserOffline = async (data: any) => {
try {
const email = data.email
const organization = email.split("@")[1].split(".")[0]
const findUsers = await userModel(organization).findOne({email})
// console.log('findUsers: ', findUsers);
if (findUsers) {
const updateActiveStatus = await userModel(organization).findOneAndUpdate({email:email},{activeStatus:"offline"},{new:true})
// console.log('updateActiveStatus: ',updateActiveStatus);
if (updateActiveStatus) {
const cameraDatas=await cameraModel(organization).findOne({userId:updateActiveStatus._id})
.select("position target rotation -_id");
// console.log('cameraDatas: ', cameraDatas);
if (cameraDatas) {
const result = {
position: cameraDatas.position,
target: cameraDatas.target,
rotation: cameraDatas.rotation,
userData: {
_id: updateActiveStatus._id,
userName: updateActiveStatus.userName,
email: updateActiveStatus.email,
},
};
// console.log("Formatted Result:", result);
// return result;
return { success: true, message: 'user disconnect', data: result,organization:organization }
}
}
}
// // return [];
} catch (error) {
return { success: false, message: error}
}
}
import cameraModel from "../../../shared/model/camera/camera-Model"
import userModel from "../../../shared/model/user-Model"
export const activeUsers = async (data: any) => {
try {
if (data && data.email) {
const email = data.email
const organization = email.split("@")[1].split(".")[0]
const findUser = await userModel(organization).findOne({email})
if (findUser) {
const updateActiveStatus = await userModel(organization).findOneAndUpdate({email:findUser.email},{activeStatus:"online"},{new:true})
if (updateActiveStatus) {
const cameraDatas=await cameraModel(organization).findOne({userId:updateActiveStatus._id})
.select("position target rotation -_id");
if (cameraDatas) {
const result = {
position: cameraDatas.position,
target: cameraDatas.target,
rotation: cameraDatas.rotation,
userData: {
_id: updateActiveStatus._id,
userName: updateActiveStatus.userName,
email: updateActiveStatus.email,
},
};
return { success: true, message: 'user connect ', data: result,organization:organization }
// return result;
}
}
}
}else {
// console.error('Invalid data or missing email:', data);
// Handle the error or return a default value
// Example: Return an error response if the email is invalid
return { success: false, message: 'Email is missing or invalid', }
// return res.status(400).send({ message: 'Email is missing or invalid' });
}
// // return [];
} catch (error) {
return { success: false, message:error}
}
}
export const activeUserOffline = async (data: any) => {
try {
const email = data.email
const organization = email.split("@")[1].split(".")[0]
const findUsers = await userModel(organization).findOne({email})
// console.log('findUsers: ', findUsers);
if (findUsers) {
const updateActiveStatus = await userModel(organization).findOneAndUpdate({email:email},{activeStatus:"offline"},{new:true})
// console.log('updateActiveStatus: ',updateActiveStatus);
if (updateActiveStatus) {
const cameraDatas=await cameraModel(organization).findOne({userId:updateActiveStatus._id})
.select("position target rotation -_id");
// console.log('cameraDatas: ', cameraDatas);
if (cameraDatas) {
const result = {
position: cameraDatas.position,
target: cameraDatas.target,
rotation: cameraDatas.rotation,
userData: {
_id: updateActiveStatus._id,
userName: updateActiveStatus.userName,
email: updateActiveStatus.email,
},
};
// console.log("Formatted Result:", result);
// return result;
return { success: true, message: 'user disconnect', data: result,organization:organization }
}
}
}
// // return [];
} catch (error) {
return { success: false, message: error}
}
}

View File

@@ -1,45 +1,45 @@
export const EVENTS = {
connection: "connection",
disconnect:"disconnect",
//userActiveStatus
userConnect:"userConnectRespones",
userDisConnect:"userDisConnectRespones",
// Room management events
joinRoom: 'joinRoom',
createroom: "createRoom", // When a client joins a room
leaveRoom: 'leaveRoom', // When a client leaves a room
roomCreated: 'roomCreated', // When a new room is created
roomDeleted: 'roomDeleted', // When a room is deleted
// Camera //response
setCamera: 'v1:Camera:set',
cameraCreateResponse: "cameraCreateResponse", // Response for camera creation
cameraUpdateResponse: "cameraUpdateResponse", // Response for camera update
cameraError: "cameraError",
//Environment
setenvironment: "v1:Environment:set",
EnvironmentUpdateResponse: "EnvironmentUpdateResponse",
//FloorItems
setFloorItems: "v1:FloorItems:set",
FloorItemsUpdateResponse: "FloorItemsUpdateResponse",
deleteFloorItems: "v1:FloorItems:delete",
FloorItemsDeleteResponse: "FloorItemsDeleteResponse",
floorItemError: "floorItemError",
//WALLItems
setWallItems: "v1:wallItems:set",
wallItemsUpdateResponse: "wallItemsUpdateResponse",
deleteWallItems: "v1:wallItems:delete",
wallItemsDeleteResponse: "wallItemsDeleteResponse",
wallItemError: "wallItemError",
//Lines
createLine:"v1:Line:create",
createLineResponse:"Line:response:create",
updateLine:"v1:Line:update",
updateLineResponse:"Line:response:update",
deleteLine:"v1:Line:delete",
deleteLineResponse:"Line:response:delete",
deletePoint:"v1:Line:delete:point",
deletePointResponse:"Line:response:delete:point",
deleteLineLayer:"v1:Line:delete:layer",
deleteLineLayerResponse:"Line:response:delete:layer",
export const EVENTS = {
connection: "connection",
disconnect:"disconnect",
//userActiveStatus
userConnect:"userConnectRespones",
userDisConnect:"userDisConnectRespones",
// Room management events
joinRoom: 'joinRoom',
createroom: "createRoom", // When a client joins a room
leaveRoom: 'leaveRoom', // When a client leaves a room
roomCreated: 'roomCreated', // When a new room is created
roomDeleted: 'roomDeleted', // When a room is deleted
// Camera //response
setCamera: 'v1:Camera:set',
cameraCreateResponse: "cameraCreateResponse", // Response for camera creation
cameraUpdateResponse: "cameraUpdateResponse", // Response for camera update
cameraError: "cameraError",
//Environment
setenvironment: "v1:Environment:set",
EnvironmentUpdateResponse: "EnvironmentUpdateResponse",
//FloorItems
setFloorItems: "v1:FloorItems:set",
FloorItemsUpdateResponse: "FloorItemsUpdateResponse",
deleteFloorItems: "v1:FloorItems:delete",
FloorItemsDeleteResponse: "FloorItemsDeleteResponse",
floorItemError: "floorItemError",
//WALLItems
setWallItems: "v1:wallItems:set",
wallItemsUpdateResponse: "wallItemsUpdateResponse",
deleteWallItems: "v1:wallItems:delete",
wallItemsDeleteResponse: "wallItemsDeleteResponse",
wallItemError: "wallItemError",
//Lines
createLine:"v1:Line:create",
createLineResponse:"Line:response:create",
updateLine:"v1:Line:update",
updateLineResponse:"Line:response:update",
deleteLine:"v1:Line:delete",
deleteLineResponse:"Line:response:delete",
deletePoint:"v1:Line:delete:point",
deletePointResponse:"Line:response:delete:point",
deleteLineLayer:"v1:Line:delete:layer",
deleteLineLayerResponse:"Line:response:delete:layer",
}

View File

@@ -1,421 +1,421 @@
import { Server, Socket } from 'socket.io';
import { EVENTS } from './events';
import { createCamera } from '../services/camera/camera-Controller';
import { setEnvironment } from '../services/environments/environments-controller';
import { deleteFloorItems, setFloorItems } from '../services/assets/flooritem-Controller';
import { deleteWallItems, setWallItems } from '../services/assets/wallitem-Controller';
import { deleteLineItems, deleteLinPoiteItems, updateLineItems ,createLineItems, deleteLayer} from '../services/lines/line-Controller';
import { activeUserOffline, activeUsers } from '../services/users/user-controller';
const cameraHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setCamera:
const result = await createCamera(data,);
// console.log('result: ', result);
if (result.success) {
// console.log('result.success: ', result.success);
// if (result.message === 'Camera updated') {
// Emit update response
io.emit(EVENTS.cameraUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else if (result.message === 'Camera created') {
// Emit create response
io.emit(EVENTS.cameraCreateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
// }
} else {
// Emit error response
socket.emit(EVENTS.cameraError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;
// case EVENTS.updataControlle_iot:
// updateControlle(data);
break;
// case EVENTS.deleteControlle_iot:
// deleteControlle(data);
break;
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const EnvironmentHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setenvironment:
const result = await setEnvironment(data,);
// console.log('result: ', result);
if (result.success) {
// if (result.message === 'Camera updated') {
// Emit update response
io.emit(EVENTS.EnvironmentUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
// } else if (result.message === 'evironments created') {
// // Emit create response
// io.emit(EVENTS.cameraCreateResponse, {
// success: true,
// message: result.message,
// data: result.data,
// });
// }
} else {
// Emit error response
socket.emit(EVENTS.cameraError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;
// case EVENTS.updataControlle_iot:
// updateControlle(data);
break;
// case EVENTS.deleteControlle_iot:
// deleteControlle(data);
break;
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const floorItemsHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setFloorItems:{
const result = await setFloorItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.FloorItemsUpdateResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.floorItemError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;}
case EVENTS.deleteFloorItems:{
const result = await deleteFloorItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.FloorItemsDeleteResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.floorItemError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const wallItemsHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setWallItems:{
const result = await setWallItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.wallItemsUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.wallItemError, {
success: false,
message: result.message,
error: result.error,
});
}
break;
}
case EVENTS.deleteWallItems:{
const result = await deleteWallItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.wallItemsDeleteResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.wallItemError, {
success: false,
message: result.message,
error: result.error,
});
}
break;
}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const lineHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.createLine:{
const result = await createLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.createLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.updateLine: {
const result = await updateLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.updateLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization: result.organization
});
}
break;
}
case EVENTS.deleteLine:{
const result = await deleteLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deleteLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.deletePoint:{
const result = await deleteLinPoiteItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deletePointResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.deleteLineLayer:{
const result = await deleteLayer(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deleteLineLayerResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const userStatus =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.connection: {
// console.log('EVENTS.connection: ', EVENTS.connection);
// console.log('event: ', event);
const result = await activeUsers(data);
if (result?.success) {
// console.log('result.success: ', result.success)
io.emit(EVENTS.userConnect, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});}
break;
}
case EVENTS.disconnect: {
// console.log('EVENTS.disconnect: ', EVENTS.connection);
// console.log('event: ', event);
const result = await activeUserOffline(data);
if (result?.success) {
// console.log('result.success: ', result.success)
io.emit(EVENTS.userDisConnect, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});}
break;
}
}
}
export const initSocketServer = (httpServer: any) => {
const io = new Server(httpServer, {
cors: {
origin: '*', // Allow CORS for all origins (adjust in production)
methods: ['GET', 'POST'],
},
});
// Listen for new connections
io.on(EVENTS.connection, (socket: Socket) => {
// console.log(`New client connected: ${socket.id}`);
// console.log(socket.handshake.auth);
userStatus(EVENTS.connection, socket, socket.handshake.auth,io);
// Handle all incoming events with the handleEvent function
socket.onAny((event: string, data: any,) => {
cameraHandleEvent(event, socket, data,io);
EnvironmentHandleEvent(event, socket, data,io);
floorItemsHandleEvent(event, socket, data,io);
wallItemsHandleEvent(event, socket, data,io);
lineHandleEvent(event, socket, data,io);
});
socket.on(EVENTS.disconnect, (reason: string) => {
// console.log(`Client disconnected: ${socket.id}, Reason: ${reason}`);
// console.log(socket.handshake.auth);
userStatus(EVENTS.disconnect, socket, socket.handshake.auth,io);
// Perform cleanup or other necessary actions
});
});
return io;
};
import { Server, Socket } from 'socket.io';
import { EVENTS } from './events';
import { createCamera } from '../services/camera/camera-Controller';
import { setEnvironment } from '../services/environments/environments-controller';
import { deleteFloorItems, setFloorItems } from '../services/assets/flooritem-Controller';
import { deleteWallItems, setWallItems } from '../services/assets/wallitem-Controller';
import { deleteLineItems, deleteLinPoiteItems, updateLineItems ,createLineItems, deleteLayer} from '../services/lines/line-Controller';
import { activeUserOffline, activeUsers } from '../services/users/user-controller';
const cameraHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setCamera:
const result = await createCamera(data,);
// console.log('result: ', result);
if (result.success) {
// console.log('result.success: ', result.success);
// if (result.message === 'Camera updated') {
// Emit update response
io.emit(EVENTS.cameraUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else if (result.message === 'Camera created') {
// Emit create response
io.emit(EVENTS.cameraCreateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
// }
} else {
// Emit error response
socket.emit(EVENTS.cameraError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;
// case EVENTS.updataControlle_iot:
// updateControlle(data);
break;
// case EVENTS.deleteControlle_iot:
// deleteControlle(data);
break;
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const EnvironmentHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setenvironment:
const result = await setEnvironment(data,);
// console.log('result: ', result);
if (result.success) {
// if (result.message === 'Camera updated') {
// Emit update response
io.emit(EVENTS.EnvironmentUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
// } else if (result.message === 'evironments created') {
// // Emit create response
// io.emit(EVENTS.cameraCreateResponse, {
// success: true,
// message: result.message,
// data: result.data,
// });
// }
} else {
// Emit error response
socket.emit(EVENTS.cameraError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;
// case EVENTS.updataControlle_iot:
// updateControlle(data);
break;
// case EVENTS.deleteControlle_iot:
// deleteControlle(data);
break;
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const floorItemsHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setFloorItems:{
const result = await setFloorItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.FloorItemsUpdateResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.floorItemError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;}
case EVENTS.deleteFloorItems:{
const result = await deleteFloorItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.FloorItemsDeleteResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.floorItemError, {
success: false,
message: result.message,
error: result.error,
socketId: socket.id,
organization:result.organization
});
}
break;}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const wallItemsHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.setWallItems:{
const result = await setWallItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.wallItemsUpdateResponse, {
success: true,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.wallItemError, {
success: false,
message: result.message,
error: result.error,
});
}
break;
}
case EVENTS.deleteWallItems:{
const result = await deleteWallItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.wallItemsDeleteResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
socket.emit(EVENTS.wallItemError, {
success: false,
message: result.message,
error: result.error,
});
}
break;
}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const lineHandleEvent =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.createLine:{
const result = await createLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.createLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.updateLine: {
const result = await updateLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.updateLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization: result.organization
});
}
break;
}
case EVENTS.deleteLine:{
const result = await deleteLineItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deleteLineResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.deletePoint:{
const result = await deleteLinPoiteItems(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deletePointResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
case EVENTS.deleteLineLayer:{
const result = await deleteLayer(data);
// console.log('result: ', result);
if (result.success) {
io.emit(EVENTS.deleteLineLayerResponse, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});
} else {
// Emit error response
// socket.emit(EVENTS.wallItemError, {
// success: false,
// message: result.message,
// error: result.error,
// });
}
break;
}
default:
// console.error(`Unhandled event type: ${event}`);
}
}
const userStatus =async (event: string, socket: Socket, data: any,io:any) => {
switch (event) {
case EVENTS.connection: {
// console.log('EVENTS.connection: ', EVENTS.connection);
// console.log('event: ', event);
const result = await activeUsers(data);
if (result?.success) {
// console.log('result.success: ', result.success)
io.emit(EVENTS.userConnect, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});}
break;
}
case EVENTS.disconnect: {
// console.log('EVENTS.disconnect: ', EVENTS.connection);
// console.log('event: ', event);
const result = await activeUserOffline(data);
if (result?.success) {
// console.log('result.success: ', result.success)
io.emit(EVENTS.userDisConnect, {
success: true || false,
message: result.message,
data: result.data,
socketId: socket.id,
organization:result.organization
});}
break;
}
}
}
export const initSocketServer = (httpServer: any) => {
const io = new Server(httpServer, {
cors: {
origin: '*', // Allow CORS for all origins (adjust in production)
methods: ['GET', 'POST'],
},
});
// Listen for new connections
io.on(EVENTS.connection, (socket: Socket) => {
// console.log(`New client connected: ${socket.id}`);
// console.log(socket.handshake.auth);
userStatus(EVENTS.connection, socket, socket.handshake.auth,io);
// Handle all incoming events with the handleEvent function
socket.onAny((event: string, data: any,) => {
cameraHandleEvent(event, socket, data,io);
EnvironmentHandleEvent(event, socket, data,io);
floorItemsHandleEvent(event, socket, data,io);
wallItemsHandleEvent(event, socket, data,io);
lineHandleEvent(event, socket, data,io);
});
socket.on(EVENTS.disconnect, (reason: string) => {
// console.log(`Client disconnected: ${socket.id}, Reason: ${reason}`);
// console.log(socket.handshake.auth);
userStatus(EVENTS.disconnect, socket, socket.handshake.auth,io);
// Perform cleanup or other necessary actions
});
});
return io;
};