add api for get, delete contact, getUser & get Documents

This commit is contained in:
prafull-opensignlabs
2023-12-01 18:04:05 +05:30
parent c1621f64e6
commit 0576123a77
8 changed files with 263 additions and 0 deletions
@@ -0,0 +1,34 @@
//--npm modules
import express from 'express';
import cors from 'cors';
export const app = express();
import dotenv from 'dotenv';
import getUser from './routes/getUser.js';
import getDocuments from './routes/getDocuments.js';
import getDocument from './routes/getDocument.js';
import getContact from './routes/getContact.js';
import deleteContact from './routes/deleteContact.js';
import getContacts from './routes/getContacts.js';
dotenv.config();
app.use(cors());
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
// get user details whose api token used
app.get('/getuser', getUser);
// get all types of documents on the basis of doctype
app.get('/getdocuments', getDocuments);
// get Document on the basis of id
app.get('/document/:document_id', getDocument);
// get contact on the basis of id
app.get('/contact/:contact_id', getContact);
// soft delete contact
app.delete('/contact/:contact_id', deleteContact);
// get list of contacts
app.get('/getcontacts', getContacts);
@@ -0,0 +1,42 @@
export default async function deleteContact(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 Contactbook = new Parse.Query('contracts_Contactbook');
Contactbook.equalTo('objectId', request.params.contact_id);
Contactbook.equalTo('CreatedBy', userId);
const res = await Contactbook.first({ useMasterKey: true });
if (res) {
const isDeleted = res.get('IsDeleted');
if (isDeleted && isDeleted) {
return response.json({ code: 404, message: 'Record not found!' });
} else {
const Contactbook = Parse.Object.extend('contracts_Contactbook');
const deleteQuery = new Contactbook();
deleteQuery.id = request.params.contact_id;
deleteQuery.set('IsDeleted', 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,30 @@
export default async function getContact(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 Contactbook = new Parse.Query('contracts_Contactbook');
Contactbook.equalTo('objectId', request.params.contact_id);
Contactbook.equalTo('CreatedBy', userId);
const res = await Contactbook.first({ useMasterKey: true });
if (res) {
return response.json({ code: 200, result: res });
} 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,29 @@
export default async function getContacts(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 Contactbook = new Parse.Query('contracts_Contactbook');
Contactbook.equalTo('CreatedBy', userId);
const res = await Contactbook.find({ useMasterKey: true });
if (res && res.length > 0) {
return response.json({ code: 200, result: res });
} else {
return response.json({ code: 200, result: [] });
}
} else {
return response.json({ code: 404, message: 'Invalid API Token!' });
}
} catch (err) {
console.log('err ', err);
return response.json(err);
}
}
@@ -0,0 +1,30 @@
export default async function getDocument(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_Document');
Document.equalTo('objectId', request.params.document_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,67 @@
import axios from 'axios';
import reportJson from '../../../parsefunction/reportsJson.js';
import dotenv from 'dotenv';
dotenv.config();
export default async function getDocuments(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 docType = request.body.doctype;
const limit = request.body.limit;
const skip = request.body.skip;
let reportId;
switch (docType) {
case 'draftDocuments':
reportId = 'ByHuevtCFY';
break;
case 'signatureRequest':
reportId = '4Hhwbp482K';
break;
case 'inprogressDocuments':
reportId = '1MwEuxLEkF';
break;
case 'completeDocuments':
reportId = 'kQUoW4hUXz';
break;
case 'expiredDocuments':
reportId = 'zNqBHXHsYH';
break;
case 'declinedDocuments':
reportId = 'UPr2Fm5WY3';
break;
}
const json = reportId && reportJson(reportId, userId);
const clsName = 'contracts_Document';
if (json) {
const { params, keys } = json;
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: [] });
}
} else {
return response.json({ code: 404, message: 'Report is not available!' });
}
}
return response.json({ code: 404, message: 'Invalid API Token!' });
}
@@ -0,0 +1,27 @@
import dotenv from 'dotenv';
dotenv.config();
export default async function getUser(request, response) {
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 userId = token.get('Id');
const query = new Parse.Query(Parse.User);
query.equalTo('objectId', userId);
query.exclude('authData');
let user = await query.first({ useMasterKey: true });
const result = user;
if (result) {
return response.json({ code: 200, result: result });
} else {
return response.json({ code: 404, message: 'Record not found!' });
}
}
return response.json({ code: 404, message: 'Invalid API Token!' });
}
+4
View File
@@ -19,6 +19,7 @@ import AWS from 'aws-sdk';
import { app as customRoute } from './cloud/customRoute/customApp.js';
import { exec } from 'child_process';
import { createTransport } from 'nodemailer';
import { app as v1 } from './cloud/customRoute/v1/apiV1.js';
const spacesEndpoint = new AWS.Endpoint(process.env.DO_ENDPOINT);
// console.log("configuration ", configuration);
@@ -162,6 +163,9 @@ if (!process.env.TESTING) {
// Mount your custom express app
app.use('/', customRoute);
// Mount v1
app.use('/v1', v1);
// Parse Server plays nicely with the rest of your web routes
app.get('/', function (req, res) {
// res.statusCode = 200;