+
handleReset()}
- className="bg-[#188ae2] rounded-sm shadow-md text-[13px] font-semibold uppercase text-white py-1.5 px-2.5 text-center ml-[2px] focus:outline-none"
+ className="op-btn op-btn-secondary"
>
Reset
diff --git a/apps/OpenSign/src/json/menuJson.js b/apps/OpenSign/src/json/menuJson.js
index c9b576221..2735fbcf6 100644
--- a/apps/OpenSign/src/json/menuJson.js
+++ b/apps/OpenSign/src/json/menuJson.js
@@ -154,6 +154,22 @@ const sidebarList = [
pageType: "webhook",
description: "",
objectId: ""
+ },
+ {
+ icon: "fa-light fa-building-memo",
+ title: "Departments",
+ target: "_self",
+ pageType: "",
+ description: "",
+ objectId: "departments"
+ },
+ {
+ icon: "fa-light fa-building-memo",
+ title: "Users",
+ target: "_self",
+ pageType: "",
+ description: "",
+ objectId: "users"
}
]
}
diff --git a/apps/OpenSign/src/pages/DepartmentList.js b/apps/OpenSign/src/pages/DepartmentList.js
new file mode 100644
index 000000000..afd05f337
--- /dev/null
+++ b/apps/OpenSign/src/pages/DepartmentList.js
@@ -0,0 +1,262 @@
+import React, { useEffect, useState } from "react";
+import Parse from "parse";
+import Alert from "../primitives/Alert";
+import Loader from "../primitives/Loader";
+import { useLocation, useNavigate } from "react-router-dom";
+import Tooltip from "../primitives/Tooltip";
+import ModalUi from "../primitives/ModalUi";
+import pad from "../assets/images/pad.svg";
+
+const heading = ["Sr.No", "Name"];
+const actions = [];
+
+const DepartmentList = () => {
+ const recordperPage = 10;
+ const [departmentList, setDepartmentList] = useState([]);
+ const [isLoader, setIsLoader] = useState(false);
+ const [isModal, setIsModal] = useState(false);
+ const navigate = useNavigate();
+ const location = useLocation();
+ const isDashboard =
+ location?.pathname === "/dashboard/35KBoSgoAK" ? true : false;
+ const [currentPage, setCurrentPage] = useState(1);
+ const [isDeleteModal, setIsDeleteModal] = useState(false);
+ const [isAlert, setIsAlert] = useState({ type: "success", msg: "" });
+ const startIndex = (currentPage - 1) * recordperPage; // user per page
+
+ const getPaginationRange = () => {
+ const totalPageNumbers = 7; // Adjust this value to show more/less page numbers
+ const pages = [];
+ const totalPages = Math.ceil(departmentList / recordperPage);
+ if (totalPages <= totalPageNumbers) {
+ for (let i = 1; i <= totalPages; i++) {
+ pages.push(i);
+ }
+ } else {
+ const leftSiblingIndex = Math.max(currentPage - 1, 1);
+ const rightSiblingIndex = Math.min(currentPage + 1, totalPages);
+
+ const showLeftDots = leftSiblingIndex > 2;
+ const showRightDots = rightSiblingIndex < totalPages - 2;
+
+ const firstPageIndex = 1;
+ const lastPageIndex = totalPages;
+
+ if (!showLeftDots && showRightDots) {
+ let leftItemCount = 3;
+ let leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1);
+
+ pages.push(...leftRange);
+ pages.push("...");
+ pages.push(totalPages);
+ } else if (showLeftDots && !showRightDots) {
+ let rightItemCount = 3;
+ let rightRange = Array.from(
+ { length: rightItemCount },
+ (_, i) => totalPages - rightItemCount + i + 1
+ );
+
+ pages.push(firstPageIndex);
+ pages.push("...");
+ pages.push(...rightRange);
+ } else if (showLeftDots && showRightDots) {
+ let middleRange = Array.from(
+ { length: 3 },
+ (_, i) => leftSiblingIndex + i
+ );
+
+ pages.push(firstPageIndex);
+ pages.push("...");
+ pages.push(...middleRange);
+ pages.push("...");
+ pages.push(lastPageIndex);
+ }
+ }
+
+ return pages;
+ };
+ const pageNumbers = getPaginationRange();
+ useEffect(() => {
+ fetchDepartmentList();
+ }, []);
+ async function fetchDepartmentList() {
+ try {
+ setIsLoader(true);
+ const organization = JSON.parse(localStorage.getItem("Extand_Class"));
+ const department = new Parse.Query("contracts_Departments");
+ department.equalTo("OrganizationId", organization[0].objectId);
+ const departmentRes = await department.find();
+ const _departmentRes = JSON.parse(JSON.stringify(departmentRes));
+ setDepartmentList(_departmentRes);
+ } catch (err) {
+ console.log("Err ", err);
+ } finally {
+ setIsLoader(false);
+ }
+ }
+ const handleFormModal = () => {
+ setIsModal(!isModal);
+ };
+ // Get current list
+ const indexOfLastDoc = currentPage * recordperPage;
+ const indexOfFirstDoc = indexOfLastDoc - recordperPage;
+ const currentList = departmentList?.slice(indexOfFirstDoc, indexOfLastDoc);
+ const handleDelete = () => {};
+ const handleClose = () => {};
+
+ // Change page
+ const paginateFront = () => setCurrentPage(currentPage + 1);
+ const paginateBack = () => setCurrentPage(currentPage - 1);
+ const handleActionBtn = () => {};
+
+ return (
+
+ {isLoader && (
+
+
+
+ )}
+
+ {isAlert &&
{isAlert.message}}
+
+
+
+ department list{" "}
+
+
+
+
+
handleFormModal()}>
+
+
+
+
+
+
+
+ {heading?.map((item, index) => (
+
+ | {item} |
+
+ ))}
+
+ {actions?.length > 0 && (
+
+ Action
+ |
+ )}
+
+
+
+ {departmentList?.length > 0 && (
+ <>
+ {currentList.map((item, index) => (
+
+ {heading.includes("Sr.No") && (
+ | {startIndex + index + 1} |
+ )}
+ {item?.Name} |
+ {item?.Email || "-"} |
+ {item?.Phone || "-"} |
+
+ {actions?.length > 0 &&
+ actions.map((act, index) => (
+
+ ))}
+ {isDeleteModal[item.objectId] && (
+
+
+
+ Are you sure you want to delete this contact?
+
+
+
+
+
+
+
+
+ )}
+ |
+
+ ))}
+ >
+ )}
+
+
+
+
+ {departmentList.length > recordperPage && (
+
+ )}
+ {pageNumbers.map((x, i) => (
+
+ ))}
+ {departmentList.length > recordperPage && (
+
+ )}
+
+ {departmentList?.length <= 0 && (
+
+
+

+
+
No Data Available
+
+ )}
+
+
+ );
+};
+
+export default DepartmentList;
diff --git a/apps/OpenSign/src/pages/Login.js b/apps/OpenSign/src/pages/Login.js
index d788dbc07..68172336f 100644
--- a/apps/OpenSign/src/pages/Login.js
+++ b/apps/OpenSign/src/pages/Login.js
@@ -110,193 +110,115 @@ function Login() {
"X-Parse-Application-Id": parseAppId,
sessionToken: _user.sessionToken
};
-
- let body = {
- appname: localStorage.getItem("_appName")
- };
+ const body = { appname: "contracts" };
await axios
.post(url, JSON.stringify(body), { headers: headers })
- .then((axiosRes) => {
+ .then(async (axiosRes) => {
const roles = axiosRes.data.result;
- if (roles) {
- userRoles = roles;
- let _currentRole = "";
- const valuesToExclude = [
- "contracts_Guest",
- `${localStorage.getItem("_appName")}_appeditor`
- ];
- if (userRoles.length > 1) {
- const rolesfiltered = userRoles.filter(
- (x) => !valuesToExclude.includes(x)
- );
- if (rolesfiltered.length > 0) {
- _currentRole = rolesfiltered[0];
- }
- } else {
- const rolesfiltered = userRoles.filter(
- (x) => !valuesToExclude.includes(x)
- );
- if (rolesfiltered.length > 0) {
- _currentRole = userRoles[0];
- } else {
- _currentRole = "";
- }
- }
- if (
- _currentRole &&
- _currentRole !==
- `${localStorage.getItem("_appName")}_appeditor`
- ) {
- userSettings.forEach(async (element) => {
- const redirectUrl =
- location?.state?.from ||
- `/${element.pageType}/${element.pageId}`;
- if (element.role === _currentRole) {
- let _role = _currentRole.replace(
- `${localStorage.getItem("_appName")}_`,
- ""
+ const currentUser = Parse.User.current();
+ await Parse.Cloud.run("getUserDetails", {
+ email: currentUser.get("email")
+ })
+ .then((extUser) => {
+ if (roles) {
+ userRoles = roles;
+ let _currentRole = "";
+ if (userRoles.length > 0) {
+ _currentRole = userRoles.find(
+ (x) => x === extUser.get("UserRole")
);
- localStorage.setItem("_user_role", _role);
- // Get TenentID from Extendend Class
- localStorage.setItem(
- "extended_class",
- element.extended_class
- );
- const currentUser = Parse.User.current();
- await Parse.Cloud.run("getUserDetails", {
- email: currentUser.get("email")
- }).then(
- async (result) => {
- let tenentInfo = [];
- const results = [result];
- if (results) {
- let extendedInfo_stringify =
- JSON.stringify(results);
- localStorage.setItem(
- "Extand_Class",
- extendedInfo_stringify
- );
- let extendedInfo = JSON.parse(
- extendedInfo_stringify
- );
- if (extendedInfo.length > 1) {
- extendedInfo.forEach((x) => {
- if (x.TenantId) {
- let obj = {
- tenentId: x.TenantId.objectId,
- tenentName:
- x.TenantId.TenantName || ""
- };
- tenentInfo.push(obj);
- }
- });
- if (tenentInfo.length) {
- dispatch(
- showTenant(
- tenentInfo[0].tenentName || ""
- )
- );
- localStorage.setItem(
- "TenantName",
- tenentInfo[0].tenentName || ""
- );
+ }
+ userSettings.forEach(async (element) => {
+ const redirectUrl =
+ location?.state?.from ||
+ `/${element.pageType}/${element.pageId}`;
+ if (element.role === _currentRole) {
+ let _role = _currentRole.replace(
+ "contracts_",
+ ""
+ );
+ localStorage.setItem("_user_role", _role);
+ // Get TenentID from Extendend Class
+ localStorage.setItem(
+ "extended_class",
+ element.extended_class
+ );
+ let tenentInfo = [];
+ const results = [extUser];
+ if (results) {
+ let extendedInfo_stringify =
+ JSON.stringify(results);
+ localStorage.setItem(
+ "Extand_Class",
+ extendedInfo_stringify
+ );
+ let extendedInfo = JSON.parse(
+ extendedInfo_stringify
+ );
+ if (extendedInfo.length > 1) {
+ extendedInfo.forEach((x) => {
+ if (x.TenantId) {
+ let obj = {
+ tenentId: x.TenantId.objectId,
+ tenentName:
+ x.TenantId.TenantName || ""
+ };
+ tenentInfo.push(obj);
}
+ });
+ if (tenentInfo.length) {
+ dispatch(
+ showTenant(
+ tenentInfo[0].tenentName || ""
+ )
+ );
+ localStorage.setItem(
+ "TenantName",
+ tenentInfo[0].tenentName || ""
+ );
+ }
- localStorage.setItem("showpopup", true);
- localStorage.setItem(
- "PageLanding",
- element.pageId
- );
- localStorage.setItem(
- "defaultmenuid",
- element.menuId
- );
- localStorage.setItem(
- "pageType",
- element.pageType
- );
- setState({ ...state, loading: false });
- navigate("/");
- } else {
- extendedInfo.forEach((x) => {
- if (x.TenantId) {
- let obj = {
- tenentId: x.TenantId.objectId,
- tenentName:
- x.TenantId.TenantName || ""
- };
- localStorage.setItem(
- "TenantId",
- x.TenantId.objectId
- );
- tenentInfo.push(obj);
- }
- });
- if (tenentInfo.length) {
- dispatch(
- showTenant(
- tenentInfo[0].tenentName || ""
- )
- );
- localStorage.setItem(
- "TenantName",
- tenentInfo[0].tenentName || ""
- );
- }
- localStorage.setItem(
- "PageLanding",
- element.pageId
- );
- localStorage.setItem(
- "defaultmenuid",
- element.menuId
- );
- localStorage.setItem(
- "pageType",
- element.pageType
- );
- setState({ ...state, loading: false });
- if (isEnableSubscription) {
- const LocalUserDetails = {
- name: results[0].get("Name"),
- email: results[0].get("Email"),
- phone: results[0]?.get("Phone") || "",
- company: results[0].get("Company")
+ localStorage.setItem("showpopup", true);
+ localStorage.setItem(
+ "PageLanding",
+ element.pageId
+ );
+ localStorage.setItem(
+ "defaultmenuid",
+ element.menuId
+ );
+ localStorage.setItem(
+ "pageType",
+ element.pageType
+ );
+ setState({ ...state, loading: false });
+ navigate("/");
+ } else {
+ extendedInfo.forEach((x) => {
+ if (x.TenantId) {
+ let obj = {
+ tenentId: x.TenantId.objectId,
+ tenentName:
+ x.TenantId.TenantName || ""
};
localStorage.setItem(
- "userDetails",
- JSON.stringify(LocalUserDetails)
+ "TenantId",
+ x.TenantId.objectId
);
- const res = await fetchSubscription();
- const freeplan = res.plan;
- const billingDate = res.billingDate;
- if (freeplan === "freeplan") {
- navigate(redirectUrl);
- } else if (billingDate) {
- if (
- new Date(billingDate) > new Date()
- ) {
- localStorage.removeItem(
- "userDetails"
- );
- // Redirect to the appropriate URL after successful login
- navigate(redirectUrl);
- } else {
- navigate(`/subscription`, {
- replace: true
- });
- }
- } else {
- navigate(`/subscription`, {
- replace: true
- });
- }
- } else {
- // Redirect to the appropriate URL after successful login
- navigate(redirectUrl);
+ tenentInfo.push(obj);
}
+ });
+ if (tenentInfo.length) {
+ dispatch(
+ showTenant(
+ tenentInfo[0].tenentName || ""
+ )
+ );
+ localStorage.setItem(
+ "TenantName",
+ tenentInfo[0].tenentName || ""
+ );
}
- } else {
localStorage.setItem(
"PageLanding",
element.pageId
@@ -312,17 +234,35 @@ function Login() {
setState({ ...state, loading: false });
if (isEnableSubscription) {
const LocalUserDetails = {
- name: _user.name,
- email: email,
- phone: _user?.phone || ""
- // company: results.get("Company"),
+ name: results[0].get("Name"),
+ email: results[0].get("Email"),
+ phone: results[0]?.get("Phone") || "",
+ company: results[0].get("Company")
};
localStorage.setItem(
"userDetails",
JSON.stringify(LocalUserDetails)
);
- const billingDate = "";
- if (billingDate) {
+ const res = await fetchSubscription();
+ const freeplan = res.plan;
+ const billingDate = res.billingDate;
+ if (freeplan === "freeplan") {
+ navigate(redirectUrl);
+ } else if (billingDate) {
+ if (
+ new Date(billingDate) > new Date()
+ ) {
+ localStorage.removeItem(
+ "userDetails"
+ );
+ // Redirect to the appropriate URL after successful login
+ navigate(redirectUrl);
+ } else {
+ navigate(`/subscription`, {
+ replace: true
+ });
+ }
+ } else {
navigate(`/subscription`, {
replace: true
});
@@ -332,28 +272,56 @@ function Login() {
navigate(redirectUrl);
}
}
- },
- (error) => {
- const payload = {
- sessionToken: user.getSessionToken()
- };
- handleSubmitbtn(payload);
- console.error(
- "Error while fetching Follow",
- error
+ } else {
+ localStorage.setItem(
+ "PageLanding",
+ element.pageId
);
+ localStorage.setItem(
+ "defaultmenuid",
+ element.menuId
+ );
+ localStorage.setItem(
+ "pageType",
+ element.pageType
+ );
+ setState({ ...state, loading: false });
+ if (isEnableSubscription) {
+ const LocalUserDetails = {
+ name: _user.name,
+ email: email,
+ phone: _user?.phone || ""
+ // company: results.get("Company"),
+ };
+ localStorage.setItem(
+ "userDetails",
+ JSON.stringify(LocalUserDetails)
+ );
+ const billingDate = "";
+ if (billingDate) {
+ navigate(`/subscription`, {
+ replace: true
+ });
+ }
+ } else {
+ // Redirect to the appropriate URL after successful login
+ navigate(redirectUrl);
+ }
}
- );
- }
- });
- } else {
- setState({ ...state, loading: false });
- setIsModal(true);
- }
- } else {
- setState({ ...state, loading: false });
- setIsModal(true);
- }
+ }
+ });
+ } else {
+ setState({ ...state, loading: false });
+ setIsModal(true);
+ }
+ })
+ .catch((error) => {
+ const payload = {
+ sessionToken: user.getSessionToken()
+ };
+ handleSubmitbtn(payload);
+ console.error("Error while fetching Follow", error);
+ });
})
.catch((err) => {
console.log("err", err);
@@ -474,7 +442,7 @@ function Login() {
let _currentRole = "";
const valuesToExclude = [
"contracts_Guest",
- `${localStorage.getItem("_appName")}_appeditor`
+ "contracts_appeditor"
];
if (userRoles.length > 1) {
const rolesfiltered = userRoles.filter(
@@ -493,20 +461,13 @@ function Login() {
_currentRole = "";
}
}
- if (
- _currentRole &&
- _currentRole !==
- `${localStorage.getItem("_appName")}_appeditor`
- ) {
+ if (_currentRole && _currentRole !== "contracts_appeditor") {
userSettings.forEach(async (element) => {
const redirectUrl =
location?.state?.from ||
`/${element.pageType}/${element.pageId}`;
if (element.role === _currentRole) {
- let _role = _currentRole.replace(
- `${localStorage.getItem("_appName")}_`,
- ""
- );
+ let _role = _currentRole.replace("contracts_", "");
localStorage.setItem("_user_role", _role);
// Get TenentID from Extendend Class
@@ -767,10 +728,7 @@ function Login() {
userRoles = roles;
let _currentRole = "";
if (userRoles.length > 1) {
- if (
- userRoles[0] ===
- `${localStorage.getItem("_appName")}_appeditor`
- ) {
+ if (userRoles[0] === "contracts_appeditor") {
_currentRole = userRoles[1];
} else {
const rolesfiltered = userRoles.filter(
diff --git a/apps/OpenSign/src/pages/Managesign.js b/apps/OpenSign/src/pages/Managesign.js
index 187254b35..8b90fb14e 100644
--- a/apps/OpenSign/src/pages/Managesign.js
+++ b/apps/OpenSign/src/pages/Managesign.js
@@ -265,7 +265,7 @@ const ManageSign = () => {
{image ? (
-
+

{
+ const [userList, setUserList] = useState([]);
+ const [isLoader, setIsLoader] = useState(false);
+ const [isModal, setIsModal] = useState(false);
+ const navigate = useNavigate();
+ const location = useLocation();
+ const isDashboard =
+ location?.pathname === "/dashboard/35KBoSgoAK" ? true : false;
+ const [currentPage, setCurrentPage] = useState(1);
+ const [isAlert, setIsAlert] = useState({ type: "success", msg: "" });
+ const [isDeleteModal, setIsDeleteModal] = useState(false);
+ const recordperPage = 10;
+ const startIndex = (currentPage - 1) * recordperPage; // user per page
+
+ const getPaginationRange = () => {
+ const totalPageNumbers = 7; // Adjust this value to show more/less page numbers
+ const pages = [];
+ const totalPages = Math.ceil(userList.length / recordperPage);
+ if (totalPages <= totalPageNumbers) {
+ for (let i = 1; i <= totalPages; i++) {
+ pages.push(i);
+ }
+ } else {
+ const leftSiblingIndex = Math.max(currentPage - 1, 1);
+ const rightSiblingIndex = Math.min(currentPage + 1, totalPages);
+
+ const showLeftDots = leftSiblingIndex > 2;
+ const showRightDots = rightSiblingIndex < totalPages - 2;
+
+ const firstPageIndex = 1;
+ const lastPageIndex = totalPages;
+
+ if (!showLeftDots && showRightDots) {
+ let leftItemCount = 3;
+ let leftRange = Array.from({ length: leftItemCount }, (_, i) => i + 1);
+
+ pages.push(...leftRange);
+ pages.push("...");
+ pages.push(totalPages);
+ } else if (showLeftDots && !showRightDots) {
+ let rightItemCount = 3;
+ let rightRange = Array.from(
+ { length: rightItemCount },
+ (_, i) => totalPages - rightItemCount + i + 1
+ );
+
+ pages.push(firstPageIndex);
+ pages.push("...");
+ pages.push(...rightRange);
+ } else if (showLeftDots && showRightDots) {
+ let middleRange = Array.from(
+ { length: 3 },
+ (_, i) => leftSiblingIndex + i
+ );
+
+ pages.push(firstPageIndex);
+ pages.push("...");
+ pages.push(...middleRange);
+ pages.push("...");
+ pages.push(lastPageIndex);
+ }
+ }
+
+ return pages;
+ };
+ const pageNumbers = getPaginationRange();
+ useEffect(() => {
+ fetchUserList();
+ }, []);
+ async function fetchUserList() {
+ try {
+ setIsLoader(true);
+ const organization = JSON.parse(localStorage.getItem("Extand_Class"));
+ const res = await Parse.Cloud.run("getuserlist", {
+ organizationId: organization[0].objectId
+ });
+
+ console.log("res ", res);
+ const _userRes = JSON.parse(JSON.stringify(res));
+ setUserList(_userRes);
+ } catch (err) {
+ console.log("Err ", err);
+ } finally {
+ setIsLoader(false);
+ }
+ }
+ const handleFormModal = () => {
+ setIsModal(!isModal);
+ };
+
+ const handleDelete = () => {};
+ const handleClose = () => {};
+
+ // Change page
+ const paginateFront = () => setCurrentPage(currentPage + 1);
+ const paginateBack = () => setCurrentPage(currentPage - 1);
+ const handleActionBtn = () => {};
+
+ const handleUserData = (userData) => {
+ console.log("userData", userData);
+ };
+ return (
+
+ {isLoader && (
+
+
+
+ )}
+
+ {isAlert &&
{isAlert.msg}}
+
+
+
+ User list{" "}
+
+
+
+
+
handleFormModal()}>
+
+
+
+
+
+
+
+ {heading?.map((item, index) => (
+
+ | {item} |
+
+ ))}
+
+ {actions?.length > 0 && (
+
+ Action
+ |
+ )}
+
+
+
+ {userList?.length > 0 && (
+ <>
+ {userList.map((item, index) => (
+
+ {heading.includes("Sr.No") && (
+ | {startIndex + index + 1} |
+ )}
+ {item?.Name} |
+ {item?.Email || "-"} |
+ {item?.Phone || "-"} |
+
+ {actions?.length > 0 &&
+ actions.map((act, index) => (
+
+ ))}
+ {isDeleteModal[item.objectId] && (
+
+
+
+ Are you sure you want to delete this contact?
+
+
+
+
+
+
+
+
+ )}
+ |
+
+ ))}
+ >
+ )}
+
+
+
+
+ {userList.length > recordperPage && (
+
+ )}
+ {pageNumbers.map((x, i) => (
+
+ ))}
+ {userList.length > recordperPage && (
+
+ )}
+
+ {userList?.length <= 0 && (
+
+
+

+
+
No Data Available
+
+ )}
+
+ {/* */}
+
+
+
+
+ );
+};
+
+export default UserList;
diff --git a/apps/OpenSignServer/Utils.js b/apps/OpenSignServer/Utils.js
index 3076085c3..dcfa1b707 100644
--- a/apps/OpenSignServer/Utils.js
+++ b/apps/OpenSignServer/Utils.js
@@ -143,13 +143,13 @@ export const updateMailCount = async extUserId => {
await contractUser.save(null, { useMasterKey: true });
} else {
// Create new entry if not found
- const ContractsUsers = Parse.Object.extend('contracts_users');
+ const ContractsUsers = Parse.Object.extend('contracts_Users');
const newContractUser = new ContractsUsers();
newContractUser.set('EmailCount', 1);
await newContractUser.save(null, { useMasterKey: true });
}
} catch (error) {
- console.log('Error updating EmailCount in contracts_users: ' + error.message);
+ console.log('Error updating EmailCount in contracts_Users: ' + error.message);
}
};
diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js
index 59a903b1b..31a72b969 100644
--- a/apps/OpenSignServer/cloud/main.js
+++ b/apps/OpenSignServer/cloud/main.js
@@ -44,6 +44,8 @@ import GetPublicUserName from './parsefunction/GetPublicUserName.js';
import GetPublicTemplate from './parsefunction/GetPublicTemplate.js';
import ssoSignin from './parsefunction/ssoSignin.js';
import isextenduser from './parsefunction/isextenduser.js';
+import getUserByOrgId from './parsefunction/getuserbyOrgId.js';
+import getUserList from './parsefunction/getUserList.js';
// This afterSave function triggers after an object is added or updated in the specified class, allowing for post-processing logic.
Parse.Cloud.afterSave('contracts_Document', DocumentAftersave);
@@ -98,3 +100,5 @@ Parse.Cloud.define('getpublicusername', GetPublicUserName);
Parse.Cloud.define('getpublictemplate', GetPublicTemplate);
Parse.Cloud.define('ssosign', ssoSignin);
Parse.Cloud.define('isextenduser', isextenduser);
+Parse.Cloud.define('getuserbyorgid', getUserByOrgId);
+Parse.Cloud.define('getuserlist', getUserList);
diff --git a/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js b/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js
index e7f251ca4..3d9f85454 100644
--- a/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js
+++ b/apps/OpenSignServer/cloud/parsefunction/DocumentBeforesave.js
@@ -17,13 +17,13 @@ async function DocumentBeforesave(request) {
await contractUser.save(null, { useMasterKey: true });
} else {
// Create new entry if not found
- const ContractsUsers = Parse.Object.extend('contracts_users');
+ const ContractsUsers = Parse.Object.extend('contracts_Users');
const newContractUser = new ContractsUsers();
newContractUser.set('DocumentCount', 1);
await newContractUser.save(null, { useMasterKey: true });
}
} catch (error) {
- console.log('Error updating document count in contracts_users: ' + error.message);
+ console.log('Error updating document count in contracts_Users: ' + error.message);
}
if (document?.get('Signers') && document.get('Signers').length > 0) {
document.set('DocSentAt', new Date());
diff --git a/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js b/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js
index b2ba6e3d3..79ac1c209 100644
--- a/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js
+++ b/apps/OpenSignServer/cloud/parsefunction/TemplateBeforesave.js
@@ -15,13 +15,13 @@ async function TemplateBeforeSave(request) {
await contractUser.save(null, { useMasterKey: true });
} else {
// Create new entry if not found
- const ContractsUsers = Parse.Object.extend('contracts_users');
+ const ContractsUsers = Parse.Object.extend('contracts_Users');
const newContractUser = new ContractsUsers();
newContractUser.set('TemplateCount', 1);
await newContractUser.save(null, { useMasterKey: true });
}
} catch (error) {
- console.log('Error updating template count in contracts_users: ' + error.message);
+ console.log('Error updating template count in contracts_Users: ' + error.message);
}
}
} catch (err) {
diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserByOrgId.js b/apps/OpenSignServer/cloud/parsefunction/getUserByOrgId.js
new file mode 100644
index 000000000..5ac2c7067
--- /dev/null
+++ b/apps/OpenSignServer/cloud/parsefunction/getUserByOrgId.js
@@ -0,0 +1,26 @@
+export default async function getUserByOrgId(req) {
+ const OrganizationId = req.params.organizationId;
+ const orgPtr = {
+ __type: 'Pointer',
+ className: 'contracts_Organizations',
+ objectId: OrganizationId,
+ };
+ if (!req?.user) {
+ throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'User is not authenticated.');
+ } else {
+ try {
+ const extUser = new Parse.Query('contracts_Users');
+ extUser.equalTo('OrganizationId', orgPtr);
+ const userRes = await extUser.first({ useMasterKey: true });
+ if (userRes.length > 0) {
+ const _userRes = JSON.parse(JSON.stringify(userRes));
+ return _userRes;
+ } else {
+ throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'User not found.');
+ }
+ } catch (err) {
+ console.log('err in getuserlist', err);
+ throw err;
+ }
+ }
+}
diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserList.js b/apps/OpenSignServer/cloud/parsefunction/getUserList.js
new file mode 100644
index 000000000..afdae2933
--- /dev/null
+++ b/apps/OpenSignServer/cloud/parsefunction/getUserList.js
@@ -0,0 +1,26 @@
+export default async function getUserList(req) {
+ const OrganizationId = req.params.organizationId;
+ const orgPtr = {
+ __type: 'Pointer',
+ className: 'contracts_Organizations',
+ objectId: OrganizationId,
+ };
+ if (!req?.user) {
+ throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'User is not authenticated.');
+ } else {
+ try {
+ const extUser = new Parse.Query('contracts_Users');
+ extUser.equalTo('OrganizationId', orgPtr);
+ const userRes = await extUser.find({ useMasterKey: true });
+ if (userRes.length > 0) {
+ const _userRes = JSON.parse(JSON.stringify(userRes));
+ return _userRes;
+ } else {
+ return [];
+ }
+ } catch (err) {
+ console.log('err in getuserlist', err);
+ throw err;
+ }
+ }
+}
diff --git a/apps/OpenSignServer/cloud/parsefunction/getapitoken.js b/apps/OpenSignServer/cloud/parsefunction/getapitoken.js
index 570679f57..192a1d0fd 100644
--- a/apps/OpenSignServer/cloud/parsefunction/getapitoken.js
+++ b/apps/OpenSignServer/cloud/parsefunction/getapitoken.js
@@ -18,8 +18,7 @@ export default async function getapitoken(request) {
}
}
} catch (err) {
- console.log('Err', err);
- console.log('err', err);
+ console.log('Err in getapitoken', err);
if (err.code == 209) {
return { error: 'Invalid session token' };
} else {