-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
640 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<?php | ||
|
||
namespace App\Controller\Api; | ||
|
||
use App\Dto\Api\Response\SignalementResponse; | ||
use App\Repository\SignalementRepository; | ||
use App\Service\Signalement\SignalementDesordresProcessor; | ||
use Nelmio\ApiDocBundle\Annotation\Model; | ||
use OpenApi\Attributes as OA; | ||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; | ||
use Symfony\Component\DependencyInjection\Attribute\When; | ||
use Symfony\Component\HttpFoundation\JsonResponse; | ||
use Symfony\Component\HttpFoundation\Response; | ||
use Symfony\Component\HttpKernel\Attribute\MapQueryParameter; | ||
use Symfony\Component\Routing\Attribute\Route; | ||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||
|
||
#[When('dev')] | ||
#[When('test')] | ||
#[Route('/api')] | ||
class SignalementController extends AbstractController | ||
{ | ||
#[Route('/signalements', name: 'api_signalements', methods: ['GET'])] | ||
#[OA\Get( | ||
path: '/api/signalements', | ||
description: 'Retourne les {{ limit }} derniers signalements', | ||
summary: 'Liste des signalements', | ||
security: [['bearerAuth' => []]], | ||
tags: ['Signalements'], | ||
)] | ||
#[OA\Parameter( | ||
name: 'limit', | ||
description: 'Nombre de signalements à retourner (défaut : 20, max : 100)', | ||
in: 'query', | ||
required: false, | ||
schema: new OA\Schema(type: 'limit', example: '10') | ||
)] | ||
#[OA\Response( | ||
response: Response::HTTP_OK, | ||
description: 'Une liste de signalements', | ||
content: new OA\JsonContent( | ||
type: 'array', | ||
items: new OA\Items(ref: new Model(type: SignalementResponse::class)) | ||
) | ||
)] | ||
public function getSignalementList( | ||
SignalementRepository $signalementRepository, | ||
SignalementDesordresProcessor $signalementDesordresProcessor, | ||
UrlGeneratorInterface $urlGenerator, | ||
#[MapQueryParameter] int $limit = 20, | ||
): JsonResponse { | ||
if ($limit > 100) { | ||
$limit = 100; | ||
} | ||
$signalements = $signalementRepository->findForAPI(user: $this->getUser(), limit: $limit); | ||
$resources = []; | ||
foreach ($signalements as $signalement) { | ||
$resources[] = new SignalementResponse($signalement, $signalementDesordresProcessor, $urlGenerator); // sinon comment acceder à ses services pour generer les responses ? | ||
} | ||
|
||
return new JsonResponse($resources, Response::HTTP_OK); | ||
} | ||
|
||
#[Route('/signalements/{uuid}', name: 'api_signalement_uuid', methods: ['GET'])] | ||
#[OA\Get( | ||
path: '/api/signalements/{uuid}', | ||
description: 'Retourne un signalement récupéré par son UUID', | ||
summary: 'Signalement par UUID', | ||
security: [['bearerAuth' => []]], | ||
tags: ['Signalements'] | ||
)] | ||
#[OA\Response( | ||
response: Response::HTTP_OK, | ||
description: 'Un signalement', | ||
content: new OA\JsonContent(ref: '#/components/schemas/SignalementResponse') | ||
)] | ||
public function getSignalementByUuid( | ||
SignalementRepository $signalementRepository, | ||
SignalementDesordresProcessor $signalementDesordresProcessor, | ||
UrlGeneratorInterface $urlGenerator, | ||
string $uuid, | ||
): JsonResponse { | ||
$signalements = $signalementRepository->findForAPI(user : $this->getUser(), uuid : $uuid); | ||
if (!count($signalements)) { | ||
return new JsonResponse(['message' => 'Signalement introuvable'], Response::HTTP_NOT_FOUND); | ||
} | ||
$resource = new SignalementResponse($signalements[0], $signalementDesordresProcessor, $urlGenerator); | ||
|
||
return new JsonResponse($resource, Response::HTTP_OK); | ||
} | ||
|
||
#[Route('/signalements/reference/{reference}', name: 'api_signalement_reference', methods: ['GET'])] | ||
#[OA\Get( | ||
path: '/api/signalements/reference/{reference}', | ||
description: 'Retourne un signalement récupéré par sa reference', | ||
summary: 'Signalement par référence', | ||
security: [['bearerAuth' => []]], | ||
tags: ['Signalements'] | ||
)] | ||
#[OA\Response( | ||
response: Response::HTTP_OK, | ||
description: 'Un signalement', | ||
content: new OA\JsonContent(ref: '#/components/schemas/SignalementResponse') | ||
)] | ||
public function getSignalementByReference( | ||
SignalementRepository $signalementRepository, | ||
SignalementDesordresProcessor $signalementDesordresProcessor, | ||
UrlGeneratorInterface $urlGenerator, | ||
string $reference, | ||
): JsonResponse { | ||
$signalements = $signalementRepository->findForAPI(user : $this->getUser(), reference : $reference); | ||
if (!count($signalements)) { | ||
return new JsonResponse(['message' => 'Signalement introuvable'], Response::HTTP_NOT_FOUND); | ||
} | ||
$resource = new SignalementResponse($signalements[0], $signalementDesordresProcessor, $urlGenerator); | ||
|
||
return new JsonResponse($resource, Response::HTTP_OK); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ users: | |
- | ||
email: [email protected] | ||
roles: "[\"ROLE_API_USER\"]" | ||
partner: "Administrateurs Histologe ALL" | ||
partner: "Partenaire 13-01" | ||
statut: 1 | ||
is_generique: 0 | ||
is_mailing_active: 0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
use App\Entity\Affectation; | ||
|
||
class AffectationResponse | ||
{ | ||
public string $dateCreation; | ||
public ?string $dateReponse; | ||
public int $statut; | ||
public PartnerResponse $partnerResponse; | ||
public ?string $motifCloture; | ||
public ?string $motifRefus; | ||
|
||
public function __construct( | ||
Affectation $affectation, | ||
) { | ||
$this->dateCreation = $affectation->getCreatedAt()->format(\DATE_ATOM); | ||
$this->dateReponse = $affectation->getAnsweredAt()?->format(\DATE_ATOM); | ||
$this->statut = $affectation->getStatut(); // envoyer un libellé ? | ||
$this->partnerResponse = new PartnerResponse($affectation->getPartner()); | ||
$this->motifCloture = $affectation->getMotifCloture()?->label(); | ||
$this->motifRefus = $affectation->getMotifRefus()?->label(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
use App\Entity\Criticite; | ||
use App\Entity\DesordrePrecision; | ||
|
||
class DesordreResponse | ||
{ | ||
public string $categorie; | ||
public ?string $zone; | ||
public array $details = []; | ||
|
||
public function __construct( | ||
string $categorie, | ||
array $data, | ||
?string $zone = null, | ||
) { | ||
$this->categorie = $categorie; | ||
$this->zone = $zone; | ||
foreach ($data as $label => $unused) { | ||
$details = $label; | ||
if ($unused instanceof DesordrePrecision && $unused->getLabel()) { | ||
$details .= ' : '.$unused->getLabel(); | ||
} elseif ($unused instanceof Criticite && $unused->getLabel()) { | ||
$details .= ' : '.$unused->getLabel(); | ||
} | ||
$this->details[] = $details; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
use App\Entity\File; | ||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||
|
||
class FileResponse | ||
{ | ||
public string $uuid; | ||
public string $titre; | ||
public string $documentType; | ||
public string $url; | ||
|
||
public function __construct( | ||
File $file, | ||
UrlGeneratorInterface $urlGenerator, | ||
) { | ||
$this->uuid = $file->getUuid(); | ||
$this->titre = $file->getTitle(); | ||
$this->documentType = $file->getDocumentType()->value; | ||
$this->url = $urlGenerator->generate('show_file', ['uuid' => $file->getUuid()], UrlGeneratorInterface::ABSOLUTE_URL); | ||
// besoin d'exposer plus d'élements ? | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
class GeolocalisationResponse | ||
{ | ||
public function __construct(public ?float $latitude, public ?float $longitude) | ||
{ | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
use App\Entity\Intervention; | ||
|
||
class InterventionResponse | ||
{ | ||
public string $dateIntervention; | ||
public ?string $type; | ||
public ?string $statut; | ||
public ?PartnerResponse $partner; | ||
public ?string $details; | ||
public array $conclusions = []; | ||
public ?bool $occupantPresent; | ||
public ?bool $proprietairePresent; | ||
|
||
public function __construct( | ||
Intervention $intervention, | ||
) { | ||
$this->dateIntervention = $intervention->getScheduledAt()->format(\DATE_ATOM); | ||
$this->type = $intervention->getType()?->label(); | ||
$this->statut = $intervention->getStatus(); | ||
$this->partner = $intervention->getPartner() ? new PartnerResponse($intervention->getPartner()) : null; | ||
$this->details = $intervention->getDetails(); // traitement de suppression du html | ||
$this->conclusions = $intervention->getConcludeProcedure() ?? []; | ||
$this->occupantPresent = $intervention->isOccupantPresent(); | ||
$this->proprietairePresent = $intervention->isProprietairePresent(); | ||
// besoin d'exposer plus d'élements ? | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
namespace App\Dto\Api\Response; | ||
|
||
use App\Entity\Partner; | ||
|
||
class PartnerResponse | ||
{ | ||
public string $nom; | ||
public ?string $type; | ||
public array $competences = []; | ||
|
||
public function __construct( | ||
Partner $partner, | ||
) { | ||
$this->nom = $partner->getNom(); | ||
$this->type = $partner->getType()?->label(); | ||
$this->competences = $partner->getCompetence() ?? []; | ||
// besoin d'exposer plus d'élements ? | ||
} | ||
} |
Oops, something went wrong.