diff --git a/apps/OpenSign/src/components/AddSigner.js b/apps/OpenSign/src/components/AddSigner.js index 4f874669d..315808dc2 100644 --- a/apps/OpenSign/src/components/AddSigner.js +++ b/apps/OpenSign/src/components/AddSigner.js @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import Parse from "parse"; import Loader from "../primitives/Loader"; import { useTranslation } from "react-i18next"; +import { emailRegex } from "../constant/const"; const AddSigner = (props) => { const { t } = useTranslation(); @@ -47,139 +48,143 @@ const AddSigner = (props) => { const handleSubmit = async (e) => { e.preventDefault(); e.stopPropagation(); - setIsLoader(true); - if (localStorage.getItem("TenantId")) { - try { - const user = Parse.User.current(); - const query = new Parse.Query("contracts_Contactbook"); - query.equalTo("CreatedBy", user); - query.notEqualTo("IsDeleted", true); - query.equalTo("Email", email); - const res = await query.first(); - // console.log(res); - if (!res) { - const contactQuery = new Parse.Object("contracts_Contactbook"); - contactQuery.set("Name", name); - if (phone) { - contactQuery.set("Phone", phone); - } - contactQuery.set("Email", email); - contactQuery.set("UserRole", "contracts_Guest"); - - contactQuery.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", name); - _user.set("username", email); - _user.set("email", email); - _user.set("password", email); + if (!emailRegex.test(email)) { + alert("Please enter a valid email address."); + } else { + setIsLoader(true); + if (localStorage.getItem("TenantId")) { + try { + const user = Parse.User.current(); + const query = new Parse.Query("contracts_Contactbook"); + query.equalTo("CreatedBy", user); + query.notEqualTo("IsDeleted", true); + query.equalTo("Email", email); + const res = await query.first(); + // console.log(res); + if (!res) { + const contactQuery = new Parse.Object("contracts_Contactbook"); + contactQuery.set("Name", name); if (phone) { - _user.set("phone", phone); + contactQuery.set("Phone", phone); } - const user = await _user.save(); - if (user) { - const currentUser = Parse.User.current(); - contactQuery.set( - "CreatedBy", - Parse.User.createWithoutData(currentUser.id) - ); + contactQuery.set("Email", email); + contactQuery.set("UserRole", "contracts_Guest"); - contactQuery.set("UserId", user); - const acl = new Parse.ACL(); - acl.setPublicReadAccess(true); - acl.setPublicWriteAccess(true); - acl.setReadAccess(currentUser.id, true); - acl.setWriteAccess(currentUser.id, true); + contactQuery.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenantId") + }); - contactQuery.setACL(acl); + try { + const _users = Parse.Object.extend("User"); + const _user = new _users(); + _user.set("name", name); + _user.set("username", email); + _user.set("email", email); + _user.set("password", email); + if (phone) { + _user.set("phone", phone); + } + const user = await _user.save(); + if (user) { + const currentUser = Parse.User.current(); + contactQuery.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); - const res = await contactQuery.save(); + contactQuery.set("UserId", user); + const acl = new Parse.ACL(); + acl.setPublicReadAccess(true); + acl.setPublicWriteAccess(true); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); - const parseData = JSON.parse(JSON.stringify(res)); - if (props.details) { - props.details({ - value: parseData[props.valueKey], - label: parseData[props.displayKey] + contactQuery.setACL(acl); + + const res = await contactQuery.save(); + + const parseData = JSON.parse(JSON.stringify(res)); + if (props.details) { + props.details({ + value: parseData[props.valueKey], + label: parseData[props.displayKey] + }); + } + if (props.closePopup) { + props.closePopup(); + } + if (props.handleUserData) { + props.handleUserData(parseData); + } + + setIsLoader(false); + // Reset the form fields + setAddYourself(false); + setName(""); + setPhone(""); + setEmail(""); + } + } catch (err) { + console.log("err ", err); + if (err.code === 202) { + const params = { email: email }; + const userRes = await Parse.Cloud.run("getUserId", params); + const currentUser = Parse.User.current(); + contactQuery.set( + "CreatedBy", + Parse.User.createWithoutData(currentUser.id) + ); + + contactQuery.set("UserId", { + __type: "Pointer", + className: "_User", + objectId: userRes.id }); - } - if (props.closePopup) { - props.closePopup(); - } - if (props.handleUserData) { - props.handleUserData(parseData); - } + const acl = new Parse.ACL(); + acl.setPublicReadAccess(true); + acl.setPublicWriteAccess(true); + acl.setReadAccess(currentUser.id, true); + acl.setWriteAccess(currentUser.id, true); - setIsLoader(false); - // Reset the form fields - setAddYourself(false); - setName(""); - setPhone(""); - setEmail(""); - } - } catch (err) { - console.log("err ", err); - if (err.code === 202) { - const params = { email: email }; - const userRes = await Parse.Cloud.run("getUserId", params); - const currentUser = Parse.User.current(); - contactQuery.set( - "CreatedBy", - Parse.User.createWithoutData(currentUser.id) - ); - - contactQuery.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); - - contactQuery.setACL(acl); - const res = await contactQuery.save(); - - const parseData = JSON.parse(JSON.stringify(res)); - if (props.details) { - props.details({ - value: parseData[props.valueKey], - label: parseData[props.displayKey] - }); - } - if (props.closePopup) { - props.closePopup(); - } - if (props.handleUserData) { - props.handleUserData(parseData); - } - setIsLoader(false); - // Reset the form fields - setAddYourself(false); - setName(""); - setPhone(""); - setEmail(""); + contactQuery.setACL(acl); + const res = await contactQuery.save(); + + const parseData = JSON.parse(JSON.stringify(res)); + if (props.details) { + props.details({ + value: parseData[props.valueKey], + label: parseData[props.displayKey] + }); + } + if (props.closePopup) { + props.closePopup(); + } + if (props.handleUserData) { + props.handleUserData(parseData); + } + setIsLoader(false); + // Reset the form fields + setAddYourself(false); + setName(""); + setPhone(""); + setEmail(""); + } } + } else { + alert(t("add-signer-alert")); + setIsLoader(false); } - } else { - alert(t("add-signer-alert")); + } catch (err) { + console.log("err in fetch contact", err); setIsLoader(false); + alert(t("something-went-wrong-mssg")); } - } catch (err) { - console.log("err in fetch contact", err); + } else { setIsLoader(false); alert(t("something-went-wrong-mssg")); } - } else { - setIsLoader(false); - alert(t("something-went-wrong-mssg")); } }; diff --git a/apps/OpenSign/src/components/AddUser.js b/apps/OpenSign/src/components/AddUser.js index c20e8fc4f..b19048d88 100644 --- a/apps/OpenSign/src/components/AddUser.js +++ b/apps/OpenSign/src/components/AddUser.js @@ -3,7 +3,7 @@ import Parse from "parse"; import Title from "./Title"; import Loader from "../primitives/Loader"; import { copytoData, fetchSubscriptionInfo } from "../constant/Utils"; -import { isEnableSubscription } from "../constant/const"; +import { emailRegex, isEnableSubscription } from "../constant/const"; import { useTranslation } from "react-i18next"; function generatePassword(length) { const characters = @@ -115,149 +115,172 @@ const AddUser = (props) => { const handleSubmit = async (e) => { e.preventDefault(); e.stopPropagation(); - const localUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0]; - setIsFormLoader(true); - const res = await checkUserExist(); - if (res) { - props.setIsAlert({ type: "danger", msg: t("user-already-exist") }); - setIsFormLoader(false); - setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1000); + if (!emailRegex.test(formdata.email)) { + alert("Please enter a valid email address."); } 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}`); - if (formdata?.team) { - extUser.set("TeamIds", [ - { - __type: "Pointer", - className: "contracts_Teams", - objectId: formdata.team - } - ]); - } - if (localUser && localUser.OrganizationId) { - extUser.set("OrganizationId", { - __type: "Pointer", - className: "contracts_Organizations", - objectId: localUser.OrganizationId.objectId - }); - } - if (localUser && localUser.Company) { - extUser.set("Company", localUser.Company); - } - - if (localStorage.getItem("TenantId")) { - extUser.set("TenantId", { - __type: "Pointer", - className: "partners_Tenant", - objectId: localStorage.getItem("TenantId") - }); - } - + const localUser = JSON.parse(localStorage.getItem("Extand_Class"))?.[0]; + setIsFormLoader(true); + const res = await checkUserExist(); + if (res) { + props.setIsAlert({ type: "danger", msg: t("user-already-exist") }); + setIsFormLoader(false); + setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1000); + } else { 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.password); + const extUser = new Parse.Object("contracts_Users"); + extUser.set("Name", formdata.name); if (formdata.phone) { - _user.set("phone", formdata.phone); + extUser.set("Phone", formdata.phone); + } + extUser.set("Email", formdata.email); + extUser.set("UserRole", `contracts_${formdata.role}`); + if (formdata?.team) { + extUser.set("TeamIds", [ + { + __type: "Pointer", + className: "contracts_Teams", + objectId: formdata.team + } + ]); + } + if (localUser && localUser.OrganizationId) { + extUser.set("OrganizationId", { + __type: "Pointer", + className: "contracts_Organizations", + objectId: localUser.OrganizationId.objectId + }); + } + if (localUser && localUser.Company) { + extUser.set("Company", localUser.Company); } - const user = await _user.save(); - if (user) { - const currentUser = Parse.User.current(); - extUser.set( - "CreatedBy", - Parse.User.createWithoutData(currentUser.id) - ); + if (localStorage.getItem("TenantId")) { + extUser.set("TenantId", { + __type: "Pointer", + className: "partners_Tenant", + objectId: localStorage.getItem("TenantId") + }); + } - 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(); + 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.password); + if (formdata.phone) { + _user.set("phone", formdata.phone); } - if (props.handleUserData) { - if (formdata?.team) { - const team = teamList.find((x) => x.objectId === formdata.team); - parseData.TeamIds = parseData.TeamIds.map((y) => - y.objectId === team.objectId ? team : y - ); + + const user = await _user.save(); + if (user) { + 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) { + if (formdata?.team) { + const team = teamList.find( + (x) => x.objectId === formdata.team + ); + parseData.TeamIds = parseData.TeamIds.map((y) => + y.objectId === team.objectId ? team : y + ); + } + props.handleUserData(parseData); } - props.handleUserData(parseData); - } - setIsFormLoader(false); - setFormdata({ name: "", email: "", phone: "", team: "", role: "" }); + setIsFormLoader(false); + setFormdata({ + name: "", + email: "", + phone: "", + team: "", + role: "" + }); + } + } catch (err) { + console.log("err ", err); + if (err.code === 202) { + const params = { email: formdata.email }; + const userRes = await Parse.Cloud.run("getUserId", params); + 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) { + if (formdata?.team) { + const team = teamList.find( + (x) => x.objectId === formdata.team + ); + parseData.TeamIds = parseData.TeamIds.map((y) => + y.objectId === team.objectId ? team : y + ); + } + props.handleUserData(parseData); + } + setIsFormLoader(false); + setFormdata({ + name: "", + email: "", + phone: "", + team: "", + role: "" + }); + } } } catch (err) { - console.log("err ", err); - if (err.code === 202) { - const params = { email: formdata.email }; - const userRes = await Parse.Cloud.run("getUserId", params); - 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) { - if (formdata?.team) { - const team = teamList.find((x) => x.objectId === formdata.team); - parseData.TeamIds = parseData.TeamIds.map((y) => - y.objectId === team.objectId ? team : y - ); - } - props.handleUserData(parseData); - } - setIsFormLoader(false); - setFormdata({ name: "", email: "", phone: "", team: "", role: "" }); - } + console.log("err", err); + setIsFormLoader(false); + props.setIsAlert({ + type: "danger", + msg: t("something-went-wrong-mssg") + }); + } finally { + setTimeout( + () => props.setIsAlert({ type: "success", msg: "" }), + 1500 + ); } - } catch (err) { - console.log("err", err); - setIsFormLoader(false); - props.setIsAlert({ - type: "danger", - msg: t("something-went-wrong-mssg") - }); - } finally { - setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1500); } } }; diff --git a/apps/OpenSign/src/components/pdf/SelectLanguage.js b/apps/OpenSign/src/components/pdf/SelectLanguage.js index ff9846e66..7faf86c3d 100644 --- a/apps/OpenSign/src/components/pdf/SelectLanguage.js +++ b/apps/OpenSign/src/components/pdf/SelectLanguage.js @@ -9,15 +9,13 @@ function SelectLanguage(props) { { value: "es", text: "Española" }, { value: "fr", text: "Français" } ]; - const [lang, setLang] = useState(i18next.language || "en"); + const defaultLanguage = i18next.language || "en"; + const [lang, setLang] = useState(defaultLanguage); // This function put query that helps to change the language const handleChangeLang = (e) => { setLang(e.target.value); i18n.changeLanguage(e.target.value); - props?.updateExtUser && - props.updateExtUser({ - language: e.target.value - }); + props?.updateExtUser && props.updateExtUser({ language: e.target.value }); }; return (
- + {languages.map((item) => { return (