|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace App\Repositories; |
|
4
|
|
|
|
|
5
|
|
|
use App\Models\ProgramModel; |
|
6
|
|
|
use App\Models\VisitorModel; |
|
7
|
|
|
use Nette\Database\Table\ActiveRow; |
|
8
|
|
|
use Nette\Utils\ArrayHash; |
|
9
|
|
|
|
|
10
|
|
|
class ProgramRepository |
|
11
|
|
|
{ |
|
12
|
|
|
|
|
13
|
|
|
/** |
|
14
|
|
|
* @var VisitorModel |
|
15
|
|
|
*/ |
|
16
|
|
|
protected $visitorModel; |
|
17
|
|
|
|
|
18
|
|
|
/** |
|
19
|
|
|
* @var ProgramModel |
|
20
|
|
|
*/ |
|
21
|
|
|
protected $programModel; |
|
22
|
|
|
|
|
23
|
|
|
/** |
|
24
|
|
|
* @param VisitorModel $visitorModel |
|
25
|
|
|
* @param ProgramModel $programModel |
|
26
|
|
|
*/ |
|
27
|
|
|
public function __construct( |
|
28
|
|
|
VisitorModel $visitorModel, |
|
29
|
|
|
ProgramModel $programModel |
|
30
|
|
|
) { |
|
31
|
|
|
$this->setVisitorModel($visitorModel); |
|
32
|
|
|
$this->setProgramModel($programModel); |
|
33
|
|
|
} |
|
34
|
|
|
|
|
35
|
|
|
/** |
|
36
|
|
|
* @param int $meetingId |
|
37
|
|
|
*/ |
|
38
|
|
|
public function setMeetingId(int $meetingId): self |
|
39
|
|
|
{ |
|
40
|
|
|
$this->getProgramModel()->setMeetingId($meetingId); |
|
41
|
|
|
$this->getVisitorModel()->setMeetingId($meetingId); |
|
42
|
|
|
|
|
43
|
|
|
return $this; |
|
44
|
|
|
} |
|
45
|
|
|
|
|
46
|
|
|
/** |
|
47
|
|
|
* @return array |
|
48
|
|
|
*/ |
|
49
|
|
|
public function all(): array |
|
50
|
|
|
{ |
|
51
|
|
|
return $this->getProgramModel()->all(); |
|
52
|
|
|
} |
|
53
|
|
|
|
|
54
|
|
|
/** |
|
55
|
|
|
* @param int $id |
|
56
|
|
|
* @return Nette\Database\Table\ActiveRow |
|
57
|
|
|
*/ |
|
58
|
|
|
public function find(int $id): ActiveRow |
|
59
|
|
|
{ |
|
60
|
|
|
return $this->getProgramModel()->find($id); |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
/** |
|
64
|
|
|
* @param int $visitorId |
|
65
|
|
|
* @return array |
|
66
|
|
|
*/ |
|
67
|
|
|
public function findByVisitorId(int $visitorId): array |
|
68
|
|
|
{ |
|
69
|
|
|
return $this->getProgramModel()->findByVisitorId($visitorId); |
|
70
|
|
|
} |
|
71
|
|
|
|
|
72
|
|
|
/** |
|
73
|
|
|
* @param int $blockId |
|
74
|
|
|
* @return array |
|
75
|
|
|
*/ |
|
76
|
|
|
public function findByBlockId(int $blockId): array |
|
77
|
|
|
{ |
|
78
|
|
|
return $this->getProgramModel()->findByBlockId($blockId); |
|
79
|
|
|
} |
|
80
|
|
|
|
|
81
|
|
|
/** |
|
82
|
|
|
* @param int $programId |
|
83
|
|
|
* @return array |
|
84
|
|
|
*/ |
|
85
|
|
|
public function findTutor(int $programId): ActiveRow |
|
86
|
|
|
{ |
|
87
|
|
|
return $this->getProgramModel()->getTutor($programId); |
|
88
|
|
|
} |
|
89
|
|
|
|
|
90
|
|
|
/** |
|
91
|
|
|
* @param int $programId |
|
92
|
|
|
* @return array |
|
93
|
|
|
*/ |
|
94
|
|
|
public function findVisitors(int $programId): array |
|
95
|
|
|
{ |
|
96
|
|
|
return $this->getProgramModel()->findProgramVisitors($programId); |
|
97
|
|
|
} |
|
98
|
|
|
|
|
99
|
|
|
/** |
|
100
|
|
|
* @param Nette\Utils\ArrayHash $program |
|
101
|
|
|
* @return boolean |
|
102
|
|
|
*/ |
|
103
|
|
|
public function create(ArrayHash $program) |
|
104
|
|
|
{ |
|
105
|
|
|
$program = $this->transformDisplayInRegValue($program); |
|
106
|
|
|
|
|
107
|
|
|
return $this->getProgramModel()->create((array) $program); |
|
108
|
|
|
} |
|
109
|
|
|
|
|
110
|
|
|
/** |
|
111
|
|
|
* @param Nette\Utils\ArrayHash $program |
|
112
|
|
|
* @return boolean |
|
113
|
|
|
*/ |
|
114
|
|
|
public function update(int $id, ArrayHash $program) |
|
115
|
|
|
{ |
|
116
|
|
|
$program = $this->transformDisplayInRegValue($program); |
|
117
|
|
|
|
|
118
|
|
|
return $this->getProgramModel()->update($id, (array) $program); |
|
119
|
|
|
} |
|
120
|
|
|
|
|
121
|
|
|
/** |
|
122
|
|
|
* @param int $id |
|
123
|
|
|
* @return boolean |
|
124
|
|
|
*/ |
|
125
|
|
|
public function delete(int $id) |
|
126
|
|
|
{ |
|
127
|
|
|
return $this->getProgramModel()->delete($id); |
|
128
|
|
|
} |
|
129
|
|
|
|
|
130
|
|
|
/** |
|
131
|
|
|
* @param int $programId |
|
132
|
|
|
* @return int |
|
133
|
|
|
*/ |
|
134
|
|
|
public function countVisitors(int $programId): int |
|
135
|
|
|
{ |
|
136
|
|
|
return $this->getProgramModel()->countProgramVisitors($programId); |
|
137
|
|
|
} |
|
138
|
|
|
|
|
139
|
|
|
/** |
|
140
|
|
|
* @param int $visitorId |
|
141
|
|
|
* @return array |
|
142
|
|
|
*/ |
|
143
|
|
View Code Duplication |
public function assembleFormPrograms(int $visitorId): array |
|
|
|
|
|
|
144
|
|
|
{ |
|
145
|
|
|
$visitorPrograms = $this->getVisitorModel()->findVisitorPrograms($visitorId); |
|
146
|
|
|
|
|
147
|
|
|
$formPrograms = []; |
|
148
|
|
|
|
|
149
|
|
|
foreach ($visitorPrograms as $visitorProgram) { |
|
150
|
|
|
if($visitorProgram->program !== 0) { |
|
|
|
|
|
|
151
|
|
|
$program = $this->getProgramModel()->findByProgramId($visitorProgram->program); |
|
|
|
|
|
|
152
|
|
|
$formPrograms['blck_' . $program->block] = $visitorProgram->program; |
|
|
|
|
|
|
153
|
|
|
} |
|
154
|
|
|
} |
|
155
|
|
|
|
|
156
|
|
|
return $formPrograms; |
|
157
|
|
|
} |
|
158
|
|
|
|
|
159
|
|
|
/** |
|
160
|
|
|
* @param Nette\Utils\ArrayHash $program |
|
161
|
|
|
* @return Nette\Utils\ArrayHash |
|
162
|
|
|
*/ |
|
163
|
|
|
protected function transformDisplayInRegValue(ArrayHash $program): ArrayHash |
|
164
|
|
|
{ |
|
165
|
|
|
if(array_key_exists('display_in_reg', $program) && empty($program['display_in_reg'])) { |
|
166
|
|
|
$program['display_in_reg'] = '1'; |
|
167
|
|
|
} else { |
|
168
|
|
|
$program['display_in_reg'] = '0'; |
|
169
|
|
|
} |
|
170
|
|
|
|
|
171
|
|
|
return $program; |
|
172
|
|
|
} |
|
173
|
|
|
|
|
174
|
|
|
/** |
|
175
|
|
|
* @return ProgramModel |
|
176
|
|
|
*/ |
|
177
|
|
|
protected function getProgramModel() |
|
178
|
|
|
{ |
|
179
|
|
|
return $this->programModel; |
|
180
|
|
|
} |
|
181
|
|
|
|
|
182
|
|
|
/** |
|
183
|
|
|
* @param ProgramModel $model |
|
184
|
|
|
* @return $this |
|
185
|
|
|
*/ |
|
186
|
|
|
protected function setProgramModel(ProgramModel $model): self |
|
187
|
|
|
{ |
|
188
|
|
|
$this->programModel = $model; |
|
189
|
|
|
|
|
190
|
|
|
return $this; |
|
191
|
|
|
} |
|
192
|
|
|
|
|
193
|
|
|
/** |
|
194
|
|
|
* @return VisitorModel |
|
195
|
|
|
*/ |
|
196
|
|
|
protected function getVisitorModel(): VisitorModel |
|
197
|
|
|
{ |
|
198
|
|
|
return $this->visitorModel; |
|
199
|
|
|
} |
|
200
|
|
|
|
|
201
|
|
|
/** |
|
202
|
|
|
* @param VisitorModel $model |
|
203
|
|
|
* @return self |
|
204
|
|
|
*/ |
|
205
|
|
|
protected function setVisitorModel(VisitorModel $model): self |
|
206
|
|
|
{ |
|
207
|
|
|
$this->visitorModel = $model; |
|
208
|
|
|
|
|
209
|
|
|
return $this; |
|
210
|
|
|
} |
|
211
|
|
|
|
|
212
|
|
|
} |
|
213
|
|
|
|
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.