diff --git a/modules/worker/back/methods/worker-time-control/getMailStates.js b/modules/worker/back/methods/worker-time-control/getMailStates.js index d55c185a5c..c6b596d325 100644 --- a/modules/worker/back/methods/worker-time-control/getMailStates.js +++ b/modules/worker/back/methods/worker-time-control/getMailStates.js @@ -1,4 +1,5 @@ const UserError = require('vn-loopback/util/user-error'); +const moment = require('moment'); module.exports = Self => { Self.remoteMethodCtx('getMailStates', { @@ -34,32 +35,36 @@ module.exports = Self => { const models = Self.app.models; const args = ctx.args; const myOptions = {}; + const month = args.month; + const year = args.year; + const weeksOfMonth = getWeeksOfMonth(year, month); if (typeof options == 'object') Object.assign(myOptions, options); if (!await models.Worker.isSubordinate(ctx, workerId)) throw new UserError(`You don't have enough privileges`); - const times = await models.Time.find({ - fields: ['week'], - where: { - month: args.month, - year: args.year - } - }, myOptions); - - const weeks = times.map(time => time.week); - const weekNumbersSet = new Set(weeks); - const weekNumbers = Array.from(weekNumbersSet); - const workerTimeControlMails = await models.WorkerTimeControlMail.find({ where: { workerFk: workerId, year: args.year, - week: {inq: weekNumbers} + week: {inq: weeksOfMonth} } }, myOptions); return workerTimeControlMails; }; + + const getWeeksOfMonth = (year, month) => { + const firstDayOfMonth = moment(`${year}-${month}-01`, 'YYYY-MM-DD'); + const lastDayOfMonth = moment(firstDayOfMonth).endOf('month'); + const firstWeek = firstDayOfMonth.isoWeek(); + const lastWeek = lastDayOfMonth.isoWeek(); + const weeks = []; + + for (let week = firstWeek; week <= lastWeek; week++) + weeks.push(week); + + return weeks; + }; };