From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/model/entities/Location.php | 209 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 src/model/entities/Location.php (limited to 'src/model/entities/Location.php') diff --git a/src/model/entities/Location.php b/src/model/entities/Location.php new file mode 100644 index 0000000..7ce6f0d --- /dev/null +++ b/src/model/entities/Location.php @@ -0,0 +1,209 @@ +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 + return get_object_vars($this); + } + + public function getAllWithWindowFields(): array + { + return [ + "Désignation:" => $this->designation, + "Description du modèle:" => $this->modele_description, + "Valeur:" => $this->valeur, + "État des lieux de début:" => $this->etat_des_lieux_debut, + "État des lieux de fin:" => $this->etat_des_lieux_fin, + "Durée de la location:" => $this->duree_location, + "Loyer Hebdomadaire:" => $this->loyer_hebdo, + "Loyers Payés:" => $this->loyers_payes, + "Caution:" => $this->caution]; + } + + // setters + public function set(string $entry, string $input) + { + $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaîne vide + switch($entry) + { + case "Désignation:": + $this->setDesignation($input); + break; + case "Description du modèle:": + $this->setModeleDescription($input); + break; + case "Valeur:": + $this->setValeur($input); + break; + case "État des lieux de début:": + $this->setEtatDesLieuxDebut($input); + break; + case "État des lieux de fin:": + $this->setEtatDesLieuxFin($input); + break; + case "Durée de la location:": + $this->setDureeLocation($input); + break; + case "Loyer Hebdomadaire:": + $this->setLoyerHebdo($input); + break; + case "Loyers Payés:": + $this->setLoyersPayes($input); + break; + case "Caution:": + $this->setCaution($input); + break; + } + } + private function setPresta(Prestation $input) // private? + { + $this->presta = $input; + } + public function setDesignation(string $value) + { + $this->designation = $value; + return($this); + } + public function setModeleDescription(string $value) + { + $this->modele_description = $value; + return($this); + } + public function setValeur($value) + { + $value = str_replace(',', '.', $value); + $this->valeur = (float) $value; + return($this); + } + public function setEtatDesLieuxDebut(string $value) + { + $this->etat_des_lieux_debut = $value; + return($this); + } + public function setEtatDesLieuxFin(string $value) + { + $this->etat_des_lieux_fin = $value; + return($this); + } + public function setDureeLocation(string $value) + { + $this->duree_location = $value; + return($this); + } + public function setLoyerMensuel($value) + { + $value = str_replace(',', '.', $value); + $this->loyer_mensuel = (float) $value; + return($this); + } + public function setLoyersPayes($value) + { + $value = str_replace(',', '.', $value); + $this->loyers_payes = (float) $value; + return($this); + } + public function setCaution($value) + { + $value = str_replace(',', '.', $value); + $this->caution = (float) $value; + return($this); + } + + private function setAll(array $input) // private? + { + $this->designation = $input[0]; + $this->modele_description = $input[1]; + $this->valeur = (float)$input[2]; + $this->etat_des_lieux_debut = $input[3]; + $this->etat_des_lieux_fin = ''; // sécurité + $this->duree_location = $input[4]; + $this->loyer_hebdo = (float)$input[5]; + $this->loyers_payes = (int)$input[6]; + $this->caution = (int)$input[7]; + } + + // à 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) + { + $answers = $this->cleanSpecialChars($answers); // possibilité que $answers devienne une chaine vide + if($answers == '') + { + echo "erreur de Location::hydrate(), la chaine \$answers est vide.\n"; + return false; + } + $data_array = explode('|', $answers); // array + + $check = false; + if(count($data_array) === 8) + { + $this->getPresta()->setModePaiement(''); // sécurité, doctrine plante si "null" + $this->setAll($data_array); + } + else + { + echo "erreur de Location::hydrate(), le tableau \$data_array n'a pas la taille attendue.\n"; + return false; + } + + //self::$entityManager->persist('Prestation'); + self::$entityManager->persist($this); // $Presta avec en cascade! + self::$entityManager->flush(); + } +} -- cgit v1.2.3