From 15de4f0b73c767f118d86c99f5bdc32dd07e818b Mon Sep 17 00:00:00 2001 From: sergiodt Date: Fri, 16 Feb 2024 15:56:40 +0100 Subject: [PATCH] refs #6531 feat:showLastTickets --- .../10890-redOrchid/00-firstScript.sql | 3 +++ .../methods/ticket/getLastTicketsByWorker.js | 25 +++++++++++++++++++ .../specs/getLastTicketsByWorker.spec.js | 10 ++++++++ modules/ticket/back/models/ticket-methods.js | 1 + 4 files changed, 39 insertions(+) create mode 100644 db/versions/10890-redOrchid/00-firstScript.sql create mode 100644 modules/ticket/back/methods/ticket/getLastTicketsByWorker.js create mode 100644 modules/ticket/back/methods/ticket/specs/getLastTicketsByWorker.spec.js diff --git a/db/versions/10890-redOrchid/00-firstScript.sql b/db/versions/10890-redOrchid/00-firstScript.sql new file mode 100644 index 000000000..13d3b3c13 --- /dev/null +++ b/db/versions/10890-redOrchid/00-firstScript.sql @@ -0,0 +1,3 @@ +-- Place your SQL code here +INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId) +VALUES( 'Ticket', 'getLastTicketsByWorker', '*', 'ALLOW', 'ROLE', 'production'); \ No newline at end of file diff --git a/modules/ticket/back/methods/ticket/getLastTicketsByWorker.js b/modules/ticket/back/methods/ticket/getLastTicketsByWorker.js new file mode 100644 index 000000000..2a3108a42 --- /dev/null +++ b/modules/ticket/back/methods/ticket/getLastTicketsByWorker.js @@ -0,0 +1,25 @@ +module.exports = Self => { + Self.remoteMethodCtx('getLastTicketsByWorker', { + description: 'Get list of last tickets which user has modified', + accessType: 'READ', + returns: { + type: 'object', + root: true + }, + http: { + path: `/getLastTicketsByWorker`, + verb: 'GET' + } + }); + + Self.getLastTicketsByWorker = async ctx => { + const userId = ctx.req.accessToken.userId; + const query = + `SELECT ticketFk, MAX(created) created + FROM ticketTracking tt + WHERE tt.userFk = ? + GROUP BY ticketFk + LIMIT 5;`; + return await Self.rawSql(query, [userId]); + }; +}; diff --git a/modules/ticket/back/methods/ticket/specs/getLastTicketsByWorker.spec.js b/modules/ticket/back/methods/ticket/specs/getLastTicketsByWorker.spec.js new file mode 100644 index 000000000..ef26bafed --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/getLastTicketsByWorker.spec.js @@ -0,0 +1,10 @@ +const {models} = require('vn-loopback/server/server'); + +describe('getLastTicketsByWorker()', () => { + it('return list of last tickets which user has modified', async() => { + let ctx = {req: {accessToken: {userId: 100}}}; + let response = await models.Ticket.getLastTicketsByWorker(ctx); + + expect(response.length).toBeGreaterThan(0); + }); +}); diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js index 8914e9c4f..c3cfe33c2 100644 --- a/modules/ticket/back/models/ticket-methods.js +++ b/modules/ticket/back/models/ticket-methods.js @@ -45,4 +45,5 @@ module.exports = function(Self) { require('../methods/ticket/invoiceTickets')(Self); require('../methods/ticket/invoiceTicketsAndPdf')(Self); require('../methods/ticket/docuwareDownload')(Self); + require('../methods/ticket/getLastTicketsByWorker')(Self); };