From 514c0245f61f6af473436f3fa70c29aea4564f35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michaela=20Br=C3=BCckner?= Date: Mon, 18 Mar 2024 11:46:58 +0100 Subject: export for Wartelisten, re #3785 --- app/controllers/course/grouping.php | 51 +++++++++++++++++++++++++++++++++++-- app/controllers/course/members.php | 45 ++++++++++++++++++++++++++++---- 2 files changed, 89 insertions(+), 7 deletions(-) diff --git a/app/controllers/course/grouping.php b/app/controllers/course/grouping.php index 198932e..d7e0867 100644 --- a/app/controllers/course/grouping.php +++ b/app/controllers/course/grouping.php @@ -190,7 +190,28 @@ class Course_GroupingController extends AuthenticatedController // Export all participants. if (Config::get()->EXPORT_ENABLE) { $widget = new ExportWidget(); + $widget->addLink( + _('Teilnehmendenliste als Excel-Datei exportieren'), + URLHelper::getURL('dispatch.php/course/grouping/export', [ + 'course_id' => $this->course_id, + 'format' => 'xlsx', + 'type' => 'grouping' + ]), + Icon::create('export') + ); + $widget->addLink( + _('Teilnehmendenliste als CSV-Datei exportieren'), + URLHelper::getURL('dispatch.php/course/grouping/export', [ + 'course_id' => $this->course_id, + 'format' => 'csv', + 'type' => 'grouping' + ]), + Icon::create('export') + ); + $sidebar->addWidget($widget); + + /* // create csv-export link $csvExport = export_link( $this->course->id, @@ -229,8 +250,7 @@ class Course_GroupingController extends AuthenticatedController $rtfExport, Icon::create('file-text', 'clickable') ); - - $sidebar->addWidget($widget); + */ } } @@ -585,6 +605,33 @@ class Course_GroupingController extends AuthenticatedController } /** + * + */ + public function export_action() + { + $export_format = Request::get('format'); + $export_type = Request::get('type'); + + if ($export_format !== 'csv' && $export_format !== 'xlsx') { + throw new Exception('Wrong format'); + } + + $header = [_('Status'), _('Anrede'), _('Titel'), _('Vorname'), _('Nachname'), _('Titel nachgestellt'), + _('Benutzername'), _('Adresse'), _('Telefonnr.'), _('E-Mail'), _('Anmeldedatum'), _('Matrikelnummer'), + _('Studiengänge')]; + $members = CourseMember::getMemberDataByCourse($this->course_id); + + foreach ($members as &$member) { + $member['Anmeldedatum'] = $member['Anmeldedatum'] ? date("d.m.Y", $member['Anmeldedatum']) : _("unbekannt"); + unset($member['user_id']); + } + + $filename = _('Teilnehmendenexport') . ' ' . $this->course_title . '.' . $export_format; + + $this->render_spreadsheet($header, $members, $export_format, $filename); + } + + /** * Sychronizes members between parent and child course. * @param string $parent_id parent course ID * @param string $child_id child course ID diff --git a/app/controllers/course/members.php b/app/controllers/course/members.php index 5ead0ea..0b6ac77 100644 --- a/app/controllers/course/members.php +++ b/app/controllers/course/members.php @@ -1661,6 +1661,7 @@ class Course_MembersController extends AuthenticatedController URLHelper::getURL('dispatch.php/course/members/export', [ 'course_id' => $this->course_id, 'format' => 'xlsx', + 'type' => 'members' ]), Icon::create('export') ); @@ -1670,11 +1671,34 @@ class Course_MembersController extends AuthenticatedController URLHelper::getURL('dispatch.php/course/members/export', [ 'course_id' => $this->course_id, 'format' => 'csv', + 'type' => 'members' ]), Icon::create('export') ); - if (count($this->awaiting) > 0) { + // TODO + //if (count($this->awaiting) > 0) { + + $widget->addLink( + _('Warteliste als Excel-Datei exportieren'), + URLHelper::getURL('dispatch.php/course/members/export', [ + 'course_id' => $this->course_id, + 'format' => 'xlsx', + 'type' => 'waiting' + ]), + Icon::create('export') + ); + + $widget->addLink( + _('Warteliste als CSV-Datei exportieren'), + URLHelper::getURL('dispatch.php/course/members/export', [ + 'course_id' => $this->course_id, + 'format' => 'csv', + 'type' => 'waiting' + ]), + Icon::create('export') + ); + /* $awaiting_rtf = export_link( $this->course_id, 'person', @@ -1704,7 +1728,8 @@ class Course_MembersController extends AuthenticatedController $awaiting_csv, Icon::create('export') ); - } + */ + //} } $options = new OptionsWidget(); @@ -1752,14 +1777,24 @@ class Course_MembersController extends AuthenticatedController public function export_action() { - $export_format = Request::get('format'); + $export_format = Request::get('format'); + $export_type = Request::get('type'); if ($export_format !== 'csv' && $export_format !== 'xlsx') { throw new Exception('Wrong format'); } - $header = [_('Status'), _('Anrede'), _('Titel'), _('Vorname'), _('Nachname'), _('Titel nachgestellt'), _('Benutzername'), _('Adresse'), _('Telefonnr.'), - _('E-Mail'), _('Anmeldedatum'), _('Matrikelnummer'), _('Studiengänge')]; + if ($export_type == 'members') { + + } else if ($export_type == 'waiting') { + + } else { + throw new Exception('Wrong export type'); + } + + $header = [_('Status'), _('Anrede'), _('Titel'), _('Vorname'), _('Nachname'), _('Titel nachgestellt'), + _('Benutzername'), _('Adresse'), _('Telefonnr.'), _('E-Mail'), _('Anmeldedatum'), _('Matrikelnummer'), + _('Studiengänge')]; $members = CourseMember::getMemberDataByCourse($this->course_id); foreach ($members as &$member) { -- cgit v1.0