From b0f06b1d7dc3a790d6d8babe5f0855c08c5f7878 Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 20 Oct 2026 21:49:17 +0200 Subject: =?UTF-8?q?mise=20en=20place=20de=20l'h=C3=A9ritage=202,=20nombreu?= =?UTF-8?q?ses=20simplifications=20et=20factorisations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/entities/Devis.php | 98 ++++++++++++-------------------------------- 1 file changed, 26 insertions(+), 72 deletions(-) (limited to 'src/model/entities/Devis.php') diff --git a/src/model/entities/Devis.php b/src/model/entities/Devis.php index f559243..3f051c2 100644 --- a/src/model/entities/Devis.php +++ b/src/model/entities/Devis.php @@ -2,7 +2,6 @@ // src/entities/Devis.php use Doctrine\ORM\Mapping as ORM; -use Doctrine\ORM\EntityManager; #[ORM\Entity] #[ORM\Table(name: 'devis')] @@ -29,17 +28,7 @@ class Devis extends Prestation #[ORM\Column (options: ['default' => 'non'])] // défaut dans le cas d'un requête SQL ignorant ce champ private string $signature_devis = 'non'; - public static EntityManager $entityManager; - - public function __construct(?Prestation $presta = null){ - $this->setPresta($presta); - } - // getters - public function getPresta(): Prestation - { - return $this->presta; - } public function getAll(): array { // n'utiliser get_object_vars() qu'avec une entité parce qu'on maîtrise le nombre de propriétés @@ -48,19 +37,8 @@ class Devis extends Prestation public function getAllWithWindowFields(): array { - //~ $taches = ["Tâches:" => $this->taches]; - //~ $champs_communs = [ - //~ "Total Main d'oeuvre:" => $this->total_main_d_oeuvre, - //~ "Pièces:" => $this->pieces, - //~ "Total des pièces:" => $this->total_pieces, - //~ "Déplacement:" => $this->deplacement, - //~ "Total HT:" => $this->total_HT]; - //~ $champs_devis = [ - //~ "Delai de livraison:" => $this->delai_livraison, - //~ "Durée de validité:" => $this->validite_devis, - //~ "Devis signé:" => $this->signature_devis]; - //~ return $champs_communs + $champs_devis; - return [ + $common_data = parent::getAllWithWindowFields(); + return array_merge($common_data, [ "Tâches:" => $this->taches, // JUSTE AJOUTÉ "Total Main d'oeuvre:" => $this->total_main_d_oeuvre, "Pièces:" => $this->pieces, @@ -70,11 +48,11 @@ class Devis extends Prestation "Total HT:" => $this->total_HT, "Delai de livraison:" => $this->delai_livraison, "Durée de validité:" => $this->validite_devis, - "Devis signé:" => $this->signature_devis]; + "Devis signé:" => $this->signature_devis]); } // setters - public function set(string $entry, string $input) // trouve la bonne méthode + public function set(string $entry, string $input): void // trouve la bonne méthode { $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaîne vide switch($entry) @@ -109,41 +87,39 @@ class Devis extends Prestation case "Devis signé:": $this->setSignatureDevis($input); break; + default: // gérer les champ dans Prestation + parent::set($entry, $input); } } - private function setPresta(Prestation $input) // private? - { - $this->presta = $input; - } - public function setTaches(string $value) + public function setTaches(string $value): Devis { $this->taches = $value; return($this); } - public function setTotalMainDOeuvre($value) + public function setTotalMainDOeuvre(string $value): Devis { $value = str_replace(',', '.', $value); $this->total_main_d_oeuvre = (float) $value; // float "nettoie" tous les caractères après le dernier chiffre trouvé (ex: 50€ => 50, abc => 0) return($this); } - public function setPieces(string $value) + public function setPieces(string $value): Devis { $this->pieces = $value; return($this); } - public function setTotalPieces($value) + public function setTotalPieces(string $value): Devis { $value = str_replace(',', '.', $value); $this->total_pieces = (float) $value; return($this); } - public function setDeplacement($value) + public function setDeplacement(string $value): Devis { $value = str_replace(',', '.', $value); $this->deplacement = (float) $value; return($this); } - public function setTotalHT($value) + public function setTotalHT(string $value): Devis { $value = str_replace(',', '.', $value); $this->total_HT = (float) $value; @@ -155,23 +131,23 @@ class Devis extends Prestation $this->prix_devis = (float) $value; return($this); } - public function setDelaiLivraison(string $value) + public function setDelaiLivraison(string $value): Devis { $this->delai_livraison = $value; return($this); } - public function setValiditedevis(string $value) + public function setValiditedevis(string $value): Devis { $this->validite_devis = $value; return($this); } - public function setSignatureDevis(string $value) + public function setSignatureDevis(string $value): Devis { $this->signature_devis = $value; return($this); } - private function setAll(array $input) // private? + private function setAll(array $input): void // private? { $this->taches = $input[0]; $this->total_main_d_oeuvre = (float)$input[1]; @@ -186,43 +162,21 @@ class Devis extends Prestation // $signature_devis est renseigné plus tard en modifiant le devis } - // à mettre plus tard dans une classe mère - protected function cleanSpecialChars(string $data): string - { - $search = ['"']; - return str_replace($search, '', $data); - } - // à mettre plus tard dans une classe mère - public function hydrate(string $answers): void + public function validateForm(array $data_array): bool { - $answers = $this->cleanSpecialChars($answers); // possibilité que $answers devienne une chaine vide - if($answers == '') - { - echo "erreur de Devis::hydrate(), la chaine \$answers est vide.\n"; - return; + if(count($data_array) === 9){ + return true; } - $data_array = explode('|', $answers); // array - - if(count($data_array) === 9) // facture normale, "=== 9" = merdique - { - $this->getPresta()->setModePaiement(''); // sécurité, doctrine plante si "null" - $this->setAll($data_array); + else{ + echo "erreur de Devis::validateForm(), le tableau \$data_array n'a pas la taille attendue.\n"; + return false; } - else - { - echo "erreur de Devis::hydrate(), le tableau \$data_array n'a pas la taille attendue.\n"; - return; - } - - //self::$entityManager->persist('Prestation'); - self::$entityManager->persist($this); // $Presta avec en cascade! - self::$entityManager->flush(); } - // création d'une facture à partir d'un devis - public static function getQuotation(Prestation $Quotation) + // à mettre plus tard dans une classe mère + public function hydrate(array $data_array): void { - $repository = self::$entityManager->getRepository('Devis'); - return $repository->findOneBy(['presta' => $Quotation->getId()]); // ne peut y en avoir deux + //$this->setModePaiement(''); // vaut déjà '' + $this->setAll($data_array); } } -- cgit v1.2.3