Passed
Push — master ( 9c6704...e16eca )
by Anthony
02:58
created

GroupeUnite::getTestGroupExist()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
rs 9.4285
cc 2
eloc 10
nc 2
nop 1
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")->get();
23
			
24 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...
25
				$groupe = [];
26
				
27
				foreach ($query as $obj) {
28
					$groupe[] = [
29
						"id_groupe" => $obj->ID_groupe_unite,
30
						"nom_groue" => $obj->nom_groupe,
31
						"unites" => $this->getAllUnites(Bataille::getIdBase(), $obj->ID_groupe_unite)
32
					];
33
				}
34
				
35
				Bataille::setValues(["groupe_unites" => $groupe]);
36
			}
37
		}
38
		
39
		/**
40
		 * @param $nom_groupe
41
		 * @return bool
42
		 * fonction qui test si un groupe existe déjà ou pas dans cette base
43
		 */
44
		private function getTestGroupExist($nom_groupe) {
45
			$dbc = App::getDb();
46
			
47
			$query = $dbc->select("ID_groupe_unite")
48
				->from("_bataille_groupe_unite")
49
				->where("nom_groupe", "=", $nom_groupe, "AND")
50
				->where("ID_base", "=", Bataille::getIdBase())
51
				->get();
52
			
53
			if (count($query) > 0) {
54
				return false;
55
			}
56
			
57
			return true;
58
		}
59
		//-------------------------- END GETTER ----------------------------------------------------------------------------//
60
		
61
		
62
		//-------------------------- SETTER ----------------------------------------------------------------------------//
63
		/**
64
		 * @param $nombre_unite
65
		 * @param $nom_unite
66
		 * @param $type_unite
67
		 * @param $nom_groupe
68
		 * @return bool
69
		 * fonction qui permet de créer un groupe
70
		 */
71
		public function setCreerGroupe($nombre_unite, $nom_unite, $type_unite, $nom_groupe) {
72
			$dbc = App::getDb();
73
			
74
			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...
75
				FlashMessage::setFlash("Un groupe portant ce nom existe déjà, merci d'en choisir un autre !");
76
				return false;
77
			}
78
			
79
			$dbc->insert("nom_groupe", $nom_groupe)
80
				->insert("niveau_groupe", 1)
81
				->insert("ID_base", Bataille::getIdBase())
82
				->into("_bataille_groupe_unite")
83
				->set();
84
			
85
			$id_groupe = $dbc->lastInsertId();
86
			
87
			$count = count($nombre_unite);
88
			
89
			for ($i=0 ; $i<$count ; $i++) {
90
				$this->setAjouterUniteGroupe($nombre_unite[$i], $nom_unite[$i], $type_unite[$i], $id_groupe);
91
			}
92
		}
93
		
94
		/**
95
		 * @param $nombre_unite
96
		 * @param $nom_unite
97
		 * @param $type_unite
98
		 * @param $id_groupe
99
		 * @return bool
100
		 * fonction qui permet d'ajouter des unités a un groupe
101
		 */
102
		private function setAjouterUniteGroupe($nombre_unite, $nom_unite, $type_unite, $id_groupe) {
103
			$dbc = App::getDb();
104
			
105
			$nombre_unite_base = $this->getNombreUniteNom($type_unite, $nom_unite);
106
			
107
			if ($nombre_unite > $nombre_unite_base) {
108
				FlashMessage::setFlash("Pas assez d'unités ".$nom_unite." disponibles dans les ajouter à ce groupe");
109
				return false;
110
			}
111
			
112
			$dbc->update("ID_groupe", $id_groupe)
113
				->from("_bataille_unite")
114
				->where("type", "=", $type_unite, "AND")
115
				->where("nom", "=", $nom_unite, "AND")
116
				->where("ID_base", "=", Bataille::getIdBase(), "AND")
117
				->where("(ID_groupe IS NULL OR ID_groupe = 0)", "", "", "", true)
118
				->limit($nombre_unite, "no")
119
				->set();
120
			
121
			return true;
122
		}
123
		//-------------------------- END SETTER ----------------------------------------------------------------------------//    
124
	}