GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 11c0a1...856a6b )
by Jacky
34s
created

OrbitalBaseRepository::increaseBuildingLevel()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 3
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Asylamba\Modules\Athena\Repository;
4
5
use Asylamba\Classes\Entity\AbstractRepository;
6
7
use Asylamba\Classes\Library\Utils;
8
9
use Asylamba\Modules\Athena\Model\OrbitalBase;
10
11
class OrbitalBaseRepository extends AbstractRepository {
12
	public function select($clause = '', $params = [])
13
	{
14
		$statement = $this->connection->prepare(
15
			'SELECT ob.*,
16
			p.position AS position, p.rSystem AS system,
17
			s.xPosition AS xSystem, s.yPosition AS ySystem, s.rSector AS sector,
18
			se.rColor AS sectorColor, se.tax AS tax,
19
			p.population AS planetPopulation, p.coefResources AS planetResources, p.coefHistory AS planetHistory,
20
			
21
			(SELECT MAX(bq.dEnd) FROM orbitalBaseBuildingQueue AS bq WHERE bq.rOrbitalBase = ob.rPlace) AS termDateGenerator,
22
			(SELECT MAX(sq1.dEnd) FROM orbitalBaseShipQueue AS sq1 WHERE sq1.rOrbitalBase = ob.rPlace AND sq1.dockType = 1) AS termDateDock1,
23
			(SELECT MAX(sq2.dEnd) FROM orbitalBaseShipQueue AS sq2 WHERE sq2.rOrbitalBase = ob.rPlace AND sq2.dockType = 2) AS termDateDock2,
24
			(SELECT MAX(sq3.dEnd) FROM orbitalBaseShipQueue AS sq3 WHERE sq3.rOrbitalBase = ob.rPlace AND sq3.dockType = 3) AS termDateDock3,
25
			(SELECT COUNT(cr.id) FROM commercialRoute AS cr WHERE (cr.rOrbitalBase = ob.rPlace OR cr.rOrbitalBaseLinked = ob.rPlace) AND cr.statement = 1) AS routesNumber
26
			
27
			FROM orbitalBase AS ob
28
			LEFT JOIN place AS p ON ob.rPlace = p.id
29
			LEFT JOIN system AS s ON p.rSystem = s.id
30
			LEFT JOIN sector AS se ON s.rSector = se.id ' .
31
			$clause
32
		);
33
		$statement->execute($params);
34
		return $statement;
35
	}
36
	
37
	/**
38
	 * @param int $id
39
	 * @return OrbitalBase
40
	 */
41
	public function get($id)
42
	{
43
		if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $id)) !== null) {
44
			return $ob;
45
		}
46
		$statement = $this->select('WHERE ob.rPlace = :id', ['id' => $id]);
47
		if (($row = $statement->fetch()) === false) {
48
			return null;
49
		}
50
		$orbitalBase = $this->format($row);
51
		$this->unitOfWork->addObject($orbitalBase);
52
		return $orbitalBase;
53
	}
54
	
55
	/**
56
	 * @return array
57
	 */
58
	public function getAll()
59
	{
60
		$statement = $this->select();
61
		$data = [];
62
		while ($row = $statement->fetch()) {
63
			if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) {
64
				$data[] = $ob;
65
				continue;
66
			}
67
			$orbitalBase = $this->format($row);
68
			$this->unitOfWork->addObject($orbitalBase);
69
			$data[] = $orbitalBase;
70
		}
71
		return $data;
72
	}
73
	
74
	/**
75
	 * @param int $playerId
76
	 * @return array
77
	 */
78
	public function getPlayerBases($playerId)
79
	{
80
		$statement = $this->select('WHERE ob.rPlayer = :player_id ORDER BY ob.dCreation', ['player_id' => $playerId]);
81
		$data = [];
82
		while ($row = $statement->fetch()) {
83
			if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) {
84
				$data[] = $ob;
85
				continue;
86
			}
87
			$orbitalBase = $this->format($row);
88
			$this->unitOfWork->addObject($orbitalBase);
89
			$data[] = $orbitalBase;
90
		}
91
		return $data;
92
	}
93
	
94
	/**
95
	 * @param int $sectorId
96
	 * @return array
97
	 */
98
	public function getSectorBases($sectorId)
99
	{
100
		$statement = $this->select('WHERE se.id = :sector_id', ['sector_id' => $sectorId]);
101
		$data = [];
102
		while ($row = $statement->fetch()) {
103
			if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) {
104
				$data[] = $ob;
105
				continue;
106
			}
107
			$orbitalBase = $this->format($row);
108
			$this->unitOfWork->addObject($orbitalBase);
109
			$data[] = $orbitalBase;
110
		}
111
		return $data;
112
	}
113
	
114
	/**
115
	 * @param int $systemId
116
	 * @return array
117
	 */
