diff --git a/back/methods/machine-worker/updateMachine.js b/back/methods/machine-worker/updateMachine.js new file mode 100644 index 000000000..ac52a3f48 --- /dev/null +++ b/back/methods/machine-worker/updateMachine.js @@ -0,0 +1,71 @@ +module.exports = Self => { + Self.remoteMethodCtx('updateMachine', { + description: '', + accessType: 'WRITE', + accepts: [ + { + arg: 'plate', + type: 'string', + } + ], + returns: { + type: 'object', + root: true + }, + http: { + path: `/update-machine`, + verb: 'POST' + } + }); + + Self.updateMachine = async(ctx, plate, options) => { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + + let tx; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + let insertState = false; + + const machine = await models.Machine.findOne({ + fields: ['id', 'plate'], + where: {plate} + }, myOptions); + + if (machine) { + const {maxHours} = await models.MachineWorkerConfig.findOne({fields: ['maxHours']}, myOptions); + + const machineWorker = await models.MachineWorker.findOne({ + where: { + workerFk: userId, + inTime: {gte: new Date(Date.now() - maxHours * 60 * 60 * 1000)}, + outTimed: null, + machineFk: machine.id, + } + + }); + if (machineWorker) { + await machineWorker.updateAttributes({ + inTime: new Date(Date.now()) + }, myOptions); + } + insertState = true; + } + + if (tx) await tx.commit(); + return insertState; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; +}; diff --git a/back/model-config.json b/back/model-config.json index ebc0e321b..856167757 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -79,9 +79,15 @@ "Language": { "dataSource": "vn" }, + "Machine": { + "dataSource": "vn" + }, "MachineWorker": { "dataSource": "vn" }, + "MachineWorkerConfig": { + "dataSource": "vn" + }, "MobileAppVersionControl": { "dataSource": "vn" }, diff --git a/back/models/machine-worker-config.json b/back/models/machine-worker-config.json new file mode 100644 index 000000000..dfb77124e --- /dev/null +++ b/back/models/machine-worker-config.json @@ -0,0 +1,18 @@ +{ + "name": "MachineWorkerConfig", + "base": "VnModel", + "options": { + "mysql": { + "table": "vn.machineWorkerConfig" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "maxHours": { + "type": "number" + } + } +} diff --git a/back/models/machine-worker.js b/back/models/machine-worker.js new file mode 100644 index 000000000..324ca28a9 --- /dev/null +++ b/back/models/machine-worker.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/machine-worker/updateMachine')(Self); +}; diff --git a/back/models/machine.json b/back/models/machine.json new file mode 100644 index 000000000..7029091a2 --- /dev/null +++ b/back/models/machine.json @@ -0,0 +1,18 @@ +{ + "name": "Machine", + "base": "VnModel", + "options": { + "mysql": { + "table": "vn.machine" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "plate": { + "type": "string" + } + } +} diff --git a/db/changes/234601/00-newWareHouse.sql b/db/changes/234801/00-newWareHouse.sql similarity index 60% rename from db/changes/234601/00-newWareHouse.sql rename to db/changes/234801/00-newWareHouse.sql index 4a2344330..e55835563 100644 --- a/db/changes/234601/00-newWareHouse.sql +++ b/db/changes/234801/00-newWareHouse.sql @@ -1,4 +1,8 @@ INSERT INTO `salix`.`ACL` (model, property, accessType, permission, principalType, principalId) VALUES ('Collection', 'assignCollection', 'WRITE', 'ALLOW', 'ROLE', 'employee'), - ('ExpeditionPallet', 'getPallet', 'READ', 'ALLOW', 'ROLE', 'employee'); \ No newline at end of file + ('ExpeditionPallet', 'getPallet', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('MachineWorker','updateMachine','WRITE','ALLOW','ROLE','employee'); + +INSERT INTO `vn`.`machineWorkerConfig` (id, maxHours) + VALUES (1, 12) \ No newline at end of file