diff --git a/apps/OpenSign/src/components/AddDepartment.js b/apps/OpenSign/src/components/AddDepartment.js
new file mode 100644
index 000000000..9a3592283
--- /dev/null
+++ b/apps/OpenSign/src/components/AddDepartment.js
@@ -0,0 +1,370 @@
+import React, { useEffect, useState } from "react";
+import Parse from "parse";
+import axios from "axios";
+import Title from "./Title";
+import Alert from "../primitives/Alert";
+import Loader from "../primitives/Loader";
+
+const AddDepartment = (props) => {
+ const [formdata, setFormdata] = useState({
+ name: "",
+ phone: "",
+ email: "",
+ department: "",
+ role: ""
+ });
+ const [isLoader, setIsLoader] = useState(false);
+ const [isUserExist, setIsUserExist] = useState(false);
+ const [departmentList, setDepartmentList] = useState([]);
+ const role = ["OrgAdmin", "Manager", "User", "Guest"];
+ const parseBaseUrl = localStorage.getItem("baseUrl");
+ const parseAppId = localStorage.getItem("parseAppId");
+
+ useEffect(() => {
+ getDepartmentList();
+ }, []);
+
+ const getDepartmentList = async () => {
+ const extUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0];
+ console.log("extUser ", extUser);
+ const department = new Parse.Query("contracts_Departments");
+ department.equalTo("OrganizationId", {
+ __type: "Pointer",
+ className: "contracts_Organizations",
+ objectId: extUser.OrganizationId.objectId
+ });
+ department.doesNotExist("DepartmentParentId");
+ department.doesNotExist("Ancestors");
+ const departmentRes = await department.find();
+ if (departmentRes.length > 0) {
+ const _departmentRes = JSON.parse(JSON.stringify(departmentRes));
+ setDepartmentList(_departmentRes);
+ }
+ };
+ const checkUserExist = async () => {
+ const user = Parse.User.current();
+ try {
+ const res = await Parse.Cloud.run("getUserDetails", {
+ email: user.get("email"),
+ userId: user.id
+ });
+ if (res) {
+ return true;
+ } else {
+ return false;
+ }
+ } catch (err) {
+ console.log("err", err);
+ }
+ };
+ console.log("formdata", formdata);
+ // Define a function to handle form submission
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ const localUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0];
+
+ setIsLoader(true);
+ const res = await checkUserExist();
+ if (res) {
+ setIsUserExist(true);
+ setIsLoader(false);
+ setTimeout(() => {
+ setIsUserExist(false);
+ }, 1000);
+ } else {
+ try {
+ const extUser = new Parse.Object("contracts_Users");
+ extUser.set("Name", formdata.name);
+ if (formdata.phone) {
+ extUser.set("Phone", formdata.phone);
+ }
+ extUser.set("Email", formdata.email);
+ extUser.set("UserRole", `contracts_${formdata.role}`);
+ extUser.set("DepartmentIds", [
+ {
+ __type: "Pointer",
+ className: "contracts_Departments",
+ objectId: formdata.department
+ }
+ ]);
+ if (localUser && localUser.OrganizationId) {
+ extUser.set("OrganizationId", {
+ __type: "Pointer",
+ className: "contracts_Organizations",
+ objectId: localUser.OrganizationId.objectId
+ });
+ }
+
+ if (localStorage.getItem("TenantId")) {
+ extUser.set("TenantId", {
+ __type: "Pointer",
+ className: "partners_Tenant",
+ objectId: localStorage.getItem("TenantId")
+ });
+ }
+
+ try {
+ const _users = Parse.Object.extend("User");
+ const _user = new _users();
+ _user.set("name", formdata.name);
+ _user.set("username", formdata.email);
+ _user.set("email", formdata.email);
+ _user.set("password", formdata.email);
+ if (formdata.phone) {
+ _user.set("phone", formdata.phone);
+ }
+
+ const user = await _user.save();
+ if (user) {
+ const roleurl = `${parseBaseUrl}functions/AddUserToRole`;
+ const headers = {
+ "Content-Type": "application/json",
+ "X-Parse-Application-Id": parseAppId,
+ sessionToken: localStorage.getItem("accesstoken")
+ };
+ const body = {
+ appName: "contracts",
+ roleName: "contracts_" + formdata.role,
+ userId: user.id
+ };
+ await axios.post(roleurl, body, { headers: headers });
+ const currentUser = Parse.User.current();
+ extUser.set(
+ "CreatedBy",
+ Parse.User.createWithoutData(currentUser.id)
+ );
+
+ extUser.set("UserId", user);
+ const acl = new Parse.ACL();
+ acl.setPublicReadAccess(true);
+ acl.setPublicWriteAccess(true);
+ acl.setReadAccess(currentUser.id, true);
+ acl.setWriteAccess(currentUser.id, true);
+
+ extUser.setACL(acl);
+
+ const res = await extUser.save();
+
+ const parseData = JSON.parse(JSON.stringify(res));
+
+ if (props.closePopup) {
+ props.closePopup();
+ }
+ if (props.handleUserData) {
+ props.handleUserData(parseData);
+ }
+
+ setIsLoader(false);
+ setFormdata({
+ name: "",
+ email: "",
+ phone: "",
+ department: "",
+ role: ""
+ });
+ }
+ } catch (err) {
+ console.log("err ", err);
+ if (err.code === 202) {
+ const user = Parse.User.current();
+ const params = { email: user.get("email") };
+ const userRes = await Parse.Cloud.run("getUserId", params);
+ const roleurl = `${parseBaseUrl}functions/AddUserToRole`;
+ const headers = {
+ "Content-Type": "application/json",
+ "X-Parse-Application-Id": parseAppId,
+ sessionToken: localStorage.getItem("accesstoken")
+ };
+ const body = {
+ appName: "contracts",
+ roleName: "contracts_" + formdata.role,
+ userId: userRes.id
+ };
+ await axios.post(roleurl, body, { headers: headers });
+ const currentUser = Parse.User.current();
+ extUser.set(
+ "CreatedBy",
+ Parse.User.createWithoutData(currentUser.id)
+ );
+
+ extUser.set("UserId", {
+ __type: "Pointer",
+ className: "_User",
+ objectId: userRes.id
+ });
+ const acl = new Parse.ACL();
+ acl.setPublicReadAccess(true);
+ acl.setPublicWriteAccess(true);
+ acl.setReadAccess(currentUser.id, true);
+ acl.setWriteAccess(currentUser.id, true);
+
+ extUser.setACL(acl);
+ const res = await extUser.save();
+
+ const parseData = JSON.parse(JSON.stringify(res));
+ if (props.closePopup) {
+ props.closePopup();
+ }
+ if (props.handleUserData) {
+ props.handleUserData(parseData);
+ }
+ setIsLoader(false);
+ setFormdata({
+ name: "",
+ email: "",
+ phone: "",
+ department: "",
+ role: ""
+ });
+ }
+ }
+ } catch (err) {
+ console.log("err", err);
+ setIsLoader(false);
+ alert("something went wrong!");
+ }
+ }
+ };
+
+ // Define a function to handle the "add yourself" checkbox
+ const handleReset = () => {
+ setFormdata({
+ name: "",
+ email: "",
+ phone: "",
+ department: "",
+ role: ""
+ });
+ };
+ const handleChange = (e) => {
+ setFormdata((prev) => ({ ...prev, [e.target.name]: e.target.value }));
+ };
+
+ return (
+
+
+ {isUserExist &&
User already exists!}
+ {isLoader && (
+
+
+
+ )}
+
+
+ );
+};
+
+export default AddDepartment;
diff --git a/apps/OpenSign/src/components/AddUser.js b/apps/OpenSign/src/components/AddUser.js
index 19a233d3c..6d3d611df 100644
--- a/apps/OpenSign/src/components/AddUser.js
+++ b/apps/OpenSign/src/components/AddUser.js
@@ -16,6 +16,7 @@ const AddUser = (props) => {
const [isLoader, setIsLoader] = useState(false);
const [isUserExist, setIsUserExist] = useState(false);
const [departmentList, setDepartmentList] = useState([]);
+ const role = ["OrgAdmin", "Manager", "User", "Guest"];
const parseBaseUrl = localStorage.getItem("baseUrl");
const parseAppId = localStorage.getItem("parseAppId");
@@ -54,10 +55,13 @@ const AddUser = (props) => {
console.log("err", err);
}
};
+ console.log("formdata", formdata);
// Define a function to handle form submission
const handleSubmit = async (e) => {
e.preventDefault();
e.stopPropagation();
+ const localUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0];
+
setIsLoader(true);
const res = await checkUserExist();
if (res) {
@@ -74,7 +78,21 @@ const AddUser = (props) => {
extUser.set("Phone", formdata.phone);
}
extUser.set("Email", formdata.email);
- extUser.set("UserRole", "contracts_User");
+ extUser.set("UserRole", `contracts_${formdata.role}`);
+ extUser.set("DepartmentIds", [
+ {
+ __type: "Pointer",
+ className: "contracts_Departments",
+ objectId: formdata.department
+ }
+ ]);
+ if (localUser && localUser.OrganizationId) {
+ extUser.set("OrganizationId", {
+ __type: "Pointer",
+ className: "contracts_Organizations",
+ objectId: localUser.OrganizationId.objectId
+ });
+ }
if (localStorage.getItem("TenantId")) {
extUser.set("TenantId", {
@@ -104,8 +122,8 @@ const AddUser = (props) => {
sessionToken: localStorage.getItem("accesstoken")
};
const body = {
- appName: localStorage.getItem("_appName"),
- roleName: "contracts_User",
+ appName: "contracts",
+ roleName: "contracts_" + formdata.role,
userId: user.id
};
await axios.post(roleurl, body, { headers: headers });
@@ -157,8 +175,8 @@ const AddUser = (props) => {
sessionToken: localStorage.getItem("accesstoken")
};
const body = {
- appName: localStorage.getItem("_appName"),
- roleName: "contracts_User",
+ appName: "contracts",
+ roleName: "contracts_" + formdata.role,
userId: userRes.id
};
await axios.post(roleurl, body, { headers: headers });
@@ -200,7 +218,7 @@ const AddUser = (props) => {
}
}
} catch (err) {
- // console.log("err", err);
+ console.log("err", err);
setIsLoader(false);
alert("something went wrong!");
}
@@ -226,7 +244,7 @@ const AddUser = (props) => {
{isUserExist && User already exists!}
{isLoader && (
-
+
)}
@@ -243,7 +261,7 @@ const AddUser = (props) => {
handleChange(e)}
required
@@ -260,7 +278,7 @@ const AddUser = (props) => {
handleChange(e)}
required
@@ -277,7 +295,7 @@ const AddUser = (props) => {
handleChange(e)}
// required
@@ -295,10 +313,10 @@ const AddUser = (props) => {
+
+
+
+