Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
gitea/salix/dev This commit has test failures
Details
gitea/salix/dev This commit has test failures
Details
This commit is contained in:
commit
3d90e80c82
|
@ -558,9 +558,9 @@ INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk
|
|||
(5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1),
|
||||
(6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 0);
|
||||
|
||||
INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`)
|
||||
INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`, `inventoried`)
|
||||
VALUES
|
||||
(1, 'beta-server', 'nightmare@mydomain.com', '200');
|
||||
(1, 'beta-server', 'nightmare@mydomain.com', '200', DATE_ADD(CURDATE(),INTERVAL -1 MONTH));
|
||||
|
||||
INSERT INTO `vn`.`greugeType`(`id`, `name`)
|
||||
VALUES
|
||||
|
@ -1117,10 +1117,6 @@ INSERT INTO `vn`.`buy`(`id`,`entryFk`,`itemFk`,`buyingValue`,`quantity`,`package
|
|||
(14, 7, 2, 5, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 7.30, 7.00, 0.00, NULL, 0, 1, 0, CURDATE()),
|
||||
(15, 7, 4, 1.25, 0, 3, 1, 2.000, 2.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE());
|
||||
|
||||
INSERT INTO `vn2008`.`tblContadores`(`id`,`FechaInventario`)
|
||||
VALUES
|
||||
(1,DATE_ADD(CURDATE(),INTERVAL -1 MONTH));
|
||||
|
||||
INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`)
|
||||
VALUES
|
||||
(1, 'AGENCY', 'Agencia'),
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
/*
|
||||
Author : Enrique Blasco BLanquer
|
||||
Date: 28 de mayo de 2019
|
||||
*/
|
||||
module.exports = Self => {
|
||||
Self.remoteMethodCtx('getWorkerInfo', {
|
||||
description: 'Get worker info (name, isWorking, total worked hours ...)',
|
||||
accessType: 'WRITE',
|
||||
returns: [{
|
||||
type: 'Object',
|
||||
root: true
|
||||
}],
|
||||
http: {
|
||||
path: `/getWorkerInfo`,
|
||||
verb: 'GET'
|
||||
}
|
||||
});
|
||||
|
||||
Self.getWorkerInfo = async(ctx, data) => {
|
||||
let prevHour = new Date(); // default value to start work
|
||||
let diff = 0; // difference of value between two dates
|
||||
let isOdd = true; // determine if timed is odd or not in db
|
||||
const myUserId = ctx.req.accessToken.userId; // get user id
|
||||
|
||||
|
||||
// 1 get name and photo for the user
|
||||
let [user] = await Self.rawSql(`SELECT u.name, t.Foto FROM vn.user u INNER JOIN vn2008.Trabajadores t ON u.id = t.user_id WHERE id = ?;`, [myUserId]);
|
||||
// 2 get all jornaly work time registered
|
||||
let workedHours = await Self.rawSql(`SELECT * FROM vn.workerTimeControl WHERE userFk = ? AND DATE(timed) = CURDATE() ORDER BY timed ASC;`, [myUserId]);
|
||||
let today = new Date();
|
||||
// 3 get the number of hours to work in one day
|
||||
let date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
|
||||
let [hoursForDay] = await Self.rawSql(`SELECT cl.hours_week AS hoursWeek,
|
||||
GROUP_CONCAT(DISTINCT LEFT(j.start,2) ORDER BY j.start ASC SEPARATOR '-') start ,
|
||||
GROUP_CONCAT(DISTINCT LEFT(j.end,2) ORDER BY j.end ASC SEPARATOR '-') end,
|
||||
CAST(IFNULL((SUM(TIME_TO_SEC(j.end))-SUM(TIME_TO_SEC(j.start)))/3600,if(cl.hours_week=40
|
||||
AND DAYOFWEEK(t.dated) IN(2,3,4,5,6),8,0)) AS DECIMAL(10,2)) workingHours
|
||||
FROM vn.time t
|
||||
LEFT JOIN postgresql.business b ON t.dated BETWEEN b.date_start AND ifnull(b.date_end,? )
|
||||
LEFT JOIN postgresql.profile AS pr ON b.client_id = pr.profile_id
|
||||
LEFT JOIN postgresql.person AS p ON pr.person_id = p.person_id
|
||||
LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id
|
||||
LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id
|
||||
LEFT JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id
|
||||
LEFT JOIN postgresql.journey AS j ON j.business_id = b.business_id and j.day_id=WEEKDAY(t.dated)+1
|
||||
WHERE t.dated BETWEEN ? AND ? AND userFk = ?
|
||||
GROUP BY w.userFk,dated`, [date, date, date, myUserId]);
|
||||
|
||||
// 4 Add all the hours and see the total worked
|
||||
for (hour of workedHours) {
|
||||
if (!isOdd)
|
||||
diff += Math.abs((new Date(hour.timed)).getTime() - prevHour.getTime());
|
||||
else
|
||||
prevHour = new Date(hour.timed);
|
||||
|
||||
isOdd = !isOdd;
|
||||
}
|
||||
|
||||
// 5 calculate hours and minutes from a number value
|
||||
let decimalTime = diff / 1000 / 3600;
|
||||
decimalTime = decimalTime * 60 * 60;
|
||||
let hours = Math.floor((decimalTime / (60 * 60)));
|
||||
decimalTime = decimalTime - (hours * 60 * 60);
|
||||
let minutes = Math.floor((decimalTime / 60));
|
||||
|
||||
// 6 default total hours
|
||||
let totalHours = '7:40';
|
||||
let hoursWeek = 40;
|
||||
|
||||
// 7 Get the hours you have to work today and the hours to work in a week
|
||||
if (hoursForDay != null) {
|
||||
// If it exceeds 5 hours we take 20 minutes of breakfast.
|
||||
if (hoursForDay.workingHours > 5)
|
||||
hoursForDay.workingHours -= 20 * 0.016666;
|
||||
let decimalTime = parseFloat(hoursForDay.workingHours);
|
||||
decimalTime = decimalTime * 60 * 60;
|
||||
let hoursDay = Math.floor((decimalTime / (60 * 60)));
|
||||
decimalTime = decimalTime - (hoursDay * 60 * 60);
|
||||
let minutesDay = Math.floor((decimalTime / 60));
|
||||
totalHours = hoursDay + ':' + minutesDay;
|
||||
}
|
||||
|
||||
|
||||
// 8 return value
|
||||
if (hoursForDay != null)
|
||||
hoursWeek = hoursForDay.hoursWeek;
|
||||
return {
|
||||
'name': user.name,
|
||||
'hours': hours,
|
||||
'minutes': minutes,
|
||||
'today': today,
|
||||
'isWorking': !isOdd,
|
||||
'lastDate': prevHour,
|
||||
'totalHours': totalHours,
|
||||
'hoursWeek': hoursWeek
|
||||
};
|
||||
};
|
||||
};
|
|
@ -3,5 +3,4 @@ module.exports = Self => {
|
|||
require('../methods/worker/mySubordinates')(Self);
|
||||
require('../methods/worker/isSubordinate')(Self);
|
||||
require('../methods/worker/getWorkedHours')(Self);
|
||||
require('../methods/worker/getWorkerInfo')(Self);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue