summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/model')
-rw-r--r--src/model/CESU.php5
-rw-r--r--src/model/Clients.php13
-rw-r--r--src/model/DevisFactures.php5
-rw-r--r--src/model/Locations.php5
-rw-r--r--src/model/Model.php14
-rw-r--r--src/model/Prestations.php5
-rw-r--r--src/model/StructTablesDB.php4
-rw-r--r--src/model/traits.php16
8 files changed, 36 insertions, 31 deletions
diff --git a/src/model/CESU.php b/src/model/CESU.php
index 4679da2..28a54a8 100644
--- a/src/model/CESU.php
+++ b/src/model/CESU.php
@@ -12,10 +12,7 @@ class CESU extends Model
12 private $duree_travail; 12 private $duree_travail;
13 private $salaire; 13 private $salaire;
14 14
15 public function __construct() 15 use ModelChildren;
16 {
17 $this->table = self::TABLE; // => Model::$table
18 }
19 16
20 // setters 17 // setters
21 public function setID(int $value) 18 public function setID(int $value)
diff --git a/src/model/Clients.php b/src/model/Clients.php
index 1256458..816cff3 100644
--- a/src/model/Clients.php
+++ b/src/model/Clients.php
@@ -10,10 +10,7 @@ class Clients extends Model
10 public $code_client; 10 public $code_client;
11 public $commentaires; 11 public $commentaires;
12 12
13 public function __construct() 13 use ModelChildren; // renseigne parent::table
14 {
15 $this->table = strtolower(__CLASS__); // simple parce que la classe a le nom de la table
16 }
17 14
18 //~ public function set(string $variable, $value) 15 //~ public function set(string $variable, $value)
19 //~ { 16 //~ {
@@ -47,4 +44,12 @@ class Clients extends Model
47 $this->commentaires = $value; 44 $this->commentaires = $value;
48 return($this); 45 return($this);
49 } 46 }
47
48
49 public function newRow(array $entry)
50 {
51 $this->hydrate(['prenom_nom' => $entry[0], 'adresse' => $entry[1], 'code_client' => $entry[2], 'commentaires' => $entry[3]]);
52 $this->create();
53 $this->setIdFromLastInsertID();
54 }
50} 55}
diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php
index be733dd..218ebfe 100644
--- a/src/model/DevisFactures.php
+++ b/src/model/DevisFactures.php
@@ -19,10 +19,7 @@ class DevisFactures extends Model
19 private $deplacement; 19 private $deplacement;
20 private $total_HT; 20 private $total_HT;
21 21
22 public function __construct() 22 use ModelChildren;
23 {
24 $this->table = strtolower(__CLASS__);
25 }
26 23
27 // setters 24 // setters
28 public function setID(int $value) 25 public function setID(int $value)
diff --git a/src/model/Locations.php b/src/model/Locations.php
index 2aa175a..b788d43 100644
--- a/src/model/Locations.php
+++ b/src/model/Locations.php
@@ -15,10 +15,7 @@ class Locations extends Model
15 private $loyer_mensuel; 15 private $loyer_mensuel;
16 private $total_HT; 16 private $total_HT;
17 17
18 public function __construct() 18 use ModelChildren;
19 {
20 $this->table = strtolower(__CLASS__);
21 }
22 19
23 // setters 20 // setters
24 public function setID(int $value) 21 public function setID(int $value)
diff --git a/src/model/Model.php b/src/model/Model.php
index ad9e6c7..9effbe7 100644
--- a/src/model/Model.php
+++ b/src/model/Model.php
@@ -3,7 +3,7 @@
3 3
4class Model extends DB 4class Model extends DB
5{ 5{
6 private $db; // instance de PDO 6 protected $db; // instance de PDO
7 protected $table; // <= enfant 7 protected $table; // <= enfant
8 //static protected $tableStructure; 8 //static protected $tableStructure;
9 9
@@ -12,7 +12,6 @@ class Model extends DB
12 $this->db = parent::getInstance(); // connexion 12 $this->db = parent::getInstance(); // connexion
13 } 13 }
14 14
15
16 // setters (plusieurs en même temps) 15 // setters (plusieurs en même temps)
17 public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur 16 public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur
18 { 17 {
@@ -51,7 +50,7 @@ class Model extends DB
51 } 50 }
52 51
53 52
54 // méthodes CRUD qui marchent (les spécifiques sont dans les classes enfant) 53 // méthodes CRUD
55 54
56 // create INSERT 55 // create INSERT
57 public function create() // = write 56 public function create() // = write
@@ -79,17 +78,17 @@ class Model extends DB
79 78
80 79
81 // read SELECT 80 // read SELECT
82 public function readAll() 81 public function readAll() // obtenir une table
83 { 82 {
84 $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! 83 $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!!
85 return($query->fetchAll()); 84 return($query->fetchAll());
86 } 85 }
87 public function findById(int $id) 86 public function findById(int $id) // obtenir une entrée avec son ID
88 { 87 {
89 return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch()); 88 return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch());
90 } 89 }
91 90
92 public function find(array $criteria) 91 public function find(array $criteria) // obtenir une entrée avec un tableau associatif 'champ' => 'valeur'
93 { 92 {
94 $fields = []; 93 $fields = [];
95 $values = []; 94 $values = [];
@@ -140,7 +139,6 @@ class Model extends DB
140 // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe 139 // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe
141 static public function createTables() 140 static public function createTables()
142 { 141 {
143 //~ var_dump(StructTablesDB::$structureOfTables);
144 foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) 142 foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable)
145 { 143 {
146 //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable 144 //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable
@@ -156,7 +154,5 @@ class Model extends DB
156 154
157 parent::getInstance()->exec($query); // merci singleton! 155 parent::getInstance()->exec($query); // merci singleton!
158 } 156 }
159
160
161 } 157 }
162} 158}
diff --git a/src/model/Prestations.php b/src/model/Prestations.php
index 4f58d70..32f9768 100644
--- a/src/model/Prestations.php
+++ b/src/model/Prestations.php
@@ -13,10 +13,7 @@ class Prestations extends Model
13 private $mode_paiement; 13 private $mode_paiement;
14 private $commentaires; 14 private $commentaires;
15 15
16 public function __construct() 16 use ModelChildren;
17 {
18 $this->table = strtolower(__CLASS__);
19 }
20 17
21 // setters 18 // setters
22 public function setID(int $value) 19 public function setID(int $value)
diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php
index cf6de5d..ee4baf1 100644
--- a/src/model/StructTablesDB.php
+++ b/src/model/StructTablesDB.php
@@ -10,10 +10,10 @@ class StructTablesDB
10 // la table prestations est liée à la table clients 10 // la table prestations est liée à la table clients
11 // les tables devis_factures, cesu et locations sont liées à la table prestations 11 // les tables devis_factures, cesu et locations sont liées à la table prestations
12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'], 12 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'],
13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], 13 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'],
14 'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], 14 'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'],
15 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], 15 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'],
16 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'nature_bien' => 'TEXT', 'modele' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'total_HT' => 'REAL'] 16 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'INTEGER', 'loyer_mensuel' => 'REAL', 'loyers_encaisse' => 'INTEGER', 'caution' => 'INTEGER']
17 ]; 17 ];
18 18
19 // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique 19 // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique
diff --git a/src/model/traits.php b/src/model/traits.php
new file mode 100644
index 0000000..43d9b7f
--- /dev/null
+++ b/src/model/traits.php
@@ -0,0 +1,16 @@
1<?php
2// model/traits.php
3
4trait ModelChildren // pour ne pas toucher au constructeur de la classe Model
5{
6 public function __construct()
7 {
8 $this->table = strtolower(__CLASS__);
9 }
10
11 public function setIdFromLastInsertID() // à faire juste après l'écriture d'une nouvelle entrée
12 {
13 $this->db = parent::getInstance();
14 $this->ID = $this->db->lastInsertId(); // méthode de PDO
15 }
16}