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

Création requête API Ajout approbation sur une entrée et transfère dans le...

Création requête  API Ajout approbation sur une entrée et transfère dans le lexique Zéro depuis lexique nouveaux mots
parent c78bdf14
No related branches found
No related tags found
No related merge requests found
...@@ -48,3 +48,6 @@ MAILER_FROM=ne-pas-repondre@balex.fr ...@@ -48,3 +48,6 @@ MAILER_FROM=ne-pas-repondre@balex.fr
###> nelmio/cors-bundle ### ###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
###< nelmio/cors-bundle ### ###< nelmio/cors-bundle ###
###> app ###
ENTRY_APPROVAL_NB=7
\ No newline at end of file
...@@ -185,7 +185,7 @@ class ApiEntryController extends ApiBaseController ...@@ -185,7 +185,7 @@ class ApiEntryController extends ApiBaseController
} }
/** /**
* Copie une sélection d'entrée vers des lexiques cibles. Si force=true, on crée l'entrée même si le mot n'est pas trouvé dans le wiktionnaire * Copie une sélection d'entrée vers des lexiques cibles.
* *
* @Route("/copy", name="api_copy_entries", methods={"POST"}) * @Route("/copy", name="api_copy_entries", methods={"POST"})
* *
...@@ -548,4 +548,39 @@ class ApiEntryController extends ApiBaseController ...@@ -548,4 +548,39 @@ class ApiEntryController extends ApiBaseController
return $this->createJsonResponse(200, ['success' => sprintf("Entrée %s supprimée du lexique %s", $entry, $data['target_lex'])]); return $this->createJsonResponse(200, ['success' => sprintf("Entrée %s supprimée du lexique %s", $entry, $data['target_lex'])]);
} }
/**
* @Route("/add-approval/{id}", name="api_entry_add_approval", methods={"PUT"})
*
* @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\Parameter(
* name="id",
* in="path",
* description="id of the entry to approve",
* @OA\Schema(type="string")
* )
* @OA\Tag(name="Entries")
* @Security(name="OAuth2")
*/
public function addApproval(Request $request, Entry $entry = null)
{
if ($entry === null) {
return $this->createJsonResponse(401, ['error' => sprintf("Pas d'entrée trouvée pour cette Id")]);
}
$entry->addApproval();
if ($entry->getLexicon()->isNewWords() && $entry->getApprovalNb() >= $_ENV['ENTRY_APPROVAL_NB']) {
// TODO merger les entries ou ne rien faire si on a déjà une entry pour ce headword
$entry->setLexicon($this->getZeroLexicon($entry->getLanguage()));
}
$this->doctrine->getManager()->flush();
$this->addSuccessMessage(sprintf("Approbation ajoutée à l'entrée %s", $entry->getId()));
return $this->createJsonResponse();
}
} }
...@@ -55,6 +55,12 @@ class Entry ...@@ -55,6 +55,12 @@ class Entry
*/ */
private $language; private $language;
/**
* @Groups({"entry:read"})
* @ORM\Column(type="integer")
*/
private $approvalNb = 0;
/** /**
* @Groups({"entry:read"}) * @Groups({"entry:read"})
* @ORM\Column(type="datetime_immutable") * @ORM\Column(type="datetime_immutable")
...@@ -94,6 +100,11 @@ class Entry ...@@ -94,6 +100,11 @@ class Entry
return $this->getHeadword()->getValue(); return $this->getHeadword()->getValue();
} }
public function addApproval()
{
$this->setApprovalNb($this->getApprovalNb() + 1);
}
public function getFormattedDefinitions() public function getFormattedDefinitions()
{ {
$result = []; $result = [];
...@@ -130,6 +141,10 @@ class Entry ...@@ -130,6 +141,10 @@ class Entry
public function setAttributes(?array $attributes): self public function setAttributes(?array $attributes): self
{ {
if ($this->getAttributes() != $attributes) {
$this->setApprovalNb(0);
}
$this->attributes = $attributes; $this->attributes = $attributes;
return $this; return $this;
...@@ -248,4 +263,16 @@ class Entry ...@@ -248,4 +263,16 @@ class Entry
return $this; return $this;
} }
public function getApprovalNb(): ?int
{
return $this->approvalNb;
}
public function setApprovalNb(int $approvalNb): self
{
$this->approvalNb = $approvalNb;
return $this;
}
} }
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