add api for template, createDocument

This commit is contained in:
prafull-opensignlabs
2023-12-12 19:37:59 +05:30
parent b47bf437a9
commit 4866447f33
6 changed files with 261 additions and 0 deletions
@@ -9,6 +9,11 @@ import getDocument from './routes/getDocument.js';
import getContact from './routes/getContact.js';
import deleteContact from './routes/deleteContact.js';
import getContactList from './routes/getContactList.js';
import createDocument from './routes/createDocument.js';
import createTemplate from './routes/createTemplate.js';
import getTemplate from './routes/getTemplate.js';
import deletedTemplate from './routes/deleteTemplate.js';
import getTemplatetList from './routes/getTemplateList.js';
dotenv.config();
app.use(cors());
@@ -32,3 +37,19 @@ app.delete('/contact/:contact_id', deleteContact);
// get list of contacts
app.get('/contactlist', getContactList);
// create Document
app.post('/createdocument', createDocument);
// create Template
app.post('/createtemplate', createTemplate);
// get template on the basis of id
app.get('/template/:template_id', getTemplate);
// get template on the basis of id
app.delete('/template/:template_id', deletedTemplate);
// get all types of documents on the basis of doctype
app.get('/templatelist', getTemplatetList);
@@ -0,0 +1,55 @@
export default async function createDocument(request, response) {
const name = request.body.name;
const note = request.body.note;
const description = request.body.description;
const signers = request.body.signer;
const folderId = request.body.folderId;
const file = request.body.file;
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
return response.json({ message: 'Please Provide API Token' });
}
const tokenQuery = new Parse.Query('appToken');
tokenQuery.equalTo('token', reqToken);
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
const id = token.get('Id');
const userId = { __type: 'Pointer', className: '_User', objectId: id };
const contractsUser = new Parse.Query('contracts_Users');
contractsUser.equalTo('UserId', userId);
const extUser = await contractsUser.first({ useMasterKey: true });
const extUserPtr = { __type: 'Pointer', className: 'contracts_Users', objectId: extUser.id };
const folderPtr = { __type: 'Pointer', className: 'contracts_Document', objectId: folderId };
const object = new Parse.Object('contracts_Document');
object.set('Name', name);
if (note) {
object.set('Note', note);
}
if (description) {
object.set('Description', description);
}
object.set('URL', file);
object.set('CreatedBy', userId);
object.set('ExtUserPtr', extUserPtr);
if (signers) {
object.set('Signers', signers);
}
if (folderId) {
object.set('Folder', folderPtr);
}
const res = await object.save(null, { useMasterKey: true });
return response.json({ code: 200, result: res });
} else {
return response.json({ code: 404, message: 'Invalid API Token!' });
}
} catch (err) {
console.log('err ', err);
return response.json(err);
}
}
@@ -0,0 +1,54 @@
export default async function createTemplate(request, response) {
const name = request.body.name;
const note = request.body.note;
const description = request.body.description;
const signers = request.body.signer;
const folderId = request.body.folderId;
const file = request.body.file;
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
return response.json({ message: 'Please Provide API Token' });
}
const tokenQuery = new Parse.Query('appToken');
tokenQuery.equalTo('token', reqToken);
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
const id = token.get('Id');
const userId = { __type: 'Pointer', className: '_User', objectId: id };
const contractsUser = new Parse.Query('contracts_Users');
contractsUser.equalTo('UserId', userId);
const extUser = await contractsUser.first({ useMasterKey: true });
const extUserPtr = { __type: 'Pointer', className: 'contracts_Users', objectId: extUser.id };
const folderPtr = { __type: 'Pointer', className: 'contracts_Template', objectId: folderId };
const object = new Parse.Object('contracts_Template');
object.set('Name', name);
if (note) {
object.set('Note', note);
}
if (description) {
object.set('Description', description);
}
object.set('URL', file);
object.set('CreatedBy', userId);
object.set('ExtUserPtr', extUserPtr);
if (signers) {
object.set('Signers', signers);
}
if (folderId) {
object.set('Folder', folderPtr);
}
const res = await object.save(null, { useMasterKey: true });
return response.json({ code: 200, result: res });
} else {
return response.json({ code: 404, message: 'Invalid API Token!' });
}
} catch (err) {
console.log('err ', err);
return response.json(err);
}
}
@@ -0,0 +1,42 @@
export default async function deletedTemplate(request, response) {
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
return response.json({ message: 'Please Provide API Token' });
}
const tokenQuery = new Parse.Query('appToken');
tokenQuery.equalTo('token', reqToken);
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
const id = token.get('Id');
const userId = { __type: 'Pointer', className: '_User', objectId: id };
const template = new Parse.Query('contracts_Template');
template.equalTo('objectId', request.params.template_id);
template.equalTo('CreatedBy', userId);
const res = await template.first({ useMasterKey: true });
if (res) {
const isDeleted = res.get('IsArchive');
if (isDeleted && isDeleted) {
return response.json({ code: 404, message: 'Record not found!' });
} else {
const template = Parse.Object.extend('contracts_Template');
const deleteQuery = new template();
deleteQuery.id = request.params.template_id;
deleteQuery.set('IsArchive', true);
const deleteRes = await deleteQuery.save(null, { useMasterKey: true });
if (deleteRes) {
return response.json({ code: 200, result: 'Record delete successfully!' });
}
}
} else {
return response.json({ code: 404, message: 'Record not found!' });
}
} else {
return response.json({ code: 404, message: 'Invalid API Token!' });
}
} catch (err) {
console.log('err ', err);
return response.json(err);
}
}
@@ -0,0 +1,31 @@
export default async function getTemplate(request, response) {
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
return response.json({ message: 'Please Provide API Token' });
}
const tokenQuery = new Parse.Query('appToken');
tokenQuery.equalTo('token', reqToken);
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
const id = token.get('Id');
const userId = { __type: 'Pointer', className: '_User', objectId: id };
const Document = new Parse.Query('contracts_Template');
Document.equalTo('objectId', request.params.template_id);
Document.equalTo('CreatedBy', userId);
const res = await Document.first({ useMasterKey: true });
if (res) {
return response.json({ code: 200, result: res });
} else {
return response.json({ code: 404, message: 'Document not found!' });
}
} else {
return response.json({ code: 404, message: 'Invalid API Token!' });
}
} catch (err) {
console.log('err ', err);
return response.json(err);
}
}
@@ -0,0 +1,58 @@
import axios from 'axios';
import reportJson from '../../../parsefunction/reportsJson.js';
import dotenv from 'dotenv';
dotenv.config();
export default async function getTemplatetList(request, response) {
const reqToken = request.headers['x-api-token'];
const appId = process.env.APP_ID;
const serverUrl = process.env.SERVER_URL;
if (!reqToken) {
return response.json({ message: 'Please Provide API Token' });
}
const tokenQuery = new Parse.Query('appToken');
tokenQuery.equalTo('token', reqToken);
const token = await tokenQuery.first({ useMasterKey: true });
if (token !== undefined) {
// Valid Token then proceed request
const userId = token.get('Id');
const limit = request.body.limit ? request.body.limit : 200;
const skip = request.body.skip ? request.body.skip : 0;
const clsName = 'contracts_Template';
const params = {
Type: { $ne: 'Folder' },
CreatedBy: {
__type: 'Pointer',
className: '_User',
objectId: userId,
},
IsArchive: { $ne: true },
};
const keys = [
'Name',
'Note',
'Description',
'Folder.Name',
'URL',
'ExtUserPtr.Name',
'Signers.Name',
];
const orderBy = '-updatedAt';
const strParams = JSON.stringify(params);
const strKeys = keys.join();
const headers = {
'Content-Type': 'application/json',
'X-Parse-Application-Id': appId,
'X-Parse-Master-Key': process.env.MASTER_KEY,
};
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 });
if (res.data && res.data.results) {
return response.json({ code: 200, result: res.data.results });
} else {
return response.json({ code: 200, result: [] });
}
}
return response.json({ code: 404, message: 'Invalid API Token!' });
}