From f27420c14aa21db5cbb0dde0fe0366ad9479cc2a Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Tue, 16 Nov 2021 13:56:09 +0100 Subject: [PATCH] refactor(item): activeBuyers --- modules/item/back/methods/item/active.js | 42 ----------------- .../item/back/methods/item/activeBuyers.js | 45 +++++++++++++++++++ .../item/back/methods/item/activeWithBuyer.js | 35 --------------- modules/item/back/methods/item/filter.js | 2 +- modules/item/back/models/item.js | 3 +- modules/item/front/search-panel/index.html | 7 ++- 6 files changed, 50 insertions(+), 84 deletions(-) delete mode 100644 modules/item/back/methods/item/active.js create mode 100644 modules/item/back/methods/item/activeBuyers.js delete mode 100644 modules/item/back/methods/item/activeWithBuyer.js diff --git a/modules/item/back/methods/item/active.js b/modules/item/back/methods/item/active.js deleted file mode 100644 index 4537ab9943..0000000000 --- a/modules/item/back/methods/item/active.js +++ /dev/null @@ -1,42 +0,0 @@ -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; -const buildFilter = require('vn-loopback/util/filter').buildFilter; -const mergeFilters = require('vn-loopback/util/filter').mergeFilters; - -module.exports = Self => { - Self.activeWorkers = async(query, filter) => { - let conn = Self.dataSource.connector; - if (filter.where && filter.where.and && Array.isArray(filter.where.and)) { - let where = {}; - filter.where.and.forEach(element => { - where[Object.keys(element)[0]] = Object.values(element)[0]; - }); - filter.where = where; - } - let clientFilter = Object.assign({}, filter); - clientFilter.where = buildFilter(filter.where, (param, value) => { - switch (param) { - case 'role': - return {'r.name': value}; - case 'firstName': - return {or: [ - {'w.firstName': {like: `%${value}%`}}, - {'w.lastName': {like: `%${value}%`}}, - {'u.name': {like: `%${value}%`}}, - {'u.nickname': {like: `%${value}%`}} - ]}; - case 'id': - return {'w.id': value}; - } - }); - - let myFilter = { - where: {'u.active': true} - }; - - myFilter = mergeFilters(myFilter, clientFilter); - - let stmt = new ParameterizedSQL(query); - stmt.merge(conn.makeSuffix(myFilter)); - return conn.executeStmt(stmt); - }; -}; diff --git a/modules/item/back/methods/item/activeBuyers.js b/modules/item/back/methods/item/activeBuyers.js new file mode 100644 index 0000000000..ed19dd46be --- /dev/null +++ b/modules/item/back/methods/item/activeBuyers.js @@ -0,0 +1,45 @@ +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('activeBuyers', { + description: 'Returns a list of agencies from a warehouse', + accepts: [{ + arg: 'filter', + type: 'object', + description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string` + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/activeBuyers`, + verb: 'GET' + } + }); + + Self.activeBuyers = async(filter, options) => { + const conn = Self.dataSource.connector; + const where = {isActive: true}; + let myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + filter = mergeFilters(filter, {where}); + + let stmt = new ParameterizedSQL( + `SELECT DISTINCT w.id workerFk, w.firstName, w.lastName, u.name, u.nickname + FROM worker w + JOIN itemType it ON it.workerFk = w.id + JOIN account.user u ON u.id = w.id + JOIN item i ON i.typeFk = it.id`, + null, myOptions); + + stmt.merge(conn.makeSuffix(filter)); + console.log(stmt); + + return conn.executeStmt(stmt); + }; +}; diff --git a/modules/item/back/methods/item/activeWithBuyer.js b/modules/item/back/methods/item/activeWithBuyer.js deleted file mode 100644 index 121079aaa3..0000000000 --- a/modules/item/back/methods/item/activeWithBuyer.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = Self => { - Self.remoteMethod('activeWithBuyer', { - description: 'Returns active workers in itemType', - accessType: 'READ', - accepts: [{ - arg: 'filter', - type: 'Object', - description: 'Filter defining where and paginated data', - required: false - }], - returns: { - type: ['object'], - root: true - }, - http: { - path: `/activeWithBuyer`, - verb: 'GET' - } - }); - - Self.activeWithBuyer = async(filter, options) => { - const myOptions = {}; - - if (typeof options == 'object') - Object.assign(myOptions, options); - - const query = - `SELECT DISTINCT w.id, w.firstName, w.lastName, u.name, u.nickname - FROM worker w - JOIN itemType i ON i.workerFk = w.id - JOIN account.user u ON u.id = w.id`; - - return Self.activeWorkers(query, filter, myOptions); - }; -}; diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 8cfefac9f0..99152467a7 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -44,7 +44,7 @@ module.exports = Self => { description: 'Whether the the item is or not active', }, { - arg: 'salesPersonFk', + arg: 'buyerFk', type: 'integer', description: 'The buyer of the item', }, diff --git a/modules/item/back/models/item.js b/modules/item/back/models/item.js index 887aa0a116..457cce4f2f 100644 --- a/modules/item/back/models/item.js +++ b/modules/item/back/models/item.js @@ -14,8 +14,7 @@ module.exports = Self => { require('../methods/item/getWasteByWorker')(Self); require('../methods/item/getWasteByItem')(Self); require('../methods/item/createIntrastat')(Self); - require('../methods/item/active')(Self); - require('../methods/item/activeWithBuyer')(Self); + require('../methods/item/activeBuyers')(Self); Self.validatesPresenceOf('originFk', {message: 'Cannot be blank'}); diff --git a/modules/item/front/search-panel/index.html b/modules/item/front/search-panel/index.html index 29b2a24fc5..2a8f52827f 100644 --- a/modules/item/front/search-panel/index.html +++ b/modules/item/front/search-panel/index.html @@ -40,12 +40,11 @@ <vn-horizontal> <vn-autocomplete vn-one - disabled="false" - ng-model="filter.salesPersonFk" - url="Items/activeWithBuyer" + ng-model="filter.buyerFk" + url="Items/activeBuyers" show-field="nickname" search-function="{firstName: $search}" - value-field="id" + value-field="workerFk" label="Buyer"> </vn-autocomplete> </vn-horizontal>