feat: api for createtemplate using base64 and binary

This commit is contained in:
prafull-opensignlabs
2024-01-24 23:17:44 +05:30
parent 07851ccde2
commit 55cfbae8a7
7 changed files with 62 additions and 67 deletions
@@ -131,7 +131,7 @@ export default async function createContact(request, response) {
} catch (err) {
console.log('err ', err);
if (err.code === 137) {
return response.status(137).json({ error: 'Contact already exists!' });
return response.status(401).json({ error: 'Contact already exists!' });
} else {
return response
.status(400)
@@ -7,10 +7,10 @@ export default async function createDocument(request, response) {
const description = request.body.Description;
const signers = request.body.Signers;
const folderId = request.body.FolderId;
const base64File = request.body.file;
const base64File = request.body.File;
const url = request?.get('host');
const fileData = request.files?.[0] ? request.files[0].buffer : null;
console.log('fileData ', fileData);
// console.log('fileData ', fileData);
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
@@ -76,7 +76,7 @@ export default async function createDocument(request, response) {
contactbook.notEqualTo('IsDeleted', true);
contactbook.containedIn('Email', parseSigners);
const contactbookRes = await contactbook.find({ useMasterKey: true });
console.log('contactbookRes ', contactbookRes);
// console.log('contactbookRes ', contactbookRes);
const parseContactbookRes = JSON.parse(JSON.stringify(contactbookRes));
// console.log('userPtr ', userPtr);
// const newContacts = parseSigners
@@ -1,13 +1,13 @@
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 file = request.body.file;
const url = process.env.SERVER_URL;
const fileData = request.files[0] ? request.files[0].buffer : null;
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 fileData = request.files?.[0] ? request.files[0].buffer : null;
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
@@ -19,13 +19,23 @@ export default async function createTemplate(request, response) {
if (token !== undefined) {
// Valid Token then proceed request
const userPtr = token.get('userId');
const file = new Parse.File(request.files?.[0]?.originalname, {
base64: fileData.toString('base64'),
});
await file.save({ useMasterKey: true });
const fileUrl = file.url();
let fileUrl;
if (base64File) {
const file = new Parse.File(`${name}.pdf`, {
base64: base64File,
});
await file.save({ useMasterKey: true });
fileUrl = file.url();
} else {
const file = new Parse.File(request.files?.[0]?.originalname, {
base64: fileData?.toString('base64'),
});
await file.save({ useMasterKey: true });
fileUrl = file.url();
}
const contractsUser = new Parse.Query('contracts_Users');
contractsUser.equalTo('UserId', userId);
contractsUser.equalTo('UserId', userPtr);
const extUser = await contractsUser.first({ useMasterKey: true });
const extUserPtr = { __type: 'Pointer', className: 'contracts_Users', objectId: extUser.id };
@@ -43,17 +53,29 @@ export default async function createTemplate(request, response) {
object.set('CreatedBy', userPtr);
object.set('ExtUserPtr', extUserPtr);
if (signers) {
const parseSigners = JSON.parse(signers);
const placeholders = parseSigners.map((x, i) => ({
email: x,
Id: randomId(),
Role: 'User ' + (i + 1),
blockColor: '',
signerObjId: '',
signerPtr: {},
placeHolder: [],
}));
object.set('Placeholders', placeholders);
let parseSigners;
if (base64File) {
parseSigners = signers;
} else {
parseSigners = JSON.parse(signers);
}
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,
}))
);
}
if (folderId) {
object.set('Folder', folderPtr);
@@ -65,7 +87,10 @@ export default async function createTemplate(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: 'https://' + url + '/load/signmicroapp/template/' + res.id,
});
} else {
return response.status(405).json({ error: 'Invalid API Token!' });
}
@@ -13,7 +13,7 @@ export default async function TemplateAfterSave(request) {
}
}
} else {
if (request.user) {
if (request?.user) {
const signers = request.object.get('Signers');
if (signers && signers.length > 0) {
await updateAclDoc(request.object.id);
@@ -112,7 +112,6 @@ async function sendDoctoWebhook(t) {
.post(t?.data?.ExtUserPtr?.Webhook, e, { headers: { 'Content-Type': 'application/json' } })
.then(e => {
try {
console.log('res ', e);
var a = new Parse.Object('contracts_Webhook');
a.set('Log', e?.status),
a.set('UserId', {