Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const randomId = () => Math.floor(1000 + Math.random() * 9000);
export default async function createDocumentWithTemplate(request, response) {
const signers = request.body.Signers;
const folderId = request.body.FolderId;
const signers = request.body.signers;
const folderId = request.body.folderId;
const templateId = request.params.template_id;
const url = process.env.SERVER_URL;
const url = new URL(process.env.SERVER_URL);
let protocol = url.origin;

try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
Expand Down Expand Up @@ -40,31 +42,52 @@ export default async function createDocumentWithTemplate(request, response) {
if (template?.Description) {
object.set('Description', template.Description);
}
if (template?.Signers) {
object.set('Signers', template?.Signers);
}
object.set('URL', template.URL);
object.set('CreatedBy', template.CreatedBy);
object.set('ExtUserPtr', template.ExtUserPtr);
if (signers) {
const placeholders = template?.Placeholders?.map(placeholder => {
let matchingSigner = signers.find(y => y.Role === placeholder.Role);
if (matchingSigner) {
return {
...placeholder,
email: matchingSigner.Email,
signerObjId: '',
signerPtr: {},
};
let templateSigner = template?.Signers ? template?.Signers : [];
if (signers && signers.length > 0) {
let parseSigners;
if (base64File) {
parseSigners = signers;
} else {
return {
...placeholder,
parseSigners = JSON.parse(signers);
}
let createContactUrl = protocol + '/v1/createcontact';

let contact = [];
for (const obj of parseSigners) {
const body = {
name: obj?.name || '',
email: obj?.email || '',
phone: obj?.phone || '',
};
try {
const res = await axios.post(createContactUrl, body, {
headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken },
});
// console.log('res ', res.data);
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: res.data?.objectId,
});
} catch (err) {
// console.log('err ', err.response);
if (err?.response?.data?.objectId) {
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: err.response.data?.objectId,
});
}
}
}
});
console.log('placeholders ', placeholders);
object.set('Placeholders', placeholders);
object.set('Signers', [...templateSigner, ...contact]);
} else {
object.set('Signers', templateSigner);
}

object.set('URL', template.URL);
object.set('CreatedBy', template.CreatedBy);
object.set('ExtUserPtr', template.ExtUserPtr);
if (folderId) {
object.set('Folder', folderPtr);
}
Expand All @@ -75,7 +98,10 @@ export default async function createDocumentWithTemplate(request, response) {
newACL.setWriteAccess(userPtr.id, true);
object.setACL(newACL);
const res = await object.save(null, { useMasterKey: true });
return response.json({ objectId: res.id, url: url });
return response.json({
objectId: res.id,
url: protocol + '/load/signmicroapp/placeholdersign/' + res.id,
});
} else {
return response.status(400).json({ error: 'Please provide signers properly!' });
}
Expand All @@ -95,4 +121,4 @@ export default async function createDocumentWithTemplate(request, response) {
}
return response.status(400).json({ error: 'Something went wrong!' });
}
}
}
98 changes: 44 additions & 54 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
// import batchQuery from './batchquery.js';
import axios from 'axios';

// const randomId = () => Math.floor(1000 + Math.random() * 9000);
export default async function createDocument(request, response) {
const name = request.body.Title;
const note = request.body.Note;
const description = request.body.Description;
const signers = request.body.Signers;
const folderId = request.body.FolderId;
const base64File = request.body.File;
const url = request?.get('host');
const name = request.body.title;
const note = request.body.note;
const description = request.body.description;
const signers = request.body.signers;
const folderId = request.body.folderId;
const base64File = request.body.file;
const fileData = request.files?.[0] ? request.files[0].buffer : null;
// console.log('fileData ', fileData);
const url = new URL(process.env.SERVER_URL);
let protocol = url.origin;

try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
Expand All @@ -21,7 +23,7 @@ export default async function createDocument(request, response) {
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
if (signers) {
if (signers && signers.length > 0) {
const userPtr = token.get('userId');
let fileUrl;
if (request.files?.[0]) {
Expand Down Expand Up @@ -63,56 +65,44 @@ export default async function createDocument(request, response) {
object.set('URL', fileUrl);
object.set('CreatedBy', userPtr);
object.set('ExtUserPtr', extUserPtr);
if (signers) {
if (signers && signers.length > 0) {
let parseSigners;
if (base64File) {
parseSigners = signers;
} else {
parseSigners = JSON.parse(signers);
}
let createContactUrl = protocol + '/v1/createcontact';

const contactbook = new Parse.Query('contracts_Contactbook');
contactbook.equalTo('UserId', userPtr);
contactbook.notEqualTo('IsDeleted', true);
contactbook.containedIn('Email', parseSigners);
const contactbookRes = await contactbook.find({ useMasterKey: true });
// console.log('contactbookRes ', contactbookRes);
const parseContactbookRes = JSON.parse(JSON.stringify(contactbookRes));
// console.log('userPtr ', userPtr);
// const newContacts = parseSigners
// .filter(x => !parseContactbookRes.some(y => y.Email === x))
// .map(email => ({
// method: 'POST',
// path: '/app/classes/contracts_Contactbook',
// body: {
// Email: email,
// CreatedBy: { __type: 'Pointer', className: '_User', objectId: userPtr.id },
// UserId: { __type: 'Pointer', className: '_User', objectId: userPtr.id },
// Role: 'contracts_Guest',
// IsDeleted: false,
// ACL: {
// [userPtr.id]: { read: true, write: true },
// },
// },
// }));
// console.log('newContacts', newContacts);
let contactSigners = parseContactbookRes?.map(x => ({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: x.objectId,
}));
// if (newContacts.length > 0) {
// const batchRes = await batchQuery(newContacts);
// const contacts = batchRes?.map(x => ({
// __type: 'Pointer',
// className: 'contracts_Contactbook',
// objectId: x.success.objectId,
// }));
// contactSigners = [...contactSigners, ...contacts];
// }
// console.log('contactsigners', contactSigners);

object.set('Signers', contactSigners);
let contact = [];
for (const obj of parseSigners) {
const body = {
name: obj?.name || '',
email: obj?.email || '',
phone: obj?.phone || '',
};
try {
const res = await axios.post(createContactUrl, body, {
headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken },
});
// console.log('res ', res.data);
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: res.data?.objectId,
});
} catch (err) {
// console.log('err ', err.response);
if (err?.response?.data?.objectId) {
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: err.response.data?.objectId,
});
}
}
}
object.set('Signers', contact);
}
if (folderId) {
object.set('Folder', folderPtr);
Expand All @@ -126,7 +116,7 @@ export default async function createDocument(request, response) {
const res = await object.save(null, { useMasterKey: true });
return response.json({
objectId: res.id,
url: 'https://' + url + '/load/signmicroapp/placeholdersign/' + res.id,
url: protocol + '/load/signmicroapp/placeholdersign/' + res.id,
});
} else {
return response.status(400).json({ error: 'Please provide signers!' });
Expand All @@ -138,4 +128,4 @@ export default async function createDocument(request, response) {
console.log('err ', err);
return response.status(400).json({ error: 'Something went wrong!' });
}
}
}
68 changes: 42 additions & 26 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
const randomId = () => Math.floor(1000 + Math.random() * 9000);
export default async function createTemplate(request, response) {
const name = request.body?.Title;
const note = request.body?.Note;
const description = request.body?.Description;
const signers = request.body?.Signers;
const folderId = request.body?.FolderId;
const url = request?.get('host');
const base64File = request.body.File;
const name = request.body?.title;
const note = request.body?.note;
const description = request.body?.description;
const signers = request.body?.signers;
const folderId = request.body?.folderId;
const base64File = request.body.file;
const fileData = request.files?.[0] ? request.files[0].buffer : null;
const url = new URL(process.env.SERVER_URL);
let protocol = url.origin;

try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
Expand Down Expand Up @@ -52,30 +54,44 @@ export default async function createTemplate(request, response) {
object.set('URL', fileUrl);
object.set('CreatedBy', userPtr);
object.set('ExtUserPtr', extUserPtr);
if (signers) {
if (signers && signers.length > 0) {
let parseSigners;
if (base64File) {
parseSigners = signers;
} else {
parseSigners = JSON.parse(signers);
}
let createContactUrl = protocol + '/v1/createcontact';

const contactbook = new Parse.Query('contracts_Contactbook');
contactbook.containedIn('Email', parseSigners);
contactbook.equalTo('UserId', userPtr);
contactbook.notEqualTo('IsDeleted', true);
const contactbookRes = await contactbook.find({ useMasterKey: true });
// console.log('contactbookRes ', contactbookRes);
const parseContactbookRes = JSON.parse(JSON.stringify(contactbookRes));

object.set(
'Signers',
parseContactbookRes?.map(x => ({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: x.objectId,
}))
);
let contact = [];
for (const obj of parseSigners) {
const body = {
name: obj?.name || '',
email: obj?.email || '',
phone: obj?.phone || '',
};
try {
const res = await axios.post(createContactUrl, body, {
headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken },
});
// console.log('res ', res.data);
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: res.data?.objectId,
});
} catch (err) {
// console.log('err ', err.response);
if (err?.response?.data?.objectId) {
contact.push({
__type: 'Pointer',
className: 'contracts_Contactbook',
objectId: err.response.data?.objectId,
});
}
}
}
object.set('Signers', contact);
}
if (folderId) {
object.set('Folder', folderPtr);
Expand All @@ -89,7 +105,7 @@ export default async function createTemplate(request, response) {
const res = await object.save(null, { useMasterKey: true });
return response.json({
objectId: res.id,
url: 'https://' + url + '/load/signmicroapp/template/' + res.id,
url: protocol + '/load/signmicroapp/template/' + res.id,
});
} else {
return response.status(405).json({ error: 'Invalid API Token!' });
Expand All @@ -98,4 +114,4 @@ export default async function createTemplate(request, response) {
console.log('err ', err);
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,20 @@ export default async function updateDocument(request, response) {
const document = Parse.Object.extend('contracts_Document');
const updateQuery = new document();
updateQuery.id = request.params.document_id;
if (request?.body?.Name) {
updateQuery.set('Name', request?.body?.Name);
if (request?.body?.name) {
updateQuery.set('Name', request?.body?.name);
}
if (request?.body?.Note) {
updateQuery.set('Note', request?.body?.Note);
if (request?.body?.note) {
updateQuery.set('Note', request?.body?.note);
}
if (request?.body?.Description) {
updateQuery.set('Name', request?.body?.Description);
if (request?.body?.description) {
updateQuery.set('Name', request?.body?.description);
}
if (request?.body?.FolderId) {
if (request?.body?.folderId) {
updateQuery.set('Folder', {
__type: 'Pointer',
className: 'contracts_Document',
objectId: request?.body?.FolderId,
objectId: request?.body?.folderId,
});
}
const updatedRes = await updateQuery.save(null, { useMasterKey: true });
Expand Down
Loading