mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-09-11 04:07:40 +02:00
Merge pull request #393 from OpenSignLabs/api-v1-beta
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import Parse from "parse";
|
import Parse from "parse";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
import { modalCancelBtnColor, modalSubmitBtnColor } from "../constant/const";
|
||||||
|
|
||||||
const AppendFormInForm = (props) => {
|
const AppendFormInForm = (props) => {
|
||||||
const [name, setName] = useState("");
|
const [name, setName] = useState("");
|
||||||
@@ -293,14 +294,16 @@ const AppendFormInForm = (props) => {
|
|||||||
<div className="mt-4 flex justify-start">
|
<div className="mt-4 flex justify-start">
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
className="bg-[#1ab6ce] text-sm text-white px-4 py-2 rounded shadow focus:outline-none"
|
style={{ backgroundColor: modalSubmitBtnColor }}
|
||||||
|
className="mr-2 px-[20px] py-1.5 text-white rounded shadow-md text-center focus:outline-none "
|
||||||
>
|
>
|
||||||
Submit
|
Submit
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => handleReset()}
|
onClick={() => handleReset()}
|
||||||
className="bg-[#188ae2] text-sm text-white px-4 py-2 rounded ml-2 shadow focus:outline-none"
|
style={{ backgroundColor: modalCancelBtnColor }}
|
||||||
|
className="px-4 py-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
|
||||||
>
|
>
|
||||||
Reset
|
Reset
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ import React, { useState, useRef } from "react";
|
|||||||
import Parse from "parse";
|
import Parse from "parse";
|
||||||
import jwtDecode from "jwt-decode";
|
import jwtDecode from "jwt-decode";
|
||||||
import { useScript } from "../hook/useScript";
|
import { useScript } from "../hook/useScript";
|
||||||
|
import ModalUi from "../primitives/ModalUi";
|
||||||
|
import { modalCancelBtnColor, modalSubmitBtnColor } from "../constant/const";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* `GoogleSignInBtn`as it's name indicates it render google sign in button
|
* `GoogleSignInBtn`as it's name indicates it render google sign in button
|
||||||
@@ -231,118 +233,94 @@ const GoogleSignInBtn = ({
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div ref={googleBtn} className="text-sm"></div>
|
<div ref={googleBtn} className="text-sm"></div>
|
||||||
|
<ModalUi showClose={false} isOpen={isModal} title="Sign up form">
|
||||||
{isModal && (
|
<form className="px-4 py-3">
|
||||||
<div
|
<div className="mb-3">
|
||||||
className="modal fade show"
|
<label
|
||||||
id="exampleModal"
|
htmlFor="Phone"
|
||||||
tabIndex="-1"
|
style={{ display: "flex" }}
|
||||||
role="dialog"
|
className="block text-xs text-gray-700 font-semibold"
|
||||||
style={{ display: "block", zIndex: 1 }}
|
>
|
||||||
>
|
Phone <span style={{ fontSize: 13, color: "red" }}>*</span>
|
||||||
<div className="modal-dialog" role="document">
|
</label>
|
||||||
<div className="modal-content">
|
<input
|
||||||
<div className="modal-header">
|
type="tel"
|
||||||
<h5 className="modal-title">Sign up form</h5>
|
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
|
||||||
<span>
|
id="Phone"
|
||||||
<span></span>
|
value={userDetails.Phone}
|
||||||
</span>
|
onChange={(e) =>
|
||||||
</div>
|
setUserDetails({
|
||||||
<div className="modal-body">
|
...userDetails,
|
||||||
<form>
|
Phone: e.target.value
|
||||||
<div className="form-group">
|
})
|
||||||
<label
|
}
|
||||||
htmlFor="Phone"
|
required
|
||||||
style={{ display: "flex" }}
|
/>
|
||||||
className="col-form-label"
|
|
||||||
>
|
|
||||||
Phone{" "}
|
|
||||||
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="tel"
|
|
||||||
className="form-control"
|
|
||||||
id="Phone"
|
|
||||||
value={userDetails.Phone}
|
|
||||||
onChange={(e) =>
|
|
||||||
setUserDetails({
|
|
||||||
...userDetails,
|
|
||||||
Phone: e.target.value
|
|
||||||
})
|
|
||||||
}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="form-group">
|
|
||||||
<label
|
|
||||||
htmlFor="Company"
|
|
||||||
style={{ display: "flex" }}
|
|
||||||
className="col-form-label"
|
|
||||||
>
|
|
||||||
Company{" "}
|
|
||||||
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
className="form-control"
|
|
||||||
id="Company"
|
|
||||||
value={userDetails.Company}
|
|
||||||
onChange={(e) =>
|
|
||||||
setUserDetails({
|
|
||||||
...userDetails,
|
|
||||||
Company: e.target.value
|
|
||||||
})
|
|
||||||
}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="form-group">
|
|
||||||
<label
|
|
||||||
htmlFor="JobTitle"
|
|
||||||
style={{ display: "flex" }}
|
|
||||||
className="col-form-label"
|
|
||||||
>
|
|
||||||
Job Title{" "}
|
|
||||||
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
className="form-control"
|
|
||||||
id="JobTitle"
|
|
||||||
value={userDetails.Destination}
|
|
||||||
onChange={(e) =>
|
|
||||||
setUserDetails({
|
|
||||||
...userDetails,
|
|
||||||
Destination: e.target.value
|
|
||||||
})
|
|
||||||
}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="bg-[#17a2b8] p-2 text-white rounded"
|
|
||||||
onClick={() => handleSubmitbtn()}
|
|
||||||
style={{ marginRight: 10 }}
|
|
||||||
>
|
|
||||||
Sign up
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="bg-[#6c757d] p-2 text-white rounded"
|
|
||||||
onClick={handleCloseModal}
|
|
||||||
style={{ width: 90 }}
|
|
||||||
>
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div className="mb-3">
|
||||||
)}
|
<label
|
||||||
|
htmlFor="Company"
|
||||||
|
style={{ display: "flex" }}
|
||||||
|
className="block text-xs text-gray-700 font-semibold"
|
||||||
|
>
|
||||||
|
Company <span style={{ fontSize: 13, color: "red" }}>*</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
|
||||||
|
id="Company"
|
||||||
|
value={userDetails.Company}
|
||||||
|
onChange={(e) =>
|
||||||
|
setUserDetails({
|
||||||
|
...userDetails,
|
||||||
|
Company: e.target.value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="mb-3">
|
||||||
|
<label
|
||||||
|
htmlFor="JobTitle"
|
||||||
|
style={{ display: "flex" }}
|
||||||
|
className="block text-xs text-gray-700 font-semibold"
|
||||||
|
>
|
||||||
|
Job Title <span style={{ fontSize: 13, color: "red" }}>*</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
|
||||||
|
id="JobTitle"
|
||||||
|
value={userDetails.Destination}
|
||||||
|
onChange={(e) =>
|
||||||
|
setUserDetails({
|
||||||
|
...userDetails,
|
||||||
|
Destination: e.target.value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="px-3 py-1.5 text-white rounded shadow-md text-center focus:outline-none "
|
||||||
|
onClick={() => handleSubmitbtn()}
|
||||||
|
style={{ marginRight: 10, backgroundColor: modalSubmitBtnColor }}
|
||||||
|
>
|
||||||
|
Sign up
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="p-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
|
||||||
|
onClick={handleCloseModal}
|
||||||
|
style={{ width: 90, backgroundColor: modalCancelBtnColor }}
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</ModalUi>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ const SignersInput = (props) => {
|
|||||||
right: "auto",
|
right: "auto",
|
||||||
bottom: "auto",
|
bottom: "auto",
|
||||||
transform: "translate(-50%, -50%)",
|
transform: "translate(-50%, -50%)",
|
||||||
|
border: "1px transparent",
|
||||||
padding: 0
|
padding: 0
|
||||||
},
|
},
|
||||||
overlay: {
|
overlay: {
|
||||||
@@ -158,18 +159,15 @@ const SignersInput = (props) => {
|
|||||||
>
|
>
|
||||||
<div className="min-w-full md:min-w-[500px]">
|
<div className="min-w-full md:min-w-[500px]">
|
||||||
<div
|
<div
|
||||||
type="button"
|
className="flex justify-between rounded-t items-center py-[10px] px-[20px] text-white"
|
||||||
className="flex justify-between items-center p-3 border-b-[1px] border-gray-300"
|
style={{ background: "#32a3ac" }}
|
||||||
>
|
>
|
||||||
<div className=" text-black text-xl font-semibold pl-3">
|
<div className="text-[1.2rem] font-normal">Add Signer</div>
|
||||||
Add Signer
|
<button
|
||||||
</div>
|
onClick={handleModalCloseClick}
|
||||||
<button onClick={handleModalCloseClick}>
|
className="text-[1.5rem] cursor-pointer focus:outline-none"
|
||||||
<i
|
>
|
||||||
style={{ fontSize: 25 }}
|
×
|
||||||
className="fa fa-times-circle"
|
|
||||||
aria-hidden="true"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -5,3 +5,5 @@ export const rejectBtn =
|
|||||||
"bg-[#ffffff] rounded-sm shadow-md text-[12px] font-semibold uppercase text-black py-1.5 px-4 focus:outline-none text-center border-[1px] border-[#b4b4b4]";
|
"bg-[#ffffff] rounded-sm shadow-md text-[12px] font-semibold uppercase text-black py-1.5 px-4 focus:outline-none text-center border-[1px] border-[#b4b4b4]";
|
||||||
export const submitBtn =
|
export const submitBtn =
|
||||||
"bg-[#32a3ac] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-4 focus:outline-none text-center";
|
"bg-[#32a3ac] rounded-sm shadow-md text-[12px] font-semibold uppercase text-white py-1.5 px-4 focus:outline-none text-center";
|
||||||
|
export const modalSubmitBtnColor = "#17a2b8";
|
||||||
|
export const modalCancelBtnColor = "white";
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
"planName": "THANKS PLAN",
|
"planName": "THANKS PLAN",
|
||||||
"currency": "$",
|
"currency": "$",
|
||||||
"price": "29.99",
|
"price": "29.99",
|
||||||
"subtitle": "Use code 'FREEBETA' to get this for free(First 1000 users)",
|
"subtitle": "Use code <span style='background-color: yellow;'>'FREEBETA'</span> to get this for free(First 1000 users)",
|
||||||
"btnText": "Subscribe",
|
"btnText": "Subscribe",
|
||||||
"url": "https://subscriptions.zoho.in/subscribe/ef798486e6a0a11ea65f2bae8f2af901dbadf3175d495584fd25b9af5d2f2b9e/thanks",
|
"url": "https://subscriptions.zoho.in/subscribe/ef798486e6a0a11ea65f2bae8f2af901dbadf3175d495584fd25b9af5d2f2b9e/thanks",
|
||||||
"target": "_self",
|
"target": "_self",
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ const Forms = (props) => {
|
|||||||
const dropboxCancel = async () => {};
|
const dropboxCancel = async () => {};
|
||||||
const handleSubmit = async (e) => {
|
const handleSubmit = async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
setIsSubmit(true);
|
setIsSubmit(true);
|
||||||
try {
|
try {
|
||||||
const currentUser = Parse.User.current();
|
const currentUser = Parse.User.current();
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import GoogleSignInBtn from "../components/LoginGoogle";
|
|||||||
import { NavLink, useNavigate, useLocation } from "react-router-dom";
|
import { NavLink, useNavigate, useLocation } from "react-router-dom";
|
||||||
import login_img from "../assets/images/login_img.svg";
|
import login_img from "../assets/images/login_img.svg";
|
||||||
import { useWindowSize } from "../hook/useWindowSize";
|
import { useWindowSize } from "../hook/useWindowSize";
|
||||||
|
import ModalUi from "../primitives/ModalUi";
|
||||||
|
import { modalCancelBtnColor, modalSubmitBtnColor } from "../constant/const";
|
||||||
|
|
||||||
function Login(props) {
|
function Login(props) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@@ -1131,100 +1133,76 @@ function Login(props) {
|
|||||||
{state.toastDescription}
|
{state.toastDescription}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{isModal && (
|
<ModalUi isOpen={isModal} title="Additional Info" showClose={false}>
|
||||||
<div
|
<form className="px-4 py-3">
|
||||||
className="modal fade show"
|
<div className="mb-3">
|
||||||
id="exampleModal"
|
<label
|
||||||
tabIndex="-1"
|
htmlFor="Company"
|
||||||
role="dialog"
|
style={{ display: "flex" }}
|
||||||
style={{
|
className="block text-xs text-gray-700 font-semibold"
|
||||||
display: "block",
|
>
|
||||||
zIndex: 1,
|
Company <span style={{ fontSize: 13, color: "red" }}>*</span>
|
||||||
backgroundColor: "rgba(0,0,0,0.5)"
|
</label>
|
||||||
}}
|
<input
|
||||||
>
|
type="text"
|
||||||
<div className="modal-dialog" role="document">
|
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
|
||||||
<div className="modal-content">
|
id="Company"
|
||||||
<div className="modal-header">
|
value={userDetails.Company}
|
||||||
<h5 className="modal-title font-semibold">
|
onChange={(e) =>
|
||||||
Additional Info
|
setUserDetails({
|
||||||
</h5>
|
...userDetails,
|
||||||
<span>
|
Company: e.target.value
|
||||||
<span></span>
|
})
|
||||||
</span>
|
}
|
||||||
</div>
|
required
|
||||||
<div className="modal-body">
|
/>
|
||||||
<form className="text-sm">
|
|
||||||
<div className="form-group">
|
|
||||||
<label
|
|
||||||
htmlFor="Company"
|
|
||||||
style={{ display: "flex" }}
|
|
||||||
className="col-form-label"
|
|
||||||
>
|
|
||||||
Company{" "}
|
|
||||||
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
className="form-control"
|
|
||||||
id="Company"
|
|
||||||
value={userDetails.Company}
|
|
||||||
onChange={(e) =>
|
|
||||||
setUserDetails({
|
|
||||||
...userDetails,
|
|
||||||
Company: e.target.value
|
|
||||||
})
|
|
||||||
}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="form-group">
|
|
||||||
<label
|
|
||||||
htmlFor="JobTitle"
|
|
||||||
style={{ display: "flex" }}
|
|
||||||
className="col-form-label"
|
|
||||||
>
|
|
||||||
Job Title
|
|
||||||
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
className="form-control"
|
|
||||||
id="JobTitle"
|
|
||||||
value={userDetails.Destination}
|
|
||||||
onChange={(e) =>
|
|
||||||
setUserDetails({
|
|
||||||
...userDetails,
|
|
||||||
Destination: e.target.value
|
|
||||||
})
|
|
||||||
}
|
|
||||||
required
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="mt-4">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="bg-[#17a2b8] text-sm p-2 text-white rounded uppercase"
|
|
||||||
onClick={(e) => handleSubmitbtn(e)}
|
|
||||||
style={{ marginRight: 10 }}
|
|
||||||
>
|
|
||||||
Login
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="bg-[#6c757d] text-sm p-2 text-white rounded uppercase"
|
|
||||||
onClick={handleCloseModal}
|
|
||||||
style={{ width: 90 }}
|
|
||||||
>
|
|
||||||
Cancel
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div className="mb-3">
|
||||||
)}
|
<label
|
||||||
|
htmlFor="JobTitle"
|
||||||
|
style={{ display: "flex" }}
|
||||||
|
className="block text-xs text-gray-700 font-semibold"
|
||||||
|
>
|
||||||
|
Job Title
|
||||||
|
<span style={{ fontSize: 13, color: "red" }}>*</span>
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
|
||||||
|
id="JobTitle"
|
||||||
|
value={userDetails.Destination}
|
||||||
|
onChange={(e) =>
|
||||||
|
setUserDetails({
|
||||||
|
...userDetails,
|
||||||
|
Destination: e.target.value
|
||||||
|
})
|
||||||
|
}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="mt-4">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="px-3 py-1.5 text-white rounded shadow-md text-center focus:outline-none "
|
||||||
|
onClick={(e) => handleSubmitbtn(e)}
|
||||||
|
style={{
|
||||||
|
marginRight: 10,
|
||||||
|
backgroundColor: modalSubmitBtnColor
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Login
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="py-1.5 text-black border-[1px] border-[#ccc] shadow-md rounded focus:outline-none"
|
||||||
|
onClick={handleCloseModal}
|
||||||
|
style={{ width: 75, backgroundColor: modalCancelBtnColor }}
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</ModalUi>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -104,11 +104,27 @@ const PlanSubscriptions = () => {
|
|||||||
<div
|
<div
|
||||||
className={`${
|
className={`${
|
||||||
item.subtitle.length <= 32
|
item.subtitle.length <= 32
|
||||||
? "w-[150px] text-center"
|
? "w-[150px] text-center"
|
||||||
: ""
|
: ""
|
||||||
} text-sm text-center my-2`}
|
} text-sm text-center my-2`}
|
||||||
>
|
>
|
||||||
<p>{item.subtitle}</p>
|
<p
|
||||||
|
style={{
|
||||||
|
backgroundColor: item.subtitlecolor
|
||||||
|
? item.subtitlecolor
|
||||||
|
: "white"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{item.subtitle.includes("<") ? (
|
||||||
|
<div
|
||||||
|
dangerouslySetInnerHTML={{
|
||||||
|
__html: item.subtitle
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<span>{item.subtitle}</span>
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -61,11 +61,16 @@ export default async function createDocumentWithTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const templateQuery = new Parse.Query('contracts_Template');
|
const templateQuery = new Parse.Query('contracts_Template');
|
||||||
templateQuery.include('ExtUserPtr');
|
templateQuery.include('ExtUserPtr');
|
||||||
const templateRes = await templateQuery.get(templateId, { useMasterKey: true });
|
const templateRes = await templateQuery.get(templateId, { useMasterKey: true });
|
||||||
@@ -170,8 +175,8 @@ export default async function createDocumentWithTemplate(request, response) {
|
|||||||
const newACL = new Parse.ACL();
|
const newACL = new Parse.ACL();
|
||||||
newACL.setPublicReadAccess(false);
|
newACL.setPublicReadAccess(false);
|
||||||
newACL.setPublicWriteAccess(false);
|
newACL.setPublicWriteAccess(false);
|
||||||
newACL.setReadAccess(userPtr.id, true);
|
newACL.setReadAccess(userPtr.objectId, true);
|
||||||
newACL.setWriteAccess(userPtr.id, true);
|
newACL.setWriteAccess(userPtr.objectId, true);
|
||||||
object.setACL(newACL);
|
object.setACL(newACL);
|
||||||
const res = await object.save(null, { useMasterKey: true });
|
const res = await object.save(null, { useMasterKey: true });
|
||||||
|
|
||||||
@@ -287,11 +292,18 @@ export default async function createDocumentWithTemplate(request, response) {
|
|||||||
createdAt: res.createdAt,
|
createdAt: res.createdAt,
|
||||||
};
|
};
|
||||||
if (template.ExtUserPtr && template.ExtUserPtr?.Webhook) {
|
if (template.ExtUserPtr && template.ExtUserPtr?.Webhook) {
|
||||||
sendDoctoWebhook(doc, template.ExtUserPtr?.Webhook, userPtr?.id);
|
sendDoctoWebhook(doc, template.ExtUserPtr?.Webhook, userPtr?.objectId);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('Err', err);
|
console.log('Err', err);
|
||||||
}
|
}
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document_with_templateid',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: res.id,
|
objectId: res.id,
|
||||||
signurl: contact.map(x => ({
|
signurl: contact.map(x => ({
|
||||||
@@ -302,12 +314,33 @@ export default async function createDocumentWithTemplate(request, response) {
|
|||||||
});
|
});
|
||||||
// }
|
// }
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document_with_templateid',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide signers properly!' });
|
return response.status(400).json({ error: 'Please provide signers properly!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document_with_templateid',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please setup template properly!' });
|
return response.status(400).json({ error: 'Please setup template properly!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document_with_templateid',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Invalid template id!' });
|
return response.status(404).json({ error: 'Invalid template id!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -11,10 +11,17 @@ export default async function createContact(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const contactbook = new Parse.Query('contracts_Contactbook');
|
const contactbook = new Parse.Query('contracts_Contactbook');
|
||||||
contactbook.equalTo('Email', email);
|
contactbook.equalTo('Email', email);
|
||||||
@@ -23,6 +30,13 @@ export default async function createContact(request, response) {
|
|||||||
const userExists = await contactbook.first({ useMasterKey: true });
|
const userExists = await contactbook.first({ useMasterKey: true });
|
||||||
|
|
||||||
if (userExists) {
|
if (userExists) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_contact',
|
||||||
|
properties: { response_code: 401 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response
|
return response
|
||||||
.status(401)
|
.status(401)
|
||||||
.json({ error: 'Contact already exists!', objectId: userExists.id });
|
.json({ error: 'Contact already exists!', objectId: userExists.id });
|
||||||
@@ -72,8 +86,8 @@ export default async function createContact(request, response) {
|
|||||||
contactQuery.set('UserId', user);
|
contactQuery.set('UserId', user);
|
||||||
|
|
||||||
const acl = new Parse.ACL();
|
const acl = new Parse.ACL();
|
||||||
acl.setReadAccess(userPtr.id, true);
|
acl.setReadAccess(userPtr.objectId, true);
|
||||||
acl.setWriteAccess(userPtr.id, true);
|
acl.setWriteAccess(userPtr.objectId, true);
|
||||||
acl.setReadAccess(user.id, true);
|
acl.setReadAccess(user.id, true);
|
||||||
acl.setWriteAccess(user.id, true);
|
acl.setWriteAccess(user.id, true);
|
||||||
contactQuery.setACL(acl);
|
contactQuery.setACL(acl);
|
||||||
@@ -103,18 +117,18 @@ export default async function createContact(request, response) {
|
|||||||
const body = {
|
const body = {
|
||||||
appName: 'contracts',
|
appName: 'contracts',
|
||||||
roleName: 'contracts_Guest',
|
roleName: 'contracts_Guest',
|
||||||
userId: userRes.id,
|
userId: userRes.objectId,
|
||||||
};
|
};
|
||||||
await axios.post(roleurl, body, { headers: headers });
|
await axios.post(roleurl, body, { headers: headers });
|
||||||
contactQuery.set('CreatedBy', userPtr);
|
contactQuery.set('CreatedBy', userPtr.objectId);
|
||||||
contactQuery.set('UserId', {
|
contactQuery.set('UserId', {
|
||||||
__type: 'Pointer',
|
__type: 'Pointer',
|
||||||
className: '_User',
|
className: '_User',
|
||||||
objectId: userRes.id,
|
objectId: userRes.id,
|
||||||
});
|
});
|
||||||
const acl = new Parse.ACL();
|
const acl = new Parse.ACL();
|
||||||
acl.setReadAccess(userPtr.id, true);
|
acl.setReadAccess(userPtr.objectId, true);
|
||||||
acl.setWriteAccess(userPtr.id, true);
|
acl.setWriteAccess(userPtr.objectId, true);
|
||||||
acl.setReadAccess(userRes.id, true);
|
acl.setReadAccess(userRes.id, true);
|
||||||
acl.setWriteAccess(userRes.id, true);
|
acl.setWriteAccess(userRes.id, true);
|
||||||
|
|
||||||
@@ -143,8 +157,22 @@ export default async function createContact(request, response) {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('err ', err);
|
console.log('err ', err);
|
||||||
if (err.code === 137) {
|
if (err.code === 137) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_contact',
|
||||||
|
properties: { response_code: 401 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(401).json({ error: 'Contact already exists!' });
|
return response.status(401).json({ error: 'Contact already exists!' });
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_contact',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response
|
return response
|
||||||
.status(400)
|
.status(400)
|
||||||
.json({ error: 'Something went wrong, please try again later!' });
|
.json({ error: 'Something went wrong, please try again later!' });
|
||||||
@@ -152,6 +180,13 @@ export default async function createContact(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_contact',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
|
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -21,11 +21,17 @@ export default async function createDocument(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
if (signers && signers.length > 0) {
|
if (signers && signers.length > 0) {
|
||||||
const userPtr = token.get('userId');
|
|
||||||
let fileUrl;
|
let fileUrl;
|
||||||
if (request.files?.[0]) {
|
if (request.files?.[0]) {
|
||||||
const file = new Parse.File(request.files?.[0]?.originalname, {
|
const file = new Parse.File(request.files?.[0]?.originalname, {
|
||||||
@@ -112,15 +118,29 @@ export default async function createDocument(request, response) {
|
|||||||
const newACL = new Parse.ACL();
|
const newACL = new Parse.ACL();
|
||||||
newACL.setPublicReadAccess(false);
|
newACL.setPublicReadAccess(false);
|
||||||
newACL.setPublicWriteAccess(false);
|
newACL.setPublicWriteAccess(false);
|
||||||
newACL.setReadAccess(userPtr.id, true);
|
newACL.setReadAccess(userPtr.objectId, true);
|
||||||
newACL.setWriteAccess(userPtr.id, true);
|
newACL.setWriteAccess(userPtr.objectId, true);
|
||||||
object.setACL(newACL);
|
object.setACL(newACL);
|
||||||
const res = await object.save(null, { useMasterKey: true });
|
const res = await object.save(null, { useMasterKey: true });
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'draft_document',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: res.id,
|
objectId: res.id,
|
||||||
url: protocol + '/load/signmicroapp/placeholdersign/' + res.id,
|
url: protocol + '/load/signmicroapp/placeholdersign/' + res.id,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'draft_document',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide signers!' });
|
return response.status(400).json({ error: 'Please provide signers!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -67,11 +67,17 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
if (signers && signers.length > 0) {
|
if (signers && signers.length > 0) {
|
||||||
const userPtr = token.get('userId');
|
|
||||||
let fileUrl;
|
let fileUrl;
|
||||||
if (request.files?.[0]) {
|
if (request.files?.[0]) {
|
||||||
const file = new Parse.File(request.files?.[0]?.originalname, {
|
const file = new Parse.File(request.files?.[0]?.originalname, {
|
||||||
@@ -211,8 +217,8 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
const newACL = new Parse.ACL();
|
const newACL = new Parse.ACL();
|
||||||
newACL.setPublicReadAccess(false);
|
newACL.setPublicReadAccess(false);
|
||||||
newACL.setPublicWriteAccess(false);
|
newACL.setPublicWriteAccess(false);
|
||||||
newACL.setReadAccess(userPtr.id, true);
|
newACL.setReadAccess(userPtr.objectId, true);
|
||||||
newACL.setWriteAccess(userPtr.id, true);
|
newACL.setWriteAccess(userPtr.objectId, true);
|
||||||
object.setACL(newACL);
|
object.setACL(newACL);
|
||||||
const res = await object.save(null, { useMasterKey: true });
|
const res = await object.save(null, { useMasterKey: true });
|
||||||
const doc = {
|
const doc = {
|
||||||
@@ -225,7 +231,7 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
createdAt: res.createdAt,
|
createdAt: res.createdAt,
|
||||||
};
|
};
|
||||||
if (parseExtUser && parseExtUser.Webhook) {
|
if (parseExtUser && parseExtUser.Webhook) {
|
||||||
sendDoctoWebhook(doc, parseExtUser?.Webhook, userPtr?.id);
|
sendDoctoWebhook(doc, parseExtUser?.Webhook, userPtr?.objectId);
|
||||||
}
|
}
|
||||||
const newDate = new Date();
|
const newDate = new Date();
|
||||||
newDate.setDate(newDate.getDate() + 15);
|
newDate.setDate(newDate.getDate() + 15);
|
||||||
@@ -328,6 +334,13 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (sendMail.data.result.status === 'success') {
|
// if (sendMail.data.result.status === 'success') {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: res.id,
|
objectId: res.id,
|
||||||
signurl: contact.map(x => ({
|
signurl: contact.map(x => ({
|
||||||
@@ -338,6 +351,13 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
});
|
});
|
||||||
// }
|
// }
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_document',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide signers!' });
|
return response.status(400).json({ error: 'Please provide signers!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -345,6 +365,6 @@ export default async function createDocumentwithCoordinate(request, response) {
|
|||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('err ', err);
|
console.log('err ', err);
|
||||||
return response.status(400).json({ error: 'Something went wrong!' });
|
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,16 @@ export default async function createTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
let fileUrl;
|
let fileUrl;
|
||||||
if (base64File) {
|
if (base64File) {
|
||||||
const file = new Parse.File(`${name}.pdf`, {
|
const file = new Parse.File(`${name}.pdf`, {
|
||||||
@@ -100,10 +106,17 @@ export default async function createTemplate(request, response) {
|
|||||||
const newACL = new Parse.ACL();
|
const newACL = new Parse.ACL();
|
||||||
newACL.setPublicReadAccess(false);
|
newACL.setPublicReadAccess(false);
|
||||||
newACL.setPublicWriteAccess(false);
|
newACL.setPublicWriteAccess(false);
|
||||||
newACL.setReadAccess(userPtr.id, true);
|
newACL.setReadAccess(userPtr.objectId, true);
|
||||||
newACL.setWriteAccess(userPtr.id, true);
|
newACL.setWriteAccess(userPtr.objectId, true);
|
||||||
object.setACL(newACL);
|
object.setACL(newACL);
|
||||||
const res = await object.save(null, { useMasterKey: true });
|
const res = await object.save(null, { useMasterKey: true });
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'draft_template',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: res.id,
|
objectId: res.id,
|
||||||
url: protocol + '/load/signmicroapp/template/' + res.id,
|
url: protocol + '/load/signmicroapp/template/' + res.id,
|
||||||
|
|||||||
@@ -20,11 +20,17 @@ export default async function createTemplatewithCoordinate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
if (signers && signers.length > 0) {
|
if (signers && signers.length > 0) {
|
||||||
const userPtr = token.get('userId');
|
|
||||||
let fileUrl;
|
let fileUrl;
|
||||||
if (request.files?.[0]) {
|
if (request.files?.[0]) {
|
||||||
const file = new Parse.File(request.files?.[0]?.originalname, {
|
const file = new Parse.File(request.files?.[0]?.originalname, {
|
||||||
@@ -169,16 +175,29 @@ export default async function createTemplatewithCoordinate(request, response) {
|
|||||||
const newACL = new Parse.ACL();
|
const newACL = new Parse.ACL();
|
||||||
newACL.setPublicReadAccess(false);
|
newACL.setPublicReadAccess(false);
|
||||||
newACL.setPublicWriteAccess(false);
|
newACL.setPublicWriteAccess(false);
|
||||||
newACL.setReadAccess(userPtr.id, true);
|
newACL.setReadAccess(userPtr.objectId, true);
|
||||||
newACL.setWriteAccess(userPtr.id, true);
|
newACL.setWriteAccess(userPtr.objectId, true);
|
||||||
object.setACL(newACL);
|
object.setACL(newACL);
|
||||||
const res = await object.save(null, { useMasterKey: true });
|
const res = await object.save(null, { useMasterKey: true });
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_template',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: res.id,
|
objectId: res.id,
|
||||||
message: 'Template created successfully!',
|
message: 'Template created successfully!',
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'create_template',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide signers!' });
|
return response.status(400).json({ error: 'Please provide signers!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,17 @@ export default async function deleteContact(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const Contactbook = new Parse.Query('contracts_Contactbook');
|
const Contactbook = new Parse.Query('contracts_Contactbook');
|
||||||
Contactbook.equalTo('objectId', request.params.contact_id);
|
Contactbook.equalTo('objectId', request.params.contact_id);
|
||||||
Contactbook.equalTo('CreatedBy', userPtr);
|
Contactbook.equalTo('CreatedBy', userPtr);
|
||||||
@@ -25,6 +32,13 @@ export default async function deleteContact(request, response) {
|
|||||||
deleteQuery.set('IsDeleted', true);
|
deleteQuery.set('IsDeleted', true);
|
||||||
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
||||||
if (deleteRes) {
|
if (deleteRes) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_contact',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: request.params.contact_id,
|
objectId: request.params.contact_id,
|
||||||
deletedAt: deleteRes.get('updatedAt'),
|
deletedAt: deleteRes.get('updatedAt'),
|
||||||
@@ -32,6 +46,13 @@ export default async function deleteContact(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_contact',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Contact not found!' });
|
return response.status(404).json({ error: 'Contact not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,17 @@ export default async function deleteDocument(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const Document = new Parse.Query('contracts_Document');
|
const Document = new Parse.Query('contracts_Document');
|
||||||
Document.equalTo('objectId', request.params.document_id);
|
Document.equalTo('objectId', request.params.document_id);
|
||||||
Document.equalTo('CreatedBy', userPtr);
|
Document.equalTo('CreatedBy', userPtr);
|
||||||
@@ -25,6 +32,13 @@ export default async function deleteDocument(request, response) {
|
|||||||
deleteQuery.set('IsArchive', true);
|
deleteQuery.set('IsArchive', true);
|
||||||
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
||||||
if (deleteRes) {
|
if (deleteRes) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_document',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: request.params.document_id,
|
objectId: request.params.document_id,
|
||||||
deletedAt: deleteRes.get('updatedAt'),
|
deletedAt: deleteRes.get('updatedAt'),
|
||||||
@@ -32,6 +46,13 @@ export default async function deleteDocument(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_document',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Document not found!' });
|
return response.status(404).json({ error: 'Document not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ export default async function deletedTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const template = new Parse.Query('contracts_Template');
|
const template = new Parse.Query('contracts_Template');
|
||||||
template.equalTo('objectId', request.params.template_id);
|
template.equalTo('objectId', request.params.template_id);
|
||||||
template.equalTo('CreatedBy', userPtr);
|
template.equalTo('CreatedBy', userPtr);
|
||||||
@@ -25,6 +31,13 @@ export default async function deletedTemplate(request, response) {
|
|||||||
deleteQuery.set('IsArchive', true);
|
deleteQuery.set('IsArchive', true);
|
||||||
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
|
||||||
if (deleteRes) {
|
if (deleteRes) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_template',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: request.params.template_id,
|
objectId: request.params.template_id,
|
||||||
deletedAt: deleteRes.get('updatedAt'),
|
deletedAt: deleteRes.get('updatedAt'),
|
||||||
@@ -32,6 +45,13 @@ export default async function deletedTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_template',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Template not found!' });
|
return response.status(404).json({ error: 'Template not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5,10 +5,17 @@ export default async function deleteWebhook(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const query = new Parse.Query('contracts_Users');
|
const query = new Parse.Query('contracts_Users');
|
||||||
query.equalTo('UserId', userPtr);
|
query.equalTo('UserId', userPtr);
|
||||||
const user = await query.first({ useMasterKey: true });
|
const user = await query.first({ useMasterKey: true });
|
||||||
@@ -18,11 +25,25 @@ export default async function deleteWebhook(request, response) {
|
|||||||
updateQuery.unset('Webhook');
|
updateQuery.unset('Webhook');
|
||||||
const res = await updateQuery.save(null, { useMasterKey: true });
|
const res = await updateQuery.save(null, { useMasterKey: true });
|
||||||
if (res) {
|
if (res) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_webhook',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
result: 'Webhook deleted successfully!',
|
result: 'Webhook deleted successfully!',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'delete_webhook',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'User not found!' });
|
return response.status(404).json({ error: 'User not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,17 @@ export default async function getContact(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const Contactbook = new Parse.Query('contracts_Contactbook');
|
const Contactbook = new Parse.Query('contracts_Contactbook');
|
||||||
Contactbook.equalTo('objectId', request.params.contact_id);
|
Contactbook.equalTo('objectId', request.params.contact_id);
|
||||||
Contactbook.equalTo('CreatedBy', userPtr);
|
Contactbook.equalTo('CreatedBy', userPtr);
|
||||||
@@ -19,6 +26,13 @@ export default async function getContact(request, response) {
|
|||||||
const res = await Contactbook.first({ useMasterKey: true });
|
const res = await Contactbook.first({ useMasterKey: true });
|
||||||
if (res) {
|
if (res) {
|
||||||
const parseRes = JSON.parse(JSON.stringify(res));
|
const parseRes = JSON.parse(JSON.stringify(res));
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_contact',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: parseRes.objectId,
|
objectId: parseRes.objectId,
|
||||||
name: parseRes.Name,
|
name: parseRes.Name,
|
||||||
@@ -28,6 +42,13 @@ export default async function getContact(request, response) {
|
|||||||
updatedAt: parseRes.updatedAt,
|
updatedAt: parseRes.updatedAt,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_contact',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Contact not found!' });
|
return response.status(404).json({ error: 'Contact not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ export default async function getContactList(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const limit = request?.query?.limit ? parseInt(request.query.limit) : 100;
|
const limit = request?.query?.limit ? parseInt(request.query.limit) : 100;
|
||||||
const skip = request?.query?.skip ? parseInt(request.query.skip) : 0;
|
const skip = request?.query?.skip ? parseInt(request.query.skip) : 0;
|
||||||
const Contactbook = new Parse.Query('contracts_Contactbook');
|
const Contactbook = new Parse.Query('contracts_Contactbook');
|
||||||
@@ -29,8 +35,22 @@ export default async function getContactList(request, response) {
|
|||||||
createdAt: x.createdAt,
|
createdAt: x.createdAt,
|
||||||
updatedAt: x.updatedAt,
|
updatedAt: x.updatedAt,
|
||||||
}));
|
}));
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_contact_list',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({ result: contactlist });
|
return response.json({ result: contactlist });
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_contact_list',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({ result: [] });
|
return response.json({ result: [] });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ export default async function getDocument(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const Document = new Parse.Query('contracts_Document');
|
const Document = new Parse.Query('contracts_Document');
|
||||||
Document.equalTo('objectId', request.params.document_id);
|
Document.equalTo('objectId', request.params.document_id);
|
||||||
Document.equalTo('CreatedBy', userPtr);
|
Document.equalTo('CreatedBy', userPtr);
|
||||||
@@ -20,6 +26,13 @@ export default async function getDocument(request, response) {
|
|||||||
const res = await Document.first({ useMasterKey: true });
|
const res = await Document.first({ useMasterKey: true });
|
||||||
if (res) {
|
if (res) {
|
||||||
const document = JSON.parse(JSON.stringify(res));
|
const document = JSON.parse(JSON.stringify(res));
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_document',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: document.objectId,
|
objectId: document.objectId,
|
||||||
title: document.Name,
|
title: document.Name,
|
||||||
@@ -34,6 +47,13 @@ export default async function getDocument(request, response) {
|
|||||||
updatedAt: document.updatedAt,
|
updatedAt: document.updatedAt,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_document',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Document not found!' });
|
return response.status(404).json({ error: 'Document not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -12,10 +12,16 @@ export default async function getDocumentList(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const docType = request.params.doctype;
|
const docType = request.params.doctype;
|
||||||
const limit = request?.query?.limit ? request.query.limit : 100;
|
const limit = request?.query?.limit ? request.query.limit : 100;
|
||||||
const skip = request?.query?.skip ? request.query.skip : 0;
|
const skip = request?.query?.skip ? request.query.skip : 0;
|
||||||
@@ -42,7 +48,7 @@ export default async function getDocumentList(request, response) {
|
|||||||
default:
|
default:
|
||||||
reportId = '';
|
reportId = '';
|
||||||
}
|
}
|
||||||
const json = reportId && reportJson(reportId, userPtr.id);
|
const json = reportId && reportJson(reportId, userPtr.objectId);
|
||||||
const clsName = 'contracts_Document';
|
const clsName = 'contracts_Document';
|
||||||
if (reportId && json) {
|
if (reportId && json) {
|
||||||
const { params, keys } = json;
|
const { params, keys } = json;
|
||||||
@@ -57,6 +63,13 @@ export default async function getDocumentList(request, response) {
|
|||||||
const url = `${serverUrl}/classes/${clsName}?where=${strParams}&keys=${strKeys}&order=${orderBy}&skip=${skip}&limit=${limit}&include=AuditTrail.UserPtr`;
|
const url = `${serverUrl}/classes/${clsName}?where=${strParams}&keys=${strKeys}&order=${orderBy}&skip=${skip}&limit=${limit}&include=AuditTrail.UserPtr`;
|
||||||
const res = await axios.get(url, { headers: headers });
|
const res = await axios.get(url, { headers: headers });
|
||||||
if (res.data && res.data.results.length > 0) {
|
if (res.data && res.data.results.length > 0) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_document_list_by_status',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
const updateRes = res.data.results.map(x => ({
|
const updateRes = res.data.results.map(x => ({
|
||||||
objectId: x.objectId,
|
objectId: x.objectId,
|
||||||
title: x.Name,
|
title: x.Name,
|
||||||
@@ -74,6 +87,13 @@ export default async function getDocumentList(request, response) {
|
|||||||
return response.json({ result: [] });
|
return response.json({ result: [] });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_document_list_by_status',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Report not available!' });
|
return response.status(404).json({ error: 'Report not available!' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,17 @@ export default async function getTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const Template = new Parse.Query('contracts_Template');
|
const Template = new Parse.Query('contracts_Template');
|
||||||
Template.equalTo('objectId', request.params.template_id);
|
Template.equalTo('objectId', request.params.template_id);
|
||||||
Template.equalTo('CreatedBy', userPtr);
|
Template.equalTo('CreatedBy', userPtr);
|
||||||
@@ -20,6 +27,14 @@ export default async function getTemplate(request, response) {
|
|||||||
const res = await Template.first({ useMasterKey: true });
|
const res = await Template.first({ useMasterKey: true });
|
||||||
if (res) {
|
if (res) {
|
||||||
const template = JSON.parse(JSON.stringify(res));
|
const template = JSON.parse(JSON.stringify(res));
|
||||||
|
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_template',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: template.objectId,
|
objectId: template.objectId,
|
||||||
title: template.Name,
|
title: template.Name,
|
||||||
@@ -34,6 +49,13 @@ export default async function getTemplate(request, response) {
|
|||||||
updatedAt: template.updatedAt,
|
updatedAt: template.updatedAt,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_template',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Template not found!' });
|
return response.status(404).json({ error: 'Template not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
|
|
||||||
export default async function getTemplatetList(request, response) {
|
export default async function getTemplatetList(request, response) {
|
||||||
const reqToken = request.headers['x-api-token'];
|
const reqToken = request.headers['x-api-token'];
|
||||||
const appId = process.env.APP_ID;
|
const appId = process.env.APP_ID;
|
||||||
@@ -11,21 +10,24 @@ export default async function getTemplatetList(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const limit = request?.query?.limit ? request.query.limit : 100;
|
const limit = request?.query?.limit ? request.query.limit : 100;
|
||||||
const skip = request?.query?.skip ? request.query.skip : 0;
|
const skip = request?.query?.skip ? request.query.skip : 0;
|
||||||
|
|
||||||
const clsName = 'contracts_Template';
|
const clsName = 'contracts_Template';
|
||||||
const params = {
|
const params = {
|
||||||
Type: { $ne: 'Folder' },
|
Type: { $ne: 'Folder' },
|
||||||
CreatedBy: {
|
CreatedBy: userPtr,
|
||||||
__type: 'Pointer',
|
|
||||||
className: '_User',
|
|
||||||
objectId: userPtr.id,
|
|
||||||
},
|
|
||||||
IsArchive: { $ne: true },
|
IsArchive: { $ne: true },
|
||||||
};
|
};
|
||||||
const keys = [
|
const keys = [
|
||||||
@@ -51,6 +53,13 @@ export default async function getTemplatetList(request, response) {
|
|||||||
const url = `${serverUrl}/classes/${clsName}?where=${strParams}&keys=${strKeys}&order=${orderBy}&skip=${skip}&limit=${limit}&include=AuditTrail.UserPtr`;
|
const url = `${serverUrl}/classes/${clsName}?where=${strParams}&keys=${strKeys}&order=${orderBy}&skip=${skip}&limit=${limit}&include=AuditTrail.UserPtr`;
|
||||||
const res = await axios.get(url, { headers: headers });
|
const res = await axios.get(url, { headers: headers });
|
||||||
if (res.data && res.data.results.length > 0) {
|
if (res.data && res.data.results.length > 0) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_template_list',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
const updateRes = res.data.results.map(x => ({
|
const updateRes = res.data.results.map(x => ({
|
||||||
objectId: x.objectId,
|
objectId: x.objectId,
|
||||||
title: x.Name,
|
title: x.Name,
|
||||||
@@ -65,6 +74,13 @@ export default async function getTemplatetList(request, response) {
|
|||||||
|
|
||||||
return response.json({ result: updateRes });
|
return response.json({ result: updateRes });
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_template_list',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({ result: [] });
|
return response.json({ result: [] });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,16 +8,30 @@ export default async function getUser(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
|
|
||||||
const query = new Parse.Query('contracts_Users');
|
const query = new Parse.Query('contracts_Users');
|
||||||
query.equalTo('UserId', userPtr);
|
query.equalTo('UserId', userPtr);
|
||||||
query.exclude('IsContactEntry,TourStatus,UserRole,TenantId,UserId,CreatedBy,Plan');
|
query.exclude('IsContactEntry,TourStatus,UserRole,TenantId,UserId,CreatedBy,Plan');
|
||||||
const user = await query.first({ useMasterKey: true });
|
const user = await query.first({ useMasterKey: true });
|
||||||
if (user) {
|
if (user) {
|
||||||
const parseRes = JSON.parse(JSON.stringify(user));
|
const parseRes = JSON.parse(JSON.stringify(user));
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_your_account_details',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: parseRes.objectId,
|
objectId: parseRes.objectId,
|
||||||
name: parseRes.Name,
|
name: parseRes.Name,
|
||||||
@@ -29,6 +43,13 @@ export default async function getUser(request, response) {
|
|||||||
updatedAt: parseRes.updatedAt,
|
updatedAt: parseRes.updatedAt,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_your_account_details',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'User not found!' });
|
return response.status(404).json({ error: 'User not found!' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,16 +5,28 @@ export default async function getWebhook(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const query = new Parse.Query('contracts_Users');
|
const query = new Parse.Query('contracts_Users');
|
||||||
query.equalTo('UserId', userPtr);
|
query.equalTo('UserId', userPtr);
|
||||||
const user = await query.first({ useMasterKey: true });
|
const user = await query.first({ useMasterKey: true });
|
||||||
if (user) {
|
if (user) {
|
||||||
const parseUser = JSON.parse(JSON.stringify(user));
|
const parseUser = JSON.parse(JSON.stringify(user));
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_webhook',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
if (parseUser && parseUser.Webhook) {
|
if (parseUser && parseUser.Webhook) {
|
||||||
return response.json({
|
return response.json({
|
||||||
webhook: parseUser.Webhook,
|
webhook: parseUser.Webhook,
|
||||||
@@ -23,6 +35,13 @@ export default async function getWebhook(request, response) {
|
|||||||
return response.json({});
|
return response.json({});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'get_webhook',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'User not found!' });
|
return response.status(404).json({ error: 'User not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ export default async function saveWebhook(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const userPtr = token.get('userId');
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
const query = new Parse.Query('contracts_Users');
|
const query = new Parse.Query('contracts_Users');
|
||||||
query.equalTo('UserId', userPtr);
|
query.equalTo('UserId', userPtr);
|
||||||
const user = await query.first({ useMasterKey: true });
|
const user = await query.first({ useMasterKey: true });
|
||||||
@@ -24,23 +30,52 @@ export default async function saveWebhook(request, response) {
|
|||||||
updateQuery.set('Webhook', Url);
|
updateQuery.set('Webhook', Url);
|
||||||
const res = await updateQuery.save(null, { useMasterKey: true });
|
const res = await updateQuery.save(null, { useMasterKey: true });
|
||||||
if (res) {
|
if (res) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'save_webhook',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
result: 'Webhook updated successfully!',
|
result: 'Webhook updated successfully!',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'save_webhook',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
console.log('Err ', err);
|
console.log('Err ', err);
|
||||||
return response
|
return response
|
||||||
.status(400)
|
.status(400)
|
||||||
.json({ error: 'Something went wrong, please try again later!' });
|
.json({ error: 'Something went wrong, please try again later!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'save_webhook',
|
||||||
|
properties: { response_code: 401 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(401).json({ error: 'Webhook url already exists!' });
|
return response.status(401).json({ error: 'Webhook url already exists!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'save_webhook',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'User not found!' });
|
return response.status(404).json({ error: 'User not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return response.status(405).json({ error: 'Invalid API Token!' });
|
return response.status(405).json({ error: 'Invalid API Token!' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// client.shutdown()
|
||||||
|
|||||||
@@ -6,14 +6,20 @@ export default async function updateDocument(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const allowedKeys = ['name', 'note', 'description'];
|
const allowedKeys = ['name', 'note', 'description'];
|
||||||
const objectKeys = Object.keys(request.body);
|
const objectKeys = Object.keys(request.body);
|
||||||
const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0;
|
const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0;
|
||||||
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
const userPtr = token.get('userId');
|
|
||||||
const document = new Parse.Query('contracts_Document');
|
const document = new Parse.Query('contracts_Document');
|
||||||
document.equalTo('objectId', request.params.document_id);
|
document.equalTo('objectId', request.params.document_id);
|
||||||
document.equalTo('CreatedBy', userPtr);
|
document.equalTo('CreatedBy', userPtr);
|
||||||
@@ -44,6 +50,13 @@ export default async function updateDocument(request, response) {
|
|||||||
}
|
}
|
||||||
const updatedRes = await updateQuery.save(null, { useMasterKey: true });
|
const updatedRes = await updateQuery.save(null, { useMasterKey: true });
|
||||||
if (updatedRes) {
|
if (updatedRes) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_document',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: updatedRes.id,
|
objectId: updatedRes.id,
|
||||||
updatedAt: updatedRes.get('updatedAt'),
|
updatedAt: updatedRes.get('updatedAt'),
|
||||||
@@ -51,9 +64,23 @@ export default async function updateDocument(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_document',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Document not found!' });
|
return response.status(404).json({ error: 'Document not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_document',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide valid field names!' });
|
return response.status(400).json({ error: 'Please provide valid field names!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,14 +6,20 @@ export default async function updateTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const tokenQuery = new Parse.Query('appToken');
|
const tokenQuery = new Parse.Query('appToken');
|
||||||
tokenQuery.equalTo('token', reqToken);
|
tokenQuery.equalTo('token', reqToken);
|
||||||
|
tokenQuery.include('userId');
|
||||||
const token = await tokenQuery.first({ useMasterKey: true });
|
const token = await tokenQuery.first({ useMasterKey: true });
|
||||||
if (token !== undefined) {
|
if (token !== undefined) {
|
||||||
// Valid Token then proceed request
|
// Valid Token then proceed request
|
||||||
const allowedKeys = ['name', 'note', 'description'];
|
const allowedKeys = ['name', 'note', 'description'];
|
||||||
const objectKeys = Object.keys(request.body);
|
const objectKeys = Object.keys(request.body);
|
||||||
const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0;
|
const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0;
|
||||||
|
const parseUser = JSON.parse(JSON.stringify(token));
|
||||||
|
const userPtr = {
|
||||||
|
__type: 'Pointer',
|
||||||
|
className: '_User',
|
||||||
|
objectId: parseUser.userId.objectId,
|
||||||
|
};
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
const userPtr = token.get('userId');
|
|
||||||
const template = new Parse.Query('contracts_Template');
|
const template = new Parse.Query('contracts_Template');
|
||||||
template.equalTo('objectId', request.params.template_id);
|
template.equalTo('objectId', request.params.template_id);
|
||||||
template.equalTo('CreatedBy', userPtr);
|
template.equalTo('CreatedBy', userPtr);
|
||||||
@@ -44,6 +50,13 @@ export default async function updateTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
const updatedRes = await updateQuery.save(null, { useMasterKey: true });
|
const updatedRes = await updateQuery.save(null, { useMasterKey: true });
|
||||||
if (updatedRes) {
|
if (updatedRes) {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_template',
|
||||||
|
properties: { response_code: 200 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.json({
|
return response.json({
|
||||||
objectId: updatedRes.id,
|
objectId: updatedRes.id,
|
||||||
updatedAt: updatedRes.get('updatedAt'),
|
updatedAt: updatedRes.get('updatedAt'),
|
||||||
@@ -51,9 +64,23 @@ export default async function updateTemplate(request, response) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_template',
|
||||||
|
properties: { response_code: 404 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(404).json({ error: 'Template not found!' });
|
return response.status(404).json({ error: 'Template not found!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (request.posthog) {
|
||||||
|
request.posthog?.capture({
|
||||||
|
distinctId: parseUser.userId.email,
|
||||||
|
event: 'update_template',
|
||||||
|
properties: { response_code: 400 },
|
||||||
|
});
|
||||||
|
}
|
||||||
return response.status(400).json({ error: 'Please provide valid field names!' });
|
return response.status(400).json({ error: 'Please provide valid field names!' });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { app as customRoute } from './cloud/customRoute/customApp.js';
|
|||||||
import { exec } from 'child_process';
|
import { exec } from 'child_process';
|
||||||
import { createTransport } from 'nodemailer';
|
import { createTransport } from 'nodemailer';
|
||||||
import { app as v1 } from './cloud/customRoute/v1/apiV1.js';
|
import { app as v1 } from './cloud/customRoute/v1/apiV1.js';
|
||||||
|
import { PostHog } from 'posthog-node';
|
||||||
const spacesEndpoint = new AWS.Endpoint(process.env.DO_ENDPOINT);
|
const spacesEndpoint = new AWS.Endpoint(process.env.DO_ENDPOINT);
|
||||||
// console.log("configuration ", configuration);
|
// console.log("configuration ", configuration);
|
||||||
if (process.env.USE_LOCAL !== 'TRUE') {
|
if (process.env.USE_LOCAL !== 'TRUE') {
|
||||||
@@ -154,6 +154,16 @@ function getUserIP(request) {
|
|||||||
return request.socket.remoteAddress;
|
return request.socket.remoteAddress;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
app.use(function (req, res, next) {
|
||||||
|
const ph_project_api_key = process.env.PH_PROJECT_API_KEY;
|
||||||
|
try {
|
||||||
|
req.posthog = new PostHog(ph_project_api_key);
|
||||||
|
} catch (err) {
|
||||||
|
// console.log('Err', err);
|
||||||
|
req.posthog = '';
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
// Serve static assets from the /public folder
|
// Serve static assets from the /public folder
|
||||||
app.use('/public', express.static(path.join(__dirname, '/public')));
|
app.use('/public', express.static(path.join(__dirname, '/public')));
|
||||||
|
|
||||||
|
|||||||
Generated
+47
@@ -35,6 +35,7 @@
|
|||||||
"parse-server-s3-adapter": "^1.2.0",
|
"parse-server-s3-adapter": "^1.2.0",
|
||||||
"pdf-lib": "^1.16.0",
|
"pdf-lib": "^1.16.0",
|
||||||
"pdfkit": "^0.13.0",
|
"pdfkit": "^0.13.0",
|
||||||
|
"posthog-node": "^3.6.2",
|
||||||
"razorpay": "^2.8.6",
|
"razorpay": "^2.8.6",
|
||||||
"request": "^2.88.2"
|
"request": "^2.88.2"
|
||||||
},
|
},
|
||||||
@@ -8373,6 +8374,47 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/posthog-node": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-tVIaShR3SxBx17AlAUS86jQTweKuJIFRedBB504fCz7YPnXJTYSrVcUHn5IINE2wu4jUQimQK6ihQr90Djrdrg==",
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^1.6.2",
|
||||||
|
"rusha": "^0.8.14"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=15.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/posthog-node/node_modules/axios": {
|
||||||
|
"version": "1.6.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
|
||||||
|
"integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
|
||||||
|
"dependencies": {
|
||||||
|
"follow-redirects": "^1.15.4",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
|
"proxy-from-env": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/posthog-node/node_modules/follow-redirects": {
|
||||||
|
"version": "1.15.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
|
||||||
|
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"debug": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/precond": {
|
"node_modules/precond": {
|
||||||
"version": "0.2.3",
|
"version": "0.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
|
||||||
@@ -8870,6 +8912,11 @@
|
|||||||
"queue-microtask": "^1.2.2"
|
"queue-microtask": "^1.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/rusha": {
|
||||||
|
"version": "0.8.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz",
|
||||||
|
"integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA=="
|
||||||
|
},
|
||||||
"node_modules/safari-14-idb-fix": {
|
"node_modules/safari-14-idb-fix": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz",
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
"parse-server-s3-adapter": "^1.2.0",
|
"parse-server-s3-adapter": "^1.2.0",
|
||||||
"pdf-lib": "^1.16.0",
|
"pdf-lib": "^1.16.0",
|
||||||
"pdfkit": "^0.13.0",
|
"pdfkit": "^0.13.0",
|
||||||
|
"posthog-node": "^3.6.2",
|
||||||
"razorpay": "^2.8.6",
|
"razorpay": "^2.8.6",
|
||||||
"request": "^2.88.2"
|
"request": "^2.88.2"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -726,7 +726,7 @@ const TemplatePlaceholder = () => {
|
|||||||
selector: '[data-tut="reactourFirst"]',
|
selector: '[data-tut="reactourFirst"]',
|
||||||
content: () => (
|
content: () => (
|
||||||
<TourContentWithBtn
|
<TourContentWithBtn
|
||||||
message={`Select a recipient from this list to add a place-holder where he is supposed to sign.The placeholder will appear in the same colour as the recipient name once you drop it on the document.`}
|
message={`Select a role from this list to add a place-holder where he is supposed to sign.The placeholder will appear in the same colour as the recipient name once you drop it on the document.`}
|
||||||
isChecked={handleDontShow}
|
isChecked={handleDontShow}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
@@ -749,7 +749,7 @@ const TemplatePlaceholder = () => {
|
|||||||
selector: '[data-tut="reactourThird"]',
|
selector: '[data-tut="reactourThird"]',
|
||||||
content: () => (
|
content: () => (
|
||||||
<TourContentWithBtn
|
<TourContentWithBtn
|
||||||
message={`Drag the placeholder for a recipient anywhere on the document.Remember, it will appear in the same colour as the name of the recipient for easy reference.`}
|
message={`Drag the placeholder for a role anywhere on the document.Remember, it will appear in the same colour as the name of the recipient for easy reference.`}
|
||||||
isChecked={handleDontShow}
|
isChecked={handleDontShow}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
@@ -1020,11 +1020,11 @@ const TemplatePlaceholder = () => {
|
|||||||
<ModalUi
|
<ModalUi
|
||||||
headerColor={"#dc3545"}
|
headerColor={"#dc3545"}
|
||||||
isOpen={!IsReceipent}
|
isOpen={!IsReceipent}
|
||||||
title={"Receipent required"}
|
title={"Roles"}
|
||||||
handleClose={() => setIsReceipent(true)}
|
handleClose={() => setIsReceipent(true)}
|
||||||
>
|
>
|
||||||
<div style={{ height: "100%", padding: 20 }}>
|
<div style={{ height: "100%", padding: 20 }}>
|
||||||
<p>Please add receipent.</p>
|
<p>Please add a role</p>
|
||||||
</div>
|
</div>
|
||||||
</ModalUi>
|
</ModalUi>
|
||||||
{/* this modal is used show send mail message and after send mail success message */}
|
{/* this modal is used show send mail message and after send mail success message */}
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ function FieldsComponent({
|
|||||||
)}
|
)}
|
||||||
{isSignersModal && (
|
{isSignersModal && (
|
||||||
<ModalUi
|
<ModalUi
|
||||||
title={"Recipients"}
|
title={"Roles"}
|
||||||
isOpen={isSignersModal}
|
isOpen={isSignersModal}
|
||||||
handleClose={handleModal}
|
handleClose={handleModal}
|
||||||
>
|
>
|
||||||
@@ -398,7 +398,7 @@ function FieldsComponent({
|
|||||||
textAlign: "center"
|
textAlign: "center"
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Please add Recipient
|
Please add a role
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</ModalUi>
|
</ModalUi>
|
||||||
|
|||||||
Reference in New Issue
Block a user