Skip to content
Snippets Groups Projects
Commit c793969b authored by Pierre Fleutot's avatar Pierre Fleutot
Browse files

API : Ajout endpoint création de traces par lot

parent 92a75fb0
No related branches found
No related tags found
No related merge requests found
...@@ -84,6 +84,70 @@ class ApiTraceController extends ApiBaseController ...@@ -84,6 +84,70 @@ class ApiTraceController extends ApiBaseController
return $this->createJsonResponse(200); return $this->createJsonResponse(200);
} }
/**
*
* @Route("/create-batch", name="api_trace_create_batch", methods={"POST"})
*
* @OA\Response(response=200, description="success", @OA\JsonContent(type="string"))
* @OA\Response(response=401, description="error", @OA\JsonContent(type="string"))
* @OA\Response(response=403, description="error", @OA\JsonContent(type="string"))
* @OA\Response(response=500, description="error", @OA\JsonContent(type="string"))
* @OA\RequestBody(
* required=true,
* @OA\JsonContent(
* @OA\Property(property="trace_list", type="array", description="Tableau de traces",
* example={{"origin": "Prisms", "action": "Partie gagnée", "additional_info": {"info1": "example"}, "timestamp": "2012-08-18 11:14:15.889342"}, {"origin": "Prisms", "action": "Match nul", "additional_info": {"info2": "other"}, "timestamp": "2012-07-08 11:14:15.889342"}},
* @OA\Items(
* type="object"
* )
* )
* )
* )
* @OA\Tag(name="Traces")
* @Security(name="OAuth2")
*/
public function createBatchTrace(Request $request): Response
{
$data = json_decode($request->getContent(), true);
if (!$data) {
return $this->createJsonResponse(401, ['error' => sprintf("Json non valide")]);
}
if ($missingFields = $this->getMissingFields($data, ['trace_list'])) {
return $this->createJsonResponse(401, ['error' => sprintf("Veuillez fournir une valeur pour: %s", implode(', ', $missingFields))]);
}
$traceList = $data['trace_list'];
foreach ($traceList as $traceData) {
if ($missingFields = $this->getMissingFields($traceData, ['origin', 'action'])) {
return $this->createJsonResponse(401, ['error' => sprintf("Veuillez fournir une valeur pour: %s", implode(', ', $missingFields))]);
}
if ($traceData['timestamp'] ?? null) {
$date = new \DateTime($traceData['timestamp']);
if ($date === false) {
return $this->createJsonResponse(401, ['error' => sprintf("Veuillez fournir une date au format aaaa-mm-jj hh:mm:ss.dddddd pour le paramètre «timestamp»")]);
}
}
$trace = new Trace();
$trace->setCreatedBy($this->getUser());
$trace->setAction($traceData['action']);
$trace->setOrigin($traceData['origin']);
if ($traceData['additional_info'] ?? null) {
$trace->setAdditionalInfo($traceData['additional_info']);
}
if ($date ?? null) {
$trace->setTimestamp($date);
}
$this->doctrine->getManager()->persist($trace);
$this->doctrine->getManager()->flush();
$this->success[] = sprintf("Trace id %s créée.", $trace->getId());
}
return $this->createJsonResponse(200);
}
/** /**
* Recherche de traces par date ou user ou action ou origin * Recherche de traces par date ou user ou action ou origin
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment