Create org on remote call

This commit is contained in:
Charles 2026-02-23 10:30:21 +01:00
parent 829469b1c5
commit 4ac179f7b6
2 changed files with 10 additions and 3 deletions

View File

@ -41,6 +41,7 @@ The route should be as follows:
``` ```
Keep the same structure for the project tree, create an Api folder in the controller, a V1 folder and then create your controller. Keep the same structure for the project tree, create an Api folder in the controller, a V1 folder and then create your controller.
Here is a full example of a controller with the create method. Here is a full example of a controller with the create method.
On crée une organization si elle n'existe pas
```php ```php
<?php <?php
#[Route('/api/v2/project', name: 'api_project_')] #[Route('/api/v2/project', name: 'api_project_')]
@ -58,7 +59,12 @@ class ProjectApi extends AbstractController{
$data = json_decode($request->getContent(), true, 512, JSON_THROW_ON_ERROR); $data = json_decode($request->getContent(), true, 512, JSON_THROW_ON_ERROR);
$projet = new Projet(); $projet = new Projet();
$entity = $this->entityManager->getRepository(Entity::class)->find($data['entity_id']); $entity = $this->entityManager->getRepository(Entity::class)->findOneBy([ 'ssoId' => $data['orgId']]);
// Si l'entité n'existe pas, on la crée
if(!$entity){
$this->createEntity($data['orgId'], $data['orgName']);
$entity = $this->entityManager->getRepository(Entity::class)->findOneBy([ 'ssoId' => $data['orgId']]);
}
$precision= $data['timestamp']; $precision= $data['timestamp'];
$validPrecisions = array_map(fn($case) => $case->value, TimestampPrecision::cases()); $validPrecisions = array_map(fn($case) => $case->value, TimestampPrecision::cases());
if (!in_array($precision, $validPrecisions, true)) { if (!in_array($precision, $validPrecisions, true)) {
@ -68,10 +74,10 @@ class ProjectApi extends AbstractController{
try { try {
$timestampPrecision = TimestampPrecision::from($precision); $timestampPrecision = TimestampPrecision::from($precision);
$projet->setTimestampPrecision($timestampPrecision); $projet->setTimestampPrecision($timestampPrecision);
$projet->setProjet($data['projet']); $projet->setProjet($data['name']);
$projet->setEntityId($entity); $projet->setEntityId($entity);
$projet->setBdd($data['bdd']); $projet->setBdd($data['bdd']);
$projet->setIsactive($data['isactive']); $projet->setIsactive($data['isActive']);
$projet->setLogo($data['logo']); $projet->setLogo($data['logo']);
$projet->setDeletionAllowed($data['deletion']); $projet->setDeletionAllowed($data['deletion']);
$projet->setSsoId($data['id']); // c'est l'id du projet dans le portail, pas la bdd local $projet->setSsoId($data['id']); // c'est l'id du projet dans le portail, pas la bdd local

View File

@ -77,6 +77,7 @@ class ProjectService
'id' => $project->getId(), 'id' => $project->getId(),
'name' => $project->getName(), 'name' => $project->getName(),
'orgId' => $project->getOrganization()->getId(), 'orgId' => $project->getOrganization()->getId(),
'orgName' => $project->getOrganization()->getName(),
'bdd' => $project->getBddName(), 'bdd' => $project->getBddName(),
'isActive' => $project->isActive(), 'isActive' => $project->isActive(),
'logo' => $project->getLogo(), 'logo' => $project->getLogo(),