Skip to content

Commit

Permalink
Event participant and owner invites/uninvites
Browse files Browse the repository at this point in the history
  • Loading branch information
Zomtir committed Apr 29, 2024
1 parent a13d80a commit 61aab0d
Show file tree
Hide file tree
Showing 19 changed files with 534 additions and 82 deletions.
3 changes: 2 additions & 1 deletion l10n.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
output-localization-file: app_localizations.dart
#untranslated-messages-file: l10n_untranslated.txt
12 changes: 9 additions & 3 deletions lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,10 @@
"pageCourseClasses": "Kurseinheiten",
"pageCourseModerators": "Kursmoderatoren",
"pageCourseRequirements": "Kursanforderungen",
"pageCourseParticipantTeams": "Team-Vorschläge als Teilnehmer",
"pageCourseOwnerTeams": "Team-Vorschläge als Verantwortliche",
"pageCourseParticipantSummons": "Team-Vorschläge als Teilnehmer",
"pageCourseParticipantUnsummons": "Team-Verweigerung als Teilnehmer",
"pageCourseOwnerSummons": "Team-Vorschläge als Verantwortliche",
"pageCourseOwnerUnsummons": "Team-Verweigerung als Verantwortliche",
"pageCourseStatisticParticipants": "Teilnehmerstatistik",
"pageCourseStatisticOwners": "Verantwortlichkeitsstatistik",
"pageCourseStatisticClasses": "Kurseinheitsstatistik",
Expand All @@ -86,8 +88,12 @@
"pageEventOwnership": "Persönliche Ereignisse",
"pageEventManagement": "Ereignisverwaltung",
"pageEventEdit": "Ereignis bearbeiten",
"pageEventOwners": "Leiter des Ereignisses",
"pageEventOwners": "Verantwortliche des Ereignisses",
"pageEventOwnerInvites": "Vorschläge als Verantwortliche",
"pageEventOwnerUninvites": "Verweigerung als Verantwortliche",
"pageEventParticipants": "Teilnehmer des Ereignisses",
"pageEventParticipantInvites": "Vorschläge als Teilnehmer",
"pageEventParticipantUninvites": "Verweigerung als Teilnehmer",
"pageEventInfo": "Ereignisinformationen",
"pageCompetencePersonal": "Persönliche Kompetenzen",
"pageCompetenceManagement": "Kompetenzen verwalten",
Expand Down
10 changes: 8 additions & 2 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,10 @@
"pageCourseClasses": "Course Classes",
"pageCourseModerators": "Course Moderators",
"pageCourseRequirements": "Course Requirements",
"pageCourseParticipantTeams": "Team Suggestions as Participants",
"pageCourseOwnerTeams": "Team Suggestions as Owners",
"pageCourseParticipantSummons": "Team Suggestions as Participants",
"pageCourseParticipantUnsummons": "Team Denials as Participants",
"pageCourseOwnerSummons": "Team Suggestions as Owners",
"pageCourseOwnerUnsummons": "Team Denials as Owners",
"pageCourseStatisticParticipants": "Participant Statistic",
"pageCourseStatisticOwners": "Owner Statistic",
"pageCourseStatisticClasses": "Class Statistic",
Expand All @@ -87,7 +89,11 @@
"pageEventManagement": "Manage Events",
"pageEventEdit": "Edit Event",
"pageEventOwners": "Event Owners",
"pageEventOwnerInvites": "Suggestions as Owners",
"pageEventOwnerUninvites": "Denials as Owners",
"pageEventParticipants": "Event Participants",
"pageEventParticipantInvites": "Suggestions as Participants",
"pageEventParticipantUninvites": "Denials as Participants",
"pageEventInfo": "Event Information",
"pageCompetencePersonal": "Personal Competences",
"pageCompetenceManagement": "Manage Competences",
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/ClassOverviewMangementPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class ClassOverviewManagementPageState extends State<ClassOverviewManagementPage
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ClassDetailManagementPage(
builder: (context) => EventDetailManagementPage(
session: widget.session,
eventID: event.id,
),
Expand Down
70 changes: 56 additions & 14 deletions lib/pages/CourseDetailMangementPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -102,35 +102,69 @@ class CourseDetailManagementPageState extends State<CourseDetailManagementPage>
);
}

Future<void> _handleParticipantTeams() async {
Future<void> _handleParticipantSummons() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<Team>(
session: widget.session,
title: AppLocalizations.of(context)!.pageCourseParticipantTeams,
title: AppLocalizations.of(context)!.pageCourseParticipantSummons,
tile: AppCourseTile(course: widget.course),
onCallAvailable: (session) => api_regular.team_list(session),
onCallSelected: (session) => api_admin.course_participant_team_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_participant_team_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_participant_team_remove(session, widget.course.id, team.id),
onCallSelected: (session) => api_admin.course_participant_summon_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_participant_summon_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_participant_summon_remove(session, widget.course.id, team.id),
),
),
);
}

Future<void> _handleOwnerTeams() async {
Future<void> _handleParticipantUnsummons() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<Team>(
session: widget.session,
title: AppLocalizations.of(context)!.pageCourseOwnerTeams,
title: AppLocalizations.of(context)!.pageCourseParticipantUnsummons,
tile: AppCourseTile(course: widget.course),
onCallAvailable: (session) => api_regular.team_list(session),
onCallSelected: (session) => api_admin.course_owner_team_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_owner_team_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_owner_team_remove(session, widget.course.id, team.id),
onCallSelected: (session) => api_admin.course_participant_unsummon_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_participant_unsummon_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_participant_unsummon_remove(session, widget.course.id, team.id),
),
),
);
}

Future<void> _handleOwnerSummons() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<Team>(
session: widget.session,
title: AppLocalizations.of(context)!.pageCourseOwnerSummons,
tile: AppCourseTile(course: widget.course),
onCallAvailable: (session) => api_regular.team_list(session),
onCallSelected: (session) => api_admin.course_owner_summon_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_owner_summon_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_owner_summon_remove(session, widget.course.id, team.id),
),
),
);
}

