From d46ba8f30739e671b38962ad1b9bf72549285fcb Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 1 Jul 2024 16:47:01 +0530 Subject: [PATCH] feat: add create department, user form as well as reports for them --- apps/OpenSign/src/components/AddDepartment.js | 122 ++++++------------ .../src/components/sidebar/Sidebar.js | 56 ++++++-- apps/OpenSign/src/json/menuJson.js | 16 --- apps/OpenSign/src/layout/HomeLayout.js | 2 +- apps/OpenSign/src/pages/DepartmentList.js | 45 +++++-- apps/OpenSign/src/pages/UserList.js | 119 ++++++++++++++--- apps/OpenSignServer/cloud/main.js | 2 + .../cloud/parsefunction/AddUserToRole.js | 102 ++++++++------- .../parsefunction/DepartmentsAftersave.js | 30 +++++ .../cloud/parsefunction/getUserListByOrg.js | 1 + 10 files changed, 302 insertions(+), 193 deletions(-) create mode 100644 apps/OpenSignServer/cloud/parsefunction/DepartmentsAftersave.js diff --git a/apps/OpenSign/src/components/AddDepartment.js b/apps/OpenSign/src/components/AddDepartment.js index 14b911924..beeecb5df 100644 --- a/apps/OpenSign/src/components/AddDepartment.js +++ b/apps/OpenSign/src/components/AddDepartment.js @@ -12,8 +12,6 @@ const AddDepartment = (props) => { const [isLoader, setIsLoader] = useState(false); const [isAlert, setIsAlert] = useState({ type: "success", msg: "" }); const [departmentList, setDepartmentList] = useState([]); - const [parentDepartments, setParentDepartments] = useState([]); - const [level, setLevel] = useState(1); useEffect(() => { getDepartmentList(); }, []); @@ -27,12 +25,9 @@ const AddDepartment = (props) => { className: "contracts_Organizations", objectId: extUser.OrganizationId.objectId }); - department.doesNotExist("ParentId"); - department.doesNotExist("Ancestors"); const departmentRes = await department.find(); if (departmentRes.length > 0) { const _departmentRes = JSON.parse(JSON.stringify(departmentRes)); - // console.log("_departmentRes ", _departmentRes); setDepartmentList(_departmentRes); } } catch (err) { @@ -40,68 +35,47 @@ const AddDepartment = (props) => { } }; - const fetchDepartmentsbyPtr = async (departmentPtr) => { - setLevel((prev) => prev + 1); - try { - const extUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0]; - const department = new Parse.Query("contracts_Departments"); - department.equalTo("ParentId", departmentPtr); - department.equalTo("OrganizationId", { - __type: "Pointer", - className: "contracts_Organizations", - objectId: extUser.OrganizationId.objectId - }); - - const departmentRes = await department.find(); - if (departmentRes.length > 0) { - const _departmentRes = JSON.parse(JSON.stringify(departmentRes)); - // console.log("sub", ["DD_" + level] ,_departmentRes) - const departmentName = _departmentRes?.[0]?.ParentId?.Name; - setParentDepartments((prev) => [ - ...prev, - { - ["DD_" + level]: { name: departmentName, opt: _departmentRes } - } - ]); - } - } catch (err) { - console.log("Err in fetch departmentlist", err); - } - }; const handleDropdown = (e) => { setFormdata((prev) => ({ ...prev, [e.target.name]: e.target.value })); - const departmentPtr = { - __type: "Pointer", - className: "contracts_Departments", - objectId: e.target.value - }; - // const index = parentDepartments.findIndex((x) => x[e.target.name]); - // setParentDepartments((prev) => prev.slice(0, index +1)); - // console.log("index ", index); - fetchDepartmentsbyPtr(departmentPtr); }; - console.log("formdata", formdata); // Define a function to handle form submission const handleSubmit = async (e) => { e.preventDefault(); e.stopPropagation(); // Extracting values except for the 'name' key - const ancestors = Object.entries(formdata) - .filter(([key]) => key !== "name") - .map(([key, value]) => value); - + let updatedAncestors = []; + if (formdata.department) { + const Ancestors = departmentList.find( + (x) => x.objectId === formdata.department + )?.Ancestors; + if (Ancestors && Ancestors.length > 0) { + updatedAncestors = [ + ...Ancestors.map((x) => ({ + __type: "Pointer", + className: "contracts_Departments", + objectId: x.objectId + })), + { + __type: "Pointer", + className: "contracts_Departments", + objectId: formdata.department + } + ]; + } else { + updatedAncestors.push({ + __type: "Pointer", + className: "contracts_Departments", + objectId: formdata.department + }); + } + } try { const localUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0]; - const ParentId = { - __type: "Pointer", - className: "contracts_Departments", - objectId: "" - }; setIsLoader(true); const department = new Parse.Query("contracts_Departments"); department.equalTo("Name", formdata.name); - if (ancestors.length > 0) { - ParentId.objectId = ""; + if (updatedAncestors.length > 0) { + const ParentId = updatedAncestors[updatedAncestors.length - 1]; department.equalTo("ParentId", ParentId); } if (localUser && localUser.OrganizationId) { @@ -118,8 +92,10 @@ const AddDepartment = (props) => { } else { const newDepartment = new Parse.Object("contracts_Departments"); newDepartment.set("Name", formdata.name); - if (ancestors.length > 0) { + if (updatedAncestors.length > 0) { + const ParentId = updatedAncestors[updatedAncestors.length - 1]; newDepartment.set("ParentId", ParentId); + newDepartment.set("Ancestors", updatedAncestors); } if (localUser && localUser.OrganizationId) { newDepartment.set("OrganizationId", { @@ -129,13 +105,15 @@ const AddDepartment = (props) => { }); } const newdepartmentRes = await newDepartment.save(); - if (ancestors.length > 0) { - newDepartment.set("ParentId", ParentId); + if (updatedAncestors.length > 0) { + const ParentId = departmentList.find( + (x) => x.objectId === formdata.department + ); props.handleDepartmentInfo({ objectId: newdepartmentRes.id, Name: formdata.name, ParentId: ParentId, - Ancestors: ancestors, + Ancestors: updatedAncestors, IsActive: true }); } else { @@ -222,7 +200,6 @@ const AddDepartment = (props) => { className="block text-xs text-gray-700 font-semibold" > Department - {/* * */} - {parentDepartments?.map((x, i) => ( -
- - -
- ))}
+ +
+ + + )} + + {/* {actions?.length > 0 && actions.map((act, index) => (