diff --git a/controllers/er/index.js b/controllers/er/index.js index c8acc8a..2a3ca1c 100644 --- a/controllers/er/index.js +++ b/controllers/er/index.js @@ -51,16 +51,16 @@ function createErProxy(featureTypeName,typeSearch){ }); } } - //For _propertyNames, we need to transform the string in Array - if(params._propertyNames) { - params._propertyNames = params._propertyNames.split(';'); - } + if((params.has_geometry) &&(!((params.field_date) || (params._limit)))) { params.has_geometry =true; } } - + //For _propertyNames, we need to transform the string in Array + if(params._propertyNames) { + params._propertyNames = params._propertyNames.split(';'); + } // For module Category Gestion du parametre name if (typeSearch == 'category') { if (params.name && params.type) { @@ -162,7 +162,8 @@ var productValidators = erValidators.concat([ check('type').optional().isString(), check('publication_date').optional().isString(), check('date_maj_deb').optional().isString(), // Param ne servant que pour admin - check('date_maj_fin').optional().isString() // Param ne servant que pour admin + check('date_maj_fin').optional().isString(), // Param ne servant que pour admin + check('has_geometry').optional().isBoolean(), ]); diff --git a/doc/er.yml b/doc/er.yml index cdc8d51..26c451d 100644 --- a/doc/er.yml +++ b/doc/er.yml @@ -90,6 +90,12 @@ paths: type: string require: false + - name: has_geometry + in: query + description: Recherche uniquement valeur avec géométrie ou non + type: boolean + require: false + - name: _limit in: query description: Limite de résultats à afficher(chiffre entre 1 et 1000) diff --git a/lib/buildErCqlFilter.js b/lib/buildErCqlFilter.js index ad3e384..184c179 100644 --- a/lib/buildErCqlFilter.js +++ b/lib/buildErCqlFilter.js @@ -65,6 +65,24 @@ function bboxToFilter(bbox){ } else if (name == 'namepr') { //Traiter le cas du produit avec le parametre name parts.push(' name ILIKE \'%'+ params[name] + '%\' OR name_complement ILIKE \'%'+ params[name] + '%\''); + } else if((name == 'has_geometry') && (params[name] =='false')){ + continue; //We do nothing when value has geometry = false to get all results. + + // Search in category + } else if (name == 'category_id') { + var valueCat = params[name].split(';'); + if(valueCat.length < 2) { + parts.push(name+'=\''+ params[name]+'\''); + } else { + var chaineCategoryId = ''; + var chaineConnector = ''; + for (let i = 0; i < valueCat.length; i++) { + if(i == 0) { chaineConnector =''; } else { chaineConnector = ' OR '} + chaineCategoryId = chaineCategoryId + chaineConnector + ' category_id='+valueCat[i]; + } + parts.push(chaineCategoryId); + } + } else { parts.push(name+'=\''+ params[name]+'\''); } diff --git a/package-lock.json b/package-lock.json index 70743f0..0f519b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7030,7 +7030,8 @@ }, "ansi-regex": { "version": "5.0.0", - "resolved": "", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "emoji-regex": {