swagger documentation for Api
This commit is contained in:
@@ -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"]
|
||||
@@ -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}`);
|
||||
});
|
||||
|
||||
@@ -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 }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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, }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user