UNPKG

@universis/evaluations

Version:

Universis evaluations library

148 lines (108 loc) 6.03 kB
"use strict";var _data = require("@themost/data"); var _lodash = _interopRequireDefault(require("lodash")); var _path = _interopRequireDefault(require("path")); var _utils = require("@themost/common/utils"); var _errors = require("@themost/common/errors");var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2;function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {var desc = {};Object.keys(descriptor).forEach(function (key) {desc[key] = descriptor[key];});desc.enumerable = !!desc.enumerable;desc.configurable = !!desc.configurable;if ('value' in desc || desc.initializer) {desc.writable = true;}desc = decorators.slice().reverse().reduce(function (desc, decorator) {return decorator(target, property, desc) || desc;}, desc);if (context && desc.initializer !== void 0) {desc.value = desc.initializer ? desc.initializer.call(context) : void 0;desc.initializer = undefined;}if (desc.initializer === void 0) {Object.defineProperty(target, property, desc);desc = null;}return desc;} /** * @class * @property {number} id * @augments {DataObject} */let EvaluationDocument = (_dec = _data.EdmMapping.entityType('EvaluationDocument'), _dec2 = _data.EdmMapping.param('extraAttributes', 'Object', true, true), _dec3 = _data.EdmMapping.param('file', _data.EdmType.EdmStream, false), _dec4 = _data.EdmMapping.action('Add', 'EvaluationDocument'), _dec5 = _data.EdmMapping.param('attachment', 'EvaluationDocument', true, true), _dec6 = _data.EdmMapping.action('RemoveAttachment', 'EvaluationDocument'), _dec(_class = (_class2 = class EvaluationDocument extends _data.DataObject {/** * @constructor */constructor() {super();}static async next(context) {return await new Promise((resolve, reject) => {context.db.nextIdentity('EvaluationDocument', 'documentNumber', (err, value) => {if (err) {return reject(err);}return resolve(value);});});} /** * Adds an attachment * @param {*} file * @param {*=} extraAttributes */static async add(context, file, extraAttributes) {const attachment = Object.assign({ name: file.contentFileName }, file, extraAttributes);return await EvaluationDocument._addAttachment(context, attachment);} /** * Removes an attachment * @param {*} attachment */static async removeAttachment(context, attachment) {return await EvaluationDocument._removeAttachment(context, attachment.id);}static _addAttachment(context, file) {let finalResult;return new Promise((resolve, reject) => {context.db.executeInTransaction((callback) => {if (typeof file.originalname === 'string') { file.name = file.originalname.replace(/\.[A-Z0-9]+$/ig, function (x) { return x.toLowerCase(); }); } const mime = file.mimetype || file.contentType; if (_lodash.default.isNil(mime)) { return reject(new Error('The specified file type is not supported by the system.')); } const addAttributes = {}; _lodash.default.forEach(context.model(file.additionalType || 'EvaluationDocument').attributeNames, (attribute) => { if (Object.prototype.hasOwnProperty.call(file, attribute)) { addAttributes[attribute] = file[attribute]; } }); const newAttachment = _lodash.default.assign(addAttributes, { contentType: mime }); const svc = context.getApplication().getService(function PrivateContentService() {}); //add attachment to attachments let filePath; if (file.destination && file.filename) { filePath = _path.default.resolve(file.destination, file.filename); } else { filePath = file.path; } newAttachment.additionalType = file.additionalType || 'EvaluationDocument'; svc.copyFrom(context, filePath, newAttachment, function (err) { if (err) { _utils.TraceUtils.error(err); return callback(new _errors.HttpServerError()); } svc.resolveUrl(context, newAttachment, function (err, url) { if (err) { return callback(err); } else { finalResult = _lodash.default.assign({}, newAttachment, { url: url, name: newAttachment.filename }); return callback(); } }); }); }, (err) => { if (err) { return reject(err); } return resolve(finalResult); }); }); } removeAttachment(context, id) { let result; return new Promise((resolve, reject) => { context.db.executeInTransaction((callback) => { //get attachment return context.model('Attachment').where('id').equal(id).getItem().then((attachment) => { if (attachment) { //remove attachment connection return self.property('attachments').remove(attachment, (err) => { //remove attachment if (err) { return callback(err); } return context.model('Attachment').silent().remove(attachment).then(() => { result = attachment; return callback(); }).catch((err) => { return callback(err); }); }); } return callback(new _errors.DataNotFoundError()); }).catch((err) => { return callback(err); }); }, (err) => { if (err) { return reject(err); } return resolve(result); }); }); }}, (_applyDecoratedDescriptor(_class2, "add", [_dec2, _dec3, _dec4], Object.getOwnPropertyDescriptor(_class2, "add"), _class2), _applyDecoratedDescriptor(_class2, "removeAttachment", [_dec5, _dec6], Object.getOwnPropertyDescriptor(_class2, "removeAttachment"), _class2)), _class2)) || _class); module.exports = EvaluationDocument; //# sourceMappingURL=evaluation-document-model.js.map