feat: dto draft

This commit is contained in:
Aymeric GUERACAGUE 2025-05-22 20:05:15 +02:00
parent b27895860d
commit 260b59a725
Signed by: Superkooka
GPG Key ID: F78F2B172E894865
10 changed files with 161 additions and 12 deletions

View File

@ -260,7 +260,14 @@
</interExtraction>
</point>
<point nivpoint="4" structure="Oui" valeur_ptsodj="1" ordinal_prise="1" id_preparation="2697011" ordre_absolu_seance="25" id_acteur="PA330008" id_mandat="PM842366" id_nomination_oe="0" id_nomination_op="PM846636" orateur="" code_grammaire="DISC_ARTICLES_3_40" code_parole="" sommaire="1" id_syceron="3748389" valeur=" 1257, 1256 et 496" bibard=" (n[[o]] 1364)" art=" 3" adt=" 389" ssadt="">
<interExtraction nom_orateur="Mme Brigitte Liso" qualite="rapporteure" id_acteur="PA720446" id_nomination_oe="-1" id_nomination_op="-2529285" id_mandat="PM843095">
<interExtraction
nom_orateur="Mme Brigitte Liso"
qualite="rapporteure"
id_acteur="PA720446"
id_nomination_oe="-1"
id_nomination_op="-2529285"
id_mandat="PM843095"
>
<paragraphe valeur_ptsodj="1" ordinal_prise="1" id_preparation="2697011" ordre_absolu_seance="25" id_acteur="PA330008" id_mandat="PM842366" id_nomination_oe="0" id_nomination_op="PM846636" code_grammaire="DISC_ARTICLES_3_40" code_style="NORMAL" code_parole="" sommaire="1" id_syceron="3748389" valeur=" 1257, 1256 et 496" bibard=" (n[[o]] 1364)" art=" 3" adt=" 389" ssadt="" roledebat="president">
<orateurs>
<orateur>
@ -1705,7 +1712,21 @@
</orateurs>
<texte stime="4907.34">Les critères détaillés dans larticle 4 sont justement ceux qui permettent une évaluation objective et qui garantissent légalité de tous face à la fin de vie.<italique> (Applaudissements sur quelques bancs du groupe LFI-NFP.</italique> <italique> Mmes Sandrine</italique><italique> Rousseau</italique><italique> et</italique><italique> Karine</italique><italique> Lebon</italique><italique> applaudissent</italique> <italique>également.)</italique></texte>
</paragraphe>
<paragraphe valeur_ptsodj="1" ordinal_prise="5" id_preparation="2697123" ordre_absolu_seance="261" id_acteur="PA330008" id_mandat="PM842366" id_nomination_oe="0" id_nomination_op="PM846636" code_grammaire="PAROLE_GENERIQUE" code_style="NORMAL" code_parole="" sommaire="0" id_syceron="3749096" valeur="">
<paragraphe
valeur_ptsodj="1"
ordinal_prise="5"
id_preparation="2697123"
ordre_absolu_seance="261"
id_acteur="PA330008"
id_mandat="PM842366"
id_nomination_oe="0"
id_nomination_op="PM846636"
code_grammaire="PAROLE_GENERIQUE"
code_style="NORMAL"
code_parole=""
sommaire="0"
id_syceron="3749096"
valeur="">
<orateurs>
<orateur>
<nom>M. le président</nom>

View File

@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace App\Application\AssembleeNationale;
use Symfony\Component\Serializer\Attribute\SerializedPath;
readonly class InterExtraction
{
public function __construct(
#[SerializedPath('[@nom_orateur]')]
public string $nomOrateur,
#[SerializedPath('[@id_acteur]')]
public string $idActeur,
#[SerializedPath('[@id_nomination_oe]')]
public int $idNominationOe,
#[SerializedPath('[@id_nomination_op]')]
public int $idNominationOp,
#[SerializedPath('[@id_mandat]')]
public string $idMandat,
#[SerializedPath('[@qualite]')]
public ?string $qualite,
#[SerializedPath('[paragraphe]')]
/** @var ?Paragraphe[] $paragraphes */
public ?array $paragraphes,
) {
}
}

View File

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Application\AssembleeNationale;
use Symfony\Component\Serializer\Attribute\SerializedPath;
readonly class Orateur
{
public function __construct(
#[SerializedPath('[nom]')]
public string $nom,
#[SerializedPath('[id]')]
public string $id,
#[SerializedPath('[qualite]')]
public string $qualite,
) {
}
}

