id_client = $id_client; $this->table = strtolower(__CLASS__); // prestations } // getters public function getId(): int { return $this->id; } public function getIdClient(): int { return $this->id_client; } public function getIdsByIdClient() // obtenir une entrée avec son id_client, comportement différent si le type est connu { $sql = 'SELECT id FROM ' . $this->table . ' WHERE id_client = ' . $this->id_client; if($this->type_presta != '') { $sql .= " AND type_presta = '" . $this->type_presta . "'"; } $data = $this->execQuery($sql)->fetchAll(); // tableau de tableaux $IDs = []; // si $IDs reste vide, ne pas être de type NULL for($i = 0; $i < count($data); $i++) { $IDs[$i] = $data[$i]['id']; // tableau simple } return($IDs); } public function getCodePresta(): string { return $this->code_presta; } public function getDate(): int // timestamp unix { return $this->date; } public function getTypePresta(): string { return $this->type_presta; } public function getAllWithWindowFields(): array // différent de Model::getAll() qui retourne get_object_vars($this) { $code_presta_tableau = explode('-', $this->code_presta); $Date = new Dates($this->date); return [ "Numéro prestation:" => end($code_presta_tableau), // dernière case "Date:" => $Date->getDate(), //"Type de Presta:" => $this->type_presta, // choix impossible pour le moment "Mode de paiement:" => $this->mode_paiement, // non pertinent pour un devis "Commentaires:" => $this->commentaires]; } public function set(string $entry, string $input) { $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaine vide switch($entry) { case "Numéro prestation:": $this->setNumeroPresta($input); break; //~ case "Date:": // inutile, setDate() est appelé directement après choix fenêtre calendrier //~ $this->setDate($input); //~ break; //~ case "Type de Presta:": // choix impossible pour le moment //~ $this->setTypePresta($input); //~ break; case "Mode de paiement:": $this->setModePaiement($input); break; case "Commentaires:": $this->setCommentaires($input); break; } } // setters public function setIdClient(int $value) { $this->id_client = $value; return $this; } //~ public function setCombientiemeFois(int $value) //~ { //~ $this->combientieme_fois = $value; //~ return($this); //~ } public function setCodePresta(string $value) { $this->code_presta = $value; return $this; } public function setDate($value, bool $set_code_presta = false) // attend un timestamp { $this->date = (int) $value; if($set_code_presta) { $code_presta_tableau = explode('-', $this->code_presta); $Date = new Dates($value); $code_presta_tableau[0] = $Date->getYear(); $code_presta_tableau[1] = $Date->getMonth(); $code_presta_tableau[2] = $Date->getDay(); $this->code_presta = implode('-', $code_presta_tableau); } return $this; } public function setTypePresta(string $value) { $this->type_presta = $value; return $this; } public function setModePaiement(string $value) { $this->mode_paiement = $value; return $this; } public function setCommentaires(string $value) { $this->commentaires = $this->cleanSpecialChars($value); // nettoyage ici parce que pas possible ailleurs return $this; } public function setNumeroPresta($value) { // modifier le code presta, on pourrait aussi utiliser une regex $code_presta_tableau = explode('-', $this->code_presta); $code_presta_tableau[count($code_presta_tableau) - 1] = (int) $value; $this->code_presta = implode('-', $code_presta_tableau); return $this; } // code client = année-mois-jour-codeclient-typedepresta-combientièmefois public function makeCodePresta(Dates $Date, string $code_client) { // on récupère un tableau contenant toutes les prestations d'un client tous types confondus (devis, facture, cesu, location, enregistrement sans vente) // inconvénient: il peut y avoir plusieurs prestations avec le même numéro au compteur, à améliorer $combientieme_fois = count($this->find(['id_client' => $this->id_client])) + 1; $array_code = [$Date->getYear(), $Date->getMonth(), $Date->getDay(), $code_client, $this->type_presta, $combientieme_fois]; $this->code_presta = implode('-', $array_code); } } //~ class CodePresta extends Prestations //~ { //~ protected $numero_presta; //~ }