aboutsummaryrefslogtreecommitdiff
path: root/app/controllers/evaluation/profiles.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/evaluation/profiles.php')
-rw-r--r--app/controllers/evaluation/profiles.php52
1 files changed, 35 insertions, 17 deletions
diff --git a/app/controllers/evaluation/profiles.php b/app/controllers/evaluation/profiles.php
index acf602f..7c89c09 100644
--- a/app/controllers/evaluation/profiles.php
+++ b/app/controllers/evaluation/profiles.php
@@ -11,22 +11,24 @@ class Evaluation_ProfilesController extends AuthenticatedController
);
}
+ public function preedit_action()
+ {
+ $this->semesters = $this->getAvailableSemesters(true);
+ $this->render_template('evaluation/profiles/preedit');
+ }
+
public function edit_action(string $id = null): void
{
+ $sem_preselect = Request::get('sem_select');
if ($id) {
$profile = QuestionnaireEvalCentralProfile::find($id);
$semesters = [$profile->semester_id => $profile->semester->name];
} else {
- $profile = new QuestionnaireEvalCentralProfile();
- $semesters = [];
- Semester::findEachBySQL(
- function($row) use (&$semesters) {
- $semesters[$row['semester_id']] = $row['name'];
- },
- "`semester_id` NOT IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`)
- ORDER BY `beginn` desc"
- );
+ $profile_preselect = QuestionnaireEvalCentralProfile::find($sem_preselect);
+ $profile = QuestionnaireEvalCentralProfile::build($profile_preselect);
+ $semesters = $this->getAvailableSemesters();
}
+ $is_fill = $sem_preselect || $id;
$template_array = [];
Questionnaire::findEachBySQL(
@@ -60,7 +62,7 @@ class Evaluation_ProfilesController extends AuthenticatedController
'mapper' => function($value) {
return implode(',', $value);
},
- 'value' => $id && $profile->optional_templates ?
+ 'value' => $is_fill && $profile->optional_templates ?
explode(',', $profile->optional_templates) : null
],
'startdate' => [
@@ -68,41 +70,41 @@ class Evaluation_ProfilesController extends AuthenticatedController
'name' => 'startdate',
'required' => true,
'type' => 'datetimepicker',
- 'value' => $id ? $profile->startdate : time() //TODO sem
+ 'value' => $is_fill ? $profile->startdate : time() //TODO sem
],
'stopdate' => [
'label' => _('Ende'),
'required' => true,
'type' => 'datetimepicker',
- 'value' => $id ? $profile->stopdate : time(), //TODO sem
+ 'value' => $is_fill ? $profile->stopdate : time(), //TODO sem
'mindate' => 'startdate'
],
'anonymous' => [
'label' => _('Anonyme Teilnahme'),
'type' => 'checkbox',
- 'value' => $id ? $profile->anonymous : true
+ 'value' => $is_fill ? $profile->anonymous : true
],
'editanswers' => [
'label' => _('Antworten revidierbar'),
'type' => 'checkbox',
- 'value' => $id ? $profile->editanswers : false
+ 'value' => $is_fill ? $profile->editanswers : false
],
'resultvisibility' => [
'label' => _('Zeitpunkt der Ergebnis-Einsicht'),
'type' => 'select',
'options' => QuestionnaireEvalCentralProfile::getTranslatedVisibilityOptions(),
- 'value' => $id ? $profile->resultvisibility : 'never'
+ 'value' => $is_fill ? $profile->resultvisibility : 'never'
],
'result_visible_for' => [
'label' => _('Ergebnis-Einsicht für (Evaluations-Admins immer)'),
'type' => 'select',
'options' => QuestionnaireEvalCentralProfile::getTranslatedVisibilityOptions(true),
- 'value' => $id ? $profile->result_visible_for : null
+ 'value' => $is_fill ? $profile->result_visible_for : null
],
'minimum_responses' => [
'label' => _('Mindestrücklauf'),
'type' => 'number',
- 'value' => $id ? $profile->minimum_responses : 8,
+ 'value' => $is_fill ? $profile->minimum_responses : 8,
'min' => 0
]
]
@@ -114,6 +116,22 @@ class Evaluation_ProfilesController extends AuthenticatedController
$this->render_form($form);
}
+ public function getAvailableSemesters(bool $reverse = false): array
+ {
+ $semesters = [];
+ Semester::findEachBySQL(
+ function($row) use (&$semesters) {
+ $semesters[$row['semester_id']] = $row['name'];
+ },
+ $reverse ?
+ "`semester_id` IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`)
+ ORDER BY `beginn` desc" :
+ "`semester_id` NOT IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`)
+ ORDER BY `beginn` desc"
+ );
+ return $semesters;
+ }
+
public function bulkdelete_action(): void
{
CSRFProtection::verifyUnsafeRequest();