118
	public function getSystemBases($systemId)
119
	{
120
		$statement = $this->select('WHERE s.id = :system_id', ['system_id' => $systemId]);
121
		$data = [];
122
		while ($row = $statement->fetch()) {
123
			if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) {
124
				$data[] = $ob;
125
				continue;
126
			}
127
			$orbitalBase = $this->format($row);
128
			$this->unitOfWork->addObject($orbitalBase);
129
			$data[] = $orbitalBase;
130
		}
131
		return $data;
132
	}
133
	
134
	/**
135
	 * @param int $baseId
136
	 * @param int $playerId
137
	 * @return OrbitalBase
138
	 */
139
	public function getPlayerBase($baseId, $playerId)
140
	{
141
		$statement = $this->select('WHERE ob.rPlace = :id AND ob.rPlayer = :player_id', ['id' => $baseId, 'player_id' => $playerId]);
142
		if (($row = $statement->fetch()) === false) {
143
			return null;
144
		}
145
		if (($ob = $this->unitOfWork->getObject(OrbitalBase::class, $row['rPlace'])) !== null) {
146
			return $ob;
147
		}
148
		$orbitalBase = $this->format($row);
149
		$this->unitOfWork->addObject($orbitalBase);
150
		return $orbitalBase;
151
	}
152
	
153
	public function insert($orbitalBase)
154
	{
155
		$statement = $this->connection->prepare(
156
			'INSERT INTO orbitalBase(rPlace, rPlayer, name, typeOfBase, levelGenerator,
157
				levelRefinery, levelDock1, levelDock2, levelDock3, levelTechnosphere, levelCommercialPlateforme,
158
				levelStorage, levelRecycling, levelSpatioport, points, iSchool, iAntiSpy, antiSpyAverage, 
159
				pegaseStorage, satyreStorage, sireneStorage, dryadeStorage, chimereStorage, meduseStorage,
160
				griffonStorage, cyclopeStorage, minotaureStorage, hydreStorage, cerbereStorage, phenixStorage,
161
				resourcesStorage, uOrbitalBase, dCreation)
162
			VALUES(:id, :player_id, :name, :type, :generator_level, :refinery_level, :dock1_level, :dock2_level, :dock3_level,
163
				:technosphere_level, :commercial_platform_level, :storage_level, :recycling_level, :spatioport_level, :points, :school_investments,  
164
				:anti_spy_investments, :anti_spy_average, :pegase_storage, :satyre_storage, :sirene_storage, :dryade_storage, 
165
				:chimere_storage, :meduse_storage, :griffon_storage, :cyclope_storage, :minotaure_storage, :hydre_storage, :cerbere_storage,
166
				:phenix_storage, :resources, :u_orbital_base, :created_at)'
167
		);
168
		$statement->execute([
169
			'id' => $orbitalBase->getRPlace(),
170
			'player_id' => $orbitalBase->getRPlayer(),
171
			'name' => $orbitalBase->getName(),
172
			'type' => $orbitalBase->typeOfBase,
173
			'generator_level' => $orbitalBase->getLevelGenerator(),
174
			'refinery_level' => $orbitalBase->getLevelRefinery(),
175
			'dock1_level' => $orbitalBase->getLevelDock1(),
176
			'dock2_level' => $orbitalBase->getLevelDock2(),
177
			'dock3_level' => $orbitalBase->getLevelDock3(),
178
			'technosphere_level' => $orbitalBase->getLevelTechnosphere(),
179
			'commercial_platform_level' => $orbitalBase->getLevelCommercialPlateforme(),
180
			'storage_level' => $orbitalBase->getLevelStorage(),
181
			'recycling_level' => $orbitalBase->getLevelRecycling(),
182
			'spatioport_level' => $orbitalBase->getLevelSpatioport(),
183
			'points' => $orbitalBase->getPoints(),
184
			'school_investments' => $orbitalBase->getISchool(),
185
			'anti_spy_investments' => $orbitalBase->getIAntiSpy(),
186
			'anti_spy_average' => $orbitalBase->getAntiSpyAverage(),
187
			'pegase_storage' => $orbitalBase->getShipStorage(0),
188
			'satyre_storage' => $orbitalBase->getShipStorage(1),
189
			'sirene_storage' => $orbitalBase->getShipStorage(2),
190
			'dryade_storage' => $orbitalBase->getShipStorage(3),
191
			'chimere_storage' => $orbitalBase->getShipStorage(4),
192
			'meduse_storage' => $orbitalBase->getShipStorage(5),
193
			'griffon_storage' => $orbitalBase->getShipStorage(6),
194
			'cyclope_storage' => $orbitalBase->getShipStorage(7),
195
			'minotaure_storage' => $orbitalBase->getShipStorage(8),
196
			'hydre_storage' => $orbitalBase->getShipStorage(9),
197
			'cerbere_storage' => $orbitalBase->getShipStorage(10),
198
			'phenix_storage' => $orbitalBase->getShipStorage(11),
199
			'resources' => $orbitalBase->getResourcesStorage(),
200
			'u_orbital_base' => $orbitalBase->uOrbitalBase,
201
			'created_at' => $orbitalBase->getDCreation()
202
		]);
