Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package fr.insee.rmes.magma.diffusion.api;

import fr.insee.rmes.magma.diffusion.api.requestprocessor.RequestProcessor;
import fr.insee.rmes.magma.diffusion.model.Canton;
import fr.insee.rmes.magma.diffusion.model.QuartierPrioritaireDeLaPolitiqueDeLaVille2024;
import fr.insee.rmes.magma.diffusion.model.TerritoireBaseRelation;
import fr.insee.rmes.magma.diffusion.model.TypeEnum;
import fr.insee.rmes.magma.diffusion.queries.parameters.TerritoireRequestParametizer;
import fr.insee.rmes.magma.diffusion.queries.parameters.TerritoiresLiesRequestParametizer;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;

Expand Down Expand Up @@ -35,5 +39,14 @@ public ResponseEntity<List<QuartierPrioritaireDeLaPolitiqueDeLaVille2024>> getco
.toResponseEntity();
}

@Override
public ResponseEntity<List<TerritoireBaseRelation>> getcogqpvintersect (String code, LocalDate date, TypeEnum type) {
return requestProcessor.queryToFindIntersections()
.with(new TerritoiresLiesRequestParametizer(code, date, type, QuartierPrioritaireDeLaPolitiqueDeLaVille2024.class))
.executeQuery()
.listResult(TerritoireBaseRelation.class)
.toResponseEntity();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import fr.insee.rmes.magma.diffusion.api.GeoQuartierPrioritaireDeLaPolitiqueDeLaVilleEndpoints;
import fr.insee.rmes.magma.diffusion.model.QuartierPrioritaireDeLaPolitiqueDeLaVille2024;
import fr.insee.rmes.magma.diffusion.model.TerritoireBaseRelation;
import fr.insee.rmes.magma.diffusion.model.TypeEnum;
import fr.insee.rmes.magma.diffusion.model.TypeEnumAscendantsCommune;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Tag;
Expand Down Expand Up @@ -36,7 +38,7 @@ class GeoQuartiersPrioritairesDeLaPolitiqueDeLaVilleTest extends TestcontainerTe

// geo/quartierPrioritaireDeLaPolitiqueDeLaVille2024/QN06255M?date=2025-09-04
@Test
void should_return_quartierPrioritaireDeLaVilleCode_QN06255M_when_codeQN06255M_date20250904() {
void should_return_quartierPrioritaireDeLaVilleCode_when_codeQN06255M_date20250904() {
var response = endpoints.getcogqpv("QN06255M", LocalDate.of(2025, 9, 4));
var result = response.getBody();
Assertions.assertNotNull(result);
Expand Down Expand Up @@ -73,7 +75,7 @@ void should_return_400_when_CommuneCodeAscendants_codeQJ08255M_date20250904() th

// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024?date=2025-09-04//
@Test
void should_return_1609_QPV_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024_date20250904() {
void should_return_1609_QPV_when_quartiersPrioritairesDeLaPolitiqueDeLaVille2024_date20250904() {
var response = endpoints.getcogqpvliste(LocalDate.of(2025,9,4));
var result = response.getBody();
Assertions.assertNotNull(result);
Expand All @@ -91,4 +93,51 @@ void should_return_1609_QPV_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024_d
);
}

/// ////////////////////////////////////////////////////////////////////////////
/// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/{code}/intersections ///
/// ////////////////////////////////////////////////////////////////////////////

// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/QN08255M/intersections?date=2025-09-04//
@Test
void should_return_1_commune_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024CodeIntersections_codeQN06255M_date20250904_typeNull() {
var response = endpoints.getcogqpvintersect("QN06255M", LocalDate.of(2025,9,4), null);
var result = response.getBody();
Assertions.assertNotNull(result);
var resultItem1= result.getFirst();

assertAll(
() -> assertEquals(1, result.size()),
() -> assertEquals("62516", resultItem1.getCode()),
() -> assertEquals("http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713", resultItem1.getUri()),
() -> assertEquals(TerritoireBaseRelation.TypeEnum.COMMUNE, resultItem1.getType()),
() -> assertEquals(LocalDate.of(1943,1,1), resultItem1.getDateCreation()),
() -> assertEquals("Lillers", resultItem1.getIntituleSansArticle()),
() -> assertEquals(TerritoireBaseRelation.TypeArticleEnum._0, resultItem1.getTypeArticle()),
() -> assertEquals("Lillers", resultItem1.getIntitule()),
() -> assertEquals("inclus", resultItem1.getRelation())
);
}

// geo/quartiersPrioritairesDeLaPolitiqueDeLaVille2024/QN08255M/intersections?date=2025-09-04&type=commune//
@Test
void should_return_1_commune_when_quartierPrioritaireDeLaPolitiqueDeLaVille2024CodeIntersections_codeQN06255M_date20250904_typeCommune() {
var response = endpoints.getcogqpvintersect("QN06255M", LocalDate.of(2025,9,4), TypeEnum.COMMUNE);
var result = response.getBody();
Assertions.assertNotNull(result);
var resultItem1= result.getFirst();

assertAll(
() -> assertEquals(1, result.size()),
() -> assertEquals("62516", resultItem1.getCode()),
() -> assertEquals("http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713", resultItem1.getUri()),
() -> assertEquals(TerritoireBaseRelation.TypeEnum.COMMUNE, resultItem1.getType()),
() -> assertEquals(LocalDate.of(1943,1,1), resultItem1.getDateCreation()),
() -> assertEquals("Lillers", resultItem1.getIntituleSansArticle()),
() -> assertEquals(TerritoireBaseRelation.TypeArticleEnum._0, resultItem1.getTypeArticle()),
() -> assertEquals("Lillers", resultItem1.getIntitule()),
() -> assertEquals("inclus", resultItem1.getRelation())
);
}


}
63 changes: 61 additions & 2 deletions magma-oas/src/main/resources/openapi-diffusion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1770,7 +1770,7 @@ paths:
operationId: 'getcogqpv'
parameters:
- $ref: '#/components/parameters/codeQPVInPath'
- $ref: '#/components/parameters/dateQPVActive'
- $ref: '#/components/parameters/dateQPVActif'
responses:
'200':
$ref: '#/components/responses/QuartierPrioritaireDeLaPolitiqueDeLaVille200'
Expand Down Expand Up @@ -1803,6 +1803,28 @@ paths:
'500':
$ref: '#/components/responses/ServerError'

/geo/quartierPrioritaireDeLaPolitiqueDeLaVille2024/{code}/intersections:
get:
tags:
- geoQuartierPrioritaireDeLaPolitiqueDeLaVille
summary: 'Informations concernant les territoires directement liés au quartier prioritaire de la politique de la ville'
operationId: 'getcogqpvintersect'
parameters:
- $ref: '#/components/parameters/codeQPVInPath'
- $ref: '#/components/parameters/dateQPVActif'
- $ref: '#/components/parameters/typeTerritoireLieAQuartierPrioritaireDeLaPolitiqueDeLaVille'
responses:
'200':
$ref: '#/components/responses/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200'
'400':
$ref: '#/components/responses/IncorrectRequest'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'500':
$ref: '#/components/responses/ServerError'

/geo/region/{code}:
get:
tags:
Expand Down Expand Up @@ -2854,7 +2876,7 @@ components:
schema:
$ref: '#/components/schemas/CodeReg'

dateQPVActive:
dateQPVActif:
in: query
description: |-
Filtre pour renvoyer le quartier prioritaire de la politique de la ville actif à la date donnée. Par défaut, c’est la date courante (format : 'AAAA-MM-JJ')
Expand All @@ -2872,6 +2894,13 @@ components:
type: 'string'
format: date

typeTerritoireLieAQuartierPrioritaireDeLaPolitiqueDeLaVille:
name: 'type'
in: query
description: 'Filtre sur le type de territoire renvoyé'
schema:
$ref: '#/components/schemas/TypeEnum'

dateRegionActive:
in: query
description: |-
Expand Down Expand Up @@ -4524,6 +4553,18 @@ components:
typeArticle: 'X'
intitule: 'Grande Reyssouze Terre Des Fleurs'

QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies:
value:
- code: '62516'
uri: 'http://id.insee.fr/geo/commune/2d740bbc-9c75-4fd5-b3f4-63fbab6f2713'
type: 'Commune'
dateCreation: '1943-01-01'
intituleSansArticle: 'Lillers'
typeArticle: '0'
intitule: 'Lillers'
relation: 'inclus'


Region:
value:
code: '06'
Expand Down Expand Up @@ -5986,6 +6027,24 @@ components:
défaut:
$ref: '#/components/examples/ListeQuartiersPrioritairesDeLaPolitiqueDeLaVille'

QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200:
description: 'Opération réussie pour les territoires liés au quartier prioritaire de la politique de la ville'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TerritoireBase_Relation'
examples:
défaut:
$ref: '#/components/examples/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies'
application/xml:
schema:
$ref: '#/components/schemas/TerritoireBase_Relation'
examples:
défaut:
$ref: '#/components/examples/QuartierPrioritaireDeLaPolitiqueDeLaVilleListeTerritoiresLies200ListeTerritoiresLies'

Region200:
description: 'Opération réussie pour la région'
content:
Expand Down