133 lines
3.6 KiB
JavaScript
133 lines
3.6 KiB
JavaScript
const UserError = require('vn-loopback/util/user-error');
|
|
|
|
module.exports = Self => {
|
|
Self.remoteMethodCtx('saveThermograph', {
|
|
description: 'Creates or updates a travel thermograph',
|
|
accessType: 'WRITE',
|
|
accepts: [{
|
|
arg: 'id',
|
|
type: 'number',
|
|
description: 'The travel id',
|
|
http: {source: 'path'}
|
|
},
|
|
{
|
|
arg: 'travelThermographFk',
|
|
type: 'number',
|
|
description: 'The travel thermograph id',
|
|
required: true
|
|
},
|
|
{
|
|
arg: 'state',
|
|
type: 'string',
|
|
required: true
|
|
},
|
|
{
|
|
arg: 'maxTemperature',
|
|
type: 'number',
|
|
description: 'The maximum temperature'
|
|
},
|
|
{
|
|
arg: 'minTemperature',
|
|
type: 'number',
|
|
description: 'The minimum temperature'
|
|
},
|
|
{
|
|
arg: 'temperatureFk',
|
|
type: 'string',
|
|
description: 'Range of temperature'
|
|
}, {
|
|
arg: 'warehouseId',
|
|
type: 'Number',
|
|
description: 'The warehouse id'
|
|
}, {
|
|
arg: 'companyId',
|
|
type: 'Number',
|
|
description: 'The company id'
|
|
}, {
|
|
arg: 'dmsTypeId',
|
|
type: 'Number',
|
|
description: 'The dms type id'
|
|
}, {
|
|
arg: 'reference',
|
|
type: 'String'
|
|
}, {
|
|
arg: 'description',
|
|
type: 'String'
|
|
}, {
|
|
arg: 'hasFileAttached',
|
|
type: 'Boolean',
|
|
description: 'True if has an attached file'
|
|
}],
|
|
returns: {type: 'object', root: true},
|
|
http: {path: `/:id/saveThermograph`, verb: 'POST'}
|
|
});
|
|
|
|
Self.saveThermograph = async(
|
|
ctx,
|
|
id,
|
|
travelThermographFk,
|
|
state,
|
|
maxTemperature,
|
|
minTemperature,
|
|
temperatureFk,
|
|
warehouseId,
|
|
companyId,
|
|
dmsTypeId,
|
|
reference,
|
|
description,
|
|
hasFileAttached,
|
|
options
|
|
) => {
|
|
const models = Self.app.models;
|
|
let tx;
|
|
const myOptions = {};
|
|
|
|
if (typeof options == 'object')
|
|
Object.assign(myOptions, options);
|
|
|
|
let dmsFk;
|
|
|
|
if (!myOptions.transaction) {
|
|
tx = await Self.beginTransaction({});
|
|
myOptions.transaction = tx;
|
|
}
|
|
|
|
try {
|
|
const travelThermograph = await models.TravelThermograph.findById(
|
|
travelThermographFk,
|
|
{fields: ['id', 'dmsFk', 'warehouseFk']},
|
|
myOptions
|
|
);
|
|
|
|
if (!travelThermograph)
|
|
throw new UserError('No valid travel thermograph found');
|
|
|
|
if (travelThermograph.dmsFk) {
|
|
await models.Dms.updateFile(ctx, travelThermograph.dmsFk, myOptions);
|
|
dmsFk = travelThermograph.dmsFk;
|
|
} else {
|
|
const uploadedFiles = await models.Dms.uploadFile(ctx, myOptions);
|
|
const firstDms = uploadedFiles[0];
|
|
dmsFk = firstDms.id;
|
|
}
|
|
|
|
await travelThermograph.updateAttributes({
|
|
dmsFk,
|
|
travelFk: id,
|
|
result: state,
|
|
maxTemperature,
|
|
minTemperature,
|
|
temperatureFk,
|
|
warehouseFk: warehouseId,
|
|
}, myOptions);
|
|
|
|
if (tx) await tx.commit();
|
|
|
|
return travelThermograph;
|
|
} catch (err) {
|
|
if (tx) await tx.rollback();
|
|
throw err;
|
|
}
|
|
};
|
|
};
|