4846-claim.search-panel #1174

Merged
vicent merged 18 commits from 4846-claim.search-panel into dev 2023-01-10 13:09:23 +00:00
1 changed files with 45 additions and 30 deletions
Showing only changes of commit 9bcef08397 - Show all commits

View File

@ -93,33 +93,34 @@ module.exports = Self => {
Self.filter = async(ctx, filter, options) => {
const conn = Self.dataSource.connector;
const args = ctx.args;
const myOptions = {};
let to;
if (typeof options == 'object')
Object.assign(myOptions, options);
const where = buildFilter(ctx.args, (param, value) => {
const where = buildFilter(args, (param, value) => {
switch (param) {
case 'search':
return /^\d+$/.test(value)
? {'cl.id': value}
: {
or: [
{'cl.clientName': {like: `%${value}%`}}
{'c.name': {like: `%${value}%`}}
]
};
case 'clientName':
return {'cl.clientName': {like: `%${value}%`}};
return {'c.name': {like: `%${value}%`}};
case 'clientFk':
case 'id':
case 'claimStateFk':
case 'itemFk':
case 'claimResponsibleFk':
case 'priority':
return {[`cl.${param}`]: value};
case 'itemFk':
return {[`s.${param}`]: value};
case 'salesPersonFk':
return {'cl.salesPersonFk': value};
return {'c.salesPersonFk': value};
case 'attenderFk':
return {'cl.workerFk': value};
case 'created':
@ -131,36 +132,50 @@ module.exports = Self => {
}
});
filter = mergeFilters(ctx.args.filter, {where});
filter = mergeFilters(args.filter, {where});
vicent marked this conversation as resolved
Review

revisar si falla, parece que deberia ser c.clientName

revisar si falla, parece que deberia ser c.clientName
Review

Sí que funciona

Sí que funciona
const stmts = [];
const stmt = new ParameterizedSQL(
`SELECT *
FROM (
SELECT DISTINCT
cl.id,
cl.clientFk,
c.name AS clientName,
cl.workerFk,
u.name AS workerName,
cs.description,
cl.created,
cs.priority,
cl.claimStateFk,
c.salesPersonFk,
s.itemFk,
cd.claimResponsibleFk
FROM claim cl
LEFT JOIN client c ON c.id = cl.clientFk
LEFT JOIN worker w ON w.id = cl.workerFk
LEFT JOIN account.user u ON u.id = w.userFk
LEFT JOIN claimState cs ON cs.id = cl.claimStateFk
LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id
LEFT JOIN sale s ON s.id = cb.saleFk
LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id ) cl`
`SELECT
cl.id,
vicent marked this conversation as resolved
Review

revisar si llamando a itemFk y claimResponsibleFk construye los dos

revisar si llamando a itemFk y claimResponsibleFk construye los dos
Review

Construye los dos, con un and:
{ and: [ { 'cl.id': [Object] }, { 'cl.id': [Object] } ] }

Construye los dos, con un and: { and: [ { 'cl.id': [Object] }, { 'cl.id': [Object] } ] }
cl.clientFk,
c.name AS clientName,
cl.workerFk,
u.name AS workerName,
cs.description,
cl.created,
cs.priority,
cl.claimStateFk,
c.salesPersonFk,
s.itemFk
FROM claim cl
LEFT JOIN client c ON c.id = cl.clientFk
LEFT JOIN worker w ON w.id = cl.workerFk
LEFT JOIN account.user u ON u.id = w.userFk
LEFT JOIN claimState cs ON cs.id = cl.claimStateFk
LEFT JOIN claimBeginning cb ON cb.claimFk = cl.id
LEFT JOIN sale s ON s.id = cb.saleFk`
);
if (args.claimResponsibleFk) {
query = `SELECT cd.claimFk
FROM claimDevelopment cd
vicent marked this conversation as resolved
Review

usar loopback

usar loopback
WHERE cd.claimResponsibleFk = ?`;
const claimDevelopments = await Self.rawSql(query, [args.claimResponsibleFk], myOptions);
const claimIds = claimDevelopments.map(claimDevelopment => {
return claimDevelopment.claimFk;
});
stmt.merge({
sql: `LEFT JOIN claimDevelopment cd ON cd.claimFk = cl.id
WHERE cl.id IN (?)
vicent marked this conversation as resolved Outdated

worker no es necesaria, directament en user.

worker no es necesaria, directament en user.
GROUP BY cl.id`,
params: [claimIds],
});
}
stmt.merge(conn.makeSuffix(filter));
const itemsIndex = stmts.push(stmt) - 1;