Added signalR functionality in Project Infrastructure
This commit is contained in:
parent
782ace9d1c
commit
8431e856aa
@ -72,7 +72,7 @@ const InfraPlanning = () =>
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
{(!project_deatilsLoader && projects_Details?.buildings?.length > 0) && (<InfraTable buildings={projects_Details?.buildings}/>)}
|
{(!project_deatilsLoader && projects_Details?.buildings?.length > 0) && (<InfraTable buildings={projects_Details?.buildings} projectId={projects_Details.id}/>)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,11 +1,13 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
import Building from "./Building";
|
import Building from "./Building";
|
||||||
import Floor from "./Floor";
|
import Floor from "./Floor";
|
||||||
import FloorModel from "./FloorModel";
|
import FloorModel from "./FloorModel";
|
||||||
import showToast from "../../../services/toastService";
|
import showToast from "../../../services/toastService";
|
||||||
import ProjectRepository from "../../../repositories/ProjectRepository";
|
import ProjectRepository from "../../../repositories/ProjectRepository";
|
||||||
|
import eventBus from "../../../services/eventBus";
|
||||||
|
import { cacheData, clearCacheKey } from "../../../slices/apiDataManager";
|
||||||
|
|
||||||
const InfraTable = ({ buildings }) => {
|
const InfraTable = ({ buildings, projectId }) => {
|
||||||
const [projectBuilding, setProjectBuilding] = useState([]);
|
const [projectBuilding, setProjectBuilding] = useState([]);
|
||||||
const [expandedBuildings, setExpandedBuildings] = useState([]);
|
const [expandedBuildings, setExpandedBuildings] = useState([]);
|
||||||
const [showFloorModal, setShowFloorModal] = useState(false);
|
const [showFloorModal, setShowFloorModal] = useState(false);
|
||||||
@ -108,12 +110,46 @@ const InfraTable = ({ buildings }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (buildings && buildings.length > 0) {
|
if (buildings && buildings.length > 0) {
|
||||||
setProjectBuilding(buildings);
|
setProjectBuilding(buildings);
|
||||||
setExpandedBuildings([buildings[0].id]);
|
setExpandedBuildings([buildings[0].id]);
|
||||||
}
|
}
|
||||||
}, [buildings]);
|
}, [buildings]);
|
||||||
|
|
||||||
|
const handler = useCallback(
|
||||||
|
(msg) => {
|
||||||
|
console.log(msg.projectIds.some((item) => item == projectId));
|
||||||
|
if (msg.projectIds.some((item) => item == projectId)) {
|
||||||
|
console.log("caling APi");
|
||||||
|
try {
|
||||||
|
clearCacheKey("projectInfo");
|
||||||
|
ProjectRepository.getProjectByprojectId(projectId)
|
||||||
|
.then((response) => {
|
||||||
|
console.log("API Called");
|
||||||
|
cacheData("projectInfo", {
|
||||||
|
projectId: projectId,
|
||||||
|
data: response.data,
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log(response?.data?.buildings);
|
||||||
|
setProjectBuilding(response?.data?.buildings);
|
||||||
|
showToast(msg.message,"info")
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[buildings]
|
||||||
|
);
|
||||||
|
useEffect(() => {
|
||||||
|
eventBus.on("infra", handler);
|
||||||
|
return () => eventBus.off("infra", handler);
|
||||||
|
}, [handler]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{projectBuilding && projectBuilding.length > 0 && (
|
{projectBuilding && projectBuilding.length > 0 && (
|
||||||
|
|||||||
@ -482,7 +482,7 @@ const ProjectInfra = ({
|
|||||||
{project && project.buildings?.length > 0 && (
|
{project && project.buildings?.length > 0 && (
|
||||||
<InfraTable
|
<InfraTable
|
||||||
buildings={project?.buildings}
|
buildings={project?.buildings}
|
||||||
project={project}
|
projectId={project.id}
|
||||||
handleFloor={submitData}
|
handleFloor={submitData}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
import * as signalR from "@microsoft/signalr";
|
import * as signalR from "@microsoft/signalr";
|
||||||
import { cacheData, clearCacheKey, getCachedData } from "../slices/apiDataManager";
|
import {
|
||||||
|
cacheData,
|
||||||
|
clearCacheKey,
|
||||||
|
getCachedData,
|
||||||
|
} from "../slices/apiDataManager";
|
||||||
import showToast from "./toastService";
|
import showToast from "./toastService";
|
||||||
import eventBus from "./eventBus";
|
import eventBus from "./eventBus";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
@ -27,11 +31,11 @@ export function startSignalR(loggedUser) {
|
|||||||
.toISOString()
|
.toISOString()
|
||||||
.split("T")[0];
|
.split("T")[0];
|
||||||
connection.on("NotificationEventHandler", (data) => {
|
connection.on("NotificationEventHandler", (data) => {
|
||||||
// console.log("Notification received:", data);
|
if (data.loggedInUserId != loggedUser?.employeeInfo.id) {
|
||||||
// if action taken on attendance module
|
console.log("Notification received:", data);
|
||||||
if (data.keyword == "Attendance") {
|
// if action taken on attendance module
|
||||||
const checkIn = data.response.checkInTime.substring(0, 10);
|
if (data.keyword == "Attendance") {
|
||||||
if (data.loginUserId != loggedUser?.employeeInfo.id) {
|
const checkIn = data.response.checkInTime.substring(0, 10);
|
||||||
if (today === checkIn) {
|
if (today === checkIn) {
|
||||||
eventBus.emit("attendance", data);
|
eventBus.emit("attendance", data);
|
||||||
}
|
}
|
||||||
@ -47,26 +51,35 @@ export function startSignalR(loggedUser) {
|
|||||||
}
|
}
|
||||||
eventBus.emit("attendance_log", data);
|
eventBus.emit("attendance_log", data);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// if create or update project
|
|
||||||
if (data.keyword == "Create_Project" || data.keyword == "Update_Project") {
|
|
||||||
clearCacheKey("projectslist");
|
|
||||||
eventBus.emit("project", data);
|
|
||||||
}
|
|
||||||
// if assign or deassign employee to any project
|
|
||||||
if (data.keyword == "Assign_Project") {
|
|
||||||
if (
|
|
||||||
data.employeeList.some((item) => item === loggedUser?.employeeInfo.id)
|
|
||||||
) {
|
|
||||||
try {
|
|
||||||
cacheData("hasReceived", false);
|
|
||||||
eventBus.emit("assign_project_one", data);
|
|
||||||
} catch (e) {
|
|
||||||
console.error("Error in cacheData:", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// if create or update project
|
||||||
|
if (
|
||||||
|
data.keyword == "Create_Project" ||
|
||||||
|
data.keyword == "Update_Project"
|
||||||
|
) {
|
||||||
|
clearCacheKey("projectslist");
|
||||||
|
eventBus.emit("project", data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if assign or deassign employee to any project
|
||||||
|
if (data.keyword == "Assign_Project") {
|
||||||
|
if (
|
||||||
|
data.employeeList.some((item) => item === loggedUser?.employeeInfo.id)
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
cacheData("hasReceived", false);
|
||||||
|
eventBus.emit("assign_project_one", data);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Error in cacheData:", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eventBus.emit("assign_project_all", data);
|
||||||
|
}
|
||||||
|
// if created or updated infra
|
||||||
|
if (data.keyword == "Infra") {
|
||||||
|
console.log("Infra")
|
||||||
|
eventBus.emit("infra", data);
|
||||||
}
|
}
|
||||||
eventBus.emit("assign_project_all", data);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user