Future<void> _handleOwnerUnsummons() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<Team>(
session: widget.session,
title: AppLocalizations.of(context)!.pageCourseOwnerUnsummons,
tile: AppCourseTile(course: widget.course),
onCallAvailable: (session) => api_regular.team_list(session),
onCallSelected: (session) => api_admin.course_owner_unsummon_list(session, widget.course.id),
onCallAdd: (session, team) => api_admin.course_owner_unsummon_add(session, widget.course.id, team.id),
onCallRemove: (session, team) => api_admin.course_owner_unsummon_remove(session, widget.course.id, team.id),
),
),
);
Expand Down Expand Up @@ -202,12 +236,20 @@ class CourseDetailManagementPageState extends State<CourseDetailManagementPage>
onPressed: _handleClasses,
),
AppButton(
text: AppLocalizations.of(context)!.pageCourseParticipantTeams,
onPressed: _handleParticipantTeams,
text: AppLocalizations.of(context)!.pageCourseParticipantSummons,
onPressed: _handleParticipantSummons,
),
AppButton(
text: AppLocalizations.of(context)!.pageCourseParticipantUnsummons,
onPressed: _handleParticipantUnsummons,
),
AppButton(
text: AppLocalizations.of(context)!.pageCourseOwnerSummons,
onPressed: _handleOwnerSummons,
),
AppButton(
text: AppLocalizations.of(context)!.pageCourseOwnerTeams,
onPressed: _handleOwnerTeams,
text: AppLocalizations.of(context)!.pageCourseOwnerUnsummons,
onPressed: _handleOwnerUnsummons,
),
AppButton(
text: AppLocalizations.of(context)!.pageCourseModerators,
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/CourseStatisticClassPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class CourseStatisticClassPageState extends State<CourseStatisticClassPage> {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ClassDetailManagementPage(
builder: (context) => EventDetailManagementPage(
session: widget.session,
eventID: eventID,
),
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/CourseStatisticOwner1Page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class CourseStatisticOwner1PageState extends State<CourseStatisticOwner1Page> {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ClassDetailManagementPage(
builder: (context) => EventDetailManagementPage(
session: widget.session,
eventID: eventID,
),
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/CourseStatisticParticipant1Page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class CourseStatisticParticipant1PageState extends State<CourseStatisticParticip
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ClassDetailManagementPage(
builder: (context) => EventDetailManagementPage(
session: widget.session,
eventID: eventID,
),
Expand Down
95 changes: 90 additions & 5 deletions lib/pages/EventDetailManagementPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,24 @@ import 'package:cptclient/material/pages/SelectionPage.dart';
import 'package:cptclient/material/tiles/AppEventTile.dart';
import 'package:cptclient/pages/EventEditPage.dart';
import 'package:cptclient/static/server_event_admin.dart' as api_admin;
import 'package:cptclient/static/server_user_regular.dart' as api_regular;
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class ClassDetailManagementPage extends StatefulWidget {
class EventDetailManagementPage extends StatefulWidget {
final Session session;
final int eventID;

ClassDetailManagementPage({super.key, required this.session, required this.eventID});
EventDetailManagementPage({super.key, required this.session, required this.eventID});

@override
ClassDetailManagementPageState createState() => ClassDetailManagementPageState();
EventDetailManagementPageState createState() => EventDetailManagementPageState();
}

class ClassDetailManagementPageState extends State<ClassDetailManagementPage> {
class EventDetailManagementPageState extends State<EventDetailManagementPage> {
Event? event;

ClassDetailManagementPageState();
EventDetailManagementPageState();

@override
void initState() {
Expand Down Expand Up @@ -80,6 +81,40 @@ class ClassDetailManagementPageState extends State<ClassDetailManagementPage> {
);
}

Future<void> _handleParticipantInvites() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<User>(
session: widget.session,
title: AppLocalizations.of(context)!.pageEventParticipantInvites,
tile: AppEventTile(event: event!),
onCallAvailable: (session) => api_regular.user_list(session),
onCallSelected: (session) => api_admin.event_participant_invite_list(session, event!.id),
onCallAdd: (session, user) => api_admin.event_participant_invite_add(session, event!.id, user.id),
onCallRemove: (session, user) => api_admin.event_participant_invite_remove(session, event!.id, user.id),
),
),
);
}

Future<void> _handleParticipantUninvites() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<User>(
session: widget.session,
title: AppLocalizations.of(context)!.pageEventParticipantUninvites,
tile: AppEventTile(event: event!),
onCallAvailable: (session) => api_regular.user_list(session),
onCallSelected: (session) => api_admin.event_participant_uninvite_list(session, event!.id),
onCallAdd: (session, user) => api_admin.event_participant_uninvite_add(session, event!.id, user.id),
onCallRemove: (session, user) => api_admin.event_participant_uninvite_remove(session, event!.id, user.id),
),
),
);
}

Future<void> _handleOwners() async {
await Navigator.push(
context,
Expand All @@ -97,6 +132,40 @@ class ClassDetailManagementPageState extends State<ClassDetailManagementPage> {
);
}

Future<void> _handleOwnerInvites() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<User>(
session: widget.session,
title: AppLocalizations.of(context)!.pageEventOwnerInvites,
tile: AppEventTile(event: event!),
onCallAvailable: (session) => api_regular.user_list(session),
onCallSelected: (session) => api_admin.event_owner_invite_list(session, event!.id),
onCallAdd: (session, user) => api_admin.event_owner_invite_add(session, event!.id, user.id),
onCallRemove: (session, user) => api_admin.event_owner_invite_remove(session, event!.id, user.id),
),
),
);
}

Future<void> _handleOwnerUninvites() async {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SelectionPage<User>(
session: widget.session,
title: AppLocalizations.of(context)!.pageEventOwnerUninvites,
tile: AppEventTile(event: event!),
onCallAvailable: (session) => api_regular.user_list(session),
onCallSelected: (session) => api_admin.event_owner_uninvite_list(session, event!.id),
onCallAdd: (session, user) => api_admin.event_owner_uninvite_add(session, event!.id, user.id),
onCallRemove: (session, user) => api_admin.event_owner_uninvite_remove(session, event!.id, user.id),
),
),
);
}

@override
Widget build (BuildContext context) {
if (event == null) {
Expand Down Expand Up @@ -125,10 +194,26 @@ class ClassDetailManagementPageState extends State<ClassDetailManagementPage> {
text: AppLocalizations.of(context)!.pageEventParticipants,
onPressed: _handleParticipants,
),
AppButton(
text: AppLocalizations.of(context)!.pageEventParticipantInvites,
onPressed: _handleParticipantInvites,
),
AppButton(
text: AppLocalizations.of(context)!.pageEventParticipantUninvites,
onPressed: _handleParticipantUninvites,
),
AppButton(
text: AppLocalizations.of(context)!.pageEventOwners,
onPressed: _handleOwners,
),
AppButton(
text: AppLocalizations.of(context)!.pageEventOwnerInvites,
onPressed: _handleOwnerInvites,
),
AppButton(
text: AppLocalizations.of(context)!.pageEventOwnerUninvites,
onPressed: _handleOwnerUninvites,
),
],
),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/EventInfoPage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class EventInfoPageState extends State<EventInfoPage> {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ClassDetailManagementPage(
builder: (context) => EventDetailManagementPage(
session: widget.session,
eventID: widget.event.id,
),
Expand Down
Loading

0 comments on commit 61aab0d

Please sign in to comment.