Skip to content

Commit 1c028da

Browse files
authored
Náhradníci na programy - vylepšení a opravy (#787)
1 parent 931a27e commit 1c028da

File tree

78 files changed

+2692
-506
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+2692
-506
lines changed

app/AdminModule/CmsModule/Presenters/FaqPresenter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected function createComponentFaqForm(): Form
4949
$this->flashMessage('admin.cms.faq_saved', 'success');
5050

5151
if ($form->isSubmitted() === $form['submitAndContinue']) {
52-
$id = $values->id ?: $this->faqRepository->findLastId();
52+
$id = $values->id ?: $this->faqRepository->findLastId(); // todo: nahradit
5353
$this->redirect('Faq:edit', ['id' => $id]);
5454
} else {
5555
$this->redirect('Faq:default');

app/AdminModule/CmsModule/Presenters/NewsPresenter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ protected function createComponentNewsForm(): Form
4949
$this->flashMessage('admin.cms.news_saved', 'success');
5050

5151
if ($form->isSubmitted() === $form['submitAndContinue']) {
52-
$id = $values->id ?: $this->newsRepository->findLastId();
52+
$id = $values->id ?: $this->newsRepository->findLastId(); // todo: nahradit
5353
$this->redirect('News:edit', ['id' => $id]);
5454
} else {
5555
$this->redirect('News:default');

app/AdminModule/ConfigurationModule/Forms/DiscountForm.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ public function processForm(Form $form, stdClass $values): void
141141

142142
$this->discountRepository->save($this->discount);
143143

144-
$this->onSave($this);
144+
$this->onSave();
145145
} else {
146-
$this->onConditionError($this);
146+
$this->onConditionError();
147147
}
148148
}
149149
}

app/AdminModule/ConfigurationModule/Presenters/DiscountsPresenter.php

+1-7
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,8 @@ protected function createComponentDiscountForm(): DiscountForm
3636
$this->redirect('Discounts:default');
3737
};
3838

39-
$control->onConditionError[] = function (DiscountForm $control): void {
39+
$control->onConditionError[] = function (): void {
4040
$this->flashMessage('admin.configuration.discounts_condition_format', 'danger');
41-
42-
if ($control->id) {
43-
$this->redirect('Discounts:edit', ['id' => $control->id]);
44-
} else {
45-
$this->redirect('Discounts:add');
46-
}
4741
};
4842

4943
return $control;

app/AdminModule/Presenters/AclPresenter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ protected function createComponentAddRoleForm(): Form
9090

9191
$this->flashMessage('admin.acl.roles_saved', 'success');
9292

93-
$id = $this->roleRepository->findLastId();
93+
$id = $this->roleRepository->findLastId(); // todo: nahradit
9494
$this->redirect('Acl:edit', ['id' => $id]);
9595
};
9696

app/AdminModule/Presenters/templates/Dashboard/default.latte

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,22 @@
3838
<div class="row">
3939
<div class="col-6 mb-3">
4040
<a href="{plink Program:Blocks:default}" class="btn btn-secondary btn-sm btn-block">
41-
<span class="fa fa-2x fa-calendar-o"></span><br>{_admin.program.menu_blocks}
41+
<span class="fa fa-2x fa-calendar-o"></span><br>{_admin.program.menu.blocks}
4242
</a>
4343
</div>
4444
<div class="col-6 mb-3">
4545
<a href="{plink Program:Schedule:default}" class="btn btn-secondary btn-sm btn-block">
46-
<span class="fa fa-2x fa-calendar"></span><br>{_admin.program.menu_schedule}
46+
<span class="fa fa-2x fa-calendar"></span><br>{_admin.program.menu.schedule}
4747
</a>
4848
</div>
4949
<div class="col-6 mb-3" n:if="$user->isAllowed($resourceProgram, $permissionManageCategories)">
5050
<a href="{plink Program:Categories:default}" class="btn btn-secondary btn-sm btn-block">
51-
<span class="fa fa-2x fa-flag"></span><br>{_admin.program.menu_categories}
51+
<span class="fa fa-2x fa-flag"></span><br>{_admin.program.menu.categories}
5252
</a>
5353
</div>
5454
<div class="col-6 mb-3" n:if="$user->isAllowed($resourceProgram, $permissionManageRooms)">
5555
<a href="{plink Program:Rooms:default}" class="btn btn-secondary btn-sm btn-block">
56-
<span class="fa fa-2x fa-home"></span><br>{_admin.program.menu_rooms}
56+
<span class="fa fa-2x fa-home"></span><br>{_admin.program.menu.rooms}
5757
</a>
5858
</div>
5959
</div>

