Merge pull request '3319-worker_time-control' (#770) from 3319-worker_time-control into dev
gitea/salix/pipeline/head This commit looks good Details

Reviewed-on: #770
Reviewed-by: Carlos Jimenez Ruiz <carlosjr@verdnatura.es>
This commit is contained in:
Carlos Jimenez Ruiz 2021-11-10 09:54:43 +00:00
commit 115b294b3e
3 changed files with 14 additions and 20 deletions

View File

@ -42,27 +42,21 @@ module.exports = Self => {
const stmts = []; const stmts = [];
const startedMinusOne = new Date(started);
startedMinusOne.setDate(started.getDate() - 1);
const endedPlusOne = new Date(ended);
endedPlusOne.setDate(ended.getDate() + 1);
stmts.push(` stmts.push(`
DROP TEMPORARY TABLE IF EXISTS DROP TEMPORARY TABLE IF EXISTS
tmp.timeControlCalculate, tmp.timeControlCalculate,
tmp.timeBusinessCalculate tmp.timeBusinessCalculate
`); `);
stmts.push(new ParameterizedSQL('CALL vn.timeControl_calculateByUser(?, ?, ?)', [userId, startedMinusOne, endedPlusOne])); stmts.push(new ParameterizedSQL('CALL vn.timeControl_calculateByUser(?, ?, ?)', [userId, started, ended]));
stmts.push(new ParameterizedSQL('CALL vn.timeBusiness_calculateByUser(?, ?, ?)', [userId, startedMinusOne, endedPlusOne])); stmts.push(new ParameterizedSQL('CALL vn.timeBusiness_calculateByUser(?, ?, ?)', [userId, started, ended]));
const resultIndex = stmts.push(new ParameterizedSQL(` const resultIndex = stmts.push(new ParameterizedSQL(`
SELECT tbc.dated, tbc.timeWorkSeconds expectedHours, tcc.timeWorkSeconds workedHours SELECT tcc.dated, tbc.timeWorkSeconds expectedHours, tcc.timeWorkSeconds workedHours
FROM tmp.timeBusinessCalculate tbc FROM tmp.timeControlCalculate tcc
LEFT JOIN tmp.timeControlCalculate tcc ON tcc.dated = tbc.dated LEFT JOIN tmp.timeBusinessCalculate tbc ON tcc.dated = tbc.dated
WHERE tbc.dated BETWEEN ? AND ? WHERE tcc.dated BETWEEN DATE(?) AND DATE(?)
`, [started, ended])) - 1; `, [started, ended])) - 1;
stmts.push(` stmts.push(`

View File

@ -1,17 +1,17 @@
const app = require('vn-loopback/server/server'); const models = require('vn-loopback/server/server').models;
describe('Worker getWorkedHours()', () => { describe('Worker getWorkedHours()', () => {
it(`should return the expected hours and the worked hours of a given date`, async() => { it(`should return the expected hours and the worked hours of a given date`, async() => {
const workerID = 1106; const workerID = 1106;
let started = new Date(); const started = new Date();
started.setHours(0, 0, 0, 0); started.setHours(0, 0, 0, 0);
let ended = new Date(); const ended = new Date();
ended.setHours(0, 0, 0, 0); ended.setHours(23, 59, 59, 999);
const [result] = await app.models.Worker.getWorkedHours(workerID, started, ended); const [result] = await models.Worker.getWorkedHours(workerID, started, ended);
expect(result.expectedHours).toEqual(28800); // 8:00 hours seconds expect(result.expectedHours).toEqual(28800); // 8:00 hours in seconds
expect(result.workedHours).toEqual(29400); // 8:10 hours in seconds expect(result.workedHours).toEqual(29400); // 8:10 hours in seconds
}); });
}); });

View File

@ -171,7 +171,6 @@ class Controller extends Section {
from: from, from: from,
to: to to: to
}; };
const query = `Workers/${this.$params.id}/getWorkedHours`; const query = `Workers/${this.$params.id}/getWorkedHours`;
return this.$http.get(query, {params}).then(res => { return this.$http.get(query, {params}).then(res => {
const workDays = res.data; const workDays = res.data;
@ -212,7 +211,8 @@ class Controller extends Section {
let todayInWeek = this.weekDays.find(day => day.dated.getTime() === today.getTime()); let todayInWeek = this.weekDays.find(day => day.dated.getTime() === today.getTime());
if (todayInWeek && todayInWeek.hours && todayInWeek.hours.length) { if (todayInWeek && todayInWeek.hours && todayInWeek.hours.length) {
const remainingTime = todayInWeek.workedHours ? ((todayInWeek.expectedHours - todayInWeek.workedHours) * 1000) : null; const remainingTime = todayInWeek.workedHours ?
((todayInWeek.expectedHours - todayInWeek.workedHours) * 1000) : null;
const lastKnownEntry = todayInWeek.hours[todayInWeek.hours.length - 1]; const lastKnownEntry = todayInWeek.hours[todayInWeek.hours.length - 1];
const lastKnownTime = new Date(lastKnownEntry.timed).getTime(); const lastKnownTime = new Date(lastKnownEntry.timed).getTime();
const finishTimeStamp = lastKnownTime && remainingTime ? lastKnownTime + remainingTime : null; const finishTimeStamp = lastKnownTime && remainingTime ? lastKnownTime + remainingTime : null;