diff --git a/app/controllers/consultation/admin.php b/app/controllers/consultation/admin.php index c83eeb9c6d229abd75373511be9405b579665998..60123767257b726f8daa3bccace963c4a51cef97 100644 --- a/app/controllers/consultation/admin.php +++ b/app/controllers/consultation/admin.php @@ -168,6 +168,10 @@ class Consultation_AdminController extends ConsultationController throw new InvalidArgumentException(_('Die definierte Zeit bis zur Pause ist kleiner als die Dauer eines Termins.')); } + if ($this->range instanceof Institute && !Request::getArray('responsibilities')) { + throw new InvalidArgumentException(_('Es muss mindestens eine durchführende Person, Statusgruppe oder Einrichtung ausgewählt werden.')); + } + $slot_count = ConsultationBlock::countSlots( $start, $end, diff --git a/app/views/consultation/admin/block-responsibilities.php b/app/views/consultation/admin/block-responsibilities.php index 4d1b5ee660a3147278befbab783ad6888a4e799a..82f4586652640ca08ad0941270401d9925936aca 100644 --- a/app/views/consultation/admin/block-responsibilities.php +++ b/app/views/consultation/admin/block-responsibilities.php @@ -1,5 +1,9 @@ <?php -$block = $block ?? false; +/** + * @var ConsultationBlock|null $block + */ + +$block = $block ?? null; $selected = function ($type, $id) use ($block) { if (!$block ) { return ''; diff --git a/app/views/consultation/admin/create.php b/app/views/consultation/admin/create.php index 19a34e41c59be86fef91d5fa385817c92bf8de71..1ba8d83a6c4c6718af4b00df36279299fca6dd65 100644 --- a/app/views/consultation/admin/create.php +++ b/app/views/consultation/admin/create.php @@ -1,4 +1,12 @@ <?php +/** + * @var Consultation_AdminController $controller + * @var Trails_Flash $flash + * @var string|null $room + * @var array $responsible + * @var Range $range + */ + $days_of_the_week = [ _('Montag') => 1, _('Dienstag') => 2, @@ -146,6 +154,20 @@ $intervals = [ <fieldset> <legend><?= _('Durchführende Personen, Gruppen oder Einrichtungen') ?></legend> + <? if ($range instanceof Institute): ?> + <p> + <?= _('Bei Einrichtungen muss mindestens eine durchführende Person, Gruppe oder Einrichtung zugewiesen ' + . 'werden.') ?> + </p> + <p> + <?= _('Bitte beachten Sie, dass bei Zuweisungen von Statusgruppen alle Personen der Gruppe mit dem Status ' + . '"tutor" und "dozent" als durchführende Personen zugewiesen werden und über alle Buchungen ' + . 'informiert werden.') ?> + <?= _('Gleiches gilt für eine zugewiesene Einrichtung. Bitte achten Sie darauf, dass Sie Ihre hier ' + . ' getroffene Auswahl in Absprache tätigen.') ?> + </p> + <? endif; ?> + <?= $this->render_partial('consultation/admin/block-responsibilities.php', compact('responsible')) ?> </fieldset> <? endif; ?> diff --git a/lib/models/ConsultationBlock.php b/lib/models/ConsultationBlock.php index 1000f626dfc9b9471bf4f77300a8e8650041da03..e2b8cf27fbcbe171a37ae77e74d369fc9c93f7be 100644 --- a/lib/models/ConsultationBlock.php +++ b/lib/models/ConsultationBlock.php @@ -101,9 +101,7 @@ class ConsultationBlock extends SimpleORMap implements PrivacyObject $persons[] = $block->range; } elseif ($block->range instanceof Course) { $persons = ConsultationResponsibility::getCourseResponsibilities($block->range); - } elseif ($block->range instanceof Institute) { - $persons = ConsultationResponsibility::getInstituteResponsibilites($block->range); - } else { + } elseif (!($block->range instanceof Institute)) { throw new Exception('Unknown range type'); }