Passed
Push — master ( 7f5395...72e62d )
by Anthony
07:18
created

GroupeUnite::getAllGroupeUnite()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 28
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 28
rs 8.439
c 2
b 0
f 0
cc 5
eloc 17
nc 4
nop 0
1
<?php
2
	namespace modules\bataille\app\controller;
3
	
4
	
5
	use core\App;
6
	use core\functions\ChaineCaractere;
7
	use core\HTML\flashmessage\FlashMessage;
8
	
9
	class GroupeUnite extends Unite {
10
		
11
		
12
		//-------------------------- BUILDER ----------------------------------------------------------------------------//
13
		//-------------------------- END BUILDER ----------------------------------------------------------------------------//
14
		
15
		
16
		//-------------------------- GETTER ----------------------------------------------------------------------------//
17
		/**
18
		 * fonction qui récupère tous les groupes de la bases
19
		 */
20
		public function getAllGroupeUnite() {
21
			$dbc = App::getDb();
22
			
23
			$query = $dbc->select()->from("_bataille_groupe_unite")
24
				->where("ID_base", "=", Bataille::getIdBase(), "AND")
25
				->where("(ID_mission IS NULL OR ID_mission = 0)", "", "", "", true)->get();
26
			
27
			if ((is_array($query)) && (count($query))) {
28
				$groupe = [];
29
				
30
				foreach ($query as $obj) {
31
					$b_unites = $this->getAllUnites(Bataille::getIdBase(), $obj->ID_groupe_unite);
32
					
33
					if ($b_unites > 0) {
34
						$groupe[] = [
35
							"id_groupe" => $obj->ID_groupe_unite,
36
							"nom_groue" => $obj->nom_groupe,
37
							"unites" => $this->getAllUnites(Bataille::getIdBase(), $obj->ID_groupe_unite)
38
						];
39
					}
40
					else {
41
						$this->setSupprimerGroupe($obj->ID_groupe_unite);
42
					}
43
				}
44
				
45
				Bataille::setValues(["groupe_unites" => $groupe]);
46
			}
47
		}
48
		
49
		/**
50
		 * @param $nom_groupe
51
		 * @return bool
52
		 * fonction qui test si un groupe existe déjà ou pas dans cette base
53
		 */
54
		private function getTestGroupExist($nom_groupe) {
55
			$dbc = App::getDb();
56
			
57
			$query = $dbc->select("ID_groupe_unite")
58
				->from("_bataille_groupe_unite")
59
				->where("nom_groupe", "=", $nom_groupe, "AND")
60
				->where("ID_base", "=", Bataille::getIdBase())
61
				->get();
62
			
63
			if (count($query) > 0) {
64
				return false;
65
			}
66
			
67
			return true;
68
		}
69
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
70
		
71
		
72
		//-------------------------- SETTER ----------------------------------------------------------------------------//
73
		/**
74
		 * @param $nom_groupe
75
		 * @return bool
76
		 * permet de tester le nom d'un groupe si > a 0 caractere et qu'il soit libre
77
		 */
78
		private function testNomGroupe($nom_groupe) {
79
			if (ChaineCaractere::testMinLenght($nom_groupe) == false) {
80
				FlashMessage::setFlash("Le nom du groupe ne peut pas être vide !");
81
				return false;
82
			}
83
			
84
			if ($this->getTestGroupExist($nom_groupe) == false) {
0 ignored issues
show
Coding Style Best Practice introduced by
It seems like you are loosely comparing two booleans. Considering using the strict comparison === instead.

When comparing two booleans, it is generally considered safer to use the strict comparison operator.

Loading history...
85
				FlashMessage::setFlash("Un groupe portant ce nom existe déjà, merci d'en choisir un autre !");
86
				return false;
87
			}
88
			
89
			return true;
90
		}
91
		
92
		/**
93
		 * @param $nombre_unite
94
		 * @param $nom_unite
95
		 * @param $type_unite
96
		 * @param $nom_groupe
97
		 * @return bool
98
		 * fonction qui permet de créer un groupe
99
		 */
100
		public function setCreerGroupe($nombre_unite, $nom_unite, $type_unite, $nom_groupe) {
101
			$dbc = App::getDb();
102
			
103
			if ($this->testNomGroupe($nom_groupe) === false) {
104
				return false;
105
			}
106
			
107
			if (array_sum($nombre_unite) == 0) {
108
				FlashMessage::setFlash("Vous ne pouvez pas créer un groupe vide !");
109
				return false;
110
			}
111
			
112
			$dbc->insert("nom_groupe", $nom_groupe)
113
				->insert("niveau_groupe", 1)
114
				->insert("ID_base", Bataille::getIdBase())
115
				->into("_bataille_groupe_unite")
116
				->set();
117
			
118
			$id_groupe = $dbc->lastInsertId();
119
			
120
			$count = count($nombre_unite);
121
			
122
			for ($i=0 ; $i<$count ; $i++) {
123
				$this->setAjouterUniteGroupe($nombre_unite[$i], $nom_unite[$i], $type_unite[$i], $id_groupe);
124
			}
125
			
126
			return true;
127
		}
128
		
129
		/**
130
		 * @param $nombre_unite
131
		 * @param $nom_unite
132
		 * @param $type_unite
133
		 * @param $id_groupe
134
		 * @return bool
135
		 * fonction qui permet d'ajouter des unités a un groupe
136
		 */
137
		private function setAjouterUniteGroupe($nombre_unite, $nom_unite, $type_unite, $id_groupe) {
138
			$dbc = App::getDb();
139
			
140
			$nombre_unite_base = $this->getNombreUniteNom($type_unite, $nom_unite);
141
			
142
			if ($nombre_unite > $nombre_unite_base) {
143
				FlashMessage::setFlash("Pas assez d'unités ".$nom_unite." disponibles dans les ajouter à ce groupe");
144
				return false;
145
			}
146
			
147
			$dbc->update("ID_groupe", $id_groupe)
148
				->from("_bataille_unite")
149
				->where("type", "=", $type_unite, "AND")
150
				->where("nom", "=", $nom_unite, "AND")
151
				->where("ID_base", "=", Bataille::getIdBase(), "AND")
152
				->where("(ID_groupe IS NULL OR ID_groupe = 0)", "", "", "", true)
153
				->limit($nombre_unite, "no")
154
				->set();
155
			
156
			return true;
157
		}
158
		
159
		/**
160
		 * @param $id_groupe
161
		 * fonction qui permet de supprimer un groupe vide
162
		 */
163
		private function setSupprimerGroupe($id_groupe) {
164
			$dbc = App::getDb();
165
			
166
			$dbc->delete()->from("_bataille_groupe_unite")->where("ID_groupe_unite", "=", $id_groupe, "AND")
167
				->where("ID_base", "=", Bataille::getIdBase())->del();
168
		}
169
		
170
		/**
171
		 * @param $id_groupe
172
		 * @param $id_mission
173
		 * @return bool
174
		 * fonction qui sert à envoyer toutes les troupes d'un groupe en mission
175
		 */
176
		public function setCommencerExpedition($id_groupe, $id_mission) {
177
			$dbc = App::getDb();
178
			
179
			$dbc->update("ID_mission", $id_mission)
180
				->from("_bataille_unite")
181
				->where("ID_groupe", "=", $id_groupe, "AND")
182
				->where("ID_base", "=", Bataille::getIdBase())
183
				->set();
184
			
185
			$dbc->update("ID_mission", $id_mission)
186
				->from("_bataille_groupe_unite")
187
				->where("ID_groupe_unite", "=", $id_groupe, "AND")
188
				->where("ID_base", "=", Bataille::getIdBase())
189
				->set();
190
			
191
			return true;
192
		}
193
		
194
		/**
195
		 * @param $id_mission
196
		 * fonction qui termine la mission pour tous les groupes qui y ont été assignés
197
		 */
198
		public function setTerminerExpedition($id_mission) {
199
			$dbc = App::getDb();
200
			
201
			$dbc->update("ID_mission", 0)->from("_bataille_groupe_unite")->where("ID_base", "=", Bataille::getIdBase())->set();
202
		}
203
		//-------------------------- END SETTER ----------------------------------------------------------------------------//    
204
	}