View File

@ -0,0 +1,40 @@
<?php
declare(strict_types=1);
namespace App\Application\AssembleeNationale;
use Symfony\Component\Serializer\Attribute\SerializedPath;
readonly class Paragraphe
{
public function __construct(
#[SerializedPath('[orateurs]')]
public ?array $orateur,
public array|string $texte,
#[SerializedPath('[@ordre_absolu_seance]')]
public int $ordreAbsoluteSeance,
#[SerializedPath('[@code_grammaire]')]
public string $codeGrammaire,
#[SerializedPath('[@code_style]')]
public string $codeStyle,
#[SerializedPath('[@code_parole]')]
public string $codeParole,
#[SerializedPath('[@id_acteur]')]
public null|string $idActeur,
#[SerializedPath('[@id_mandat]')]
public null|string|int $idMandat,
#[SerializedPath('[@id_nomination_oe]')]
public null|string|int $idNominationOe,
#[SerializedPath('[@id_nomination_op]')]
public null|string|int $idNominationOp,
#[SerializedPath('[@art]')]
public ?int $art,
#[SerializedPath('[@adt]')]
public ?int $adt,
/** @var ?Paragraphe[] $paragraphes */
public ?array $paragraphes,
) {
}
}

View File

@ -0,0 +1,29 @@
<?php
declare(strict_types=1);
namespace App\Application\AssembleeNationale;
use Symfony\Component\Serializer\Attribute\SerializedPath;
readonly class Point
{
public function __construct(
#[SerializedPath('[texte]')]
public string|array|null $texte,
#[SerializedPath('[@nivpoint]')]
public int $nivPoint,
#[SerializedPath('[@structure]')]
public ?string $structure,
#[SerializedPath('[point]')]
/** @var ?Point[] $points */
public ?array $points,
#[SerializedPath('[paragraphe]')]
/** @var ?Paragraphe[] $paragraphes */
public ?array $paragraphes,
#[SerializedPath('[interExtraction]')]
/** @var ?InterExtraction[] $interExtraction */
public ?array $interExtraction,
) {
}
}

View File

@ -1,6 +1,8 @@
<?php
namespace App\Application\NationalAssemblyDTO;
declare(strict_types=1);
namespace App\Application\AssembleeNationale;
use Symfony\Component\Serializer\Attribute\Context;
use Symfony\Component\Serializer\Attribute\SerializedPath;
@ -9,6 +11,8 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
readonly class Seance
{
public function __construct(
#[SerializedPath('[uid]')]
public string $uid,
#[SerializedPath('[metadonnees][dateSeance]')]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'YmdHisv'])]
public \DateTimeImmutable $dateSeance,
@ -16,7 +20,9 @@ readonly class Seance
public int $legislature,
#[SerializedPath('[metadonnees][session]')]
public string $session,
#[SerializedPath('[contenu][point]')]
/** @var Point[] $points */
public array $points,
) {
}
}
}

View File

@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
namespace App\Application\UseCase;
use App\Application\NationalAssemblyDTO\Seance;
use App\Application\AssembleeNationale\Seance;
use Symfony\Component\Serializer\SerializerInterface;
class DeserializeCompteRenduAN
@ -10,7 +12,6 @@ class DeserializeCompteRenduAN
public function __construct(
private readonly SerializerInterface $serializer
) {
}
public function handle(DeserializeCompteRenduANRequest $request): void
@ -19,4 +20,4 @@ class DeserializeCompteRenduAN
dd($this->serializer->deserialize($compteRenduXML, Seance::class, 'xml'));
}
}
}

View File

@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Application\UseCase;
class DeserializeCompteRenduANRequest
@ -8,4 +10,4 @@ class DeserializeCompteRenduANRequest
public string $filename,
) {
}
}
}

View File

@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Infrastructure\Console;
use App\Application\UseCase\DeserializeCompteRenduANRequest;
@ -14,8 +16,7 @@ class DebugDeserializeCompteRendu extends Command
{
public function __construct(
private readonly CommandBusCaller $commandBusCaller,
)
{
) {
parent::__construct();
}
@ -26,4 +27,4 @@ class DebugDeserializeCompteRendu extends Command
return Command::SUCCESS;
}
}
}