app/AdminModule/ProgramModule/Components/ProgramAttendeesGridControl.php

+26-37
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use App\Model\User\User;
2323
use App\Services\CommandBus;
2424
use App\Services\ISettingsService;
25+
use Doctrine\ORM\EntityManagerInterface;
2526
use Doctrine\ORM\QueryBuilder;
2627
use Nette\Application\AbortException;
2728
use Nette\Application\UI\Control;
@@ -30,8 +31,6 @@
3031
use Nette\Localization\ITranslator;
3132
use Symfony\Component\Messenger\Exception\HandlerFailedException;
3233
use Throwable;
33-
use Tracy\Debugger;
34-
use Tracy\ILogger;
3534
use Ublaboo\DataGrid\DataGrid;
3635
use Ublaboo\DataGrid\Exception\DataGridException;
3736

@@ -59,19 +58,23 @@ class ProgramAttendeesGridControl extends Control
5958

6059
private ISettingsService $settingsService;
6160

61+
private EntityManagerInterface $em;
62+
6263
public function __construct(
6364
ITranslator $translator,
6465
ProgramRepository $programRepository,
6566
UserRepository $userRepository,
6667
Session $session,
6768
CommandBus $commandBus,
68-
ISettingsService $settingsService
69+
ISettingsService $settingsService,
70+
EntityManagerInterface $em
6971
) {
7072
$this->translator = $translator;
7173
$this->programRepository = $programRepository;
7274
$this->userRepository = $userRepository;
7375
$this->commandBus = $commandBus;
7476
$this->settingsService = $settingsService;
77+
$this->em = $em;
7578

7679
$this->sessionSection = $session->getSection('srs');
7780
}
@@ -190,10 +193,8 @@ public function createComponentProgramAttendeesGrid(string $name): void
190193
return $user->isAttendee($this->program) || $user->isAlternate($this->program);
191194
});
192195

