asset and environment service addet
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
import environmentModel from "../../V1Models/Environment/environments-Model.ts";
|
||||
import { existingProjectById, existingUser } from "../helpers/v1projecthelperFns.ts";
|
||||
|
||||
interface EnvironmentInput {
|
||||
roofVisibility: boolean;
|
||||
wallVisibility: boolean;
|
||||
shadowVisibility: boolean;
|
||||
renderDistance: number;
|
||||
limitDistance: boolean;
|
||||
organization: string;
|
||||
projectId: string;
|
||||
userId: string;
|
||||
}
|
||||
export const setEnvironment = async (
|
||||
data: EnvironmentInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { roofVisibility, wallVisibility, shadowVisibility, organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const findvalue = await environmentModel(organization).findOne({ userId: userId })
|
||||
if (findvalue) {
|
||||
const updatevalue = await environmentModel(organization).findOneAndUpdate(
|
||||
{ userId: userId, projectId: projectId }, { roofVisibility: roofVisibility, wallVisibility: wallVisibility, shadowVisibility: shadowVisibility }, { new: true });
|
||||
// return { success: true, message: 'evironments updated', data: updatevalue,organization:organization }
|
||||
return { status: 'evironments updated', data: updatevalue }
|
||||
} else {
|
||||
const newValue = await environmentModel(organization).create({ userId, projectId, roofVisibility, wallVisibility, shadowVisibility });
|
||||
// return { success: true, message: 'evironments created', data: newValue,organization:organization }
|
||||
return { status: 'Success', data: newValue }
|
||||
}
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const getEnvironment = async (
|
||||
data: EnvironmentInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
|
||||
const findValue = await environmentModel(organization).findOne({
|
||||
userId: userId, projectId: projectId
|
||||
});
|
||||
if (!findValue) {
|
||||
// res.status(200).json("user not found");
|
||||
return { status: 'evironments user not found' }
|
||||
} else {
|
||||
// res.status(201).json(findValue);
|
||||
return { status: 'Success', data: findValue }
|
||||
}
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,473 @@
|
||||
import { Mixed } from "mongoose";
|
||||
import assetModel from "../../V1Models/Builder/assetModel.ts";
|
||||
import EventsDataModel from "../../V1Models/Simulation/eventsDataModel.ts";
|
||||
import { existingProjectById, existingUser } from "../helpers/v1projecthelperFns.ts";
|
||||
|
||||
interface setAssetInput {
|
||||
modelUuid: string;
|
||||
modelName: string;
|
||||
position: []; // user ID
|
||||
rotation: object;
|
||||
eventData: Mixed;
|
||||
modelfileID: string;
|
||||
isLocked: boolean;
|
||||
isVisible: boolean;
|
||||
organization: string;
|
||||
projectId: string;
|
||||
userId: string;
|
||||
}
|
||||
export const setAssetModel = async (
|
||||
data: setAssetInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { modelUuid,
|
||||
modelName,
|
||||
position,
|
||||
rotation,
|
||||
eventData,
|
||||
modelfileID,
|
||||
isLocked,
|
||||
isVisible,
|
||||
organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const findvalue = await assetModel(organization).findOne({
|
||||
modelUuid: modelUuid,
|
||||
projectId: projectId,
|
||||
userId: userId,
|
||||
isArchive: false,
|
||||
});
|
||||
if (findvalue) {
|
||||
const updatevalue = await assetModel(organization).findOneAndUpdate(
|
||||
{ modelUuid: modelUuid, projectId: projectId, userId: userId, isArchive: false },
|
||||
{
|
||||
modelName: modelName,
|
||||
position: position,
|
||||
rotation: rotation,
|
||||
isVisible: isVisible,
|
||||
isLocked: isLocked,
|
||||
eventData: eventData,
|
||||
},
|
||||
{ new: true }
|
||||
);
|
||||
// return {
|
||||
// success: true,
|
||||
// message: "Model updated successfully",
|
||||
// data: updatevalue,
|
||||
// organization: organization,
|
||||
// };
|
||||
return {
|
||||
status: "Updated successfully",
|
||||
data: updatevalue,
|
||||
};
|
||||
} else {
|
||||
let assetData: any = {
|
||||
projectId,
|
||||
userId,
|
||||
modelUuid,
|
||||
modelName,
|
||||
position,
|
||||
modelfileID,
|
||||
rotation,
|
||||
isLocked,
|
||||
isVisible,
|
||||
};
|
||||
|
||||
// if (eventData) {
|
||||
// if (eventData?.type === "Conveyor") {
|
||||
// assetData.eventData = {
|
||||
// type: eventData.type,
|
||||
// // point:undefined,
|
||||
// points: eventData.points,
|
||||
// };
|
||||
// } else {
|
||||
// assetData.eventData = {
|
||||
// type: eventData.type,
|
||||
// point: eventData.point,
|
||||
// // points: undefined
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
if (eventData) {
|
||||
const typedEventData = eventData as unknown as { type: string; point?: any; points?: any[] };
|
||||
|
||||
if (typedEventData.type === "Conveyor") {
|
||||
assetData.eventData = {
|
||||
type: typedEventData.type,
|
||||
points: typedEventData.points,
|
||||
};
|
||||
} else {
|
||||
assetData.eventData = {
|
||||
type: typedEventData.type,
|
||||
point: typedEventData.point,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (eventData) {
|
||||
const typedEventData = eventData as unknown as { type: string; point?: any; points?: any[] };
|
||||
|
||||
if (typedEventData.type === "Conveyor") {
|
||||
assetData.eventData = {
|
||||
type: typedEventData.type,
|
||||
points: typedEventData.points,
|
||||
};
|
||||
} else {
|
||||
assetData.eventData = {
|
||||
type: typedEventData.type,
|
||||
point: typedEventData.point,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const assetDoc = await assetModel(organization).create(assetData);
|
||||
await assetDoc.save();
|
||||
let assetDatas;
|
||||
const typedEventData = eventData as unknown as { type: string };
|
||||
if (typedEventData && typedEventData.type === "Conveyor") {
|
||||
assetDatas = {
|
||||
projectId: assetDoc.projectId,
|
||||
userId: assetDoc.userId,
|
||||
modelUuid: assetDoc.modelUuid,
|
||||
modelName: assetDoc.modelName,
|
||||
modelfileID: assetDoc.modelfileID,
|
||||
position: assetDoc.position,
|
||||
rotation: assetDoc.rotation,
|
||||
isLocked: assetDoc.isLocked,
|
||||
isVisible: assetDoc.isVisible,
|
||||
eventData: eventData,
|
||||
};
|
||||
} else if (eventData && assetDoc.type === "Vehicle") {
|
||||
assetDatas = {
|
||||
projectId: assetDoc.projectId,
|
||||
userId: assetDoc.userId,
|
||||
modelUuid: assetDoc.modelUuid,
|
||||
modelName: assetDoc.modelName,
|
||||
modelfileID: assetDoc.modelfileID,
|
||||
position: assetDoc.position,
|
||||
rotation: assetDoc.rotation,
|
||||
isLocked: assetDoc.isLocked,
|
||||
isVisible: assetDoc.isVisible,
|
||||
eventData: {
|
||||
points: assetDoc.points,
|
||||
type: assetDoc.type,
|
||||
},
|
||||
};
|
||||
} else if (eventData && assetDoc.type === "ArmBot") {
|
||||
assetDatas = {
|
||||
projectId: assetDoc.projectId,
|
||||
userId: assetDoc.userId,
|
||||
modelUuid: assetDoc.modelUuid,
|
||||
modelName: assetDoc.modelName,
|
||||
modelfileID: assetDoc.modelfileID,
|
||||
position: assetDoc.position,
|
||||
rotation: assetDoc.rotation,
|
||||
isLocked: assetDoc.isLocked,
|
||||
isVisible: assetDoc.isVisible,
|
||||
eventData: {
|
||||
points: assetDoc.points,
|
||||
type: assetDoc.type,
|
||||
},
|
||||
};
|
||||
} else if (eventData && assetDoc.type === "StaticMachine") {
|
||||
assetDatas = {
|
||||
projectId: assetDoc.projectId,
|
||||
userId: assetDoc.userId,
|
||||
modelUuid: assetDoc.modelUuid,
|
||||
modelName: assetDoc.modelName,
|
||||
modelfileID: assetDoc.modelfileID,
|
||||
position: assetDoc.position,
|
||||
rotation: assetDoc.rotation,
|
||||
isLocked: assetDoc.isLocked,
|
||||
isVisible: assetDoc.isVisible,
|
||||
eventData: {
|
||||
points: assetDoc.points,
|
||||
type: assetDoc.type,
|
||||
},
|
||||
};
|
||||
} else {
|
||||
assetDatas = {
|
||||
projectId: assetDoc.projectId,
|
||||
userId: assetDoc.userId,
|
||||
modelUuid: assetDoc.modelUuid,
|
||||
modelName: assetDoc.modelName,
|
||||
modelfileID: assetDoc.modelfileID,
|
||||
position: assetDoc.position,
|
||||
rotation: assetDoc.rotation,
|
||||
isLocked: assetDoc.isLocked,
|
||||
isVisible: assetDoc.isVisible,
|
||||
};
|
||||
}
|
||||
// return {
|
||||
// success: true,
|
||||
// message: "Model created successfully",
|
||||
// data: assetDatas,
|
||||
// organization: organization,
|
||||
// };
|
||||
return {
|
||||
status: "Success",
|
||||
data: assetDatas,
|
||||
};
|
||||
}
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
export const deleteAssetModel = async (
|
||||
data: setAssetInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { modelUuid, modelName, organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const asset = await assetModel(organization).findOne({
|
||||
modelUuid,
|
||||
modelName,
|
||||
projectId,
|
||||
isArchive: false,
|
||||
});
|
||||
if (!asset) {
|
||||
return {
|
||||
status: "model not found",
|
||||
};
|
||||
}
|
||||
const archivedAsset = await assetModel(organization).findOneAndUpdate(
|
||||
{ modelUuid, modelName, projectId },
|
||||
{ $set: { isArchive: true } },
|
||||
{ new: true }
|
||||
);
|
||||
if (!archivedAsset) {
|
||||
// return {
|
||||
// success: false,
|
||||
// status: "Failed to archive asset",
|
||||
// organization: organization,
|
||||
// };
|
||||
}
|
||||
const updatedEvents = await EventsDataModel(organization).updateMany(
|
||||
{ modelUuid, productId: projectId },
|
||||
{ $set: { isArchive: true } }
|
||||
);
|
||||
|
||||
// return {
|
||||
// success: true,
|
||||
// message: "Model deleted successfully",
|
||||
// data: archivedAsset,
|
||||
// organization: organization,
|
||||
// };
|
||||
|
||||
return {
|
||||
status: "Model deleted successfully",
|
||||
data: archivedAsset,
|
||||
};
|
||||
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
export const replaceEventDatas = async (
|
||||
data: setAssetInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { modelUuid, organization, eventData, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const existingModel = await assetModel(organization).findOne({
|
||||
modelUuid: modelUuid, projectId: projectId,
|
||||
isArchive: false,
|
||||
});
|
||||
if (!existingModel) {
|
||||
return { status: "Model not for this UUID" }
|
||||
// return {
|
||||
// success: false,
|
||||
// message: "Model not for this UUID",
|
||||
// organization: organization,
|
||||
// };
|
||||
}
|
||||
else {
|
||||
const typedEventData = eventData as unknown as {
|
||||
speed: number; points?: any[];
|
||||
type?: string;
|
||||
};
|
||||
let speed;
|
||||
|
||||
if (existingModel.type === "Conveyor") {
|
||||
speed = typedEventData?.speed;
|
||||
}
|
||||
;
|
||||
const updatedModel = await assetModel(organization).findOneAndUpdate(
|
||||
{ modelUuid, projectId, isArchive: false },
|
||||
{
|
||||
points: typedEventData?.points,
|
||||
// speed: speed,
|
||||
type: typedEventData?.type || existingModel?.type,
|
||||
},
|
||||
{ new: true }
|
||||
);
|
||||
|
||||
// if (updatedModel)
|
||||
// // return {
|
||||
// // success: true,
|
||||
// // message: "Data updated successfully",
|
||||
// // data: updatedModel,
|
||||
// // organization: organization,
|
||||
// // };
|
||||
// return {
|
||||
// status: "Success",
|
||||
// data: updatedModel,
|
||||
// };
|
||||
return {
|
||||
status: "Success",
|
||||
data: updatedModel,
|
||||
};
|
||||
}
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
export const updateAssetPositionRotation = async (
|
||||
data: setAssetInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { modelUuid, modelName, position, rotation, isLocked, isVisible, organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const existingAsset = await assetModel(organization).findOne({
|
||||
modelUuid: modelUuid, projectId: projectId,
|
||||
isArchive: false,
|
||||
});
|
||||
if (!existingAsset) {
|
||||
return { status: "Asset not found" }
|
||||
// return res.send("Asset not found");
|
||||
}
|
||||
const updateAsset = await assetModel(organization).updateMany(
|
||||
{ modelUuid: modelUuid, projectId: projectId, modelName: modelName, isArchive: false },
|
||||
{
|
||||
position: position,
|
||||
rotation: rotation,
|
||||
isVisible: isVisible,
|
||||
isLocked: isLocked,
|
||||
}
|
||||
);
|
||||
// if (updateAsset)
|
||||
return {
|
||||
status: "Success",
|
||||
data: updateAsset,
|
||||
};
|
||||
// return res.status(200).json({ message: "Asset updated successfully" });
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
export const getFloorItems = async (
|
||||
data: setAssetInput
|
||||
): Promise<{ status: string; data?: Object }> => {
|
||||
try {
|
||||
const { organization, projectId, userId } = data;
|
||||
const UserExists = await existingUser(userId, organization);
|
||||
if (!UserExists) return { status: "User not found" };
|
||||
const LivingProject = await existingProjectById(
|
||||
projectId,
|
||||
organization,
|
||||
userId
|
||||
);
|
||||
if (!LivingProject) return { status: "Project not found" };
|
||||
const findValues = await assetModel(organization)
|
||||
.find({ isArchive: false })
|
||||
.select("-_id -isArchive");
|
||||
|
||||
if (!findValues || findValues.length === 0) {
|
||||
return { status: "floorItems not found" }
|
||||
// return res.status(200).json({ message: "floorItems not found" });
|
||||
}
|
||||
|
||||
const response = findValues.map((item) => {
|
||||
const responseItem: any = {
|
||||
projectId: item.productId,
|
||||
modelUuid: item.modelUuid,
|
||||
modelName: item.modelName,
|
||||
position: item.position,
|
||||
rotation: item.rotation,
|
||||
modelfileID: item.modelfileID,
|
||||
isLocked: item.isLocked,
|
||||
isVisible: item.isVisible,
|
||||
eventData: item.eventData,
|
||||
};
|
||||
return responseItem;
|
||||
});
|
||||
|
||||
// return res.status(200).json(response);
|
||||
|
||||
return {
|
||||
status: "Success",
|
||||
data: response,
|
||||
};
|
||||
|
||||
} catch (error: unknown) {
|
||||
if (error instanceof Error) {
|
||||
return {
|
||||
status: error.message,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
status: "An unexpected error occurred",
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user