From 6158abb2f7e5e0a66f1734b9362fa84f24afe55c Mon Sep 17 00:00:00 2001 From: Christian Hannibal Date: Fri, 1 Dec 2023 10:37:18 +0100 Subject: [PATCH] seperated into modules and made the strategies generic --- lib/main.dart | 20 +++++++---- lib/roles/citizen_strategy.dart | 10 ++++++ lib/roles/guardian_strategy.dart | 10 ++++++ lib/roles/roles | 0 lib/roles/roles.dart | 57 ++++++++++--------------------- lib/roles/superuser_strategy.dart | 10 ++++++ lib/roles/trustee_strategy.dart | 11 ++++++ 7 files changed, 72 insertions(+), 46 deletions(-) delete mode 100644 lib/roles/roles diff --git a/lib/main.dart b/lib/main.dart index 7dc98e421..4c10a6948 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,26 +4,32 @@ import 'package:weekplanner/blocs/auth_bloc.dart'; import 'package:weekplanner/bootstrap.dart'; import 'package:weekplanner/di.dart'; import 'package:weekplanner/providers/environment_provider.dart' as environment; +import 'package:weekplanner/roles/citizen_strategy.dart'; +import 'package:weekplanner/roles/guardian_strategy.dart'; +import 'package:weekplanner/roles/roles.dart'; +import 'package:weekplanner/roles/superuser_strategy.dart'; +import 'package:weekplanner/roles/trustee_strategy.dart'; import 'package:weekplanner/routes.dart'; import 'package:weekplanner/screens/choose_citizen_screen.dart'; import 'package:weekplanner/screens/login_screen.dart'; import 'package:weekplanner/widgets/giraf_notify_dialog.dart'; -import 'package:weekplanner/roles/roles.dart'; + final Api _api = di.get(); void main() { - // Create different role strategies + /// Create different role strategies var citizenStrategy = CitizenStrategy(); var trusteeStrategy = TrusteeStrategy(); var guardianStrategy = GuardianStrategy(); var superuserStrategy = SuperuserStrategy(); - // Create user contexts with different roles - var citizen = UserContext(citizenStrategy); - var trustee = UserContext(trusteeStrategy); - var guardian = UserContext(guardianStrategy); - var superuser = UserContext(superuserStrategy); + ///Create context for each strategies + var user = UserContext(citizenStrategy); + var trustee = UserContext(trusteeStrategy); + var guardian = UserContext(guardianStrategy); + var superuser = UserContext(superuserStrategy); + // Register all dependencies for injector Bootstrap().register(); WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/roles/citizen_strategy.dart b/lib/roles/citizen_strategy.dart index e69de29bb..a003e48f5 100644 --- a/lib/roles/citizen_strategy.dart +++ b/lib/roles/citizen_strategy.dart @@ -0,0 +1,10 @@ +import 'package:weekplanner/roles/roles.dart'; + +/// Concrete strategy for Citizen role +class CitizenStrategy implements RoleStrategy { + @override + void performRoleAction() { + // Implement actions specific to Citizen role + print("Performing actions as a Citizen"); + } +} \ No newline at end of file diff --git a/lib/roles/guardian_strategy.dart b/lib/roles/guardian_strategy.dart index e69de29bb..e4cb9e4e6 100644 --- a/lib/roles/guardian_strategy.dart +++ b/lib/roles/guardian_strategy.dart @@ -0,0 +1,10 @@ +import 'package:weekplanner/roles/roles.dart'; + +/// Concrete strategy for Guardian role +class GuardianStrategy implements RoleStrategy { + @override + void performRoleAction() { + // Implement actions specific to Guardian role + print("Performing actions as a Guardian"); + } +} \ No newline at end of file diff --git a/lib/roles/roles b/lib/roles/roles deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/roles/roles.dart b/lib/roles/roles.dart index 51802f283..8a56c39db 100644 --- a/lib/roles/roles.dart +++ b/lib/roles/roles.dart @@ -1,54 +1,33 @@ -// Define a strategy interface -abstract class RoleStrategy { +/// Define a strategy interface +abstract class RoleStrategy { void performRoleAction(); } -// Concrete strategy for Citizen role -class CitizenStrategy implements RoleStrategy { - @override - void performRoleAction() { - // Implement actions specific to Citizen role - print("Performing actions as a Citizen"); - } -} -// Concrete strategy for Trustee role -class TrusteeStrategy implements RoleStrategy { - @override - void performRoleAction() { - // Implement actions specific to Trustee role - print("Performing actions as a Trustee"); - } -} -// Concrete strategy for Guardian role -class GuardianStrategy implements RoleStrategy { - @override - void performRoleAction() { - // Implement actions specific to Guardian role - print("Performing actions as a Guardian"); - } -} -// Concrete strategy for Superuser role -class SuperuserStrategy implements RoleStrategy { - @override - void performRoleAction() { - // Implement actions specific to Superuser role - print("Performing actions as a Superuser"); - } -} -// Context class that uses the strategy -class UserContext { - RoleStrategy _roleStrategy; + + + + + +/// Context class that uses the strategy +class UserContext> { + RoleStrategy _roleStrategy; UserContext(this._roleStrategy); - void setRoleStrategy(RoleStrategy strategy) { + void setRoleStrategy(RoleStrategy strategy) { _roleStrategy = strategy; } void executeRoleAction() { _roleStrategy.performRoleAction(); } -} \ No newline at end of file +} + + + + + + diff --git a/lib/roles/superuser_strategy.dart b/lib/roles/superuser_strategy.dart index e69de29bb..aff08d6ac 100644 --- a/lib/roles/superuser_strategy.dart +++ b/lib/roles/superuser_strategy.dart @@ -0,0 +1,10 @@ +import 'package:weekplanner/roles/roles.dart'; + +/// Concrete strategy for Superuser role +class SuperuserStrategy implements RoleStrategy { + @override + void performRoleAction() { + // Implement actions specific to Superuser role + print("Performing actions as a Superuser"); + } +} \ No newline at end of file diff --git a/lib/roles/trustee_strategy.dart b/lib/roles/trustee_strategy.dart index e69de29bb..a024cb5af 100644 --- a/lib/roles/trustee_strategy.dart +++ b/lib/roles/trustee_strategy.dart @@ -0,0 +1,11 @@ +import 'package:weekplanner/roles/roles.dart'; + + +/// Concrete strategy for Trustee role +class TrusteeStrategy implements RoleStrategy { + @override + void performRoleAction() { + // Implement actions specific to Trustee role + print("Performing actions as a Trustee"); + } +} \ No newline at end of file