203
		$orbitalBase->setRPlace($this->connection->lastInsertId());
204
	}
205
	
206
	public function update($orbitalBase)
207
	{
208
		$statement = $this->connection->prepare(
209
			'UPDATE orbitalBase SET rPlayer = :player_id, name = :name, typeOfBase = :type,
210
			iSchool = :school_investments, iAntiSpy = :anti_spy_investments,
211
			pegaseStorage = :pegase_storage, satyreStorage = :satyre_storage, sireneStorage = :sirene_storage, dryadeStorage = :dryade_storage,
212
			chimereStorage = :chimere_storage, meduseStorage = :meduse_storage, griffonStorage = :griffon_storage,
213
			cyclopeStorage = :cyclope_storage, minotaureStorage = :minotaure_storage, hydreStorage = :hydre_storage,
214
			cerbereStorage = :cerbere_storage, phenixStorage = :phenix_storage, dCreation = :created_at
215
			WHERE rPlace = :id'
216
		);
217
		$statement->execute(array(
218
			'player_id' => $orbitalBase->getRPlayer(),
219
			'name' => $orbitalBase->getName(),
220
			'type' => $orbitalBase->typeOfBase,
221
			'school_investments' => $orbitalBase->getISchool(),
222
			'anti_spy_investments' => $orbitalBase->getIAntiSpy(),
223
			'pegase_storage' => $orbitalBase->getShipStorage(0),
224
			'satyre_storage' => $orbitalBase->getShipStorage(1),
225
			'sirene_storage' => $orbitalBase->getShipStorage(2),
226
			'dryade_storage' => $orbitalBase->getShipStorage(3),
227
			'chimere_storage' => $orbitalBase->getShipStorage(4),
228
			'meduse_storage' => $orbitalBase->getShipStorage(5),
229
			'griffon_storage' => $orbitalBase->getShipStorage(6),
230
			'cyclope_storage' => $orbitalBase->getShipStorage(7),
231
			'minotaure_storage' => $orbitalBase->getShipStorage(8),
232
			'hydre_storage' => $orbitalBase->getShipStorage(9),
233
			'cerbere_storage' => $orbitalBase->getShipStorage(10),
234
			'phenix_storage' => $orbitalBase->getShipStorage(11),
235
			'created_at' => $orbitalBase->getDCreation(),
236
			'id' => $orbitalBase->getRPlace(),
237
		));
238
	}
239
	
240
	/**
241
	 * @param OrbitalBase $orbitalBase
242
	 * @param int $resources
243
	 * @param int $antiSpyAverage
244
	 */
245
	public function updateBase(OrbitalBase $orbitalBase, $resources, $antiSpyAverage)
246
	{
247
		$operator = ($antiSpyAverage > 0) ? '+' : '-';
248
		$statement = $this->connection->prepare(
249
			"UPDATE orbitalBase SET resourcesStorage = resourcesStorage + :resources,
250
			antiSpyAverage = antiSpyAverage $operator :anti_spy_average, uOrbitalBase = :updated_at WHERE rPlace = :id"
251
		);
252
		$statement->execute([
253
			'id' => $orbitalBase->getId(),
254
			'resources' => $resources,
255
			'anti_spy_average' => abs($antiSpyAverage),
256
			'updated_at' => $orbitalBase->getUpdatedAt()
257
		]);
258
	}
259
	
260
	public function increaseBuildingLevel(OrbitalBase $orbitalBase, $buildingColumn, $earnedPoints)
261
	{
262
		$statement = $this->connection->prepare(
263
			"UPDATE orbitalBase SET {$buildingColumn} = {$buildingColumn} + 1, points = points + :points WHERE rPlace = :id"
264
		);
265
		$statement->execute([
266
			'points' => $earnedPoints,
267
			'id' => $orbitalBase->getId()
268
		]);
269
	}
270
	
271
	public function increaseResources(OrbitalBase $orbitalBase, $resources)
272
	{
273
		$statement = $this->connection->prepare(
274
			"UPDATE orbitalBase SET resourcesStorage = resourcesStorage + :resources WHERE rPlace = :id"
275
		);
276
		$statement->execute([
277
			'resources' => $resources,
278
			'id' => $orbitalBase->getId()
279
		]);
280
	}
281
	
282
	public function decreaseResources(OrbitalBase $orbitalBase, $resources)
