Passed
Push — master ( e16eca...e7c715 )
by Anthony
02:36
created

GroupeUnite::setCommencerExpedition()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 1
eloc 13
nc 1
nop 2
1
<?php
2
	namespace modules\bataille\app\controller;
3
	
4
	
5
	use core\App;
6
	use core\HTML\flashmessage\FlashMessage;
7
	
8
	class GroupeUnite extends Unite {
9
		
10
		
11
		//-------------------------- BUILDER ----------------------------------------------------------------------------//
12
		//-------------------------- END BUILDER ----------------------------------------------------------------------------//
13
		
14
		
15
		//-------------------------- GETTER ----------------------------------------------------------------------------//
16
		/**
17
		 * fonction qui récupère tous les groupes de la bases
18
		 */
19
		public function getAllGroupeUnite() {
20
			$dbc = App::getDb();
21
			
22
			$query = $dbc->select()->from("_bataille_groupe_unite")
23
				->where("ID_base", "=", Bataille::getIdBase(), "AND")
24
				->where("(ID_mission IS NULL OR ID_mission = 0)", "", "", "", true)->get();
25
			
26 View Code Duplication
			if ((is_array($query)) && (count($query))) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
27
				$groupe = [];
28
				
29
				foreach ($query as $obj) {
30
					$groupe[] = [
31
						"id_groupe" => $obj->ID_groupe_unite,
32
						"nom_groue" => $obj->nom_groupe,
33
						"unites" => $this->getAllUnites(Bataille::getIdBase(), $obj->ID_groupe_unite)
34
					];
35
				}
36
				
37
				Bataille::setValues(["groupe_unites" => $groupe]);
38
			}
39
		}
40
		
41
		/**
42
		 * @param $nom_groupe
43
		 * @return bool
44
		 * fonction qui test si un groupe existe déjà ou pas dans cette base
45
		 */
46
		private function getTestGroupExist($nom_groupe) {
47
			$dbc = App::getDb();
48
			
49
			$query = $dbc->select("ID_groupe_unite")
50
				->from("_bataille_groupe_unite")
51
				->where("nom_groupe", "=", $nom_groupe, "AND")
52
				->where("ID_base", "=", Bataille::getIdBase())
53
				->get();
54
			
55
			if (count($query) > 0) {
56
				return false;
57
			}
58
			
59
			return true;
60
		}
61
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
62
		
63
		
64
		//-------------------------- SETTER ----------------------------------------------------------------------------//
65
		/**
66
		 * @param $nombre_unite
67
		 * @param $nom_unite
68
		 * @param $type_unite
69
		 * @param $nom_groupe
70
		 * @return bool
71
		 * fonction qui permet de créer un groupe
72
		 */
73
		public function setCreerGroupe($nombre_unite, $nom_unite, $type_unite, $nom_groupe) {
74
			$dbc = App::getDb();
75
			
76
			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...
77
				FlashMessage::setFlash("Un groupe portant ce nom existe déjà, merci d'en choisir un autre !");
78
				return false;
79
			}
80
			
81
			$dbc->insert("nom_groupe", $nom_groupe)
82
				->insert("niveau_groupe", 1)
83
				->insert("ID_base", Bataille::getIdBase())
84
				->into("_bataille_groupe_unite")
85
				->set();
86
			
87
			$id_groupe = $dbc->lastInsertId();
88
			
89
			$count = count($nombre_unite);
90
			
91
			for ($i=0 ; $i<$count ; $i++) {
92
				$this->setAjouterUniteGroupe($nombre_unite[$i], $nom_unite[$i], $type_unite[$i], $id_groupe);
93
			}
94
		}
95
		
96
		/**
97
		 * @param $nombre_unite
98
		 * @param $nom_unite
99
		 * @param $type_unite
100
		 * @param $id_groupe
101
		 * @return bool
102
		 * fonction qui permet d'ajouter des unités a un groupe
103
		 */
104
		private function setAjouterUniteGroupe($nombre_unite, $nom_unite, $type_unite, $id_groupe) {
105
			$dbc = App::getDb();
106
			
107
			$nombre_unite_base = $this->getNombreUniteNom($type_unite, $nom_unite);
108
			
109
			if ($nombre_unite > $nombre_unite_base) {
110
				FlashMessage::setFlash("Pas assez d'unités ".$nom_unite." disponibles dans les ajouter à ce groupe");
111
				return false;
112
			}
113
			
114
			$dbc->update("ID_groupe", $id_groupe)
115
				->from("_bataille_unite")
116
				->where("type", "=", $type_unite, "AND")
117
				->where("nom", "=", $nom_unite, "AND")
118
				->where("ID_base", "=", Bataille::getIdBase(), "AND")
119
				->where("(ID_groupe IS NULL OR ID_groupe = 0)", "", "", "", true)
120
				->limit($nombre_unite, "no")
121
				->set();
122
			
123
			return true;
124
		}
125
		
126
		/**
127
		 * @param $id_groupe
128
		 * @param $id_mission
129
		 * @return bool
130
		 * fonction qui sert à envoyer toutes les troupes d'un groupe en mission
131
		 */
132
		public function setCommencerExpedition($id_groupe, $id_mission) {
133
			$dbc = App::getDb();
134
			
135
			$dbc->update("ID_mission", $id_mission)
136
				->from("_bataille_unite")
137
				->where("ID_groupe", "=", $id_groupe, "AND")
138
				->where("ID_base", "=", Bataille::getIdBase())
139
				->set();
140
			
141
			$dbc->update("ID_mission", $id_mission)
142
				->from("_bataille_groupe_unite")
143
				->where("ID_groupe", "=", $id_groupe, "AND")
144
				->where("ID_base", "=", Bataille::getIdBase())
145
				->set();
146
			
147
			return true;
148
		}
149
		
150
		/**
151
		 * @param $id_mission
152
		 * fonction qui termine la mission pour tous les groupes qui y ont été assignés
153
		 */
154
		public function setTerminerExpedition($id_mission) {
155
			$dbc = App::getDb();
156
			
157
			$dbc->update("ID_mission", 0)->from("_bataille_groupe_unite")->where("ID_base", "=", Bataille::getIdBase())->set();
158
		}
159
		//-------------------------- END SETTER ----------------------------------------------------------------------------//    
160
	}