module.exports = Self => { Self.remoteMethod('getByWarehouse', { description: 'Returns an array of labour holidays from an specified warehouse', accepts: [{ arg: 'warehouseFk', type: 'Number', required: true, }], returns: { type: ['object'], root: true }, http: { path: `/getByWarehouse`, verb: 'GET' } }); Self.getByWarehouse = async warehouseFk => { let beginningYear = new Date(); beginningYear.setMonth(0); beginningYear.setDate(1); beginningYear.setHours(0, 0, 0, 0); let holidays = await Self.rawSql( `SELECT lh.dated, lhl.description, lht.name, w.id FROM vn.holiday lh JOIN vn.workCenter w ON w.id = lh.workcenterFk LEFT JOIN vn.holidayDetail lhl ON lhl.id = lh.holidayDetailFk LEFT JOIN vn.holidayType lht ON lht.id = lh.holidayTypeFk WHERE w.warehouseFk = ? AND lh.dated >= ?`, [warehouseFk, beginningYear]); return holidays.map(holiday => { holiday.dated = new Date(holiday.dated); holiday.dated.setHours(0, 0, 0, 0); return holiday; }); }; };