From 64b07dd057b669fa3f6717efd99d2fc8b0bf17ff Mon Sep 17 00:00:00 2001 From: sabarinathan155 Date: Sat, 5 Apr 2025 17:44:01 +0530 Subject: [PATCH] widget3d update,delete creation --- .env | 16 +-- .../visualization/3dWidget-Service.ts | 127 ++++++++++++++++++ .../visualization/floatWidget-Service.ts | 50 +++---- src/socket-server/socket/events.ts | 6 +- src/socket-server/socket/socketManager.ts | 58 +++++++- 5 files changed, 218 insertions(+), 39 deletions(-) diff --git a/.env b/.env index 2f34361..65c4382 100644 --- a/.env +++ b/.env @@ -1,11 +1,11 @@ -# MONGO_URI=mongodb://192.168.0.111/ -# MONGO_USER=mydata -# MONGO_PASSWORD=mongodb@hexr2002 -# MONGO_AUTH_DB=admin - -MONGO_USER=admin -MONGO_PASSWORD=admin321 +MONGO_URI=mongodb://192.168.0.111/ +MONGO_USER=mydata +MONGO_PASSWORD=mongodb@hexr2002 MONGO_AUTH_DB=admin -MONGO_URI=mongodb://mongo/ + +# MONGO_USER=admin +# MONGO_PASSWORD=admin321 +# MONGO_AUTH_DB=admin +# MONGO_URI=mongodb://mongo/ API_PORT=5000 SOCKET_PORT=8000 \ No newline at end of file diff --git a/src/socket-server/services/visualization/3dWidget-Service.ts b/src/socket-server/services/visualization/3dWidget-Service.ts index 92440ef..ae13e03 100644 --- a/src/socket-server/services/visualization/3dWidget-Service.ts +++ b/src/socket-server/services/visualization/3dWidget-Service.ts @@ -2,6 +2,8 @@ import zoneSchema from "../../../shared/model/builder/lines/zone-Model.ts"; import widget3dModel from "../../../shared/model/vizualization/3dwidget.ts"; export const add3Dwidget = async (data: any) => { const { organization, widget, zoneId } = data; + console.log('data: ', data); + try { const existingZone = await zoneSchema(organization).findOne({ @@ -73,3 +75,128 @@ export const add3Dwidget = async (data: any) => { }; } }; +export const update3D = async (data: any) => { + const { organization, id, position, rotation, zoneId } = data + console.log('data: ', data); + try { + const existingZone = await zoneSchema(organization).findOne({ + zoneId: zoneId, + isArchive: false, + }); + if (!existingZone) + return { + success: false, + message: "Zone not found", + organization: organization, + }; + const existing3Dwidget = await widget3dModel(organization).findOne({ + widgetID: id, + zoneId: zoneId, + isArchive: false, + }); + if (existing3Dwidget) { + const update3dwidget = await widget3dModel( + organization + ).findOneAndUpdate( + { + widgetID: id, + zoneId: zoneId, + isArchive: false, + }, + { position: position, rotation: rotation }, + { upsert: true, new: true } + ); + if (update3dwidget){ + + const updateDatas = { + widget: { + id: update3dwidget.widgetID, + type: update3dwidget.type, + position: update3dwidget.position, + rotation: update3dwidget.rotation, + }, + zoneId: zoneId, + }; + return { + success: true, + message: "widget update successfully", + data:updateDatas, + organization: organization, + }; + } + + } else { + return { + success: false, + message: "widget not found", + + organization: organization, + }; + } + } catch (error: any) { + return { + success: false, + message: error?.message || "Error occurred while 3Dwidget", + error, + organization: organization, + }; + } +}; +export const delete3Dwidget = async (data: any) => { + const { organization, id, zoneId } = data + console.log('data: ', data); + try { + const existingZone = await zoneSchema(organization).findOne({ + zoneId: zoneId, + isArchive: false, + }); + if (!existingZone) + return { + success: false, + message: "Zone not found", + organization: organization, + }; + const existing3Dwidget = await widget3dModel(organization).findOne({ + widgetID: id, + isArchive: false, + zoneId: zoneId, + }); + if (!existing3Dwidget) { + return { + success: false, + message: "3D widget not found for the ID", + organization: organization, + }; + } + const updateWidget = await widget3dModel(organization).findOneAndUpdate( + { + widgetID: id, + zoneId: zoneId, + isArchive: false, + }, + { isArchive: true }, + { new: true } + ); + if (updateWidget){ + const delete_Datas = { + zoneId: zoneId,id:existing3Dwidget.widgetID + }; + + return { + success: true, + data:delete_Datas, + message: "3DWidget delete successfull", + organization: organization, + }; + } + + } catch (error: any) { + return { + success: false, + message: error?.message || "Error occurred while 3Dwidget", + error, + organization: organization, + }; + } +} + diff --git a/src/socket-server/services/visualization/floatWidget-Service.ts b/src/socket-server/services/visualization/floatWidget-Service.ts index 9fa8eb1..0bc9ea8 100644 --- a/src/socket-server/services/visualization/floatWidget-Service.ts +++ b/src/socket-server/services/visualization/floatWidget-Service.ts @@ -18,6 +18,7 @@ export const addfloat = async (data: any) => { }); if (existingFloatWidget) { + console.log('existingFloatWidget: ', existingFloatWidget); const updateFloatWidget = await floatWidgetModel(organization).findOneAndUpdate( { floatWidgetID: widget.id, @@ -26,8 +27,8 @@ export const addfloat = async (data: any) => { { $set: { Data: { - measurements: widget?.Data.measurements, - duration: widget?.Data.duration, + measurements: widget?.Data?.measurements, + duration: widget?.Data?.duration, }, header: widget?.header, position: widget?.position, @@ -43,28 +44,31 @@ export const addfloat = async (data: any) => { index: index, zoneId: zoneId, zoneName: existingZone.zoneName } + console.log(updateFloatWidget); return { success: true, message: "Widget updated successfully", data: floatUpdateDatas, organization: organization } + }else{ + + const newFloadWidget = await floatWidgetModel(organization).create({ + className: widget.className, + header: widget.header, + floatWidgetID: widget.id, + position: widget.position, + per: widget.per, + value: widget.value, + zoneId: zoneId, + }); + if (newFloadWidget) { + const floatDatas = { + widget: { + position: newFloadWidget.position, header: newFloadWidget.header, value: newFloadWidget.value + , per: newFloadWidget.per, className: newFloadWidget.className, id: newFloadWidget.floatWidgetID + }, + zoneId: zoneId, zoneName: existingZone.zoneName + } + return { success: true, message: "FloatWidget created successfully", data: floatDatas, organization: organization } + } } - const newFloadWidget = await floatWidgetModel(organization).create({ - className: widget.className, - header: widget.header, - floatWidgetID: widget.id, - position: widget.position, - per: widget.per, - value: widget.value, - zoneId: zoneId, - }); - if (newFloadWidget) { - const floatDatas = { - widget: { - position: newFloadWidget.position, header: newFloadWidget.header, value: newFloadWidget.value - , per: newFloadWidget.per, className: newFloadWidget.className, id: newFloadWidget.floatWidgetID - }, - zoneId: zoneId, zoneName: existingZone.zoneName - } - return { success: true, message: "FloatWidget created successfully", data: floatDatas, organization: organization } - } } catch (error: any) { return { success: false, message: error?.message || "Error occurred while float", error, organization: organization } } @@ -95,8 +99,8 @@ export const duplicatefloat = async (data: any) => { { $set: { Data: { - measurements: widget?.Data.measurements, - duration: widget?.Data.duration, + measurements: widget?.Data?.measurements, + duration: widget?.Data?.duration, }, header: widget?.header, position: widget?.position, diff --git a/src/socket-server/socket/events.ts b/src/socket-server/socket/events.ts index 9973f35..6bac73b 100644 --- a/src/socket-server/socket/events.ts +++ b/src/socket-server/socket/events.ts @@ -89,6 +89,8 @@ export const EVENTS = { //3Dwidget add3DWidget:"v2:viz-3D-widget:add", widget3DUpdateResponse:"viz-widget3D:response:updates", - - + update3dPosition:"v2:viz-3D-widget:modifyPositionRotation", + update3dPositionResponse:"viz-widget3D:response:modifyPositionRotation", + delete3DWidget:"v2:viz-3D-widget:delete", + widget3DDeleteResponse:"viz-widget3D:response:delete", } \ No newline at end of file diff --git a/src/socket-server/socket/socketManager.ts b/src/socket-server/socket/socketManager.ts index 5fb3a22..86ddd07 100644 --- a/src/socket-server/socket/socketManager.ts +++ b/src/socket-server/socket/socketManager.ts @@ -12,7 +12,7 @@ import { addWidget, Widgetdelete } from '../services/visualization/widget-Servic import { addfloat, deletefloat, duplicatefloat } from '../services/visualization/floatWidget-Service.ts'; import { addTemplate, addTemplateZone, TemplateZoneDelete } from '../services/visualization/templateServices.ts'; import { deleteAssetModel, replaceEventDatas, setAssetModel } from '../services/assets/asset-Controller.ts'; -import { add3Dwidget } from '../services/visualization/3dWidget-Service.ts'; +import { add3Dwidget, delete3Dwidget, update3D } from '../services/visualization/3dWidget-Service.ts'; @@ -814,6 +814,52 @@ const Widget3DHandleEvent = async (event: string, socket: Socket, data: any, nam } break } + case EVENTS.update3dPosition: { + result = await update3D(data); + + if (result) { + const responseEvent = EVENTS.update3dPositionResponse + const organization = result?.organization + // const emitTarget = notifySender ? socket.in(organization) : socket.to(organization); + // console.log(`👀 Active sockets in room:`, namespace.adapter.rooms.get(organization)); + if (organization) { + socket.to(organization).emit(responseEvent, { + success: result.success, + message: result.message, + data: result.data, + error: result.error || null, + socketId: socket.id, + organization, + }); + } else { + console.warn(`Organization missing in response for event: ${event}`); + } + } + break + } + case EVENTS.delete3DWidget: { + result = await delete3Dwidget(data); + + if (result) { + const responseEvent = EVENTS.widget3DDeleteResponse + const organization = result?.organization + // const emitTarget = notifySender ? socket.in(organization) : socket.to(organization); + // console.log(`👀 Active sockets in room:`, namespace.adapter.rooms.get(organization)); + if (organization) { + socket.to(organization).emit(responseEvent, { + success: result.success, + message: result.message, + data: result.data, + error: result.error || null, + socketId: socket.id, + organization, + }); + } else { + console.warn(`Organization missing in response for event: ${event}`); + } + } + break + } // case EVENTS.deleteWidget: { // const result = await Widgetdelete(data) @@ -1034,9 +1080,9 @@ export const initSocketServer = (httpServer: any) => { // console.log(`✅ Client connected to ${namespaceName}: ${socket.id}`); // Extract organization from query parameters - const organization = socket.handshake.query.organization as string; - const email = socket.handshake.query.email as string; - // const {organization,email} = socket.handshake.auth + // const organization = socket.handshake.query.organization as string; + // const email = socket.handshake.query.email as string; + const {organization,email} = socket.handshake.auth // console.log(`🔍 Received organization: ${organization}`); if (organization) { @@ -1049,9 +1095,9 @@ export const initSocketServer = (httpServer: any) => { onlineUsers[organization] = new Set(); } onlineUsers[organization].add(socket.id); - console.log('onlineUsers: ', onlineUsers); + // console.log('onlineUsers: ', onlineUsers); - console.log(`✅ User ${email} joined ${organization}. Active users:`, onlineUsers[organization]); + // console.log(`✅ User ${email} joined ${organization}. Active users:`, onlineUsers[organization]); } userStatus(EVENTS.connection, socket, socket.handshake.auth, socket);