From a539abf3d8bdb959a9cf647deb171278bfd4c6ef Mon Sep 17 00:00:00 2001 From: vicent Date: Wed, 31 May 2023 10:15:16 +0200 Subject: [PATCH] refs #5244 feat: creado back para buscar trabjadores por name. nickname y code --- .../components/worker-autocomplete/index.html | 11 ++-- .../components/worker-autocomplete/index.js | 23 ------- .../components/worker-autocomplete/style.scss | 30 --------- modules/worker/back/methods/worker/search.js | 61 +++++++++++++++++++ modules/worker/back/models/worker.js | 1 + 5 files changed, 69 insertions(+), 57 deletions(-) delete mode 100755 front/core/components/worker-autocomplete/style.scss create mode 100644 modules/worker/back/methods/worker/search.js diff --git a/front/core/components/worker-autocomplete/index.html b/front/core/components/worker-autocomplete/index.html index fc8ddf6401..65418aee03 100755 --- a/front/core/components/worker-autocomplete/index.html +++ b/front/core/components/worker-autocomplete/index.html @@ -1,13 +1,16 @@
- {{firstName}} {{lastName}} + {{name}}
{{nickname}}, {{code}} diff --git a/front/core/components/worker-autocomplete/index.js b/front/core/components/worker-autocomplete/index.js index 44ffd50e2b..7983f53a5f 100755 --- a/front/core/components/worker-autocomplete/index.js +++ b/front/core/components/worker-autocomplete/index.js @@ -1,8 +1,5 @@ import ngModule from '../../module'; import Autocomplete from '../autocomplete'; -import assignProps from '../../lib/assign-props'; -import {mergeWhere} from 'vn-loopback/util/filter'; -import './style.scss'; /** * Input with option selector. @@ -20,26 +17,6 @@ export default class WorkerAutocomplete extends Autocomplete { constructor($element, $, $compile, $transclude) { super($element, $, $compile, $transclude); } - - // $postLink() { - // super.$postLink(); - // this.assignDropdownProps(); - // this.showField = this.$.dropDown.showField; - // this.valueField = this.$.dropDown.valueField; - // this.refreshSelection(); - // } - - // /** - // * @type {any} The autocomplete value. - // */ - // get field() { - // return super.field; - // } - - // set field(value) { - // super.field = value; - // this.refreshSelection(); - // } } WorkerAutocomplete.$inject = ['$element', '$scope', '$compile', '$transclude']; diff --git a/front/core/components/worker-autocomplete/style.scss b/front/core/components/worker-autocomplete/style.scss deleted file mode 100755 index d76f84f856..0000000000 --- a/front/core/components/worker-autocomplete/style.scss +++ /dev/null @@ -1,30 +0,0 @@ -@import "effects"; - -.vn-worker-autocomplete { - overflow: hidden; - - & > .container { - cursor: pointer; - - & > .infix > .control { - overflow: hidden; - - & > input { - cursor: pointer; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - text-align: left; - padding-left: 0; - padding-right: 0; - } - } - - & > .icons.pre { - min-width: 22px - } - } - &.readonly > .container > .icons.post { - display: none; - } -} diff --git a/modules/worker/back/methods/worker/search.js b/modules/worker/back/methods/worker/search.js new file mode 100644 index 0000000000..1d1742595b --- /dev/null +++ b/modules/worker/back/methods/worker/search.js @@ -0,0 +1,61 @@ +module.exports = Self => { + Self.remoteMethod('search', { + description: 'Returns an array of search from an specified worker', + accepts: [{ + arg: 'filter', + type: 'Object', + description: 'Filter defining where and paginated data', + required: true + }], + returns: { + type: ['object'], + root: true + }, + http: { + path: `/search`, + verb: 'GET' + } + }); + + Self.search = async filter => { + const models = Self.app.models; + + delete filter.order; + delete filter.fields; + const users = await models.VnUser.find(filter); + + if (filter.where) { + const indexToDelete = 2; + const filterByCode = filter.where.or.splice(indexToDelete, 1)[0]; + + const ids = users.map(user => parseInt(user.id)); + filter.where.or = [ + {id: {inq: ids}}, + filterByCode + ]; + } + + filter.include = { + relation: 'user', + scope: { + fields: ['name', 'nickname'] + } + }; + + const workers = await models.Worker.find(filter); + + const result = workers.map(worker => { + return { + id: worker.id, + code: worker.code, + name: worker.user().name, + nickname: worker.user().nickname + }; + }); + result.sort((a, b) => { + return a.name.localeCompare(b.name); + }); + + return result; + }; +}; diff --git a/modules/worker/back/models/worker.js b/modules/worker/back/models/worker.js index fa17640a86..16e4055bcf 100644 --- a/modules/worker/back/models/worker.js +++ b/modules/worker/back/models/worker.js @@ -16,6 +16,7 @@ module.exports = Self => { require('../methods/worker/new')(Self); require('../methods/worker/deallocatePDA')(Self); require('../methods/worker/allocatePDA')(Self); + require('../methods/worker/search')(Self); Self.validatesUniquenessOf('locker', { message: 'This locker has already been assigned'