283
	{
284
		$statement = $this->connection->prepare(
285
			"UPDATE orbitalBase SET resourcesStorage = resourcesStorage - :resources WHERE rPlace = :id"
286
		);
287
		$statement->execute([
288
			'resources' => $resources,
289
			'id' => $orbitalBase->getId()
290
		]);
291
	}
292
	
293
	public function remove($orbitalBase)
294
	{
295
		
296
	}
297
	
298
	public function format($data)
299
	{
300
		$orbitalBase = new OrbitalBase();
301
		$orbitalBase->setRPlace((int) $data['rPlace']);
302
		$orbitalBase->setRPlayer((int) $data['rPlayer']);
303
		$orbitalBase->setName($data['name']);
304
		$orbitalBase->typeOfBase = (int) $data['typeOfBase'];
305
		$orbitalBase->setLevelGenerator((int) $data['levelGenerator']);
306
		$orbitalBase->setLevelRefinery((int) $data['levelRefinery']);
307
		$orbitalBase->setLevelDock1((int) $data['levelDock1']);
308
		$orbitalBase->setLevelDock2((int) $data['levelDock2']);
309
		$orbitalBase->setLevelDock3((int) $data['levelDock3']);
310
		$orbitalBase->setLevelTechnosphere((int) $data['levelTechnosphere']);
311
		$orbitalBase->setLevelCommercialPlateforme((int) $data['levelCommercialPlateforme']);
312
		$orbitalBase->setLevelStorage((int) $data['levelStorage']);
313
		$orbitalBase->setLevelRecycling((int) $data['levelRecycling']);
314
		$orbitalBase->setLevelSpatioport((int) $data['levelSpatioport']);
315
		$orbitalBase->setPoints((int) $data['points']);
316
		$orbitalBase->setISchool((int) $data['iSchool']);
317
		$orbitalBase->setIAntiSpy((int) $data['iAntiSpy']);
318
		$orbitalBase->setAntiSpyAverage((int) $data['antiSpyAverage']);
319
		$orbitalBase->setShipStorage(0 , (int) $data['pegaseStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
320
		$orbitalBase->setShipStorage(1 , (int) $data['satyreStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
321
		$orbitalBase->setShipStorage(2 , (int) $data['sireneStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
322
		$orbitalBase->setShipStorage(3 , (int) $data['dryadeStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
323
		$orbitalBase->setShipStorage(4 , (int) $data['chimereStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
324
		$orbitalBase->setShipStorage(5 , (int) $data['meduseStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
325
		$orbitalBase->setShipStorage(6 , (int) $data['griffonStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
326
		$orbitalBase->setShipStorage(7 , (int) $data['cyclopeStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
327
		$orbitalBase->setShipStorage(8 , (int) $data['minotaureStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
328
		$orbitalBase->setShipStorage(9 , (int) $data['hydreStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
329
		$orbitalBase->setShipStorage(10 , (int) $data['cerbereStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
330
		$orbitalBase->setShipStorage(11 , (int) $data['phenixStorage']);
0 ignored issues
show
Coding Style introduced by
Space found before comma in function call
Loading history...
331
		$orbitalBase->setResourcesStorage((int) $data['resourcesStorage']);
332
		$orbitalBase->uOrbitalBase = $data['uOrbitalBase'];
333
		$orbitalBase->setDCreation($data['dCreation']);
334
335
		$orbitalBase->setPosition($data['position']);
336
		$orbitalBase->setSystem($data['system']);
337
		$orbitalBase->setXSystem($data['xSystem']);
338
		$orbitalBase->setYSystem($data['ySystem']);
339
		$orbitalBase->setSector($data['sector']);
340
		$orbitalBase->sectorColor = (int) $data['sectorColor'];
341
		$orbitalBase->setTax($data['tax']);
342
		$orbitalBase->setPlanetPopulation((float) $data['planetPopulation']);
343
		$orbitalBase->setPlanetResources($data['planetResources']);
344
		$orbitalBase->setPlanetHistory($data['planetHistory']);
345
346
		$generatorTime = strtotime($data['termDateGenerator']) - strtotime(Utils::now());
347
		$orbitalBase->setRemainingTimeGenerator(round($generatorTime, 1));
348
		$dock1Time = strtotime($data['termDateDock1']) - strtotime(Utils::now());
349
		$orbitalBase->setRemainingTimeDock1(round($dock1Time, 1));
350
		$dock2Time = strtotime($data['termDateDock2']) - strtotime(Utils::now());
351
		$orbitalBase->setRemainingTimeDock2(round($dock2Time, 1));
352
		$dock3Time = strtotime($data['termDateDock3']) - strtotime(Utils::now());
353
		$orbitalBase->setRemainingTimeDock3(round($dock3Time, 1));
354
355
		$orbitalBase->setRoutesNumber($data['routesNumber']);
356
		return $orbitalBase;
357
	}
358
}