diff --git a/.idea/Bowl_in.iml b/.idea/Bowl_in.iml index f1b2d07..01dd66f 100644 --- a/.idea/Bowl_in.iml +++ b/.idea/Bowl_in.iml @@ -10,6 +10,5 @@ - \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/IManager.dart b/Sources/bowlin_project/lib/model/IManager.dart index 00ecb8c..3b1932f 100644 --- a/Sources/bowlin_project/lib/model/IManager.dart +++ b/Sources/bowlin_project/lib/model/IManager.dart @@ -2,10 +2,8 @@ import 'package:bowl_in/model/GameDetail.dart'; import 'package:bowl_in/model/GamePlayer.dart'; import 'User.dart'; -import 'Game.dart'; import 'IUserManager.dart'; import 'IGameManager.dart'; -import 'Game.dart'; abstract class IManager { late User _userCurrent; diff --git a/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart b/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart new file mode 100644 index 0000000..e97923f --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/AuthManager.dart @@ -0,0 +1,16 @@ +import 'package:bowl_in/model/IAuthManager.dart'; +import 'package:bowl_in/model/LocalManager/LocalData.dart'; + +class AuthManager extends IAuthManager { + final LocalData parent; + + // Constructor + AuthManager(this.parent); + + @override + bool verifiedUser(String mail, String password) { + // TODO: implement verifiedUser + throw UnimplementedError(); + } + +} \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart b/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart new file mode 100644 index 0000000..b93f3a0 --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/GameManager.dart @@ -0,0 +1,59 @@ +import 'package:bowl_in/model/GameDetail.dart'; +import 'package:bowl_in/model/IGameManager.dart'; +import 'package:bowl_in/model/LocalManager/LocalData.dart'; +import 'package:bowl_in/model/Player.dart'; + +class GameManager extends IGameManager { + final LocalData parent; + + // Constructor + GameManager(this.parent); + + @override + addGame(GameDetail gd) { + // TODO: implement addGame + throw UnimplementedError(); + } + + @override + GameDetail getGameById(int id) { + // TODO: implement getGameById + throw UnimplementedError(); + } + + @override + List getGamesByPlayer(Player user) { + // TODO: implement getGamesByPlayer + throw UnimplementedError(); + } + + @override + List getGamesByPlayerId(int id) { + // TODO: implement getGamesByPlayerId + throw UnimplementedError(); + } + + @override + List getGamesByPlayers(List users) { + // TODO: implement getGamesByPlayers + throw UnimplementedError(); + } + + @override + int getNextId() { + // TODO: implement getNextId + throw UnimplementedError(); + } + + @override + List getPlayersByIdGame(int id) { + // TODO: implement getPlayersByIdGame + throw UnimplementedError(); + } + + @override + Map getRankByIdGame(int id) { + // TODO: implement getRankByIdGame + throw UnimplementedError(); + } +} \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart new file mode 100644 index 0000000..ebef5aa --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart @@ -0,0 +1,19 @@ +import 'package:bowl_in/model/IManager.dart'; +import 'package:localstorage/localstorage.dart'; + +import '../IGameManager.dart'; +import '../IUserManager.dart'; +import 'GameManager.dart'; +import 'UserManager.dart'; + +class LocalData extends IManager{ + late IUserManager _userMgr; + late IGameManager _gameMgr; + + final LocalStorage storage = LocalStorage('local_key'); + + LocalData() { + _userMgr = UserManager(this); + _gameMgr = GameManager(this); + } +} \ No newline at end of file diff --git a/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart b/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart new file mode 100644 index 0000000..b025fc7 --- /dev/null +++ b/Sources/bowlin_project/lib/model/LocalManager/UserManager.dart @@ -0,0 +1,78 @@ +import 'dart:convert'; + +import 'package:bowl_in/model/IUserManager.dart'; +import 'package:bowl_in/model/LocalManager/LocalData.dart'; +import 'package:bowl_in/model/Player.dart'; +import 'package:bowl_in/model/User.dart'; + +import '../Stat.dart'; +import 'AuthManager.dart'; + +class UserManager extends IUserManager { + final LocalData parent; + + // Constructor + UserManager(this.parent) : super(AuthManager(parent)) { + _initUser(); + } + + _initUser() { + String userJson = parent.storage.getItem('user'); + + if (userJson != null) { + Map userMap = json.decode(userJson); + User user = User( + userMap['_id'], + userMap['name'], + userMap['image'], + userMap['_mail'], + [], + [], + new Stat(0, 0, 0, 0, 0, 0, 2.0, 3.0), + ); + parent.userCurrent = user; + } else { + parent.userCurrent = new User( + 1, + "Unknown", + "./assets/images/image_user_cyan.png", + "david.d_almeida@etu.uca.fr", + [], + [], + Stat(0, 0, 0, 0, 0, 0, 0, 0)); + } + } + + saveUser(User user) { + String userJson = json.encode(userToMap(user)); + + parent.storage.setItem('user', userJson); + } + + Map userToMap(User user) { + return { + '_id': user.id, + 'name': user.name, + 'image': user.image, + '_mail': user.mail, + }; + } + + @override + List getRankingWithFriends() { + // TODO: implement getRankingWithFriends + throw UnimplementedError(); + } + + @override + Player getUserById(int id) { + // TODO: implement getUserById + throw UnimplementedError(); + } + + @override + List getUsersByName(String name) { + // TODO: implement getUsersByName + throw UnimplementedError(); + } +} diff --git a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart index fc93912..bb63f3f 100644 --- a/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart +++ b/Sources/bowlin_project/lib/model/StubManager/AuthManager.dart @@ -1,4 +1,5 @@ library StubLib; + import '../IAuthManager.dart'; import '../User.dart'; import 'StubData.dart'; @@ -8,6 +9,7 @@ class AuthManager extends IAuthManager { // Constructor AuthManager(this.parent); + // Methods bool verifiedUser(String mail, String password) { for (var user in parent.players) { @@ -18,4 +20,4 @@ class AuthManager extends IAuthManager { } return false; } -} \ No newline at end of file +} diff --git a/Sources/bowlin_project/lib/model/StubManager/StubData.dart b/Sources/bowlin_project/lib/model/StubManager/StubData.dart index 001b928..81afb95 100644 --- a/Sources/bowlin_project/lib/model/StubManager/StubData.dart +++ b/Sources/bowlin_project/lib/model/StubManager/StubData.dart @@ -51,15 +51,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)), + Stat(0, 0, 0, 0, 0, 0, 0, 0)), User( 9, "Dave", @@ -82,15 +74,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)), + Stat(0, 0, 0, 0, 0, 0, 0, 0)), User( 22, "Louison", @@ -102,15 +86,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 150, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 150, 7, 6, 700, 58.33, 30.2)), User( 23, "Owen", @@ -122,15 +98,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 10, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 10, 7, 6, 700, 58.33, 30.2)), User( 24, "LULU", @@ -142,15 +110,7 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 40, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 40, 7, 6, 700, 58.33, 30.2)), User( 25, "Raphael", @@ -162,25 +122,9 @@ class StubData extends IManager { Achievement("Win a game") ], [], - Stat( - 10, - 12, - 76, - 7, - 6, - 700, - 58.33, - 30.2)), + Stat(10, 12, 76, 7, 6, 700, 58.33, 30.2)), ], - Stat( - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0)) + Stat(0, 0, 0, 0, 0, 0, 0, 0)) ]; List _gameDetails = []; diff --git a/Sources/bowlin_project/pubspec.lock b/Sources/bowlin_project/pubspec.lock index ee6d354..27cb5bf 100644 --- a/Sources/bowlin_project/pubspec.lock +++ b/Sources/bowlin_project/pubspec.lock @@ -224,6 +224,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + localstorage: + dependency: "direct main" + description: + name: localstorage + sha256: "1b5304491c85250b90807e0e2b3a6217d2739caea4871b820d42782572f880f4" + url: "https://pub.dev" + source: hosted + version: "4.0.1+2" logging: dependency: transitive description: diff --git a/Sources/bowlin_project/pubspec.yaml b/Sources/bowlin_project/pubspec.yaml index d4df740..45ba99c 100644 --- a/Sources/bowlin_project/pubspec.yaml +++ b/Sources/bowlin_project/pubspec.yaml @@ -40,6 +40,7 @@ dependencies: google_fonts: ^3.0.1 go_router: ^6.0.1 uuid: ^3.0.7 + localstorage: ^4.0.0+1 intl: ^0.18.0