salix/modules/travel/back/methods/travel/saveThermograph.js

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;
}
};
};