feat: add time control
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Vicent Llopis 2022-11-07 12:21:14 +01:00
parent 6858de83a3
commit ffa0ff650e
5 changed files with 28 additions and 49 deletions

View File

@ -2715,7 +2715,6 @@ UPDATE `account`.`user`
SET `hasGrant` = 1
WHERE `id` = 66;
INSERT INTO `vn`.`osTicketConfig` (`id`, `host`, `user`, `password`, `oldStatus`, `newStatusId`, `day`, `comment`, `hostDb`, `userDb`, `passwordDb`, `portDb`, `responseType`, `fromEmailId`, `replyTo`)
VALUES
(0, 'http://localhost:56596/scp', 'ostadmin', 'Admin1', 'open', 3, 60, 'Este CAU se ha cerrado automáticamente. Si el problema persiste responda a este mensaje.', 'localhost', 'osticket', 'osticket', 40003, 'reply', 1, 'all');

View File

@ -162,6 +162,8 @@ module.exports = Self => {
let previousWorkerFk = days[index][0].workerFk;
let previousReceiver = days[index][0].receiver;
const workerTimeControlConfig = await models.WorkerTimeControlConfig.findOne(null, myOptions);
for (let day of days[index]) {
workerFk = day.workerFk;
if (day.timeWorkDecimal > 0 && day.timeWorkedDecimal == null
@ -176,7 +178,7 @@ module.exports = Self => {
isSendMail: true
}, myOptions);
if (day.timeWorkDecimal >= 5) {
if (day.timeWorkDecimal >= workerTimeControlConfig.timeToBreakTime / 3600) {
await models.WorkerTimeControl.create({
userFk: day.workerFk,
timed: timed.setHours(9),
@ -227,7 +229,6 @@ module.exports = Self => {
for (let journey of journeys) {
const timeTableDecimal = timeTableDecimalInSeconds / 3600;
console.log(timeTableDecimal);
if (day.timeWorkDecimal == timeTableDecimal) {
const timed = new Date(day.dated);
const [startHours, startMinutes, startSeconds] = getTime(journey.start);
@ -273,7 +274,7 @@ module.exports = Self => {
}
}
if (day.timeWorkDecimal >= 5) {
if (day.timeWorkDecimal >= workerTimeControlConfig.timeToBreakTime / 3600) {
const minStart = journeys.reduce(function(prev, curr) {
return curr.start < prev.start ? curr : prev;
});

View File

@ -1,4 +1,3 @@
/* eslint max-len: ["error", { "code": 150 }]*/
const models = require('vn-loopback/server/server').models;
fdescribe('workerTimeControl sendMail()', () => {
@ -18,7 +17,7 @@ fdescribe('workerTimeControl sendMail()', () => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
it('should fill time control of a worker...', async() => {
it('should fill time control of a worker without records in Journey and and with rest', async() => {
const tx = await models.WorkerTimeControl.beginTransaction({});
try {
@ -42,7 +41,7 @@ fdescribe('workerTimeControl sendMail()', () => {
}
});
it('should fill time control of a worker2...', async() => {
it('should fill time control of a worker without records in Journey and and without rest', async() => {
const workdayOf20Hours = 3;
const tx = await models.WorkerTimeControl.beginTransaction({});
@ -69,8 +68,7 @@ fdescribe('workerTimeControl sendMail()', () => {
}
});
it('should fill time control of a worker3...', async() => {
const workdayOf20Hours = 3;
it('should fill time control of a worker with records in Journey', async() => {
const tx = await models.WorkerTimeControl.beginTransaction({});
try {
@ -87,46 +85,6 @@ fdescribe('workerTimeControl sendMail()', () => {
const workerTimeControl = await models.WorkerTimeControl.find({
where: {userFk: workerId}
}, options);
console.log(workerTimeControl);
expect(workerTimeControl[0].timed.getHours()).toEqual(9);
expect(workerTimeControl[2].timed.getHours()).toEqual(10);
expect(`${workerTimeControl[3].timed.getHours()}:${workerTimeControl[3].timed.getMinutes()}`).toEqual('10:20');
expect(workerTimeControl[1].timed.getHours()).toEqual(13);
expect(workerTimeControl[4].timed.getHours()).toEqual(14);
expect(workerTimeControl[5].timed.getHours()).toEqual(19);
await tx.rollback();
} catch (e) {
await tx.rollback();
throw e;
}
});
it('should fill time control of a worker4...', async() => {
const workdayOf20Hours = 3;
const tx = await models.WorkerTimeControl.beginTransaction({});
try {
const options = {transaction: tx};
query = `UPDATE business b
SET b.calendarTypeFk = ?
WHERE b.workerFk = ?; `;
await models.WorkerTimeControl.rawSql(query, [workdayOf20Hours, workerId], options);
query = `INSERT INTO postgresql.journey(journey_id, day_id, start, end, business_id)
VALUES
(1, 1, '09:00:00', '13:00:00', ?),
(2, 1, '14:00:00', '19:00:00', ?),
(3, 2, '12:30:00', '19:00:00', ?);`;
await models.WorkerTimeControl.rawSql(query, [workerId, workerId, workerId], options);
await models.WorkerTimeControl.sendMail(ctx, options);
const workerTimeControl = await models.WorkerTimeControl.find({
where: {userFk: workerId}
}, options);
console.log(workerTimeControl);
expect(workerTimeControl[0].timed.getHours()).toEqual(9);
expect(workerTimeControl[2].timed.getHours()).toEqual(10);

View File

@ -65,6 +65,9 @@
"WorkerLog": {
"dataSource": "vn"
},
"WorkerTimeControlConfig": {
"dataSource": "vn"
},
"WorkerTimeControlParams": {
"dataSource": "vn"
},

View File

@ -0,0 +1,18 @@
{
"name": "WorkerTimeControlConfig",
"base": "VnModel",
"options": {
"mysql": {
"table": "workerTimeControlConfig"
}
},
"properties": {
"id": {
"id": true,
"type": "number"
},
"timeToBreakTime": {
"type": "number"
}
}
}