mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-08-17 21:25:54 +02:00
49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
import { MAX_DESCRIPTION_LENGTH, MAX_NAME_LENGTH, MAX_NOTE_LENGTH } from '../../Utils.js';
|
|
import { setDocumentCount } from '../../utils/CountUtils.js';
|
|
|
|
async function DocumentBeforesave(request) {
|
|
if (!request.original) {
|
|
const validations = [
|
|
{ field: 'Name', max: MAX_NAME_LENGTH },
|
|
{ field: 'Note', max: MAX_NOTE_LENGTH },
|
|
{ field: 'Description', max: MAX_DESCRIPTION_LENGTH },
|
|
];
|
|
|
|
for (const { field, max } of validations) {
|
|
const value = request?.object?.get(field);
|
|
if (value && value.length > max) {
|
|
throw new Parse.Error(
|
|
Parse.Error.VALIDATION_ERROR,
|
|
`The "${field}" field must be at most ${max} characters long.`
|
|
);
|
|
}
|
|
}
|
|
|
|
const TimeToCompleteDays = request?.object?.get('TimeToCompleteDays') || 15;
|
|
const RemindOnceInEvery = request?.object?.get('RemindOnceInEvery') || 5;
|
|
const AutoReminder = request?.object?.get('AutomaticReminders') || false;
|
|
const reminderCount = TimeToCompleteDays / RemindOnceInEvery;
|
|
if (AutoReminder && reminderCount > 15) {
|
|
throw new Parse.Error(Parse.Error.INVALID_QUERY, 'only 15 reminder allowed');
|
|
}
|
|
}
|
|
try {
|
|
// below code is used to update document when user sent document or self signed
|
|
const document = request.object;
|
|
const oldDocument = request.original;
|
|
|
|
// Check if SignedUrl field has been added (transition from undefined to defined)
|
|
if (oldDocument && !oldDocument?.get('SignedUrl') && document?.get('SignedUrl')) {
|
|
if (oldDocument?.get('ExtUserPtr')?.id) {
|
|
setDocumentCount(oldDocument?.get('ExtUserPtr')?.id);
|
|
}
|
|
if (document?.get('Signers') && document.get('Signers').length > 0) {
|
|
document.set('DocSentAt', new Date());
|
|
}
|
|
}
|
|
} catch (err) {
|
|
console.log('err in document beforesave', err.message);
|
|
}
|
|
}
|
|
export default DocumentBeforesave;
|