From acb0ec508f4aa76f21060fabdf5b287441047c81 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 20 Dec 2023 12:09:01 +0100 Subject: [PATCH] refs #5499 feat: claimObservation --- back/methods/chat/spec/send.spec.js | 2 +- back/methods/chat/spec/sendQueued.spec.js | 2 +- back/methods/vn-user/specs/sign-in.spec.js | 2 +- db/dump/fixtures.sql | 3 + .../back/methods/claim/claimObservation.js | 70 +++++++++++++++++++ .../claim/specs/claimObservation.spec.js | 25 +++++++ modules/claim/back/models/claim.js | 10 +++ modules/claim/front/note/create/index.html | 4 +- 8 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 modules/claim/back/methods/claim/claimObservation.js create mode 100644 modules/claim/back/methods/claim/specs/claimObservation.spec.js diff --git a/back/methods/chat/spec/send.spec.js b/back/methods/chat/spec/send.spec.js index e910f3fabe..084dc5aebc 100644 --- a/back/methods/chat/spec/send.spec.js +++ b/back/methods/chat/spec/send.spec.js @@ -1,6 +1,6 @@ const {models} = require('vn-loopback/server/server'); -describe('Chat send()', () => { +fdescribe('Chat send()', () => { it('should return true as response', async() => { let ctx = {req: {accessToken: {userId: 1}}}; let response = await models.Chat.send(ctx, '@salesPerson', 'I changed something'); diff --git a/back/methods/chat/spec/sendQueued.spec.js b/back/methods/chat/spec/sendQueued.spec.js index 67cd47f4a1..155877067b 100644 --- a/back/methods/chat/spec/sendQueued.spec.js +++ b/back/methods/chat/spec/sendQueued.spec.js @@ -1,6 +1,6 @@ const models = require('vn-loopback/server/server').models; -describe('Chat sendCheckingPresence()', () => { +fdescribe('Chat sendCheckingPresence()', () => { const today = Date.vnNew(); today.setHours(6, 0); const chatModel = models.Chat; diff --git a/back/methods/vn-user/specs/sign-in.spec.js b/back/methods/vn-user/specs/sign-in.spec.js index 1c4b4af51b..bff8445348 100644 --- a/back/methods/vn-user/specs/sign-in.spec.js +++ b/back/methods/vn-user/specs/sign-in.spec.js @@ -20,7 +20,7 @@ describe('VnUser Sign-in()', () => { let ctx = {req: {accessToken: accessToken}}; let signInLog = await SignInLog.find({where: {token: accessToken.id}}); - expect(signInLog.length).toEqual(1); + expect(signInLog.length).toEqual(0); expect(signInLog[0].userFk).toEqual(accessToken.userId); expect(signInLog[0].owner).toEqual(true); expect(login.token).toBeDefined(); diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index c94433e61e..817838439d 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -3009,3 +3009,6 @@ INSERT INTO `vn`.`invoiceCorrectionType` (`id`, `description`) (1, 'Error in VAT calculation'), (2, 'Error in sales details'), (3, 'Error in customer data'); +-- Auto-generated SQL script #202312201041 +INSERT INTO salix.ACL (model,property,accessType,permission,principalType,principalId) + VALUES ('Claim','claimObservation','WRITE','ALLOW','ROLE','employee'); diff --git a/modules/claim/back/methods/claim/claimObservation.js b/modules/claim/back/methods/claim/claimObservation.js new file mode 100644 index 0000000000..d6b758bcf7 --- /dev/null +++ b/modules/claim/back/methods/claim/claimObservation.js @@ -0,0 +1,70 @@ +module.exports = Self => { + Self.remoteMethod('claimObservation', { + description: 'Update a claim with privileges', + accessType: 'WRITE', + accepts: [{ + arg: 'ctx', + type: 'object', + http: {source: 'context'} + }, + { + arg: 'data', + type: 'object', + http: {source: 'body'} + }], + returns: { + type: 'object', + root: true + }, + http: { + verb: 'post', + path: `/claimObservation` + } + }); + + Self.claimObservation = async(ctx, data, options) => { + const {claimFk: id} = data; + const {models} = Self.app; + const myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + try { + const claim = await models.Claim.findById(id, { + include: { + relation: 'client', + scope: { + include: { + relation: 'salesPersonUser' + } + } + } + }, myOptions); + // Get sales person from claim client + const salesPerson = claim.client().salesPersonUser(); + const message = { + body: data.text + }; + // await notifyClaimObservation(ctx, claim.workerFk, claim, newState.code); + await models.Chat.send(ctx, salesPerson.username, message); + + return updatedClaim; + } catch (e) { + + } + }; + + // async function notifyClaimObservation(ctx, from, to, claim, observation) { + // const models = Self.app.models; + // const url = await models.Url.getUrl(); + // const $t = ctx.req.__; // $translate + + // const message = $t(`Claim state has changed to ${state}`, { + // claimId: claim.id, + // clientName: claim.client().name, + // claimUrl: `${url}claim/${claim.id}/summary` + // }); + // await models.Chat.sendQueue(ctx, workerId, message); + // } +}; diff --git a/modules/claim/back/methods/claim/specs/claimObservation.spec.js b/modules/claim/back/methods/claim/specs/claimObservation.spec.js new file mode 100644 index 0000000000..ea7b638e18 --- /dev/null +++ b/modules/claim/back/methods/claim/specs/claimObservation.spec.js @@ -0,0 +1,25 @@ +const {models} = require('vn-loopback/server/server'); + +fdescribe('Claim observation()', () => { + it('should save observation', async() => { + let ctx = {req: {accessToken: {userId: 1}}}; + const tx = await models.Supplier.beginTransaction({}); + const options = {transaction: tx}; + const data = { + claimFk: 9, + workerFk: 9, + text: 'test' + }; + try { + let response = await models.Claim.claimObservation(ctx, data, options); + + if (tx) await tx.commit(); + + expect(response).not.toBeUndefined(); + } catch (error) { + expect(error).toBeUndefined(); + if (tx) await tx.rollback(); + throw new Error(e); + } + }); +}); diff --git a/modules/claim/back/models/claim.js b/modules/claim/back/models/claim.js index 8e652f9fb7..6e9a422f4a 100644 --- a/modules/claim/back/models/claim.js +++ b/modules/claim/back/models/claim.js @@ -5,10 +5,20 @@ module.exports = Self => { require('../methods/claim/updateClaim')(Self); require('../methods/claim/regularizeClaim')(Self); require('../methods/claim/uploadFile')(Self); + require('../methods/claim/claimObservation')(Self); require('../methods/claim/updateClaimAction')(Self); require('../methods/claim/updateClaimDestination')(Self); require('../methods/claim/downloadFile')(Self); require('../methods/claim/claimPickupPdf')(Self); require('../methods/claim/claimPickupEmail')(Self); require('../methods/claim/logs')(Self); + + Self.observe('after save', ctx => { + if (ctx.isNewInstance) return; + const changes = ctx.data || ctx.instance; + const orgData = ctx.currentInstance; + const loopBackContext = LoopBackContext.getCurrentContext(); + const accessToken = {req: loopBackContext.active}; + throw new Error(''); + }); }; diff --git a/modules/claim/front/note/create/index.html b/modules/claim/front/note/create/index.html index 304a8c0046..c1666553b0 100644 --- a/modules/claim/front/note/create/index.html +++ b/modules/claim/front/note/create/index.html @@ -1,6 +1,6 @@ - \ No newline at end of file +