193-
/* todo: opravit EntityManager closed pri exception
194196
$grid->addGroupAction('admin.program.blocks.attendees.action.register')->onSelect[] = [$this, 'groupRegister'];
195197
$grid->addGroupAction('admin.program.blocks.attendees.action.unregister')->onSelect[] = [$this, 'groupUnregister'];
196-
*/
197198
}
198199
}
199200
}
@@ -299,23 +300,17 @@ public function groupRegister(array $ids): void
299300
if (! $this->isAllowedModifyProgram($this->program)) {
300301
$p->flashMessage('admin.program.blocks_edit_not_allowed', 'danger');
301302
} else {
302-
$success = 0;
303-
$all = 0;
304-
305-
foreach ($ids as $id) {
306-
try {
307-
$user = $this->userRepository->findById($id);
308-
$this->commandBus->handle(new RegisterProgram($user, $this->program));
309-
$success++;
310-
} catch (HandlerFailedException $e) {
311-
Debugger::log($e, ILogger::DEBUG);
312-
}
313-
314-
$all++;
303+
try {
304+
$this->em->transactional(function () use ($ids): void {
305+
foreach ($ids as $id) {
306+
$user = $this->userRepository->findById($id);
307+
$this->commandBus->handle(new RegisterProgram($user, $this->program));
308+
}
309+
});
310+
$p->flashMessage('admin.program.blocks.attendees.message.group_register_success', 'success');
311+
} catch (HandlerFailedException $e) {
312+
$p->flashMessage('admin.program.blocks.attendees.message.group_register_failed', 'danger');
315313
}
316-
317-
$message = $this->translator->translate('admin.program.blocks.attendees.message.group_registered', null, ['success' => $success, 'all' => $all]);
318-
$p->flashMessage($message, 'success');
319314
}
320315

321316
if ($p->isAjax()) {
@@ -341,23 +336,17 @@ public function groupUnregister(array $ids): void
341336
if (! $this->isAllowedModifyProgram($this->program)) {
342337
$p->flashMessage('admin.program.blocks_edit_not_allowed', 'danger');
343338
} else {
344-
$success = 0;
345-
$all = 0;
346-
347-
foreach ($ids as $id) {
348-
try {
349-
$user = $this->userRepository->findById($id);
350-
$this->commandBus->handle(new UnregisterProgram($user, $this->program));
351-
$success++;
352-
} catch (HandlerFailedException $e) {
353-
Debugger::log($e, ILogger::DEBUG);
354-
}
355-
356-
$all++;
339+
try {
340+
$this->em->transactional(function () use ($ids): void {
341+
foreach ($ids as $id) {
342+
$user = $this->userRepository->findById($id);
343+
$this->commandBus->handle(new UnregisterProgram($user, $this->program));
344+
}
345+
});
346+
$p->flashMessage('admin.program.blocks.attendees.message.group_unregister_success', 'success');
347+
} catch (HandlerFailedException $e) {
348+
$p->flashMessage('admin.program.blocks.attendees.message.group_unregister_failed', 'danger');
357349
}
358-
359-
$message = $this->translator->translate('admin.program.blocks.attendees.message.group_unregistered', null, ['success' => $success, 'all' => $all]);
360-
$p->flashMessage($message, 'success');
361350
}
362351

363352
if ($p->isAjax()) {

app/AdminModule/ProgramModule/Components/ProgramBlocksGridControl.php

+34-25
Original file line numberDiff line numberDiff line change
@@ -120,50 +120,56 @@ public function createComponentProgramBlocksGrid(string $name): void
120120
$grid->setColumnsHideable();
121121
$grid->setStrictSessionFilterValues(false);
122122

123-
$grid->addGroupAction('admin.program.blocks_group_action_export_blocks_attendees')
124-
->onSelect[] = [$this, 'groupExportBlocksAttendees'];
125-
126-
$grid->addColumnText('name', 'admin.program.blocks_name')
123+
$grid->addColumnText('name', 'admin.program.blocks.common.name')
127124
->setSortable()
128125
->setFilterText();
129126

130-
$grid->addColumnText('subevent', 'admin.program.blocks_subevent', 'subevent.name')
127+
$grid->addColumnText('subevent', 'admin.program.blocks.common.subevent', 'subevent.name')
131128
->setSortable('s.name')
132129
->setFilterMultiSelect($this->subeventService->getSubeventsOptions(), 's.id');
133130

134-
$grid->addColumnText('category', 'admin.program.blocks_category', 'category.name')
131+
$grid->addColumnText('category', 'admin.program.blocks.common.category', 'category.name')
135132
->setSortable('c.name')
136133
->setFilterMultiSelect($this->categoryRepository->getCategoriesOptions(), 'c.id');
137134

138-
$grid->addColumnText('lectors', 'admin.program.blocks_lectors', 'lectorsText')
135+
$grid->addColumnText('lectors', 'admin.program.blocks.common.lectors', 'lectorsText')
139136
->setFilterMultiSelect($this->userRepository->getLectorsOptions())
140137
->setCondition(static function (QueryBuilder $qb, ArrayHash $values): void {
141138
$qb->join('b.lectors', 'l')
142139
->andWhere('l.id IN (:lids)')
143140
->setParameter('lids', (array) $values);
144141
});
145142

146-
$grid->addColumnNumber('duration', 'admin.program.blocks_duration')
143+
$grid->addColumnNumber('duration', 'admin.program.blocks.common.duration')
147144
->setSortable()
148145
->setFilterText();
149146

150-
$grid->addColumnText('capacity', 'admin.program.blocks_capacity')
147+
$grid->addColumnText('capacity', 'admin.program.blocks.common.capacity')
151148
->setRendererOnCondition(function ($row) {
152-
return $this->translator->translate('admin.program.blocks_capacity_unlimited');
149+
return $this->translator->translate('admin.program.blocks.common.capacity_unlimited');
153150
}, static function (Block $row) {
154151
return $row->getCapacity() === null;
155152
})
156153
->setSortable();
157154

158-
$columnMandatory = $grid->addColumnStatus('mandatory', 'admin.program.blocks_mandatory');
155+
$grid->addColumnText('alternatesAllowed', 'admin.program.blocks.column.alternates_allowed')
156+
->setReplacement([
157+
'0' => $this->translator->translate('admin.common.no'),
158+
'1' => $this->translator->translate('admin.common.yes'),
159+
])
160+
->setSortable()
161+
->setFilterSelect([null => 'admin.common.all', 1 => 'admin.common.yes', 0 => 'admin.common.no'])
162+
->setTranslateOptions();
163+
164+
$columnMandatory = $grid->addColumnStatus('mandatory', 'admin.program.blocks.common.mandatory');
159165
$columnMandatory
160-
->addOption(ProgramMandatoryType::VOLUNTARY, 'admin.program.blocks_mandatory_voluntary')
166+
->addOption(ProgramMandatoryType::VOLUNTARY, 'common.program_mandatory_type.voluntary')
161167
->setClass('btn-primary')
162168
->endOption()
163-
->addOption(ProgramMandatoryType::MANDATORY, 'admin.program.blocks_mandatory_mandatory')
169+
->addOption(ProgramMandatoryType::MANDATORY, 'common.program_mandatory_type.mandatory')
164170
->setClass('btn-danger')
165171
->endOption()
166-
->addOption(ProgramMandatoryType::AUTO_REGISTERED, 'admin.program.blocks_mandatory_auto_registered')
172+
->addOption(ProgramMandatoryType::AUTO_REGISTERED, 'common.program_mandatory_type.auto_registered')
167173
->setClass('btn-warning')
168174
->endOption()
169175
->onChange[] = [$this, 'changeMandatory'];
@@ -172,13 +178,13 @@ public function createComponentProgramBlocksGrid(string $name): void
172178
->setSortable()
173179
->setFilterSelect([
174180
'' => 'admin.common.all',
175-
ProgramMandatoryType::VOLUNTARY => 'admin.program.blocks_mandatory_voluntary',
176-
ProgramMandatoryType::MANDATORY => 'admin.program.blocks_mandatory_mandatory',
177-
ProgramMandatoryType::AUTO_REGISTERED => 'admin.program.blocks_mandatory_auto_registered',
181+
ProgramMandatoryType::VOLUNTARY => 'common.program_mandatory_type.voluntary',
182+
ProgramMandatoryType::MANDATORY => 'common.program_mandatory_type.mandatory',
183+
ProgramMandatoryType::AUTO_REGISTERED => 'common.program_mandatory_type.auto_registered',
178184
])
179185
->setTranslateOptions();
180186

181-
$grid->addColumnNumber('programsCount', 'admin.program.blocks_programs_count')
187+
$grid->addColumnNumber('programsCount', 'admin.program.blocks.column.programs_count')
182188
->setRenderer(static function (Block $row) {
183189
return $row->getProgramsCount();
184190
});
@@ -205,9 +211,12 @@ public function createComponentProgramBlocksGrid(string $name): void
205211
->setClass('btn btn-xs btn-danger')
206212
->addAttributes([
207213
'data-toggle' => 'confirmation',
208-
'data-content' => $this->translator->translate('admin.program.blocks_delete_confirm'),
214+
'data-content' => $this->translator->translate('admin.program.blocks.action.delete_confirm'),
209215
]);
210216
$grid->allowRowsAction('delete', [$this, 'isAllowedModifyBlock']);
217+
218+
$grid->addGroupAction('admin.program.blocks.action.export_blocks_attendees')
219+
->onSelect[] = [$this, 'groupExportBlocksAttendees'];
211220
}
212221

213222
/**
@@ -221,13 +230,13 @@ public function handleDelete(int $id): void
221230
$block = $this->blockRepository->findById($id);
222231

223232
if (! $this->userRepository->findById($this->getPresenter()->getUser()->getId())->isAllowedModifyBlock($block)) {
224-
$this->getPresenter()->flashMessage('admin.program.blocks_delete_not_allowed', 'danger');
233+
$this->getPresenter()->flashMessage('admin.program.blocks.message.delete_not_allowed', 'danger');
225234
$this->redirect('this');
226235
}
227236

228237
$this->commandBus->handle(new RemoveBlock($block));
229238

230-
$this->getPresenter()->flashMessage('admin.program.blocks_deleted', 'success');
239+
$this->getPresenter()->flashMessage('admin.program.blocks.message.delete_success', 'success');
231240

232241
$this->redirect('this');
233242
}
@@ -244,18 +253,18 @@ public function changeMandatory(string $id, string $mandatory): void
244253
$p = $this->getPresenter();
245254

246255
if (! $this->isAllowedModifyBlock($block)) {
247-
$p->flashMessage('admin.program.blocks_change_mandatory_denied', 'danger');
256+
$p->flashMessage('admin.program.blocks.message.mandatory_change_denied', 'danger');
248257
} elseif ($mandatory === ProgramMandatoryType::AUTO_REGISTERED && ! $this->validators->validateBlockAutoRegistered($block, $block->getCapacity())) {
249-
$p->flashMessage('admin.program.blocks_change_mandatory_auto_registered_not_allowed', 'danger');
258+
$p->flashMessage('admin.program.blocks.message.mandatory_change_auto_registered_not_allowed', 'danger');
250259
} else {
251260
try {
252261
$blockOld = clone $block;
253262
$block->setMandatory($mandatory);
254263
$this->commandBus->handle(new SaveBlock($block, $blockOld));
255-
$p->flashMessage('admin.program.blocks_changed_mandatory', 'success');
264+
$p->flashMessage('admin.program.blocks.message.mandatory_change_success', 'success');
256265
} catch (Throwable $ex) {
257266
Debugger::log($ex, ILogger::WARNING);
258-
$p->flashMessage('admin.program.blocks_change_mandatory_error', 'danger');
267+
$p->flashMessage('admin.program.blocks.message.mandatory_change_failed', 'danger');
259268
}
260269
}
261270

0 commit comments

Comments
 (0)