From 654104cbed3c21a49622f962df19170756c5252d Mon Sep 17 00:00:00 2001 From: ssbg04 Date: Sun, 17 May 2026 00:12:57 +0800 Subject: [PATCH] first commit --- .gitignore | 6 + README.md | 1 + backend/.example.env | 6 + .../Garcia_Cris Charles_108297100170/meow.txt | 0 backend/data/tis_rms.db | Bin 0 -> 86016 bytes backend/index.js | 52 + backend/package-lock.json | 1631 +++++++++++++++++ backend/package.json | 25 + backend/src/config/db.js | 16 + backend/src/controllers/archiveController.js | 134 ++ backend/src/controllers/authController.js | 181 ++ .../src/controllers/dashboardController.js | 37 + backend/src/controllers/documentController.js | 330 ++++ backend/src/controllers/folderController.js | 347 ++++ backend/src/controllers/gradeController.js | 82 + backend/src/controllers/reportsController.js | 145 ++ .../src/controllers/requirementController.js | 358 ++++ backend/src/controllers/setupController.js | 40 + backend/src/controllers/studentController.js | 304 +++ backend/src/controllers/userController.js | 135 ++ backend/src/middleware/auth.js | 26 + backend/src/models/schema.js | 235 +++ backend/src/routes/archives.js | 13 + backend/src/routes/auth.js | 16 + backend/src/routes/dashboard.js | 9 + backend/src/routes/documents.js | 20 + backend/src/routes/folders.js | 16 + backend/src/routes/grades.js | 11 + backend/src/routes/reports.js | 12 + backend/src/routes/requirements.js | 18 + backend/src/routes/setup.js | 11 + backend/src/routes/students.js | 15 + backend/src/routes/users.js | 13 + backend/src/services/retentionEngine.js | 41 + frontend/.gitignore | 45 + frontend/.metadata | 33 + frontend/README.md | 17 + frontend/analysis_options.yaml | 28 + frontend/android/.gitignore | 14 + frontend/android/app/build.gradle.kts | 44 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 49 + .../kotlin/com/teamsb/tis_rms/MainActivity.kt | 5 + .../res/drawable-hdpi/android12splash.png | Bin 0 -> 34337 bytes .../app/src/main/res/drawable-hdpi/splash.png | Bin 0 -> 34337 bytes .../res/drawable-mdpi/android12splash.png | Bin 0 -> 16636 bytes .../app/src/main/res/drawable-mdpi/splash.png | Bin 0 -> 16636 bytes .../drawable-night-hdpi/android12splash.png | Bin 0 -> 34337 bytes .../drawable-night-mdpi/android12splash.png | Bin 0 -> 16636 bytes .../drawable-night-xhdpi/android12splash.png | Bin 0 -> 58620 bytes .../drawable-night-xxhdpi/android12splash.png | Bin 0 -> 119905 bytes .../android12splash.png | Bin 0 -> 200895 bytes .../src/main/res/drawable-v21/background.png | Bin 0 -> 69 bytes .../res/drawable-v21/launch_background.xml | 9 + .../res/drawable-xhdpi/android12splash.png | Bin 0 -> 58620 bytes .../src/main/res/drawable-xhdpi/splash.png | Bin 0 -> 58620 bytes .../res/drawable-xxhdpi/android12splash.png | Bin 0 -> 119905 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 119905 bytes .../res/drawable-xxxhdpi/android12splash.png | Bin 0 -> 200895 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 200895 bytes .../app/src/main/res/drawable/background.png | Bin 0 -> 69 bytes .../main/res/drawable/launch_background.xml | 9 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 10741 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 5379 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 18143 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 38137 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 64310 bytes .../src/main/res/values-night-v31/styles.xml | 22 + .../app/src/main/res/values-night/styles.xml | 22 + .../app/src/main/res/values-v31/styles.xml | 22 + .../app/src/main/res/values/styles.xml | 22 + .../app/src/profile/AndroidManifest.xml | 7 + frontend/android/build.gradle.kts | 24 + frontend/android/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 5 + frontend/android/settings.gradle.kts | 26 + frontend/lib/core/constants/app_colors.dart | 26 + frontend/lib/core/constants/app_sizes.dart | 20 + frontend/lib/core/network/api_constants.dart | 7 + frontend/lib/core/theme/app_theme.dart | 154 ++ .../lib/domain/entities/archive_model.dart | 31 + .../lib/domain/entities/dashboard_models.dart | 48 + .../lib/domain/entities/document_model.dart | 61 + .../entities/document_requirement_model.dart | 83 + .../lib/domain/entities/folder_model.dart | 126 ++ .../lib/domain/entities/report_models.dart | 154 ++ .../lib/domain/entities/student_model.dart | 161 ++ frontend/lib/domain/entities/system_user.dart | 52 + frontend/lib/domain/entities/user_model.dart | 54 + .../repositories/archive_repository.dart | 88 + .../domain/repositories/auth_repository.dart | 173 ++ .../repositories/dashboard_repository.dart | 44 + .../repositories/document_repository.dart | 435 +++++ .../repositories/report_repository.dart | 71 + .../repositories/student_repository.dart | 171 ++ .../domain/repositories/user_repository.dart | 101 + frontend/lib/main.dart | 34 + .../ui/layouts/android_bottom_nav_layout.dart | 203 ++ .../lib/ui/layouts/responsive_layout.dart | 25 + .../ui/layouts/windows_sidebar_layout.dart | 183 ++ .../lib/ui/providers/archives_provider.dart | 93 + frontend/lib/ui/providers/auth_provider.dart | 62 + .../lib/ui/providers/dashboard_provider.dart | 23 + .../lib/ui/providers/document_provider.dart | 424 +++++ .../lib/ui/providers/reports_provider.dart | 42 + .../lib/ui/providers/student_provider.dart | 233 +++ frontend/lib/ui/providers/users_provider.dart | 82 + .../ui/screens/archives/archives_screen.dart | 381 ++++ .../screens/dashboard/dashboard_screen.dart | 251 +++ .../screens/documents/documents_screen.dart | 952 ++++++++++ .../documents/widgets/file_folder_card.dart | 287 +++ .../documents/widgets/print_queue_modal.dart | 317 ++++ .../widgets/requirements_settings_modal.dart | 177 ++ .../documents/widgets/upload_ocr_modal.dart | 393 ++++ .../lib/ui/screens/login/login_screen.dart | 366 ++++ .../ui/screens/reports/reports_screen.dart | 589 ++++++ .../requirements_settings_screen.dart | 552 ++++++ .../ui/screens/settings/settings_screen.dart | 343 ++++ .../lib/ui/screens/splash/splash_screen.dart | 80 + .../students/student_detail_screen.dart | 337 ++++ .../ui/screens/students/students_screen.dart | 748 ++++++++ .../widgets/add_edit_student_modal.dart | 460 +++++ .../lib/ui/screens/users/users_screen.dart | 851 +++++++++ .../users/widgets/add_edit_user_modal.dart | 3 + .../lib/ui/shared/buttons/primary_button.dart | 50 + frontend/lib/ui/shared/cards/stat_card.dart | 85 + .../ui/shared/inputs/custom_text_field.dart | 58 + frontend/pubspec.lock | 946 ++++++++++ frontend/pubspec.yaml | 118 ++ frontend/test/widget_test.dart | 23 + frontend/windows/.gitignore | 17 + frontend/windows/CMakeLists.txt | 108 ++ frontend/windows/flutter/CMakeLists.txt | 109 ++ .../flutter/generated_plugin_registrant.cc | 17 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 26 + frontend/windows/runner/CMakeLists.txt | 40 + frontend/windows/runner/Runner.rc | 121 ++ frontend/windows/runner/flutter_window.cpp | 71 + frontend/windows/runner/flutter_window.h | 33 + frontend/windows/runner/main.cpp | 43 + frontend/windows/runner/resource.h | 16 + .../windows/runner/resources/app_icon.ico | Bin 0 -> 107375 bytes frontend/windows/runner/runner.exe.manifest | 14 + frontend/windows/runner/utils.cpp | 65 + frontend/windows/runner/utils.h | 19 + frontend/windows/runner/win32_window.cpp | 288 +++ frontend/windows/runner/win32_window.h | 102 ++ 148 files changed, 17633 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 backend/.example.env create mode 100644 backend/data/students/Garcia_Cris Charles_108297100170/meow.txt create mode 100644 backend/data/tis_rms.db create mode 100644 backend/index.js create mode 100644 backend/package-lock.json create mode 100644 backend/package.json create mode 100644 backend/src/config/db.js create mode 100644 backend/src/controllers/archiveController.js create mode 100644 backend/src/controllers/authController.js create mode 100644 backend/src/controllers/dashboardController.js create mode 100644 backend/src/controllers/documentController.js create mode 100644 backend/src/controllers/folderController.js create mode 100644 backend/src/controllers/gradeController.js create mode 100644 backend/src/controllers/reportsController.js create mode 100644 backend/src/controllers/requirementController.js create mode 100644 backend/src/controllers/setupController.js create mode 100644 backend/src/controllers/studentController.js create mode 100644 backend/src/controllers/userController.js create mode 100644 backend/src/middleware/auth.js create mode 100644 backend/src/models/schema.js create mode 100644 backend/src/routes/archives.js create mode 100644 backend/src/routes/auth.js create mode 100644 backend/src/routes/dashboard.js create mode 100644 backend/src/routes/documents.js create mode 100644 backend/src/routes/folders.js create mode 100644 backend/src/routes/grades.js create mode 100644 backend/src/routes/reports.js create mode 100644 backend/src/routes/requirements.js create mode 100644 backend/src/routes/setup.js create mode 100644 backend/src/routes/students.js create mode 100644 backend/src/routes/users.js create mode 100644 backend/src/services/retentionEngine.js create mode 100644 frontend/.gitignore create mode 100644 frontend/.metadata create mode 100644 frontend/README.md create mode 100644 frontend/analysis_options.yaml create mode 100644 frontend/android/.gitignore create mode 100644 frontend/android/app/build.gradle.kts create mode 100644 frontend/android/app/src/debug/AndroidManifest.xml create mode 100644 frontend/android/app/src/main/AndroidManifest.xml create mode 100644 frontend/android/app/src/main/kotlin/com/teamsb/tis_rms/MainActivity.kt create mode 100644 frontend/android/app/src/main/res/drawable-hdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-hdpi/splash.png create mode 100644 frontend/android/app/src/main/res/drawable-mdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-mdpi/splash.png create mode 100644 frontend/android/app/src/main/res/drawable-night-hdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-night-mdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-night-xhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-v21/background.png create mode 100644 frontend/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 frontend/android/app/src/main/res/drawable-xhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-xhdpi/splash.png create mode 100644 frontend/android/app/src/main/res/drawable-xxhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-xxhdpi/splash.png create mode 100644 frontend/android/app/src/main/res/drawable-xxxhdpi/android12splash.png create mode 100644 frontend/android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 frontend/android/app/src/main/res/drawable/background.png create mode 100644 frontend/android/app/src/main/res/drawable/launch_background.xml create mode 100644 frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/values-night-v31/styles.xml create mode 100644 frontend/android/app/src/main/res/values-night/styles.xml create mode 100644 frontend/android/app/src/main/res/values-v31/styles.xml create mode 100644 frontend/android/app/src/main/res/values/styles.xml create mode 100644 frontend/android/app/src/profile/AndroidManifest.xml create mode 100644 frontend/android/build.gradle.kts create mode 100644 frontend/android/gradle.properties create mode 100644 frontend/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 frontend/android/settings.gradle.kts create mode 100644 frontend/lib/core/constants/app_colors.dart create mode 100644 frontend/lib/core/constants/app_sizes.dart create mode 100644 frontend/lib/core/network/api_constants.dart create mode 100644 frontend/lib/core/theme/app_theme.dart create mode 100644 frontend/lib/domain/entities/archive_model.dart create mode 100644 frontend/lib/domain/entities/dashboard_models.dart create mode 100644 frontend/lib/domain/entities/document_model.dart create mode 100644 frontend/lib/domain/entities/document_requirement_model.dart create mode 100644 frontend/lib/domain/entities/folder_model.dart create mode 100644 frontend/lib/domain/entities/report_models.dart create mode 100644 frontend/lib/domain/entities/student_model.dart create mode 100644 frontend/lib/domain/entities/system_user.dart create mode 100644 frontend/lib/domain/entities/user_model.dart create mode 100644 frontend/lib/domain/repositories/archive_repository.dart create mode 100644 frontend/lib/domain/repositories/auth_repository.dart create mode 100644 frontend/lib/domain/repositories/dashboard_repository.dart create mode 100644 frontend/lib/domain/repositories/document_repository.dart create mode 100644 frontend/lib/domain/repositories/report_repository.dart create mode 100644 frontend/lib/domain/repositories/student_repository.dart create mode 100644 frontend/lib/domain/repositories/user_repository.dart create mode 100644 frontend/lib/main.dart create mode 100644 frontend/lib/ui/layouts/android_bottom_nav_layout.dart create mode 100644 frontend/lib/ui/layouts/responsive_layout.dart create mode 100644 frontend/lib/ui/layouts/windows_sidebar_layout.dart create mode 100644 frontend/lib/ui/providers/archives_provider.dart create mode 100644 frontend/lib/ui/providers/auth_provider.dart create mode 100644 frontend/lib/ui/providers/dashboard_provider.dart create mode 100644 frontend/lib/ui/providers/document_provider.dart create mode 100644 frontend/lib/ui/providers/reports_provider.dart create mode 100644 frontend/lib/ui/providers/student_provider.dart create mode 100644 frontend/lib/ui/providers/users_provider.dart create mode 100644 frontend/lib/ui/screens/archives/archives_screen.dart create mode 100644 frontend/lib/ui/screens/dashboard/dashboard_screen.dart create mode 100644 frontend/lib/ui/screens/documents/documents_screen.dart create mode 100644 frontend/lib/ui/screens/documents/widgets/file_folder_card.dart create mode 100644 frontend/lib/ui/screens/documents/widgets/print_queue_modal.dart create mode 100644 frontend/lib/ui/screens/documents/widgets/requirements_settings_modal.dart create mode 100644 frontend/lib/ui/screens/documents/widgets/upload_ocr_modal.dart create mode 100644 frontend/lib/ui/screens/login/login_screen.dart create mode 100644 frontend/lib/ui/screens/reports/reports_screen.dart create mode 100644 frontend/lib/ui/screens/settings/requirements_settings_screen.dart create mode 100644 frontend/lib/ui/screens/settings/settings_screen.dart create mode 100644 frontend/lib/ui/screens/splash/splash_screen.dart create mode 100644 frontend/lib/ui/screens/students/student_detail_screen.dart create mode 100644 frontend/lib/ui/screens/students/students_screen.dart create mode 100644 frontend/lib/ui/screens/students/widgets/add_edit_student_modal.dart create mode 100644 frontend/lib/ui/screens/users/users_screen.dart create mode 100644 frontend/lib/ui/screens/users/widgets/add_edit_user_modal.dart create mode 100644 frontend/lib/ui/shared/buttons/primary_button.dart create mode 100644 frontend/lib/ui/shared/cards/stat_card.dart create mode 100644 frontend/lib/ui/shared/inputs/custom_text_field.dart create mode 100644 frontend/pubspec.lock create mode 100644 frontend/pubspec.yaml create mode 100644 frontend/test/widget_test.dart create mode 100644 frontend/windows/.gitignore create mode 100644 frontend/windows/CMakeLists.txt create mode 100644 frontend/windows/flutter/CMakeLists.txt create mode 100644 frontend/windows/flutter/generated_plugin_registrant.cc create mode 100644 frontend/windows/flutter/generated_plugin_registrant.h create mode 100644 frontend/windows/flutter/generated_plugins.cmake create mode 100644 frontend/windows/runner/CMakeLists.txt create mode 100644 frontend/windows/runner/Runner.rc create mode 100644 frontend/windows/runner/flutter_window.cpp create mode 100644 frontend/windows/runner/flutter_window.h create mode 100644 frontend/windows/runner/main.cpp create mode 100644 frontend/windows/runner/resource.h create mode 100644 frontend/windows/runner/resources/app_icon.ico create mode 100644 frontend/windows/runner/runner.exe.manifest create mode 100644 frontend/windows/runner/utils.cpp create mode 100644 frontend/windows/runner/utils.h create mode 100644 frontend/windows/runner/win32_window.cpp create mode 100644 frontend/windows/runner/win32_window.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..64e230d --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.claude +.vscode +assets + +backend/node_modules +requirements \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..99302ed --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +"# TIS_RMS" diff --git a/backend/.example.env b/backend/.example.env new file mode 100644 index 0000000..9cbb5c4 --- /dev/null +++ b/backend/.example.env @@ -0,0 +1,6 @@ +PORT=3000 +JWT_SECRET=tis_rms_super_secret_key_2026 +DB_PATH=./data/tis_rms.db +UPLOAD_PATH=./uploads +# Root folder where auto-created student directories are stored +STUDENT_DIR_ROOT=./data/students diff --git a/backend/data/students/Garcia_Cris Charles_108297100170/meow.txt b/backend/data/students/Garcia_Cris Charles_108297100170/meow.txt new file mode 100644 index 0000000..e69de29 diff --git a/backend/data/tis_rms.db b/backend/data/tis_rms.db new file mode 100644 index 0000000000000000000000000000000000000000..fc6a00248eb2fc5fc888ac11694fa99ac975b99f GIT binary patch literal 86016 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 { + res.json({ message: 'TIS RMS API is running' }); +}); + +app.listen(PORT, () => { + console.log(`Server running on port ${PORT}`); +}); diff --git a/backend/package-lock.json b/backend/package-lock.json new file mode 100644 index 0000000..0cb100a --- /dev/null +++ b/backend/package-lock.json @@ -0,0 +1,1631 @@ +{ + "name": "backend", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "backend", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bcrypt": "^6.0.0", + "better-sqlite3": "^12.9.0", + "cors": "^2.8.6", + "dotenv": "^17.4.2", + "express": "^5.2.1", + "jsonwebtoken": "^9.0.3", + "morgan": "^1.10.1", + "multer": "^2.1.1", + "node-cron": "^4.2.1" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/bcrypt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", + "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/better-sqlite3": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.9.0.tgz", + "integrity": "sha512-wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/morgan": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.1.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/multer/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-abi": { + "version": "3.92.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz", + "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-cron": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.2.1.tgz", + "integrity": "sha512-lgimEHPE/QDgFlywTd8yTR61ptugX3Qer29efeyWw2rv259HtGBNn1vZVmp8lB9uo9wC0t/AT4iGqXxia+CJFg==", + "license": "ISC", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..d17f128 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,25 @@ +{ + "name": "backend", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "dependencies": { + "bcrypt": "^6.0.0", + "better-sqlite3": "^12.9.0", + "cors": "^2.8.6", + "dotenv": "^17.4.2", + "express": "^5.2.1", + "jsonwebtoken": "^9.0.3", + "morgan": "^1.10.1", + "multer": "^2.1.1", + "node-cron": "^4.2.1" + } +} diff --git a/backend/src/config/db.js b/backend/src/config/db.js new file mode 100644 index 0000000..d8e1b58 --- /dev/null +++ b/backend/src/config/db.js @@ -0,0 +1,16 @@ +const Database = require('better-sqlite3'); +const path = require('path'); +const fs = require('fs'); +require('dotenv').config(); + +const dbPath = process.env.DB_PATH || './data/tis_rms.db'; +const dbDir = path.dirname(dbPath); + +if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }); +} + +const db = new Database(dbPath, { verbose: console.log }); +db.pragma('foreign_keys = ON'); + +module.exports = db; diff --git a/backend/src/controllers/archiveController.js b/backend/src/controllers/archiveController.js new file mode 100644 index 0000000..bf1123d --- /dev/null +++ b/backend/src/controllers/archiveController.js @@ -0,0 +1,134 @@ +const db = require('../config/db'); + +exports.getArchivedStudents = (req, res) => { + const { + search = '', + page = 1, + limit = 10, + status = 'All Statuses', + } = req.query; + + const pageNum = Math.max(1, parseInt(page)); + const limitNum = Math.min(100, Math.max(1, parseInt(limit))); + const offset = (pageNum - 1) * limitNum; + + try { + const conditions = []; + const params = []; + + // Base condition: only archived statuses + if (status === 'All Statuses' || !status) { + conditions.push(`s.status IN ('Graduated', 'Transferred Out', 'Dropped')`); + } else { + conditions.push(`s.status = ?`); + params.push(status); + } + + if (search.trim()) { + const like = `%${search.trim()}%`; + conditions.push(`(s.lrn LIKE ? OR s.first_name LIKE ? OR s.last_name LIKE ? OR s.middle_name LIKE ?)`); + params.push(like, like, like, like); + } + + const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''; + + // Count query + const countSql = ` + SELECT COUNT(DISTINCT s.id) as total + FROM students s + ${whereClause} + `; + const total = db.prepare(countSql).get(params).total; + + // Fetch query + const fetchSql = ` + SELECT + s.id, s.lrn, s.first_name, s.middle_name, s.last_name, s.extension, + s.status, s.created_at, + date(s.created_at) as archivedDate, + CASE + WHEN s.status = 'Graduated' THEN date(s.created_at, '+5 years') + WHEN s.status = 'Transferred Out' THEN date(s.created_at, '+5 years') + WHEN s.status = 'Dropped' THEN date(s.created_at, '+3 years') + ELSE date(s.created_at, '+5 years') + END as expiryDate + FROM students s + ${whereClause} + ORDER BY s.last_name ASC, s.first_name ASC + LIMIT ? OFFSET ? + `; + + const students = db.prepare(fetchSql).all([...params, limitNum, offset]); + + const currentDate = new Date().toISOString().split('T')[0]; + + const archives = students.map(student => { + const nameParts = [student.last_name + ',', student.first_name]; + if (student.middle_name) nameParts.push(student.middle_name.charAt(0) + '.'); + if (student.extension) nameParts.push(student.extension); + + const isExpired = student.expiryDate < currentDate; + + return { + id: student.id, + lrn: student.lrn, + name: nameParts.join(' '), + status: student.status, + archivedDate: student.archivedDate, + expiryDate: student.expiryDate, + isExpired: isExpired + }; + }); + + res.json({ + archives, + pagination: { + total, + page: pageNum, + limit: limitNum, + totalPages: Math.ceil(total / limitNum), + }, + }); + } catch (error) { + console.error('getArchivedStudents error:', error); + res.status(500).json({ message: 'Failed to fetch archives', error: error.message }); + } +}; + +exports.restoreArchive = (req, res) => { + const { id } = req.params; + + const existing = db.prepare('SELECT id, status FROM students WHERE id = ?').get(id); + if (!existing) return res.status(404).json({ message: 'Student not found.' }); + + try { + db.transaction(() => { + // Restore student status to Enrolled + db.prepare("UPDATE students SET status = 'Enrolled' WHERE id = ?").run(id); + + // Restore documents from Archived to Verified (assuming if they had an archive, they were verified, or just set to Verified) + db.prepare("UPDATE documents SET status = 'Verified', retention_date = NULL WHERE student_id = ? AND status = 'Archived'").run(id); + })(); + + res.json({ message: 'Record restored to active successfully' }); + } catch (error) { + console.error('restoreArchive error:', error); + res.status(500).json({ message: 'Failed to restore record', error: error.message }); + } +}; + +exports.purgeArchive = (req, res) => { + const { id } = req.params; + + const existing = db.prepare('SELECT id FROM students WHERE id = ?').get(id); + if (!existing) return res.status(404).json({ message: 'Student not found.' }); + + try { + // Due to CASCADE DELETE on constraints in schema.js, deleting the student will delete their documents, grades, and enrollments + db.prepare('DELETE FROM students WHERE id = ?').run(id); + res.json({ message: 'Record permanently purged successfully' }); + } catch (error) { + console.error('purgeArchive error:', error); + res.status(500).json({ message: 'Failed to purge record', error: error.message }); + } +}; diff --git a/backend/src/controllers/authController.js b/backend/src/controllers/authController.js new file mode 100644 index 0000000..0e63454 --- /dev/null +++ b/backend/src/controllers/authController.js @@ -0,0 +1,181 @@ +const db = require('../config/db'); +const bcrypt = require('bcrypt'); +const jwt = require('jsonwebtoken'); +require('dotenv').config(); + +// POST /api/auth/login +exports.login = (req, res) => { + const { username, password } = req.body; + + try { + const user = db.prepare('SELECT * FROM users WHERE username = ?').get(username); + + if (!user || !bcrypt.compareSync(password, user.password)) { + return res.status(401).json({ message: 'Invalid username or password' }); + } + + const token = jwt.sign( + { id: user.id, username: user.username, role: user.role }, + process.env.JWT_SECRET, + { expiresIn: '30d' } // Extended for Remember Me support + ); + + res.json({ + token, + user: { + id: user.id, + username: user.username, + role: user.role, + firstName: user.first_name, + lastName: user.last_name + } + }); + } catch (error) { + res.status(500).json({ message: 'Login failed', error: error.message }); + } +}; + +// GET /api/auth/profile +exports.getProfile = (req, res) => { + try { + const user = db.prepare('SELECT id, username, first_name, middle_name, last_name, extension, role, email, phone FROM users WHERE id = ?').get(req.user.id); + res.json(user); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch profile', error: error.message }); + } +}; + +// PUT /api/auth/profile +exports.updateProfile = (req, res) => { + const { firstName, middleName, lastName, extension, phone, email } = req.body; + try { + db.prepare(` + UPDATE users + SET first_name = ?, middle_name = ?, last_name = ?, extension = ?, phone = ?, email = ?, updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `).run(firstName, middleName, lastName, extension, phone, email, req.user.id); + res.json({ message: 'Profile updated successfully' }); + } catch (error) { + res.status(500).json({ message: 'Failed to update profile', error: error.message }); + } +}; + +// PUT /api/auth/change-password — requires currentPassword + newPassword +exports.changePassword = (req, res) => { + const { currentPassword, newPassword, confirmPassword } = req.body; + + if (!currentPassword || !newPassword || !confirmPassword) { + return res.status(400).json({ message: 'All password fields are required.' }); + } + if (newPassword !== confirmPassword) { + return res.status(400).json({ message: 'New passwords do not match.' }); + } + if (newPassword.length < 6) { + return res.status(400).json({ message: 'New password must be at least 6 characters.' }); + } + + try { + const user = db.prepare('SELECT password FROM users WHERE id = ?').get(req.user.id); + + if (!bcrypt.compareSync(currentPassword, user.password)) { + return res.status(400).json({ message: 'Current password is incorrect.' }); + } + + const hashedNewPassword = bcrypt.hashSync(newPassword, 10); + db.prepare('UPDATE users SET password = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?') + .run(hashedNewPassword, req.user.id); + + res.json({ message: 'Password changed successfully.' }); + } catch (error) { + res.status(500).json({ message: 'Failed to change password', error: error.message }); + } +}; + +// POST /api/auth/forgot-password — admin/teacher submits a reset request +exports.requestPasswordReset = (req, res) => { + const { username, newPassword, confirmPassword } = req.body; + + if (!username || !newPassword || !confirmPassword) { + return res.status(400).json({ message: 'All fields are required.' }); + } + if (newPassword !== confirmPassword) { + return res.status(400).json({ message: 'Passwords do not match.' }); + } + if (newPassword.length < 6) { + return res.status(400).json({ message: 'Password must be at least 6 characters.' }); + } + + try { + const user = db.prepare('SELECT id, role FROM users WHERE username = ?').get(username); + if (!user) { + return res.status(404).json({ message: 'Username not found.' }); + } + if (user.role === 'super_admin') { + return res.status(403).json({ message: 'Super Admin cannot submit password reset requests.' }); + } + + // Cancel any existing pending request for this user + db.prepare("DELETE FROM password_reset_requests WHERE user_id = ? AND status = 'pending'").run(user.id); + + const hashedPassword = bcrypt.hashSync(newPassword, 10); + db.prepare(` + INSERT INTO password_reset_requests (user_id, new_password_hash) + VALUES (?, ?) + `).run(user.id, hashedPassword); + + res.json({ message: 'Password reset request submitted. Awaiting Super Admin approval.' }); + } catch (error) { + res.status(500).json({ message: 'Failed to submit request', error: error.message }); + } +}; + +// GET /api/auth/reset-requests — super admin views pending requests +exports.getResetRequests = (req, res) => { + try { + const requests = db.prepare(` + SELECT r.id, r.status, r.requested_at, + u.id as user_id, u.username, u.first_name, u.last_name, u.role + FROM password_reset_requests r + JOIN users u ON r.user_id = u.id + WHERE r.status = 'pending' + ORDER BY r.requested_at ASC + `).all(); + res.json(requests); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch requests', error: error.message }); + } +}; + +// PUT /api/auth/reset-requests/:id/approve — super admin approves +exports.approveResetRequest = (req, res) => { + const { id } = req.params; + try { + const request = db.prepare("SELECT * FROM password_reset_requests WHERE id = ? AND status = 'pending'").get(id); + if (!request) return res.status(404).json({ message: 'Request not found or already reviewed.' }); + + db.prepare('UPDATE users SET password = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?') + .run(request.new_password_hash, request.user_id); + db.prepare(`UPDATE password_reset_requests SET status = 'approved', reviewed_at = CURRENT_TIMESTAMP, reviewed_by = ? WHERE id = ?`) + .run(req.user.id, id); + + res.json({ message: 'Password reset approved and applied.' }); + } catch (error) { + res.status(500).json({ message: 'Failed to approve request', error: error.message }); + } +}; + +// PUT /api/auth/reset-requests/:id/reject — super admin rejects +exports.rejectResetRequest = (req, res) => { + const { id } = req.params; + try { + const request = db.prepare("SELECT * FROM password_reset_requests WHERE id = ? AND status = 'pending'").get(id); + if (!request) return res.status(404).json({ message: 'Request not found or already reviewed.' }); + + db.prepare(`UPDATE password_reset_requests SET status = 'rejected', reviewed_at = CURRENT_TIMESTAMP, reviewed_by = ? WHERE id = ?`) + .run(req.user.id, id); + + res.json({ message: 'Password reset request rejected.' }); + } catch (error) { + res.status(500).json({ message: 'Failed to reject request', error: error.message }); + } +}; diff --git a/backend/src/controllers/dashboardController.js b/backend/src/controllers/dashboardController.js new file mode 100644 index 0000000..8e2d6de --- /dev/null +++ b/backend/src/controllers/dashboardController.js @@ -0,0 +1,37 @@ +const db = require('../config/db'); + +exports.getStats = (req, res) => { + try { + const totalStudents = db.prepare('SELECT COUNT(*) as count FROM students').get().count; + const printQueueCount = db.prepare('SELECT COUNT(*) as count FROM print_queue').get().count; + const pendingVerifications = db.prepare("SELECT COUNT(*) as count FROM documents WHERE status = 'Pending'").get().count; + const activeUsers = db.prepare('SELECT COUNT(*) as count FROM users').get().count; + + res.json({ + totalStudents, + printQueueCount, + pendingVerifications, + activeUsers + }); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch stats', error: error.message }); + } +}; + +exports.getPendingTasks = (req, res) => { + try { + // Pending tasks are documents that need verification + const pendingDocs = db.prepare(` + SELECT d.id, d.file_name, d.created_at, s.first_name, s.last_name + FROM documents d + JOIN students s ON d.student_id = s.id + WHERE d.status = 'Pending' + ORDER BY d.created_at DESC + LIMIT 10 + `).all(); + + res.json(pendingDocs); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch pending tasks', error: error.message }); + } +}; diff --git a/backend/src/controllers/documentController.js b/backend/src/controllers/documentController.js new file mode 100644 index 0000000..be84e18 --- /dev/null +++ b/backend/src/controllers/documentController.js @@ -0,0 +1,330 @@ +const db = require('../config/db'); +const multer = require('multer'); +const path = require('path'); +const fs = require('fs'); + +const STUDENT_DIR_ROOT = process.env.STUDENT_DIR_ROOT + ? path.resolve(process.env.STUDENT_DIR_ROOT) + : path.resolve(__dirname, '../../../data/students'); + +const sanitizeFolderName = (str) => + (str || '').replace(/[<>:"/\\|?*\x00-\x1F]/g, '').trim(); + +// Configure Multer +const storage = multer.diskStorage({ + destination: (req, file, cb) => { + // We expect studentId in req.body + const { studentId, documentType } = req.body; + + let uploadPath = process.env.UPLOAD_PATH ? path.resolve(process.env.UPLOAD_PATH) : path.resolve(__dirname, '../../../data/uploads'); + + if (studentId) { + try { + const student = db.prepare('SELECT lrn, first_name, last_name FROM students WHERE id = ?').get(studentId); + if (student) { + const folderName = `${sanitizeFolderName(student.last_name)}_${sanitizeFolderName(student.first_name)}_${student.lrn}`; + uploadPath = path.join(STUDENT_DIR_ROOT, folderName); + + if (documentType) { + uploadPath = path.join(uploadPath, sanitizeFolderName(documentType)); + } + } + } catch (err) { + console.error('Error fetching student for upload path:', err); + } + } + + if (!fs.existsSync(uploadPath)) { + fs.mkdirSync(uploadPath, { recursive: true }); + } + cb(null, uploadPath); + }, + filename: (req, file, cb) => { + cb(null, `${Date.now()}-${file.originalname.replace(/[^a-zA-Z0-9.-]/g, '_')}`); + } +}); + +const upload = multer({ + storage, + limits: { fileSize: 10 * 1024 * 1024 }, // 10MB limit + fileFilter: (req, file, cb) => { + // Only allow certain file types + const allowedMimeTypes = ['application/pdf', 'image/jpeg', 'image/png', 'image/jpg']; + if (allowedMimeTypes.includes(file.mimetype)) { + cb(null, true); + } else { + cb(new Error('Invalid file format. Only PDF, JPG, and PNG are allowed.'), false); + } + } +}); + +exports.uploadMiddleware = (req, res, next) => { + upload.single('document')(req, res, (err) => { + if (err) { + return res.status(400).json({ message: err.message }); + } + next(); + }); +}; + +exports.uploadDocument = (req, res) => { + const { studentId, requirementId, documentType } = req.body; + const file = req.file; + + if (!file) return res.status(400).json({ message: 'No file uploaded' }); + if (!studentId) return res.status(400).json({ message: 'Student ID is required' }); + if (!documentType) return res.status(400).json({ message: 'Document Type is required' }); + + try { + const reqId = requirementId && requirementId !== 'null' ? requirementId : null; + + const result = db.prepare(` + INSERT INTO documents (student_id, requirement_id, file_name, file_path, document_type, status, uploaded_by) + VALUES (?, ?, ?, ?, ?, 'Pending', ?) + `).run(studentId, reqId, file.originalname, file.path, documentType, req.user.id); + + res.status(201).json({ id: result.lastInsertRowid, message: 'Document uploaded successfully' }); + } catch (error) { + console.error('Upload Error:', error); + res.status(500).json({ message: 'Failed to upload document', error: error.message }); + } +}; + +exports.getAllDocuments = (req, res) => { + const { + search = '', + page = 1, + limit = 20, + status = '', + documentType = '', + gradeLevel = '', + schoolYear = '' + } = req.query; + + const pageNum = Math.max(1, parseInt(page)); + const limitNum = Math.min(100, Math.max(1, parseInt(limit))); + const offset = (pageNum - 1) * limitNum; + + try { + const conditions = []; + const params = []; + + if (search.trim()) { + const like = `%${search.trim()}%`; + conditions.push(`(s.lrn LIKE ? OR s.first_name LIKE ? OR s.last_name LIKE ? OR d.file_name LIKE ?)`); + params.push(like, like, like, like); + } + + if (status.trim() && status !== 'All Statuses') { + conditions.push(`d.status = ?`); + params.push(status.trim()); + } + + if (documentType.trim() && documentType !== 'All Types') { + conditions.push(`d.document_type = ?`); + params.push(documentType.trim()); + } + + if (gradeLevel.trim()) { + conditions.push(`e.grade_level = ?`); + params.push(gradeLevel.trim()); + } + + if (schoolYear.trim()) { + conditions.push(`ay.year_range = ?`); + params.push(schoolYear.trim()); + } + + const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''; + + const joins = ` + LEFT JOIN students s ON d.student_id = s.id + LEFT JOIN enrollments e ON s.id = e.student_id + LEFT JOIN academic_years ay ON e.academic_year_id = ay.id + `; + + const countSql = ` + SELECT COUNT(DISTINCT d.id) as total + FROM documents d + ${joins} + ${whereClause} + `; + const total = db.prepare(countSql).get(params).total; + + const fetchSql = ` + SELECT DISTINCT + d.id, d.student_id, d.file_name, d.document_type, d.status, d.created_at, d.file_path, + s.lrn as student_lrn, + s.first_name || ' ' || s.last_name as student_name + FROM documents d + ${joins} + ${whereClause} + ORDER BY d.created_at DESC + LIMIT ? OFFSET ? + `; + + const documents = db.prepare(fetchSql).all([...params, limitNum, offset]); + + const mappedDocs = documents.map(d => ({ + id: d.id, + studentId: d.student_id, + fileName: d.file_name, + documentType: d.document_type, + status: d.status, + createdAt: d.created_at, + studentLrn: d.student_lrn, + studentName: d.student_name, + size: 'Unknown', // Not storing size in DB right now + filePath: d.file_path + })); + + res.json({ + documents: mappedDocs, + pagination: { + total, + page: pageNum, + limit: limitNum, + totalPages: Math.ceil(total / limitNum) + } + }); + + } catch (error) { + console.error('getAllDocuments error:', error); + res.status(500).json({ message: 'Failed to fetch documents', error: error.message }); + } +}; + +exports.getRequirements = (req, res) => { + try { + const requirements = db.prepare('SELECT * FROM document_requirements ORDER BY name ASC').all(); + res.json(requirements); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch document requirements', error: error.message }); + } +}; + +exports.getDocumentsByStudent = (req, res) => { + try { + const documents = db.prepare(` + SELECT d.*, dr.name as requirement_name + FROM documents d + LEFT JOIN document_requirements dr ON d.requirement_id = dr.id + WHERE d.student_id = ? + `).all(req.params.studentId); + res.json(documents); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch documents', error: error.message }); + } +}; + +exports.updateStatus = (req, res) => { + const { status } = req.body; + if (!['Pending', 'Verified', 'Draft', 'Archived', 'Rejected'].includes(status)) { + return res.status(400).json({ message: 'Invalid status' }); + } + try { + db.prepare('UPDATE documents SET status = ? WHERE id = ?').run(status, req.params.id); + res.json({ message: 'Document status updated' }); + } catch (error) { + res.status(500).json({ message: 'Failed to update status', error: error.message }); + } +}; + +exports.deleteDocument = (req, res) => { + try { + const document = db.prepare('SELECT file_path FROM documents WHERE id = ?').get(req.params.id); + if (!document) return res.status(404).json({ message: 'Document not found' }); + + // Delete file from disk + if (fs.existsSync(document.file_path)) { + fs.unlinkSync(document.file_path); + } + + db.prepare('DELETE FROM documents WHERE id = ?').run(req.params.id); + res.json({ message: 'Document deleted successfully' }); + } catch (error) { + res.status(500).json({ message: 'Failed to delete document', error: error.message }); + } +}; + +// ============================================================ +// GET /api/documents/print-queue — get print queue for user +// ============================================================ +exports.getPrintQueue = (req, res) => { + try { + const userId = req.user.id; + const queue = db.prepare(` + SELECT pq.id as queue_id, pq.document_id, pq.added_at, + d.file_name, d.file_path, d.document_type, d.status, + s.first_name || ' ' || s.last_name as student_name, + s.lrn as student_lrn + FROM print_queue pq + JOIN documents d ON pq.document_id = d.id + LEFT JOIN students s ON d.student_id = s.id + WHERE pq.user_id = ? + ORDER BY pq.added_at DESC + `).all(userId); + res.json(queue); + } catch (error) { + console.error('getPrintQueue error:', error); + res.status(500).json({ message: 'Failed to fetch print queue', error: error.message }); + } +}; + +// ============================================================ +// POST /api/documents/print-queue — add document to print queue +// ============================================================ +exports.addToPrintQueue = (req, res) => { + const { documentId } = req.body; + const userId = req.user.id; + + if (!documentId) return res.status(400).json({ message: 'Document ID is required' }); + + try { + const document = db.prepare('SELECT id FROM documents WHERE id = ?').get(documentId); + if (!document) return res.status(404).json({ message: 'Document not found' }); + + // Check if already in queue for this user + const existing = db.prepare('SELECT id FROM print_queue WHERE document_id = ? AND user_id = ?').get(documentId, userId); + if (existing) { + return res.status(409).json({ message: 'Document already in print queue' }); + } + + const result = db.prepare('INSERT INTO print_queue (document_id, user_id) VALUES (?, ?)').run(documentId, userId); + res.status(201).json({ id: result.lastInsertRowid, message: 'Added to print queue' }); + } catch (error) { + console.error('addToPrintQueue error:', error); + res.status(500).json({ message: 'Failed to add to print queue', error: error.message }); + } +}; + +// ============================================================ +// DELETE /api/documents/print-queue/:queueId — remove from print queue +// ============================================================ +exports.removeFromPrintQueue = (req, res) => { + const { queueId } = req.params; + const userId = req.user.id; + try { + const item = db.prepare('SELECT id FROM print_queue WHERE id = ? AND user_id = ?').get(queueId, userId); + if (!item) return res.status(404).json({ message: 'Queue item not found' }); + db.prepare('DELETE FROM print_queue WHERE id = ?').run(queueId); + res.json({ message: 'Removed from print queue' }); + } catch (error) { + console.error('removeFromPrintQueue error:', error); + res.status(500).json({ message: 'Failed to remove from print queue', error: error.message }); + } +}; + +// ============================================================ +// DELETE /api/documents/print-queue — clear all from user's queue +// ============================================================ +exports.clearPrintQueue = (req, res) => { + const userId = req.user.id; + try { + db.prepare('DELETE FROM print_queue WHERE user_id = ?').run(userId); + res.json({ message: 'Print queue cleared' }); + } catch (error) { + console.error('clearPrintQueue error:', error); + res.status(500).json({ message: 'Failed to clear print queue', error: error.message }); + } +}; diff --git a/backend/src/controllers/folderController.js b/backend/src/controllers/folderController.js new file mode 100644 index 0000000..d278aba --- /dev/null +++ b/backend/src/controllers/folderController.js @@ -0,0 +1,347 @@ +const db = require('../config/db'); +const path = require('path'); +const fs = require('fs'); + +// Configurable student directory root +const STUDENT_DIR_ROOT = process.env.STUDENT_DIR_ROOT + ? path.resolve(process.env.STUDENT_DIR_ROOT) + : path.resolve(__dirname, '../../../data/students'); + +const sanitizeFolderName = (str) => + (str || '').replace(/[<>:"/\\|?*\x00-\x1F]/g, '').trim(); + +// ============================================================ +// GET /api/folders — list folders (manual + auto-created) +// ============================================================ +exports.getFolders = (req, res) => { + const { studentId, parentId, search = '' } = req.query; + + try { + const conditions = []; + const params = []; + + if (studentId) { + conditions.push('student_id = ?'); + params.push(studentId); + } + + if (parentId !== undefined) { + if (parentId === 'null' || parentId === '') { + conditions.push('parent_id IS NULL'); + } else { + conditions.push('parent_id = ?'); + params.push(parseInt(parentId)); + } + } + + if (search.trim()) { + conditions.push('name LIKE ?'); + params.push(`%${search.trim()}%`); + } + + const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''; + + const sql = ` + SELECT f.*, + s.lrn, s.first_name, s.last_name, + u.username as created_by_username, + (SELECT COUNT(*) FROM documents d WHERE d.student_id = f.student_id) as document_count + FROM document_folders f + LEFT JOIN students s ON f.student_id = s.id + LEFT JOIN users u ON f.created_by = u.id + ${whereClause} + ORDER BY f.name ASC + `; + + const folders = db.prepare(sql).all(params); + res.json(folders); + } catch (error) { + console.error('getFolders error:', error); + res.status(500).json({ message: 'Failed to fetch folders', error: error.message }); + } +}; + +// ============================================================ +// POST /api/folders — create manual folder +// ============================================================ +exports.createFolder = (req, res) => { + const { name, parentId, studentId, category } = req.body; + const userId = req.user.id; + + if (!name || !name.trim()) { + return res.status(400).json({ message: 'Folder name is required' }); + } + + // Validate: either studentId or parentId must be provided + if (!studentId && !parentId) { + return res.status(400).json({ message: 'Either student_id or parent_id is required' }); + } + + // Check for duplicate folder name in same scope + let duplicateCheckSql = ''; + let duplicateParams = []; + + if (studentId) { + duplicateCheckSql = 'SELECT id FROM document_folders WHERE name = ? AND student_id = ? AND parent_id IS NULL'; + duplicateParams = [name.trim(), studentId]; + } else if (parentId) { + duplicateCheckSql = 'SELECT id FROM document_folders WHERE name = ? AND parent_id = ?'; + duplicateParams = [name.trim(), parentId]; + } + + const existing = db.prepare(duplicateCheckSql).get(...duplicateParams); + if (existing) { + return res.status(409).json({ message: 'A folder with this name already exists in this location' }); + } + + try { + // Create in database + const result = db.prepare(` + INSERT INTO document_folders (name, parent_id, student_id, category, created_by) + VALUES (?, ?, ?, ?, ?) + `).run( + name.trim(), + parentId ? parseInt(parentId) : null, + studentId ? parseInt(studentId) : null, + category || null, + userId + ); + + // Optionally create physical folder if it relates to a student + if (studentId) { + const student = db.prepare('SELECT lrn, first_name, last_name FROM students WHERE id = ?').get(studentId); + if (student) { + const folderName = `${sanitizeFolderName(student.last_name)}_${sanitizeFolderName(student.first_name)}_${student.lrn}`; + const basePath = path.join(STUDENT_DIR_ROOT, folderName); + + // Create category subfolder if category provided + let folderPath = basePath; + if (category) { + folderPath = path.join(basePath, sanitizeFolderName(category)); + } + + // Create parent path first + if (!fs.existsSync(basePath)) { + fs.mkdirSync(basePath, { recursive: true }); + } + + if (!fs.existsSync(folderPath)) { + fs.mkdirSync(folderPath, { recursive: true }); + } + } + } + + res.status(201).json({ + id: result.lastInsertRowid, + message: 'Folder created successfully' + }); + } catch (error) { + console.error('createFolder error:', error); + res.status(500).json({ message: 'Failed to create folder', error: error.message }); + } +}; + +// ============================================================ +// PUT /api/folders/:id — rename folder +// ============================================================ +exports.renameFolder = (req, res) => { + const { id } = req.params; + const { name } = req.body; + + if (!name || !name.trim()) { + return res.status(400).json({ message: 'New folder name is required' }); + } + + const folder = db.prepare('SELECT * FROM document_folders WHERE id = ?').get(id); + if (!folder) { + return res.status(404).json({ message: 'Folder not found' }); + } + + // Check for duplicate in same scope + let duplicateCheckSql = ''; + let duplicateParams = []; + + if (folder.parent_id) { + duplicateCheckSql = 'SELECT id FROM document_folders WHERE name = ? AND parent_id = ? AND id != ?'; + duplicateParams = [name.trim(), folder.parent_id, id]; + } else if (folder.student_id) { + duplicateCheckSql = 'SELECT id FROM document_folders WHERE name = ? AND student_id = ? AND parent_id IS NULL AND id != ?'; + duplicateParams = [name.trim(), folder.student_id, id]; + } + + if (duplicateCheckSql) { + const existing = db.prepare(duplicateCheckSql).get(...duplicateParams); + if (existing) { + return res.status(409).json({ message: 'A folder with this name already exists in this location' }); + } + } + + try { + db.prepare(` + UPDATE document_folders SET name = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? + `).run(name.trim(), id); + + res.json({ message: 'Folder renamed successfully' }); + } catch (error) { + console.error('renameFolder error:', error); + res.status(500).json({ message: 'Failed to rename folder', error: error.message }); + } +}; + +// ============================================================ +// DELETE /api/folders/:id — delete folder +// ============================================================ +exports.deleteFolder = (req, res) => { + const { id } = req.params; + + const folder = db.prepare('SELECT * FROM document_folders WHERE id = ?').get(id); + if (!folder) { + return res.status(404).json({ message: 'Folder not found' }); + } + + // Check if folder has children + const children = db.prepare('SELECT COUNT(*) as count FROM document_folders WHERE parent_id = ?').get(id); + if (children.count > 0) { + return res.status(400).json({ message: 'Cannot delete folder with subfolders' }); + } + + try { + db.prepare('DELETE FROM document_folders WHERE id = ?').run(id); + res.json({ message: 'Folder deleted successfully' }); + } catch (error) { + console.error('deleteFolder error:', error); + res.status(500).json({ message: 'Failed to delete folder', error: error.message }); + } +}; + +// ============================================================ +// GET /api/folders/student/:studentId — get student document folder +// ============================================================ +exports.getStudentFolder = (req, res) => { + const { studentId } = req.params; + + try { + const student = db.prepare('SELECT * FROM students WHERE id = ?').get(studentId); + if (!student) { + return res.status(404).json({ message: 'Student not found' }); + } + + // Get or create student folder record + let folder = db.prepare(` + SELECT * FROM document_folders + WHERE student_id = ? AND parent_id IS NULL + `).get(studentId); + + if (!folder) { + // Auto-create folder record + const folderName = `${student.last_name}_${student.first_name}_${student.lrn}`; + const result = db.prepare(` + INSERT INTO document_folders (name, student_id, category, created_by) + VALUES (?, ?, 'root', NULL) + `).run(folderName, studentId); + + folder = { + id: result.lastInsertRowid, + name: folderName, + student_id: studentId, + category: 'root' + }; + } + + // Get all subfolders for this student + const subfolders = db.prepare(` + SELECT * FROM document_folders + WHERE student_id = ? AND parent_id IS NOT NULL + ORDER BY name ASC + `).all(studentId); + + // Get physical folder contents + const folderPath = path.join(STUDENT_DIR_ROOT, + `${sanitizeFolderName(student.last_name)}_${sanitizeFolderName(student.first_name)}_${student.lrn}`); + + let physicalFolders = []; + let physicalFiles = []; + + if (fs.existsSync(folderPath)) { + const entries = fs.readdirSync(folderPath, { withFileTypes: true }); + physicalFolders = entries + .filter(e => e.isDirectory()) + .map(e => ({ name: e.name, isDirectory: true })); + physicalFiles = entries + .filter(e => e.isFile()) + .map(e => ({ name: e.name, isDirectory: false })); + } + + res.json({ + ...folder, + student: { + id: student.id, + lrn: student.lrn, + firstName: student.first_name, + lastName: student.last_name + }, + subfolders, + physicalFolders, + physicalFiles, + folderPath + }); + } catch (error) { + console.error('getStudentFolder error:', error); + res.status(500).json({ message: 'Failed to get student folder', error: error.message }); + } +}; + +// ============================================================ +// POST /api/folders/sync — sync DB folders with physical storage +// ============================================================ +exports.syncFolders = (req, res) => { + const { studentId } = req.body; + + try { + const student = db.prepare('SELECT * FROM students WHERE id = ?').get(studentId); + if (!student) { + return res.status(404).json({ message: 'Student not found' }); + } + + const folderPath = path.join(STUDENT_DIR_ROOT, + `${sanitizeFolderName(student.last_name)}_${sanitizeFolderName(student.first_name)}_${student.lrn}`); + + if (!fs.existsSync(folderPath)) { + fs.mkdirSync(folderPath, { recursive: true }); + } + + // Read physical folders + const entries = fs.readdirSync(folderPath, { withFileTypes: true }); + const physicalDirs = entries.filter(e => e.isDirectory()).map(e => e.name); + + // Get existing DB folders for this student + const existingFolders = db.prepare(` + SELECT name FROM document_folders + WHERE student_id = ? AND parent_id IS NOT NULL + `).all(studentId); + const dbFolderNames = new Set(existingFolders.map(f => f.name)); + + // Add missing folders to DB + const newFolders = []; + for (const dirName of physicalDirs) { + if (!dbFolderNames.has(dirName)) { + // Determine category from folder name or use folder name + const category = dirName; + db.prepare(` + INSERT INTO document_folders (name, student_id, category, created_by) + VALUES (?, ?, ?, NULL) + `).run(dirName, studentId, category); + newFolders.push(dirName); + } + } + + res.json({ + message: 'Folders synced successfully', + newFolders, + totalFolders: physicalDirs.length + }); + } catch (error) { + console.error('syncFolders error:', error); + res.status(500).json({ message: 'Failed to sync folders', error: error.message }); + } +}; \ No newline at end of file diff --git a/backend/src/controllers/gradeController.js b/backend/src/controllers/gradeController.js new file mode 100644 index 0000000..918fe2c --- /dev/null +++ b/backend/src/controllers/gradeController.js @@ -0,0 +1,82 @@ +const db = require('../config/db'); + +exports.enrollStudent = (req, res) => { + const { studentId, academicYearId, sectionId, gradeLevel, trackStrand } = req.body; + try { + const result = db.prepare(` + INSERT INTO enrollments (student_id, academic_year_id, section_id, grade_level, track_strand) + VALUES (?, ?, ?, ?, ?) + `).run(studentId, academicYearId, sectionId, gradeLevel, trackStrand); + res.status(201).json({ id: result.lastInsertRowid, message: 'Student enrolled successfully' }); + } catch (error) { + res.status(500).json({ message: 'Enrollment failed', error: error.message }); + } +}; + +exports.getGradesByEnrollment = (req, res) => { + try { + const grades = db.prepare(` + SELECT g.*, s.title, s.code, s.category + FROM grades g + JOIN subjects s ON g.subject_id = s.id + WHERE g.enrollment_id = ? + `).all(req.params.enrollmentId); + res.json(grades); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch grades', error: error.message }); + } +}; + +exports.updateGrades = (req, res) => { + const { enrollmentId, subjectId, q1, q2, q3, q4, sem1, sem2, finalGrade, remarks } = req.body; + try { + const existing = db.prepare('SELECT id FROM grades WHERE enrollment_id = ? AND subject_id = ?').get(enrollmentId, subjectId); + + if (existing) { + db.prepare(` + UPDATE grades + SET q1 = ?, q2 = ?, q3 = ?, q4 = ?, sem1 = ?, sem2 = ?, final_grade = ?, remarks = ? + WHERE id = ? + `).run(q1, q2, q3, q4, sem1, sem2, finalGrade, remarks, existing.id); + } else { + db.prepare(` + INSERT INTO grades (enrollment_id, subject_id, q1, q2, q3, q4, sem1, sem2, final_grade, remarks) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run(enrollmentId, subjectId, q1, q2, q3, q4, sem1, sem2, finalGrade, remarks); + } + res.json({ message: 'Grades updated successfully' }); + } catch (error) { + res.status(500).json({ message: 'Failed to update grades', error: error.message }); + } +}; + +exports.getSF10Data = (req, res) => { + const { studentId } = req.params; + try { + const student = db.prepare('SELECT * FROM students WHERE id = ?').get(studentId); + if (!student) return res.status(404).json({ message: 'Student not found' }); + + const enrollments = db.prepare(` + SELECT e.*, ay.year_range, s.name as section_name + FROM enrollments e + JOIN academic_years ay ON e.academic_year_id = ay.id + JOIN sections s ON e.section_id = s.id + WHERE e.student_id = ? + ORDER BY e.grade_level ASC + `).all(studentId); + + const data = enrollments.map(enrollment => { + const grades = db.prepare(` + SELECT g.*, sub.title, sub.code, sub.category + FROM grades g + JOIN subjects sub ON g.subject_id = sub.id + WHERE g.enrollment_id = ? + `).all(enrollment.id); + return { ...enrollment, grades }; + }); + + res.json({ student, history: data }); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch SF10 data', error: error.message }); + } +}; diff --git a/backend/src/controllers/reportsController.js b/backend/src/controllers/reportsController.js new file mode 100644 index 0000000..13dde68 --- /dev/null +++ b/backend/src/controllers/reportsController.js @@ -0,0 +1,145 @@ +const db = require('../config/db'); + +// GET /api/reports/academic-years +exports.getAcademicYears = (req, res) => { + try { + const years = db.prepare('SELECT * FROM academic_years ORDER BY id DESC').all(); + res.json(years); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch academic years', error: error.message }); + } +}; + +// GET /api/reports/stats?academicYearId=1 +exports.getStats = (req, res) => { + const { academicYearId } = req.query; + try { + let totalStudents; + if (academicYearId) { + totalStudents = db.prepare( + 'SELECT COUNT(DISTINCT student_id) as count FROM enrollments WHERE academic_year_id = ?' + ).get(academicYearId).count; + } else { + totalStudents = db.prepare('SELECT COUNT(*) as count FROM students').get().count; + } + + const pendingDocs = db.prepare("SELECT COUNT(*) as count FROM documents WHERE status = 'Pending'").get().count; + const verifiedDocs = db.prepare("SELECT COUNT(*) as count FROM documents WHERE status = 'Verified'").get().count; + const printQueueCount = db.prepare('SELECT COUNT(*) as count FROM print_queue').get().count; + const totalDocs = pendingDocs + verifiedDocs; + const verificationRate = totalDocs > 0 ? Math.round((verifiedDocs / totalDocs) * 100) : 0; + + res.json({ totalStudents, pendingDocs, verifiedDocs, printQueueCount, verificationRate }); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch report stats', error: error.message }); + } +}; + +// GET /api/reports/enrollment-by-grade?academicYearId=1 +exports.getEnrollmentByGrade = (req, res) => { + const { academicYearId } = req.query; + try { + let rows; + if (academicYearId) { + rows = db.prepare(` + SELECT grade_level, COUNT(*) as count + FROM enrollments + WHERE academic_year_id = ? + GROUP BY grade_level + ORDER BY grade_level ASC + `).all(academicYearId); + } else { + rows = db.prepare(` + SELECT grade_level, COUNT(*) as count + FROM enrollments + GROUP BY grade_level + ORDER BY grade_level ASC + `).all(); + } + res.json(rows); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch enrollment data', error: error.message }); + } +}; + +// GET /api/reports/document-status +exports.getDocumentStatus = (req, res) => { + try { + const rows = db.prepare(` + SELECT status, COUNT(*) as count FROM documents GROUP BY status + `).all(); + const result = { Pending: 0, Verified: 0, Draft: 0, Archived: 0 }; + rows.forEach(r => { result[r.status] = r.count; }); + res.json(result); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch document status', error: error.message }); + } +}; + +// GET /api/reports/export-data?academicYearId=1 — Full data payload for Excel export +exports.getExportData = (req, res) => { + const { academicYearId } = req.query; + try { + // Enrollment summary per grade level + let enrollmentByGrade; + if (academicYearId) { + enrollmentByGrade = db.prepare(` + SELECT e.grade_level, COUNT(DISTINCT e.student_id) as total_students, + ay.year_range + FROM enrollments e + JOIN academic_years ay ON e.academic_year_id = ay.id + WHERE e.academic_year_id = ? + GROUP BY e.grade_level + ORDER BY e.grade_level ASC + `).all(academicYearId); + } else { + enrollmentByGrade = db.prepare(` + SELECT e.grade_level, COUNT(DISTINCT e.student_id) as total_students, + 'All Years' as year_range + FROM enrollments e + GROUP BY e.grade_level + ORDER BY e.grade_level ASC + `).all(); + } + + // Document status breakdown + const docStatusRows = db.prepare(` + SELECT status, COUNT(*) as count FROM documents GROUP BY status + `).all(); + const documentStatus = { Pending: 0, Verified: 0, Draft: 0, Archived: 0 }; + docStatusRows.forEach(r => { documentStatus[r.status] = r.count; }); + + // Student detail list with document compliance + let students; + if (academicYearId) { + students = db.prepare(` + SELECT s.lrn, s.first_name, s.last_name, s.sex, e.grade_level, + COUNT(CASE WHEN d.status = 'Verified' THEN 1 END) as verified_docs, + COUNT(CASE WHEN d.status = 'Pending' THEN 1 END) as pending_docs + FROM students s + JOIN enrollments e ON s.id = e.student_id AND e.academic_year_id = ? + LEFT JOIN documents d ON s.id = d.student_id + GROUP BY s.id + ORDER BY s.last_name ASC + LIMIT 500 + `).all(academicYearId); + } else { + students = db.prepare(` + SELECT s.lrn, s.first_name, s.last_name, s.sex, + MAX(e.grade_level) as grade_level, + COUNT(CASE WHEN d.status = 'Verified' THEN 1 END) as verified_docs, + COUNT(CASE WHEN d.status = 'Pending' THEN 1 END) as pending_docs + FROM students s + LEFT JOIN enrollments e ON s.id = e.student_id + LEFT JOIN documents d ON s.id = d.student_id + GROUP BY s.id + ORDER BY s.last_name ASC + LIMIT 500 + `).all(); + } + + res.json({ enrollmentByGrade, documentStatus, students }); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch export data', error: error.message }); + } +}; diff --git a/backend/src/controllers/requirementController.js b/backend/src/controllers/requirementController.js new file mode 100644 index 0000000..f1f742c --- /dev/null +++ b/backend/src/controllers/requirementController.js @@ -0,0 +1,358 @@ +const db = require('../config/db'); + +// ============================================================ +// GET /api/requirements — get all document requirements +// ============================================================ +exports.getRequirements = (req, res) => { + const { category, isMandatory, isEnabled, search = '' } = req.query; + + try { + const conditions = []; + const params = []; + + if (category) { + conditions.push('category = ?'); + params.push(category); + } + + if (isEnabled !== undefined && isEnabled !== '') { + conditions.push('is_enabled = ?'); + params.push(isEnabled === 'true' ? 1 : 0); + } + + if (isMandatory !== undefined && isMandatory !== '') { + conditions.push('is_mandatory = ?'); + params.push(isMandatory === 'true' ? 1 : 0); + } + + if (search.trim()) { + conditions.push('(name LIKE ? OR description LIKE ?)'); + params.push(`%${search.trim()}%`, `%${search.trim()}%`); + } + + const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''; + + const sql = ` + SELECT * FROM document_requirements + ${whereClause} + ORDER BY category ASC, name ASC + `; + + const requirements = db.prepare(sql).all(params); + res.json(requirements); + } catch (error) { + console.error('getRequirements error:', error); + res.status(500).json({ message: 'Failed to fetch requirements', error: error.message }); + } +}; + +// ============================================================ +// GET /api/requirements/:id — get single requirement +// ============================================================ +exports.getRequirementById = (req, res) => { + try { + const requirement = db.prepare('SELECT * FROM document_requirements WHERE id = ?').get(req.params.id); + if (!requirement) { + return res.status(404).json({ message: 'Requirement not found' }); + } + res.json(requirement); + } catch (error) { + console.error('getRequirementById error:', error); + res.status(500).json({ message: 'Failed to fetch requirement', error: error.message }); + } +}; + +// ============================================================ +// POST /api/requirements — create new requirement (Super Admin) +// ============================================================ +exports.createRequirement = (req, res) => { + const { + name, + description, + category, + isMandatory = true, + isEnabled = true, + dueDate, + acceptedFileTypes = 'pdf,jpg,jpeg,png', + schoolLevels = 'JHS,SHS' + } = req.body; + + // Validation + const errors = []; + if (!name || !name.trim()) errors.push('Name is required'); + if (!category || !['JHS', 'SHS'].includes(category)) errors.push('Category must be JHS or SHS'); + + if (errors.length) { + return res.status(400).json({ message: errors[0], errors }); + } + + // Check duplicate + const existing = db.prepare('SELECT id FROM document_requirements WHERE name = ? AND category = ?') + .get(name.trim(), category); + if (existing) { + return res.status(409).json({ message: 'A requirement with this name already exists for this category' }); + } + + try { + const result = db.prepare(` + INSERT INTO document_requirements ( + name, description, category, is_mandatory, is_enabled, + due_date, accepted_file_types, school_levels + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + `).run( + name.trim(), + description?.trim() || null, + category, + isMandatory ? 1 : 0, + isEnabled ? 1 : 0, + dueDate || null, + acceptedFileTypes, + schoolLevels + ); + + res.status(201).json({ + id: result.lastInsertRowid, + message: 'Requirement created successfully' + }); + } catch (error) { + console.error('createRequirement error:', error); + res.status(500).json({ message: 'Failed to create requirement', error: error.message }); + } +}; + +// ============================================================ +// PUT /api/requirements/:id — update requirement (Super Admin) +// ============================================================ +exports.updateRequirement = (req, res) => { + const { id } = req.params; + const { + name, + description, + category, + isMandatory, + isEnabled, + dueDate, + acceptedFileTypes, + schoolLevels + } = req.body; + + const requirement = db.prepare('SELECT * FROM document_requirements WHERE id = ?').get(id); + if (!requirement) { + return res.status(404).json({ message: 'Requirement not found' }); + } + + // Check duplicate if name or category changed + if ((name && name.trim() !== requirement.name) || (category && category !== requirement.category)) { + const duplicate = db.prepare('SELECT id FROM document_requirements WHERE name = ? AND category = ? AND id != ?') + .get(name?.trim() || requirement.name, category || requirement.category, id); + if (duplicate) { + return res.status(409).json({ message: 'A requirement with this name already exists for this category' }); + } + } + + try { + db.prepare(` + UPDATE document_requirements SET + name = COALESCE(?, name), + description = COALESCE(?, description), + category = COALESCE(?, category), + is_mandatory = COALESCE(?, is_mandatory), + is_enabled = COALESCE(?, is_enabled), + due_date = ?, + accepted_file_types = COALESCE(?, accepted_file_types), + school_levels = COALESCE(?, school_levels), + updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `).run( + name?.trim(), + description?.trim(), + category, + isMandatory !== undefined ? (isMandatory ? 1 : 0) : null, + isEnabled !== undefined ? (isEnabled ? 1 : 0) : null, + dueDate, + acceptedFileTypes, + schoolLevels, + id + ); + + res.json({ message: 'Requirement updated successfully' }); + } catch (error) { + console.error('updateRequirement error:', error); + res.status(500).json({ message: 'Failed to update requirement', error: error.message }); + } +}; + +// ============================================================ +// DELETE /api/requirements/:id — delete requirement (Super Admin) +// ============================================================ +exports.deleteRequirement = (req, res) => { + const { id } = req.params; + + const requirement = db.prepare('SELECT * FROM document_requirements WHERE id = ?').get(id); + if (!requirement) { + return res.status(404).json({ message: 'Requirement not found' }); + } + + // Check if any documents are linked to this requirement + const linkedDocs = db.prepare('SELECT COUNT(*) as count FROM documents WHERE requirement_id = ?').get(id); + if (linkedDocs.count > 0) { + return res.status(400).json({ + message: 'Cannot delete requirement that has documents attached. Please remove linked documents first.' + }); + } + + try { + db.prepare('DELETE FROM document_requirements WHERE id = ?').run(id); + res.json({ message: 'Requirement deleted successfully' }); + } catch (error) { + console.error('deleteRequirement error:', error); + res.status(500).json({ message: 'Failed to delete requirement', error: error.message }); + } +}; + +// ============================================================ +// GET /api/requirements/settings — get requirements for settings panel +// ============================================================ +exports.getRequirementsSettings = (req, res) => { + try { + // Get JHS requirements + const jhsRequirements = db.prepare(` + SELECT * FROM document_requirements + WHERE category = 'JHS' + ORDER BY name ASC + `).all(); + + // Get SHS requirements + const shsRequirements = db.prepare(` + SELECT * FROM document_requirements + WHERE category = 'SHS' + ORDER BY name ASC + `).all(); + + // Get document types for dropdown + const documentTypes = db.prepare(` + SELECT DISTINCT name FROM document_requirements + ORDER BY name ASC + `).all(); + + res.json({ + jhs: jhsRequirements, + shs: shsRequirements, + documentTypes: documentTypes.map(d => d.name) + }); + } catch (error) { + console.error('getRequirementsSettings error:', error); + res.status(500).json({ message: 'Failed to fetch settings', error: error.message }); + } +}; + +// ============================================================ +// PUT /api/requirements/bulk — bulk update requirements (Super Admin) +// ============================================================ +exports.bulkUpdateRequirements = (req, res) => { + const { requirements } = req.body; + + if (!Array.isArray(requirements) || requirements.length === 0) { + return res.status(400).json({ message: 'Requirements array is required' }); + } + + try { + const updateStmt = db.prepare(` + UPDATE document_requirements SET + is_mandatory = ?, + is_enabled = ?, + due_date = ?, + updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `); + + db.transaction(() => { + for (const req of requirements) { + if (req.id) { + updateStmt.run( + req.isMandatory ? 1 : 0, + req.isEnabled ? 1 : 0, + req.dueDate || null, + req.id + ); + } + } + })(); + + res.json({ message: 'Requirements updated successfully' }); + } catch (error) { + console.error('bulkUpdateRequirements error:', error); + res.status(500).json({ message: 'Failed to bulk update requirements', error: error.message }); + } +}; + +// ============================================================ +// GET /api/requirements/missing/:studentId — get missing requirements for student +// ============================================================ +exports.getMissingRequirements = (req, res) => { + const { studentId } = req.params; + + try { + // Get student's current grade level + const enrollment = db.prepare(` + SELECT grade_level FROM enrollments + WHERE student_id = ? + ORDER BY id DESC LIMIT 1 + `).get(studentId); + + if (!enrollment) { + return res.status(404).json({ message: 'Student has no enrollment records' }); + } + + const category = enrollment.grade_level <= 10 ? 'JHS' : 'SHS'; + + // Get mandatory requirements not yet fulfilled + const missing = db.prepare(` + SELECT dr.* FROM document_requirements dr + WHERE dr.category = ? + AND dr.is_mandatory = 1 + AND dr.is_enabled = 1 + AND dr.id NOT IN ( + SELECT requirement_id FROM documents + WHERE student_id = ? AND status = 'Verified' AND requirement_id IS NOT NULL + ) + ORDER BY dr.name ASC + `).all(category, studentId); + + // Get requirements with documents but not verified + const pending = db.prepare(` + SELECT dr.*, d.id as doc_id, d.file_name, d.status as doc_status + FROM document_requirements dr + JOIN documents d ON d.requirement_id = dr.id + WHERE dr.category = ? + AND d.student_id = ? + AND d.status != 'Verified' + ORDER BY dr.name ASC + `).all(category, studentId); + + // Get all verified documents + const verified = db.prepare(` + SELECT dr.*, d.id as doc_id, d.file_name + FROM document_requirements dr + JOIN documents d ON d.requirement_id = dr.id + WHERE dr.category = ? + AND d.student_id = ? + AND d.status = 'Verified' + ORDER BY dr.name ASC + `).all(category, studentId); + + res.json({ + category, + gradeLevel: enrollment.grade_level, + missing, + pending, + verified, + totalRequired: missing.length + pending.length, + totalVerified: verified.length + }); + } catch (error) { + console.error('getMissingRequirements error:', error); + res.status(500).json({ message: 'Failed to fetch missing requirements', error: error.message }); + } +}; \ No newline at end of file diff --git a/backend/src/controllers/setupController.js b/backend/src/controllers/setupController.js new file mode 100644 index 0000000..4b0ba62 --- /dev/null +++ b/backend/src/controllers/setupController.js @@ -0,0 +1,40 @@ +const db = require('../config/db'); + +exports.getAllAcademicYears = (req, res) => { + try { + const years = db.prepare('SELECT * FROM academic_years ORDER BY year_range DESC').all(); + res.json(years); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch academic years', error: error.message }); + } +}; + +exports.createAcademicYear = (req, res) => { + const { yearRange } = req.body; + try { + const result = db.prepare('INSERT INTO academic_years (year_range) VALUES (?)').run(yearRange); + res.status(201).json({ id: result.lastInsertRowid, message: 'Academic year created' }); + } catch (error) { + res.status(500).json({ message: 'Failed to create academic year', error: error.message }); + } +}; + +exports.getSectionsByYear = (req, res) => { + try { + const sections = db.prepare('SELECT * FROM sections WHERE academic_year_id = ?').all(req.params.yearId); + res.json(sections); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch sections', error: error.message }); + } +}; + +exports.createSection = (req, res) => { + const { name, gradeLevel, academicYearId } = req.body; + try { + const result = db.prepare('INSERT INTO sections (name, grade_level, academic_year_id) VALUES (?, ?, ?)') + .run(name, gradeLevel, academicYearId); + res.status(201).json({ id: result.lastInsertRowid, message: 'Section created' }); + } catch (error) { + res.status(500).json({ message: 'Failed to create section', error: error.message }); + } +}; diff --git a/backend/src/controllers/studentController.js b/backend/src/controllers/studentController.js new file mode 100644 index 0000000..f852c71 --- /dev/null +++ b/backend/src/controllers/studentController.js @@ -0,0 +1,304 @@ +const db = require('../config/db'); +const fs = require('fs'); +const path = require('path'); + +// ============================================================ +// CONFIG — student directory root (configurable via .env) +// ============================================================ +const STUDENT_DIR_ROOT = process.env.STUDENT_DIR_ROOT + ? path.resolve(process.env.STUDENT_DIR_ROOT) + : path.resolve(__dirname, '../../../data/students'); + +// ============================================================ +// HELPER — sanitize a string for use in a folder name +// ============================================================ +const sanitizeFolderName = (str) => + (str || '').replace(/[<>:"/\\|?*\x00-\x1F]/g, '').trim(); + +// ============================================================ +// HELPER — validate LRN (exactly 12 digits) +// ============================================================ +const isValidLRN = (lrn) => /^\d{12}$/.test((lrn || '').trim()); + +// ============================================================ +// GET /api/students — paginated, searchable, filterable +// ============================================================ +exports.getAllStudents = (req, res) => { + const { + search = '', + page = 1, + limit = 10, + gradeLevel = '', // e.g. "7", "8", ... "12" + status = '', // e.g. "Enrolled" + } = req.query; + + const pageNum = Math.max(1, parseInt(page)); + const limitNum = Math.min(100, Math.max(1, parseInt(limit))); + const offset = (pageNum - 1) * limitNum; + + try { + // ---- Build WHERE clauses ---- + const conditions = []; + const params = []; + + if (search.trim()) { + const like = `%${search.trim()}%`; + conditions.push(`(s.lrn LIKE ? OR s.first_name LIKE ? OR s.last_name LIKE ? OR s.middle_name LIKE ?)`); + params.push(like, like, like, like); + } + + if (status.trim()) { + conditions.push(`s.status = ?`); + params.push(status.trim()); + } + + // grade_level lives in enrollments (latest) + const gradeJoin = gradeLevel.trim() + ? `JOIN enrollments e_latest ON e_latest.student_id = s.id + AND e_latest.id = (SELECT MAX(id) FROM enrollments WHERE student_id = s.id)` + : ''; + if (gradeLevel.trim()) { + conditions.push(`e_latest.grade_level = ?`); + params.push(parseInt(gradeLevel)); + } + + const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''; + + // ---- Count query ---- + const countSql = ` + SELECT COUNT(DISTINCT s.id) as total + FROM students s + ${gradeJoin} + ${whereClause} + `; + const total = db.prepare(countSql).get(params).total; + + // ---- Fetch query ---- + const fetchSql = ` + SELECT DISTINCT + s.id, s.lrn, s.first_name, s.middle_name, s.last_name, + s.extension, s.sex, s.birth_date, s.status, s.created_at, + ( + SELECT grade_level FROM enrollments + WHERE student_id = s.id ORDER BY id DESC LIMIT 1 + ) as latest_grade_level, + ( + SELECT sec.name FROM enrollments enr + JOIN sections sec ON sec.id = enr.section_id + WHERE enr.student_id = s.id ORDER BY enr.id DESC LIMIT 1 + ) as latest_section + FROM students s + ${gradeJoin} + ${whereClause} + ORDER BY s.last_name ASC, s.first_name ASC + LIMIT ? OFFSET ? + `; + + const students = db.prepare(fetchSql).all([...params, limitNum, offset]); + + // ---- Attach missingDocumentsCount badge ---- + const studentsWithBadges = students.map(student => { + const missingDocs = db.prepare(` + SELECT COUNT(*) as count + FROM document_requirements dr + WHERE dr.is_mandatory = 1 + AND dr.category = ( + SELECT CASE WHEN grade_level <= 10 THEN 'JHS' ELSE 'SHS' END + FROM enrollments WHERE student_id = ? ORDER BY id DESC LIMIT 1 + ) + AND dr.id NOT IN ( + SELECT requirement_id FROM documents + WHERE student_id = ? AND status = 'Verified' AND requirement_id IS NOT NULL + ) + `).get(student.id, student.id)?.count ?? 0; + + return { ...student, missingDocumentsCount: missingDocs }; + }); + + res.json({ + students: studentsWithBadges, + pagination: { + total, + page: pageNum, + limit: limitNum, + totalPages: Math.ceil(total / limitNum), + }, + }); + } catch (error) { + console.error('getAllStudents error:', error); + res.status(500).json({ message: 'Failed to fetch students', error: error.message }); + } +}; + +// ============================================================ +// GET /api/students/:id — single student with enrollments +// ============================================================ +exports.getStudentById = (req, res) => { + try { + const student = db.prepare('SELECT * FROM students WHERE id = ?').get(req.params.id); + if (!student) return res.status(404).json({ message: 'Student not found' }); + + const enrollments = db.prepare(` + SELECT e.*, ay.year_range, sec.name as section_name + FROM enrollments e + JOIN academic_years ay ON e.academic_year_id = ay.id + JOIN sections sec ON e.section_id = sec.id + WHERE e.student_id = ? + ORDER BY e.id DESC + `).all(student.id); + + res.json({ ...student, enrollments }); + } catch (error) { + console.error('getStudentById error:', error); + res.status(500).json({ message: 'Failed to fetch student details', error: error.message }); + } +}; + +// ============================================================ +// POST /api/students — create + auto-create directory +// ============================================================ +exports.createStudent = (req, res) => { + const { lrn, firstName, middleName, lastName, extension, sex, birthDate } = req.body; + + // ---- Server-side validation ---- + const errors = []; + if (!lrn || !isValidLRN(lrn)) errors.push('LRN must be exactly 12 digits.'); + if (!firstName || !firstName.trim()) errors.push('First name is required.'); + if (!lastName || !lastName.trim()) errors.push('Last name is required.'); + if (!sex || !['Male', 'Female'].includes(sex)) errors.push('Sex must be Male or Female.'); + if (!birthDate) errors.push('Date of birth is required.'); + else { + const dob = new Date(birthDate); + if (isNaN(dob.getTime())) errors.push('Invalid date of birth format.'); + else if (dob > new Date()) errors.push('Date of birth cannot be in the future.'); + } + if (errors.length) return res.status(400).json({ message: errors[0], errors }); + + // ---- Duplicate LRN check ---- + const existing = db.prepare('SELECT id FROM students WHERE lrn = ?').get(lrn.trim()); + if (existing) return res.status(409).json({ message: `A student with LRN ${lrn} already exists.` }); + + try { + // ---- Insert in transaction ---- + const insertResult = db.transaction(() => { + const result = db.prepare(` + INSERT INTO students (lrn, first_name, middle_name, last_name, extension, sex, birth_date) + VALUES (?, ?, ?, ?, ?, ?, ?) + `).run( + lrn.trim(), + firstName.trim(), + middleName?.trim() || null, + lastName.trim(), + extension?.trim() || null, + sex, + birthDate + ); + return result; + })(); + + const newId = insertResult.lastInsertRowid; + + // ---- Auto-create student directory ---- + const folderName = `${sanitizeFolderName(lastName)}_${sanitizeFolderName(firstName)}_${lrn.trim()}`; + const studentDir = path.join(STUDENT_DIR_ROOT, folderName); + if (!fs.existsSync(studentDir)) { + fs.mkdirSync(studentDir, { recursive: true }); + } + + // ---- Auto-create folder record in database ---- + try { + db.prepare(` + INSERT INTO document_folders (name, student_id, category, created_by) + VALUES (?, ?, 'root', ?) + `).run(folderName, newId, req.user?.id || null); + } catch (folderError) { + console.error('Warning: Failed to create folder record:', folderError.message); + } + + res.status(201).json({ + id: newId, + message: 'Student created successfully', + directoryPath: studentDir, + }); + } catch (error) { + console.error('createStudent error:', error); + // SQLite unique constraint gives SQLITE_CONSTRAINT + if (error.message && error.message.includes('UNIQUE')) { + return res.status(409).json({ message: `A student with LRN ${lrn} already exists.` }); + } + res.status(500).json({ message: 'Failed to create student', error: error.message }); + } +}; + +// ============================================================ +// PUT /api/students/:id — update student record +// ============================================================ +exports.updateStudent = (req, res) => { + const { id } = req.params; + const { lrn, firstName, middleName, lastName, extension, sex, birthDate, status } = req.body; + + // ---- Server-side validation ---- + const errors = []; + if (!lrn || !isValidLRN(lrn)) errors.push('LRN must be exactly 12 digits.'); + if (!firstName || !firstName.trim()) errors.push('First name is required.'); + if (!lastName || !lastName.trim()) errors.push('Last name is required.'); + if (!sex || !['Male', 'Female'].includes(sex)) errors.push('Sex must be Male or Female.'); + if (!birthDate) errors.push('Date of birth is required.'); + if (status && !['Enrolled', 'Graduated', 'Transferred Out', 'Dropped'].includes(status)) { + errors.push('Invalid status value.'); + } + if (errors.length) return res.status(400).json({ message: errors[0], errors }); + + // ---- Existence check ---- + const existing = db.prepare('SELECT id FROM students WHERE id = ?').get(id); + if (!existing) return res.status(404).json({ message: 'Student not found.' }); + + // ---- Duplicate LRN check (excluding self) ---- + const duplicate = db.prepare('SELECT id FROM students WHERE lrn = ? AND id != ?').get(lrn.trim(), id); + if (duplicate) return res.status(409).json({ message: `Another student already has LRN ${lrn}.` }); + + try { + db.prepare(` + UPDATE students + SET lrn = ?, first_name = ?, middle_name = ?, last_name = ?, + extension = ?, sex = ?, birth_date = ?, status = ? + WHERE id = ? + `).run( + lrn.trim(), + firstName.trim(), + middleName?.trim() || null, + lastName.trim(), + extension?.trim() || null, + sex, + birthDate, + status || 'Enrolled', + id + ); + + res.json({ message: 'Student updated successfully' }); + } catch (error) { + console.error('updateStudent error:', error); + if (error.message && error.message.includes('UNIQUE')) { + return res.status(409).json({ message: `Another student already has LRN ${lrn}.` }); + } + res.status(500).json({ message: 'Failed to update student', error: error.message }); + } +}; + +// ============================================================ +// DELETE /api/students/:id +// ============================================================ +exports.deleteStudent = (req, res) => { + const { id } = req.params; + + const existing = db.prepare('SELECT id FROM students WHERE id = ?').get(id); + if (!existing) return res.status(404).json({ message: 'Student not found.' }); + + try { + db.prepare('DELETE FROM students WHERE id = ?').run(id); + res.json({ message: 'Student deleted successfully' }); + } catch (error) { + console.error('deleteStudent error:', error); + res.status(500).json({ message: 'Failed to delete student', error: error.message }); + } +}; diff --git a/backend/src/controllers/userController.js b/backend/src/controllers/userController.js new file mode 100644 index 0000000..a546c99 --- /dev/null +++ b/backend/src/controllers/userController.js @@ -0,0 +1,135 @@ +const db = require('../config/db'); +const bcrypt = require('bcrypt'); + +// GET /api/users - List all users +exports.getUsers = (req, res) => { + try { + const users = db.prepare( + 'SELECT id, username, first_name, middle_name, last_name, extension, role, email, phone, created_at FROM users ORDER BY role, last_name' + ).all(); + res.json(users); + } catch (error) { + res.status(500).json({ message: 'Failed to fetch users', error: error.message }); + } +}; + +// POST /api/users - Create a new user +exports.createUser = (req, res) => { + const { username, firstName, middleName, lastName, extension, role, email, phone } = req.body; + // Password is optional — auto-generated if not provided + let providedPassword = req.body.password; + + if (!username || !firstName || !lastName || !role) { + return res.status(400).json({ message: 'Username, first name, last name, and role are required.' }); + } + + const validRoles = ['admin', 'teacher']; // Super admin can only be created by seeding + if (!validRoles.includes(role)) { + return res.status(400).json({ message: 'Invalid role. Must be admin or teacher.' }); + } + + // Auto-generate a secure temporary password if none was provided + const generatePassword = () => { + const chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789!@#'; + let pwd = ''; + for (let i = 0; i < 10; i++) pwd += chars[Math.floor(Math.random() * chars.length)]; + return pwd; + }; + + const temporaryPassword = (providedPassword && providedPassword.trim().length >= 6) + ? providedPassword.trim() + : generatePassword(); + + try { + const existing = db.prepare('SELECT id FROM users WHERE username = ?').get(username); + if (existing) { + return res.status(409).json({ message: `Username "${username}" is already taken.` }); + } + + const hashedPassword = bcrypt.hashSync(temporaryPassword, 10); + const result = db.prepare(` + INSERT INTO users (username, password, first_name, middle_name, last_name, extension, role, email, phone) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run(username, hashedPassword, firstName, middleName || null, lastName, extension || null, role, email || null, phone || null); + + // Return the plaintext password ONCE — it will never be retrievable again + res.status(201).json({ + message: 'User created successfully', + userId: result.lastInsertRowid, + temporaryPassword, + }); + } catch (error) { + res.status(500).json({ message: 'Failed to create user', error: error.message }); + } +}; + +// PUT /api/users/:id - Update a user +exports.updateUser = (req, res) => { + const { id } = req.params; + const { firstName, middleName, lastName, extension, role, email, phone } = req.body; + + const validRoles = ['super_admin', 'admin', 'teacher']; + if (role && !validRoles.includes(role)) { + return res.status(400).json({ message: 'Invalid role.' }); + } + + try { + const user = db.prepare('SELECT id, role FROM users WHERE id = ?').get(id); + if (!user) return res.status(404).json({ message: 'User not found.' }); + + // Prevent modifying super_admin role + if (user.role === 'super_admin' && role && role !== 'super_admin') { + return res.status(403).json({ message: 'Cannot change the Super Admin role.' }); + } + // Preserve super_admin role — cannot be changed to anything else + const effectiveRole = user.role === 'super_admin' ? 'super_admin' : (role || user.role); + + db.prepare(` + UPDATE users + SET first_name = ?, middle_name = ?, last_name = ?, extension = ?, role = ?, email = ?, phone = ?, updated_at = CURRENT_TIMESTAMP + WHERE id = ? + `).run(firstName, middleName || null, lastName, extension || null, effectiveRole, email || null, phone || null, id); + + res.json({ message: 'User updated successfully' }); + } catch (error) { + res.status(500).json({ message: 'Failed to update user', error: error.message }); + } +}; + +// PUT /api/users/:id/reset-password - Reset a user's password +exports.resetPassword = (req, res) => { + const { id } = req.params; + const newPassword = 'changeme123'; + + try { + const user = db.prepare('SELECT id, role FROM users WHERE id = ?').get(id); + if (!user) return res.status(404).json({ message: 'User not found.' }); + if (user.role === 'super_admin') { + return res.status(403).json({ message: 'Cannot reset the Super Admin password via this route.' }); + } + + const hashed = bcrypt.hashSync(newPassword, 10); + db.prepare('UPDATE users SET password = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(hashed, id); + + res.json({ message: `Password has been reset to "${newPassword}".` }); + } catch (error) { + res.status(500).json({ message: 'Failed to reset password', error: error.message }); + } +}; + +// DELETE /api/users/:id - Delete a user +exports.deleteUser = (req, res) => { + const { id } = req.params; + try { + const user = db.prepare('SELECT id, role FROM users WHERE id = ?').get(id); + if (!user) return res.status(404).json({ message: 'User not found.' }); + if (user.role === 'super_admin') { + return res.status(403).json({ message: 'Cannot delete the Super Admin account.' }); + } + + db.prepare('DELETE FROM users WHERE id = ?').run(id); + res.json({ message: 'User deleted successfully' }); + } catch (error) { + res.status(500).json({ message: 'Failed to delete user', error: error.message }); + } +}; diff --git a/backend/src/middleware/auth.js b/backend/src/middleware/auth.js new file mode 100644 index 0000000..503bc4c --- /dev/null +++ b/backend/src/middleware/auth.js @@ -0,0 +1,26 @@ +const jwt = require('jsonwebtoken'); +require('dotenv').config(); + +const authenticateToken = (req, res, next) => { + const authHeader = req.headers['authorization']; + const token = authHeader && authHeader.split(' ')[1]; + + if (!token) return res.status(401).json({ message: 'Authentication token required' }); + + jwt.verify(token, process.env.JWT_SECRET, (err, user) => { + if (err) return res.status(403).json({ message: 'Invalid or expired token' }); + req.user = user; + next(); + }); +}; + +const authorizeRoles = (...roles) => { + return (req, res, next) => { + if (!roles.includes(req.user.role)) { + return res.status(403).json({ message: 'Access denied: Insufficient permissions' }); + } + next(); + }; +}; + +module.exports = { authenticateToken, authorizeRoles }; diff --git a/backend/src/models/schema.js b/backend/src/models/schema.js new file mode 100644 index 0000000..73ee388 --- /dev/null +++ b/backend/src/models/schema.js @@ -0,0 +1,235 @@ +const db = require('../config/db'); +const bcrypt = require('bcrypt'); + +const initSchema = () => { + // Enable WAL mode for better performance + db.pragma('journal_mode = WAL'); + + db.transaction(() => { + // 1. Users Table + db.prepare(` + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL, + first_name TEXT NOT NULL, + middle_name TEXT, + last_name TEXT NOT NULL, + extension TEXT, + role TEXT CHECK(role IN ('super_admin', 'admin', 'teacher')) NOT NULL, + email TEXT, + phone TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + `).run(); + + // 2. AcademicYears Table + db.prepare(` + CREATE TABLE IF NOT EXISTS academic_years ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + year_range TEXT UNIQUE NOT NULL, -- e.g., "2023-2024" + status TEXT CHECK(status IN ('active', 'inactive')) DEFAULT 'active' + ) + `).run(); + + // 2b. Sections Table + db.prepare(` + CREATE TABLE IF NOT EXISTS sections ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + grade_level INTEGER NOT NULL, + academic_year_id INTEGER, + FOREIGN KEY (academic_year_id) REFERENCES academic_years(id) ON DELETE CASCADE + ) + `).run(); + + // 3. Subjects Table + db.prepare(` + CREATE TABLE IF NOT EXISTS subjects ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + code TEXT UNIQUE NOT NULL, + title TEXT NOT NULL, + category TEXT CHECK(category IN ('JHS', 'SHS_CORE', 'SHS_APPLIED', 'SHS_SPECIALIZED')) NOT NULL + ) + `).run(); + + // 4. Students Table + db.prepare(` + CREATE TABLE IF NOT EXISTS students ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + lrn TEXT UNIQUE NOT NULL, + first_name TEXT NOT NULL, + middle_name TEXT, + last_name TEXT NOT NULL, + extension TEXT, + sex TEXT CHECK(sex IN ('Male', 'Female')) NOT NULL, + birth_date DATE NOT NULL, + status TEXT DEFAULT 'Enrolled', -- Enrolled, Graduated, Transferred Out, Dropped + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + `).run(); + + // 5. Enrollments Table + db.prepare(` + CREATE TABLE IF NOT EXISTS enrollments ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + student_id INTEGER NOT NULL, + academic_year_id INTEGER NOT NULL, + section_id INTEGER NOT NULL, + grade_level INTEGER NOT NULL, + track_strand TEXT, -- For SHS + FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, + FOREIGN KEY (academic_year_id) REFERENCES academic_years(id), + FOREIGN KEY (section_id) REFERENCES sections(id) + ) + `).run(); + + // 6. Grades Table + db.prepare(` + CREATE TABLE IF NOT EXISTS grades ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + enrollment_id INTEGER NOT NULL, + subject_id INTEGER NOT NULL, + q1 REAL, q2 REAL, q3 REAL, q4 REAL, -- JHS + sem1 REAL, sem2 REAL, -- SHS + final_grade REAL, + remarks TEXT, + FOREIGN KEY (enrollment_id) REFERENCES enrollments(id) ON DELETE CASCADE, + FOREIGN KEY (subject_id) REFERENCES subjects(id) + ) + `).run(); + + // 8. DocumentRequirements Table (Enhanced) + db.prepare(` + CREATE TABLE IF NOT EXISTS document_requirements ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + description TEXT, + category TEXT CHECK(category IN ('JHS', 'SHS')) NOT NULL, + is_mandatory INTEGER DEFAULT 1, + is_enabled INTEGER DEFAULT 1, + due_date DATE, + accepted_file_types TEXT DEFAULT 'pdf,jpg,jpeg,png', + school_levels TEXT DEFAULT 'JHS,SHS', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + `).run(); + + // 8b. DocumentFolders Table (for manual folder management) + db.prepare(` + CREATE TABLE IF NOT EXISTS document_folders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + parent_id INTEGER, + student_id INTEGER, + category TEXT, + created_by INTEGER, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (parent_id) REFERENCES document_folders(id) ON DELETE CASCADE, + FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, + FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL + ) + `).run(); + + // 7. Documents Table + db.prepare(` + CREATE TABLE IF NOT EXISTS documents ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + student_id INTEGER NOT NULL, + requirement_id INTEGER, + file_name TEXT NOT NULL, + file_path TEXT NOT NULL, + document_type TEXT, + status TEXT CHECK(status IN ('Pending', 'Verified', 'Draft', 'Archived')) DEFAULT 'Pending', + retention_date DATE, + uploaded_by INTEGER, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, + FOREIGN KEY (requirement_id) REFERENCES document_requirements(id), + FOREIGN KEY (uploaded_by) REFERENCES users(id) + ) + `).run(); + + // 9. PrintQueue & Notifications + db.prepare(` + CREATE TABLE IF NOT EXISTS print_queue ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + document_id INTEGER NOT NULL, + user_id INTEGER NOT NULL, + added_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (document_id) REFERENCES documents(id) ON DELETE CASCADE, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + ) + `).run(); + + db.prepare(` + CREATE TABLE IF NOT EXISTS notifications ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, -- NULL means global + title TEXT NOT NULL, + message TEXT NOT NULL, + is_read INTEGER DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + ) + `).run(); + + // 10. Password Reset Requests Table + db.prepare(` + CREATE TABLE IF NOT EXISTS password_reset_requests ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + new_password_hash TEXT NOT NULL, + status TEXT CHECK(status IN ('pending', 'approved', 'rejected')) DEFAULT 'pending', + requested_at DATETIME DEFAULT CURRENT_TIMESTAMP, + reviewed_at DATETIME, + reviewed_by INTEGER, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + FOREIGN KEY (reviewed_by) REFERENCES users(id) + ) + `).run(); + + // Seed Super Admin if not exists + const superAdmin = db.prepare("SELECT * FROM users WHERE username = 'superadmin'").get(); + if (!superAdmin) { + const hashedPassword = bcrypt.hashSync('admin123', 10); + db.prepare(` + INSERT INTO users (username, password, first_name, last_name, role) + VALUES ('superadmin', ?, 'System', 'Developer', 'super_admin') + `).run(hashedPassword); + console.log('Default Super Admin created: superadmin / admin123'); + } + + // Seed default document requirements if none exist + const existingReqs = db.prepare("SELECT COUNT(*) as count FROM document_requirements").get(); + if (existingReqs.count === 0) { + const defaultRequirements = [ + { name: 'Form 137', description: 'Official copy of grades from previous school', category: 'JHS', is_mandatory: 1 }, + { name: 'Form 137', description: 'Official copy of grades from previous school', category: 'SHS', is_mandatory: 1 }, + { name: 'PSA Birth Certificate', description: 'Philippine Statistics Authority birth certificate', category: 'JHS', is_mandatory: 1 }, + { name: 'PSA Birth Certificate', description: 'Philippine Statistics Authority birth certificate', category: 'SHS', is_mandatory: 1 }, + { name: 'Good Moral Certificate', description: 'Certificate of good moral character', category: 'JHS', is_mandatory: 1 }, + { name: 'Good Moral Certificate', description: 'Certificate of good moral character', category: 'SHS', is_mandatory: 1 }, + { name: 'Medical Certificate', description: 'Physical and medical examination result', category: 'JHS', is_mandatory: 1 }, + { name: 'Medical Certificate', description: 'Physical and medical examination result', category: 'SHS', is_mandatory: 1 }, + { name: 'Report Card (Form 138)', description: 'Latest report card from previous school', category: 'JHS', is_mandatory: 1 }, + { name: 'Report Card (Form 138)', description: 'Latest report card from previous school', category: 'SHS', is_mandatory: 1 }, + { name: '2x2 Photo', description: 'Two pieces of 2x2 colored ID photos', category: 'JHS', is_mandatory: 1 }, + { name: '2x2 Photo', description: 'Two pieces of 2x2 colored ID photos', category: 'SHS', is_mandatory: 1 }, + ]; + const insertReq = db.prepare(` + INSERT INTO document_requirements (name, description, category, is_mandatory, is_enabled, accepted_file_types, school_levels) + VALUES (?, ?, ?, ?, 1, 'pdf,jpg,jpeg,png', 'JHS,SHS') + `); + for (const req of defaultRequirements) { + insertReq.run(req.name, req.description, req.category, req.is_mandatory); + } + console.log('Default document requirements seeded'); + } + })(); +}; + +module.exports = { initSchema }; diff --git a/backend/src/routes/archives.js b/backend/src/routes/archives.js new file mode 100644 index 0000000..fbe9a17 --- /dev/null +++ b/backend/src/routes/archives.js @@ -0,0 +1,13 @@ +const express = require('express'); +const router = express.Router(); +const archiveController = require('../controllers/archiveController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +// All routes require authentication +router.get('/', authenticateToken, archiveController.getArchivedStudents); + +// Restore and Purge restricted to super_admin & admin +router.post('/:id/restore', authenticateToken, authorizeRoles('super_admin', 'admin'), archiveController.restoreArchive); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), archiveController.purgeArchive); + +module.exports = router; diff --git a/backend/src/routes/auth.js b/backend/src/routes/auth.js new file mode 100644 index 0000000..253c11d --- /dev/null +++ b/backend/src/routes/auth.js @@ -0,0 +1,16 @@ +const express = require('express'); +const router = express.Router(); +const authController = require('../controllers/authController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +router.post('/login', authController.login); +router.get('/profile', authenticateToken, authController.getProfile); +router.put('/profile', authenticateToken, authController.updateProfile); +router.put('/change-password', authenticateToken, authController.changePassword); +router.post('/forgot-password', authController.requestPasswordReset); // Public — no token needed +router.get('/reset-requests', authenticateToken, authorizeRoles('super_admin'), authController.getResetRequests); +router.put('/reset-requests/:id/approve', authenticateToken, authorizeRoles('super_admin'), authController.approveResetRequest); +router.put('/reset-requests/:id/reject', authenticateToken, authorizeRoles('super_admin'), authController.rejectResetRequest); + +module.exports = router; + diff --git a/backend/src/routes/dashboard.js b/backend/src/routes/dashboard.js new file mode 100644 index 0000000..b81894d --- /dev/null +++ b/backend/src/routes/dashboard.js @@ -0,0 +1,9 @@ +const express = require('express'); +const router = express.Router(); +const dashboardController = require('../controllers/dashboardController'); +const { authenticateToken } = require('../middleware/auth'); + +router.get('/stats', authenticateToken, dashboardController.getStats); +router.get('/pending-tasks', authenticateToken, dashboardController.getPendingTasks); + +module.exports = router; diff --git a/backend/src/routes/documents.js b/backend/src/routes/documents.js new file mode 100644 index 0000000..997aabc --- /dev/null +++ b/backend/src/routes/documents.js @@ -0,0 +1,20 @@ +const express = require('express'); +const router = express.Router(); +const documentController = require('../controllers/documentController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +router.get('/', authenticateToken, documentController.getAllDocuments); +router.get('/requirements', authenticateToken, documentController.getRequirements); + +// Print Queue routes — must be BEFORE /:id routes to avoid conflict +router.get('/print-queue', authenticateToken, documentController.getPrintQueue); +router.post('/print-queue', authenticateToken, documentController.addToPrintQueue); +router.delete('/print-queue/clear', authenticateToken, documentController.clearPrintQueue); +router.delete('/print-queue/:queueId', authenticateToken, documentController.removeFromPrintQueue); + +router.post('/upload', authenticateToken, documentController.uploadMiddleware, documentController.uploadDocument); +router.get('/student/:studentId', authenticateToken, documentController.getDocumentsByStudent); +router.patch('/:id/status', authenticateToken, authorizeRoles('super_admin', 'admin'), documentController.updateStatus); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), documentController.deleteDocument); + +module.exports = router; diff --git a/backend/src/routes/folders.js b/backend/src/routes/folders.js new file mode 100644 index 0000000..e167fcd --- /dev/null +++ b/backend/src/routes/folders.js @@ -0,0 +1,16 @@ +const express = require('express'); +const router = express.Router(); +const folderController = require('../controllers/folderController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +// Public routes (with auth) +router.get('/', authenticateToken, folderController.getFolders); +router.get('/student/:studentId', authenticateToken, folderController.getStudentFolder); +router.post('/sync', authenticateToken, authorizeRoles('super_admin', 'admin'), folderController.syncFolders); + +// Admin/Super Admin routes +router.post('/', authenticateToken, authorizeRoles('super_admin', 'admin'), folderController.createFolder); +router.put('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), folderController.renameFolder); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), folderController.deleteFolder); + +module.exports = router; \ No newline at end of file diff --git a/backend/src/routes/grades.js b/backend/src/routes/grades.js new file mode 100644 index 0000000..729666c --- /dev/null +++ b/backend/src/routes/grades.js @@ -0,0 +1,11 @@ +const express = require('express'); +const router = express.Router(); +const gradeController = require('../controllers/gradeController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +router.post('/enroll', authenticateToken, authorizeRoles('super_admin', 'admin'), gradeController.enrollStudent); +router.get('/enrollment/:enrollmentId', authenticateToken, gradeController.getGradesByEnrollment); +router.post('/update', authenticateToken, authorizeRoles('super_admin', 'admin'), gradeController.updateGrades); +router.get('/sf10/:studentId', authenticateToken, gradeController.getSF10Data); + +module.exports = router; diff --git a/backend/src/routes/reports.js b/backend/src/routes/reports.js new file mode 100644 index 0000000..bdb963f --- /dev/null +++ b/backend/src/routes/reports.js @@ -0,0 +1,12 @@ +const express = require('express'); +const router = express.Router(); +const reportsController = require('../controllers/reportsController'); +const { authenticateToken } = require('../middleware/auth'); + +router.get('/academic-years', authenticateToken, reportsController.getAcademicYears); +router.get('/stats', authenticateToken, reportsController.getStats); +router.get('/enrollment-by-grade', authenticateToken, reportsController.getEnrollmentByGrade); +router.get('/document-status', authenticateToken, reportsController.getDocumentStatus); +router.get('/export-data', authenticateToken, reportsController.getExportData); + +module.exports = router; diff --git a/backend/src/routes/requirements.js b/backend/src/routes/requirements.js new file mode 100644 index 0000000..02d9d50 --- /dev/null +++ b/backend/src/routes/requirements.js @@ -0,0 +1,18 @@ +const express = require('express'); +const router = express.Router(); +const requirementController = require('../controllers/requirementController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +// Public routes (all authenticated users) +router.get('/', authenticateToken, requirementController.getRequirements); +router.get('/settings', authenticateToken, requirementController.getRequirementsSettings); +router.get('/missing/:studentId', authenticateToken, requirementController.getMissingRequirements); +router.get('/:id', authenticateToken, requirementController.getRequirementById); + +// Super Admin routes only +router.post('/', authenticateToken, authorizeRoles('super_admin'), requirementController.createRequirement); +router.put('/bulk', authenticateToken, authorizeRoles('super_admin'), requirementController.bulkUpdateRequirements); +router.put('/:id', authenticateToken, authorizeRoles('super_admin'), requirementController.updateRequirement); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin'), requirementController.deleteRequirement); + +module.exports = router; \ No newline at end of file diff --git a/backend/src/routes/setup.js b/backend/src/routes/setup.js new file mode 100644 index 0000000..9f427eb --- /dev/null +++ b/backend/src/routes/setup.js @@ -0,0 +1,11 @@ +const express = require('express'); +const router = express.Router(); +const setupController = require('../controllers/setupController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +router.get('/academic-years', authenticateToken, setupController.getAllAcademicYears); +router.post('/academic-years', authenticateToken, authorizeRoles('super_admin', 'admin'), setupController.createAcademicYear); +router.get('/academic-years/:yearId/sections', authenticateToken, setupController.getSectionsByYear); +router.post('/sections', authenticateToken, authorizeRoles('super_admin', 'admin'), setupController.createSection); + +module.exports = router; diff --git a/backend/src/routes/students.js b/backend/src/routes/students.js new file mode 100644 index 0000000..a9c48ef --- /dev/null +++ b/backend/src/routes/students.js @@ -0,0 +1,15 @@ +const express = require('express'); +const router = express.Router(); +const studentController = require('../controllers/studentController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +// All routes require authentication +router.get('/', authenticateToken, studentController.getAllStudents); +router.get('/:id', authenticateToken, studentController.getStudentById); + +// Create / Update / Delete restricted to super_admin & admin +router.post('/', authenticateToken, authorizeRoles('super_admin', 'admin'), studentController.createStudent); +router.put('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), studentController.updateStudent); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin', 'admin'), studentController.deleteStudent); + +module.exports = router; diff --git a/backend/src/routes/users.js b/backend/src/routes/users.js new file mode 100644 index 0000000..f71d11f --- /dev/null +++ b/backend/src/routes/users.js @@ -0,0 +1,13 @@ +const express = require('express'); +const router = express.Router(); +const userController = require('../controllers/userController'); +const { authenticateToken, authorizeRoles } = require('../middleware/auth'); + +// All routes require authentication + role guard +router.get('/', authenticateToken, authorizeRoles('super_admin', 'admin'), userController.getUsers); +router.post('/', authenticateToken, authorizeRoles('super_admin'), userController.createUser); +router.put('/:id', authenticateToken, authorizeRoles('super_admin'), userController.updateUser); +router.put('/:id/reset-password', authenticateToken, authorizeRoles('super_admin'), userController.resetPassword); +router.delete('/:id', authenticateToken, authorizeRoles('super_admin'), userController.deleteUser); + +module.exports = router; diff --git a/backend/src/services/retentionEngine.js b/backend/src/services/retentionEngine.js new file mode 100644 index 0000000..4d13fdc --- /dev/null +++ b/backend/src/services/retentionEngine.js @@ -0,0 +1,41 @@ +const cron = require('node-cron'); +const db = require('../config/db'); + +// Retention Engine Logic +// Runs every day at midnight +cron.schedule('0 0 * * *', () => { + console.log('Running Retention Engine...'); + + db.transaction(() => { + const now = new Date(); + + // 1. Process Graduated Students (Docs -> Archive 5 years) + // Set retention_date for documents of graduated students if not set + db.prepare(` + UPDATE documents + SET retention_date = date(created_at, '+5 years'), status = 'Archived' + WHERE student_id IN (SELECT id FROM students WHERE status = 'Graduated') + AND status != 'Archived' + `).run(); + + // 2. Process Transferred Out Students (Docs -> Archive 3 years) + db.prepare(` + UPDATE documents + SET retention_date = date(created_at, '+3 years'), status = 'Archived' + WHERE student_id IN (SELECT id FROM students WHERE status = 'Transferred Out') + AND status != 'Archived' + `).run(); + + // 3. Process Dropped Students (Docs -> Archive 2 years) + db.prepare(` + UPDATE documents + SET retention_date = date(created_at, '+2 years'), status = 'Archived' + WHERE student_id IN (SELECT id FROM students WHERE status = 'Dropped') + AND status != 'Archived' + `).run(); + + console.log('Retention Engine task completed.'); + })(); +}); + +console.log('Retention Engine service initialized.'); diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..3820a95 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,45 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ +/coverage/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/frontend/.metadata b/frontend/.metadata new file mode 100644 index 0000000..f22c42b --- /dev/null +++ b/frontend/.metadata @@ -0,0 +1,33 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "00b0c91f06209d9e4a41f71b7a512d6eb3b9c694" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + base_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + - platform: android + create_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + base_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + - platform: windows + create_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + base_revision: 00b0c91f06209d9e4a41f71b7a512d6eb3b9c694 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..92d1efb --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,17 @@ +# frontend + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter) +- [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/frontend/analysis_options.yaml b/frontend/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/frontend/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/frontend/android/.gitignore b/frontend/android/.gitignore new file mode 100644 index 0000000..be3943c --- /dev/null +++ b/frontend/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/frontend/android/app/build.gradle.kts b/frontend/android/app/build.gradle.kts new file mode 100644 index 0000000..9d58cab --- /dev/null +++ b/frontend/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.teamsb.tis_rms" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.teamsb.tis_rms" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/frontend/android/app/src/debug/AndroidManifest.xml b/frontend/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/frontend/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/frontend/android/app/src/main/AndroidManifest.xml b/frontend/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a3926e9 --- /dev/null +++ b/frontend/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/android/app/src/main/kotlin/com/teamsb/tis_rms/MainActivity.kt b/frontend/android/app/src/main/kotlin/com/teamsb/tis_rms/MainActivity.kt new file mode 100644 index 0000000..32976e4 --- /dev/null +++ b/frontend/android/app/src/main/kotlin/com/teamsb/tis_rms/MainActivity.kt @@ -0,0 +1,5 @@ +package com.teamsb.tis_rms + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/frontend/android/app/src/main/res/drawable-hdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-hdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..cd58799cbf66d7f39bcadc2f902d6b4d02f01a22 GIT binary patch literal 34337 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 lMH^*PaLp6s|MB1BKLIN1K8kvncV5&_G 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 LNkvXXu0mjfy1Dg^ literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-mdpi/splash.png b/frontend/android/app/src/main/res/drawable-mdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..23ef4dce3d039468ca1f7b1f7a6cdf5f1668c35d GIT binary patch literal 16636 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 LNkvXXu0mjfy1Dg^ literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-night-hdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..cd58799cbf66d7f39bcadc2f902d6b4d02f01a22 GIT binary patch literal 34337 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 LNkvXXu0mjfy1Dg^ literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-night-xhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4516e765c55d4439391743acf75fc23f11c67594 GIT binary patch literal 58620 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 literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e5db34f295c378c733735c5d5dd76e1bb674b8fd GIT binary patch literal 119905 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

5V0@jwK1Y9+c}$#vgc z#Fo}Di&wPqz$4GIZ1raxxc?kXGr`+``jlVmX1cSl<%|!m*TC--2>j?vul4t{pQ-Y>@d*puq2-M7zRQ^&%A_bCT z0raLi3ZW>$beI|HWR9y`K%JoStCk>dVyQWL>0-0<85`~OSkWRX1v2?oOfQKpnymuG zZmHM>4ZYQ3cn8c>bPkHE464zky@67s*xtzI$iQ^`6@dZb4&Gk=~2zp*Yf~X#R>^*My-W=@w3LGmb5wO0{Y^56CPcU*+ zV&KzC$2)ONMCv{7h<#Zwe*!c2Yh>!U0B&*x+13sscBkw&D6+(JO2Ef5{zjTQO3xTo zVqNe=-4~NgTfsjOy(Cp!Cpj??68Hi68WMLR`c7U*Ha~qrpqQwt;O7)&Z$tM?+(NHx zGCJw43{H&XyhS6Kcjy_2C}H?nK3v_yNf-P9JrI=Es3M9Px{fLIW8Es$P&0o2I{AKG zHA=o%!*3pXSndm97b4{geV-#1Oq9*r0BKakV(_34(+?d>NZ&@r-X$OCT(Pm)ySu!dKPpf^fUqOV?f#MBaJl9VZrxrDdQHZjeP=lAMGqoAlE5N`~AL4p?4) zTU#onghfVtsX-Dlum@M+S5*+sg*nKd!bMHzG14C?JM3n_q=?Bbx0QEO@3YojLvOTQ zdVrYyt(f^vY|lez_FAa`UJrzN9QN&kQ>qh8jfNRCq=;W#2NehM(y}mLz2ZmYaxin+ zM5fJ}O|I}Fs+T9<@*I!dcNmJ6C)4v0y4yjf?PV_c$^!oS#w1>Qd%bKVi%oX-ub)MY znq2essW|ou`I!XbGZH<7C!TBP*4tmBt|q~t#!3!9Xgu=|n!uO|l~g6#(fpmL?iS1) z-30ssA-7ax3y_!Mmuxa+ib2VdjxwUblaO_{h+xOOIY-oJ)5Eqz2ppeY-X&)9DW=PewJ-Sr+3Er)4s z=hpAeLJ@bj<0U*TPa&``6Q<2%)X)$4@S}|!c+?O0*4K~Wv_ntg0Pk%^g?AH8ck#@o z4B6TUxk0)Nq*}Q2Il7D62`7rgD{EO(NRsU7$4^AqFQgOm!x(Oe3N+@2XVBuFz(d{7 zl8dLX2E}m|3#TtfIOCKy=zy!q9_3AGyz7?&z31Twn~su&8oH)s0)gWHW+MN{3Iqbl zT)CVPYUZMxQPr}N)If7}4`rzV7_p~(+1*`J4awY88WR+oYVf@E-Wb_g zcXgYBZ_=amvAnRFkImI&WBoX8ntbO@d@Du3^>7M41xqELgwS?}aao^JD}v0e)JW7M zP-{%Qnr6~8ape#0q_Me~On;H(D_3#(_4jf64~`)a?ngB@q8E2c9JQvHQoB_(lXx9V zx$>d~y!z&5kx!r~Ns2{}+i!n~;}5%m*`w=l14#RA*&&F%DY6F(PZymH ziEk*FqIcmd46SeEzFWUZz4i`<(owh~fxEY~I+7{lhy;T(VZ_4KB)sA`Os zogSC};8A)mJBAy+aU8LY?{fB5i`w2iFK2VC2|_*^AXe~+t14c|B9&{y54luCn`p6i z^IGv;j9`ed$_Q#`L?chY*ElLRk6lg=Z>HX%uckmiS22V?v6aTo+a>Ih$khHu8c}>6 zfm;zn0U=Ak=Z5iW%(5)?e+hX1&{FdLK>IptNFbIt4TMj%B7HeZ5GR4%6F0&r$L6B0 zU<&yP!T1%X(g7X4B1WhtftVWydg9EE9mX_cIw3g?5%NGDNu`SxcN3e;Rb+!HeAU59 z_TgJSB8fz?b=;JPEAS)z1)8%kClX^~Od(Mn#)!LkA`KT7m3oe|j^Br`TyO>L-94QD zjqmgO$37sQh;Z{&lTqy*ghlBg?9N1x^L#?SjhF6c`p7U-Cl6xf>K(G0(1dJ&qwvgg z+eyzI!aMIR=b|&mQmL1VxkH#hL`l2|9u5g^AdTeE98R54P6A0n_$n*7SWi^6(M7 z_i-DC%{iFw{q#`|JM4JgU9ya}j=qv@r&8*LeB->i%$Tg=w727{A$bkNelY@IdOkUI z6tzt!^6;+~)0<35zP%*LDJ9hJ!;ihoyn|*jXWH@j*?tZzwvx>{w01c3BtjT*5sXcu zMv5`ua*F zBRl626(&l2k^1ckXLrlJ4+h}yekoItq`e9qr@5AVRhUF3#KQQo93MZ13O_CZV~(cM zN;{uAYgwKBl|6?{|h7abP6QC}(3$K3%t{$dn6<3nftw1!S-<0jWyf$WFNg5`;WM z@=P>rTyGcowl-8X$i9PWn0)G3EWeB1wjyVJuUNs!7yOh(3lHS`=g(tg zU^$2H-as`7xO zu`h)(dq_oTjFPX9;N&$9XBJ;goJ6BvFKZq_W9p}y_1GNcR6O~jcWbE&9O@SCSnsGH5RFSU?NnT#7-PhE924YffMHMWF1 zpL*(%G}Io>B^UpIpZ?-?ng%s;*0BfT^u3GWq~y5R7Mih!MZwz2yn_~S>-R6`;w$eU zFLXTp98JS3x$TFSaMavk7(K5M$`z&Hj-@0qH1XL3IDQmYlnc5oB?onpy}6};>UdTO zf^G;;T^&6XMT-mLC&3L0)79g%t3#oy+o!dyNMCP`Y$i`3S0II`2=G2TNj;-W3I*Q z-9oL9FO){h9=005(G!@)bk4r;NnU?R!cd(N-i_IcQJ%ptOWmarx4taAIh2CE3sz>66be4N-iJL(Z zkqT;QqKX(bMU^?hNpw{#^}fm(#~#JpnHO;NO;7XqvmeR#(cWniiPcj`NAcYpim>F>Xn-9j?4ZBOy;bwoJcC&%`rzE$4Lu6;V*xBhUZ^h!3}p+aoy?rF{1i2=J@@1 z1&i0a3#4Nq!g54jMAv+5rAR)PB2?3W=@!^-Zf9F~Gln8GNGfExBM!IyjQ!Y8nar~M zO01xdUlGF1=W(54*#x{)qRZB`T56<<`x}gD1mgyl5JvEQedv(kbv-@(|NMvW|HIm= zf=D)%`n&_}7G0@JQNlEreq3@2Q)Fr`MV8BI?Q%30Rw>lPPzP7zhk^`C)^bARC=L%D zf-YqLbVC|c?_?*dtmUlDtwoQSQU@a0*@15f!zm5d)G_;oxVOisc9nCC5VINr)HcSk z#_UTzIFTEFwv>B+_l{(2igZ1lw@K$x>}*@bEAOn54@p4NsII!7SY=eEyT!cAx4-)$ zzy8I!)K(_23-1$@g2g`ZSR;=<`U2nk(JLHsz)-$<;UUbJT2H077Q5w55?UTzjAoS( zt`m^gK#Z_FSCsj*&e2|+v431xAV!`4RrOIbP17V( z*tD^iTwc77ZPeARqNXOmxG`}KnLU`{!-g}Y4jN)v**ntQUfg_IlG(&0NL7OPB1P2w z(j-GQrTmEK6BxdNVRc~bc#^7MEx-K9G)`SKg{PnUgg-p`N9N5sl6{6Yq)7Lt5}w2}^-+QHVAUS4>vmxuqjO};{PTw(UiYK}Z&9LFt~$*`e$T(b*1wH>{XmLqJ{iJ&Us z(tA*?^4P+V>8BpT|?DVL2lhI--%KpKRfr3vZLC zbJb7?8WD=NNyrdj!6Ij#@hxn-)Ejx~$*-|-%SMv96jg~3kKA`Tb7yMMwSvKe>ZlCZ z*q!~jJ!#eyGNgs6Rn)+7O=7Vu>7H#w;(4eHv7xYqOxC2jx|-=sB_QxKF3bqbAl4A4 zt!Fpu;@feWJv6I`lFx|B1zQ{hN{O#7PDMEqD7H6FpSd`7uLnG-pPM!$gq zu9Wr{0!OWEV^eVpon9}tVUkJpk}Iac=nGSZ+ybLDy^v;1Yf< zB1=G)8eSQo=E_*&Siw@}=R0Mhq)NauXiOw%s);ahWSkR@Z6uY`SiC&TOK)u9vrQeW z-=62iw|e>OyC3k}b6Ys?+-V$m;BZC`j$tR);N|nEritnXBvwT)6_=%HoRB?G6=ocHw`NEQ0|`bh_I?Cb=o_P?Tw=~HwFRk1q8Thh&t zfkY|c5QNv9TGm??CR0HJCmteLlaMD%!Zer{Jxq4WwL%az=#nQx7rR(l_>c~FI~X~s z36f8?;cAuyHqmFGn;yYdi}`Ml!zy8XwT@OZ7^iXsraGLX4>y=Fyqc+#$Fsd9&5wTh zDsR2JfgwXjaLS_NajkB)Y*|A#W76MmlFH=C6?0@$c8MBZhS9EEo#v|VKEtnWITFtf zp?hobi>oPSHxd+}UA+`I#WcXM3^YgBU}j{htO>u_Py;!)k{zu&&-`XPFTT;jj+PAJ z08F1$!-TPw95Snl=~KegS1LsG0-CxByd0k6;AVYU5`AtbT^7TU+g0?K4uS#tfPyQXz$Q5H@F|on!#W(vU!L1_bQxS@C#!;0loIjehIfnI{Gc5f$!^(9@ zK3(0#H?Mk)+PWBX53c9bMWdN8E<$}>7mBbKHBEtAlOs=|16$e^nmny#BT~66t6~1!8xA8sUiWim+cb=1>X-I^7@4tc9UR%mL?=7P;9_FTNj^it5 z?MtEeuQbRHn{n77_*QtZb3$c213r>*Uc2 zHX@dYj8zqs4-{$I79A49s8_K&UHW=@N3L13Y7DU9U-f+cXKSwtB87q(8|a>DAq7Qs zWOGV_qvVKDHbqLzT(5+{Rx6`Y-jIqgMpk38KaRPTb3{avCz?phyRWYtZp7Ae zs9qMcr=5W7NdFke(a_T>;U0&5GAbukBp4CTlc=jFGHelBIxBhg^~Icb#%SteZMgQQ zOxtG)&prMvjy&P#ELpydQfN$9N&@e z&mf5A*mzzKv-TOmOMm`0Ke*{Jo_%4B1lf6hkjWE9@Qb@HWbBv#S6ud2`F77eZ6=pp zGLqKKPf(#(a{rC9B}uby_cB6Sr<7gyBei_ECCzvL{cU!e3b&qr9L9&w(%WBP_coj4 zposLi2?PZwC5V&jCmjtEkJr;{wX&@EDXuUgBSM1~lylCW@iO|`V#c`~rV9+@G|Gksn|DS&{|Le6^1(A-9w#pJT z%0-JHF$bDgK9QtFfdm1gOEe@DH6JgcqbDL*x=)kU#QgY?45I;EU=UOVQ_aaTW1P|+NPY*EEeLqn&_0jkcZpie_}1gl~gJ?dC~^uQn4xPC2{TsRpr zX&IP`-JcQi;#_*cTq&5m_`?tR&HeXr*}20>b*vyBwrB{2X$nT!=ZG4-BM-*)bo$K# z+gnp4d$%)nY=lB)tJDTjC9lGky${tFjM5U1MBq4l-AAh*MYmbWv(L10$35%Vv?DJc z>SGTW#O2@IhlBT52pM^7vl}y8M3beDRuWYnXjjWLeh@*4D9xckRHz9lArTfD)4basc;Mf!x#*&vfA+KZf3x~9&JCL9N6ssDRT4V>CS(RVO=JYn~P@YtF2mQ%b z83;rf;}#SG?H;u)1!g!tGn+ILgEev$O{CT7{M%)B@xtpXx#qGnaIGL#K_Q{oL^T_` z=Y5Wybtu2N`yy_=`vq>h>orCWzlbCDKNLIpS5)^i$^CKlD4w$t9giAAp=wY9eYk_cFZFpHRinq~pSH7sB1aUP-qGrWwMiq^0 z>#M{ggL(LuCveHPUuXH+PF{TW4Vr6@W%$VHTyfE{9KUdXhK{sxGvkQFMo}z$hM}g= zgrSzFQt+!$BV*`I?a$AD{umqAwb7rutxug;VDz!uE*>A(8f?H5NPk(=}R{9Z%I+iQZzQ%^mmU3%$dO(hvC z&?*esY8pVQmbfwlk3ta912w9vF>7NKe3ygl37k^BkP0efms`}MeM&d0t>t{2T7?sK zvE3xu%ub2m6s%l37r@CW#9A$m_9N0vYGQ2ws%waiS-{OdTf+;lt(5wj&p-DzXB{<- zY17Ukwe2yYN;?51i<|v`vyVE41801jV@|z=)6Tn#>n~fxwf{Ds-p==_5GLHB3G8e} zQ+qK4xvHq(n_&WKNmo>sXl3OZhayESPq?BAFEWciJki519(;q98&lNBG`@1`1g^bu z219GNp;^08ig}cxK|l-Q8>RA1UN3bIU`H9S#}_T9|B*ESG?q&HY6*NI^-v8_j;2v9 zgNSc3br?(?8)MPQvw8gaB#%D+84o|Xg+INxm2*xV!}V8Br?GAac3&%=EnMv)xK0FD z%S-%+XaWn6TEg$cD|RzH(a+0IUcvEa-p9kgdyc1{{VTWp{QLaij%%=s9lZC-dVY4} zn;di8c&@%+G*0$YY%hna)e|3b9BZ}&Ipgd1vSCYC$+=Zg`0L_LoPFi5dG@|Dnc4Lz zb-5IMJsz8?q8LE|95ksA06@1u)=Uwvjnbak&d0?MX^u1#P<5hioS1JgRU6AO(K&pU z-axk6$7`sim=S?2gBZwZ<>7(tTEv~&Ne0@Hh8zgxal@O>AkSkwK4F>c)#jdnOPb=)8C8DUcQE9GRn@Mn7#W6I{ zh$H6hs!xyK$!1RoEUzII$)l(ix!#>91zQFgDXiS*V|Ch0w*t(L>5Q*%F)D=<-9jG! za~HpP^nDC9DA9$RclL1fnLlFA0b}|8H3u=QekWRPC%T)&?R=RLkqP|v_A@x=vWK|! zoa4c#lE2beg2c80FPksRMh4_axkQ-b3qRP;1wH?B<%)mC+Vg)= z_WY@*eDO2iK^1*1$(k&K&5At)F!{zw!#QQ%!Mw4!kGmgP&m(`>#L{Km{M$Jbn19$o zG*@lI6xy?zFQNX5SJIjloE%wBxwgD7dG`e#ylWx1-uDrIdT9yQTy+z7-BBY0dS6GD zsrw9J(v(r;g_R~v1QN|`Zmr@Mx4puf?{B2DFM}q=_~mp;(F|6s-NkR7T){PqjwZU{ zZ4Nh+^zF3h6`OLnAu%q72KiJsL<}Oa3f7rhsc}BR(mW<e<>~J@; zBKr|L+?{wa4>Qw)Rp>>a!);q9pV#q)W@v}ck(Ci92(VRM7-i7D{QDET_}(p#;rJc_ zX#gc&)uJ!S-qj1r+<4L`;5wy+w~Grtqn8#0n;ZO%#(k(j;~*GH$VU7%iMnN zOLFG_!%GiGGc=hb2-2BMg9JNScGGyk{Wcey26P7LLnNYA9E?qBGiOvSB-feagZL`6`bxZ_k6Y*= zXgej6q3@G-bA%IN>h`T+``R{1`{?NCIOE0}Z@lk^Km6fdArG+E1d-0R&T+ot3&~Le zH9AVjmdHJ=+y|6!a4C?Zp+t0)iU^((V6f86K~)D)Lv4wTsyJko3@z3+cGQA}$J124ag2Tw}dLCWv!OU!C=F}s&>hiB~*_FS+a#HL+bqHTS|4?$t z=Lic7hE$^o$cQNW7G6POT>`a}DR@J<<*xVn^D7l%x_Q@h%`?<6jgI155cFDE6=EihOx}?g%Gus9*ydXcCF*NQSZSStz-y2m)P} zgrRcgi6dpex#CAl+1h4u^-b^c$NT0na!4hvwF=KQOVDv~Jw=XL2K@yEipy&u+44Md zW-R1e=Pls+pZ}S0%|p2H$5*qvb17~vM`O)o?tNexx7_nO-9or6qDT|=fD*={Adiph zzI7b`cEyE60xCcL*~2{e%rb7gU^;`NA22Y?3hAsy|cPOXuqN}6jhC9n@O!c+Lf-iRI6P%EO)C*%U$(!{LH6|;Pk%F&e&MS>xd z$>hXTDm6uj`TvV=sa$(S5Sce`USj#DpUn4sPgP=2H7tY^FcB6phCF9|iRx2jDWgC| zHD02YSUS#;fqBdc97xa=>7=0eTeNuFSy5cacBNC2rp&G#D8(eEBjBw;%nZcaEevkvk#8@2c3Puky*7ZcaF?fiq4V&e4a4iMp$BO%FpLH-!bJkYbbL)ROX>oZ|R?xs3T@ za`O4<|0NQP`o)v{&su-itWYVvceNmKKPB6W z^x{q)eR3;Do$?YV%pc0NmrfyW?8Gl5#Q+%J3zZa86i4dGh6S_DZy~emk6d{Acn&)J zT1;mscmC>kTyoKI(%jv%DwRR6(CAifD3H`BePUa4U+sw$WT)Gflj(;-7lJTvJ7J1NA3JR^p-%+zap%o*nJ}rIOTYJoq`6Cg5kZQ+$2||e$%ji< z@tyCS$>B%N;RoM-fXAO($^$<;le15*q0q5}u-k$m*|rYo1vzRJWsVxIBv?C%-~6tV zf4hFM#JpbqwK3dw)g*#$Cth)TY0ND^R&GhGMo{^^vL=X9p1Vjt9=}W_FOO=!Bp*I7 zw&nkiie^tw9SI$3@BxWttLnMn!p8#d##yxdJ)gr!TzJ- z%>K?WW{s}qf*U{Lj)ynVmGk-S?F-P&)i|B&WoaW|@~-HQxDko>2n!Uh)rM{-nKAlc zc4eZx^x~U5`}9YovVG)>MS_NCObeR_pPhE1O=xxqBxfXq zqq}IP#&~@wjntud0cmY%l9e?7-PTSrS{gJH*Gx-@yvSr+$D=6t7HOL?w!*Lqor(m~ zM9NciY&k74QSv)6ynqnp!gR7^+Il$e_yyRxukn++|43K1AiOuriMht|bv<12o!@ZD zjsOq;@g0WNMOiq10)_1_64p|(nTO_-qy}AG62S;X2sG}?;!pD2a$m{!<;269xaMo) z3D`Tt=%|F&)wGhKxmGeml6qJ|6GO9b1^z-1?|i!i4iiDd^U9<|O*U5*_8ilcaUz0L z=a+OOl|34;Qj10Tavx(rfn5ITmolIMZPt>voAP$dUR%jP6ISeHS_!x7}YazocpeR@0pAL8BvOwO|G`~KZ^`fTqd*=%}3DumEMq>7*v z0n4i>R#faA5xdxZ6dut>1PdynSm-1WS_&bJ^klQU*D=s{ZZ~yqAfIug3ZC9lGDH4=#sx!IeW7qKdiyA0R zK2FHap(U5GZ-0s3{OT!L_=JpNVseI3xSmLrOGm+ENmk>znF0gV4kar@q*TPy94wJ; zC7j%}FjM6zMvNgEXd~jsC@Ue!2|6J>m*ixUsf2|R6X1FdrR+-9u3!lZS%s$a|DSokmCr4Fmd=rn=4en zA{xU{1Iq;QyrxON4z*$f6vS;R$88nF9X>eRo;>JE<)8;bLZjkN_ENhNkk10Td5~+M zSBgl5&>(2({xQ=~Pp)!BR!&f`yb3uj;J{Q?4$??jD9^;_CQPEF8d?_xQn0w2_z>Uw`YIN*4&Y{H(4=bDkWTdh z7Vk;tx2Uju=zo^$uQ{Cu*KOrs|1^pb38?$N!&|Oh!zbT+79Ft+#lc5Wbe~Xs2|N0m zdF%VX&!M9;sG5%J+Ss;1*|iAAeQIjrEG^ocG*e=F%qCrD;)aai_l%avP7YElx@RxV z-tt~*q75XKdJN)(J)OnjF4ja(W_|iu?1&9jVVt5RDKMhDG^Dkyi(Olw`;um+5BB36 zk+CYtx`x{8Il#yNjYs(3UqtdVxh3VYz0^R^x)nMW*OOPrWxFq|^`vKp(A5Z8dVLr- zB4$R7)uH7qHJ8h~ml$L{-)6ua;f4GzhV&`<|8_QwWfw6@K5kyD$XuF7%be+%EK8^) zs|?gcg0jHFyfk6OMHe|L0>Kght`}?)q{>x0N^0Wg)W_%Xt2ZL>(%#d_P7jX}sv?y%DH|lWAB5AuoNQ{Ag4qY5*r_vwD zxQ9T%=&2kZd1S|MJbEJ#wgvkfwbFkmmC@&A7W*7aUebahBL2Pr4<)PCmv>63aZ!Wh zHc<#fp^{@*g)yrf`<{}6FVII(eAPhghj4Z;NZ(muJD>>ChhLWdtd8hLslv5PqEQ{! z%HS0bv$VnBCtq2?+dsU8C$>*<-Hltg|L3oyy?u=Q&^|(fMChB?nkmhsHQy#7XyxuS zp_;?|?1$HL&Gol)WS~fA*DOB&u{UzXSq|33gQTWs2v>I#se1*_ZqD+~kNt?A!AZ=h zPPuGJ-md*3rWDz?N!Ymmmx~Sd9{=_tl87Zw&{YlB^GLLW(Gp@8o|m|TxNtQ;u-FrOcdt5z zr>Qh}^{lNvnR>C25%(>{qUh%6FAs3k9i$X3VP&VWa~XN3^DN9M5iU8 z<3;N+>K0;z6BI@^5h4{FENKueOp#nkY!j;*u~tp!WeQdwWH<4(TQ1@B3)b*~58uJ$ zL|&eci_cq2YjTGC@NQy)w;|lLJRzT-#-V^3sliJu;`Y1ua?kyTXo{(P@#Cj){y8y* zW+u63eJ_95K1FKKqq8y3l2;h=^_MJ{m@1sG4BSXHsX~H%{Uvtw4sfV{f)g4-TzN({ z)lp6Qe<+oaL2N2~=_V$sWF;~}6d^Sna8p9Dpt#AzwO}-naINbGF8e+e?~=+`BSd>j z&}~TPcrD2Gk)4Cgi*#@bdC?q6?T_OWrBF}tTxrrQGi|&wWjD-NCXS_rsIL_xq#*6N zgaptmA}7@2*@rkvlpQ?|&us7E%+nXJv@3$28I|#)U2O{A`uaJ1_@+&)-#X2QKDC9f zec@y}5;hc%f|^Go9=s3Y^?Qya`;~M1ShZvcw|?Ory#D%clSoEbebR}PLt7~%1LUT9c39e7rBN6kNn>RVpb=Z|HkuQ2d z_hkBnLS^#V3G}L3GJ2K)Ylum2oCdW~y5<|M&Qfzet7A*p@9ajaN#YmE_!B9dvMY_t z1!hxJ%A}P^8kW@3+vHIi7HnM__v|=y^PP9z{HE)!yQTF1ci#RPkAG_sS-g0$GBq{* zYE9K-AxJFND3~c+&68|Z!RQn>Pw7Hl6M^a|_z_M~PGYTb5@A;`S8WQ4#h~BE-qJ2c zjd6TGO<{Tr#mdVWJ7?*XEt9%Qo3o7&tKvG5ngmM6x%}pt6#Mrd<)(L?O@8!Al4=fD zDdGuwy+rH-L{N3YguI~Dx7~f%lQUd&_N&-<<%N9v_TO^iiZ(v-u4UxM))Vz-_ipBQ5BIZpR-A8qZY`%SaLMF{x$TL5{`_K^Y`lS-mSxkf0#~2f zLfD(eMEo8JCcHVU-!Z{&o_U@F!+C5qOjX37u_cV2Y!gQg+cR(-P1-wV@(u;dW+qo) zG7Fi!#`H{)=~SM4!6BFPDVG$ivPZcLBI?AEu!@f>?E(DbIP5W@uWl%EYhcI*NqBWg zR{|nopHM`jHW{KW=}=V_rnV|fGOiPg=u{;_B;pFD?vf8h_~9RS%R;D!Lo8`ESuv-I zmGgA!A~w2+;1ug$;a_6LdGzoQ_a1>iP9Egd%aXkLj1E*Mk5WjpxXt8e|8WK%{^Cx4 z^*|p7kEFT#TW7Jjt&Ec&MtAcS>_(M1ks_@NQl$DH=Hj)l7A?DH=fwfkYjcJRg zQyxWCqbh1*+7=}{gIUUeSxbNMDE-c1I`mddbYjG5_Zm1OdJ>PO*U7D-nh2xE4E%yE zhfHb8AVxmnj?-G8`!#j+{B{a$+$1+K_1Z6e;V0j3ZEd|_csQsm|H{X|wTR4~J$vb6 z4?T9WEr7u~s9h4Gq^58c!Rl0SYzJLnA+ZQXO%x=MBmwVanh-gYryr&?)?`B|S;F@w6e0?9TGOtKLE?$Yt2-9xQKK z-Vq&P{NoGv?uu$v;t?hx8OkIi@Htd#f^E-l;gn^wx%0Mn(PTV?UhKh_hR0%jnW`A? zMu^Tjjn98+A3ytjKg}Wd-lvyv;-X=cVu{14C>w{;IBhC3g=y?q9KoZ^TPjK6;ep4b z+rSroy@x;ToubraP}N>1*V+-gK==F=Y(K1XWbXj`_xCa-){TP>qmwq7g3EN#qu~Cd zsAm74DYAd_5XUZNLNugOSFO|BqSM?Mr+t1q1AYS|N|_V|9(#Ta{fQyYUsA;v-nN#e z&2pVEO4M@INp&cB8#kY#PD}CCkIiCuV4MxRGJNos z=eYl#^JD?hGSm3N^F;#9y5!jif7+NmiZygUpL)-$*s|>qTX!Gk%U|m~u2MD#ON>TZ z?<-Mh+vu0lTyyzaE<3-L+|Xm_iU4xWAYmZlk*HGWE^C~eHrYH;A{W&u6&0dk4K3tT zNKF%NZYOVMI9S@p-0(a?TAZ*N!Sr;NX!Drw&ZAfS?x6@yGK8BhqKlDMaG-n-!_g_5 zdFsxMQ*>$>yE{$T328k?2HtwfWv~A2@E?XB{y)rl`-eULtwm(pj;*h8eXmNq3ZqrU zY!HrMZY9h(*psWmK0h8t2^ko^Mw`>bJZ%=H@J!V_N|eZw<*0p>f|)}TJcDvk5||v} z%}~z~+9&*7t39rcV&In-Bm;Y{^oxaj~uQ-XXJ30PJ% zAVQ)oO?fOAr8vQPC$@9?E6$<2xkzT9PpW5qSC^qzs$ak}9sFcH!{c@Q?!h4vI(+bL zC$MITj$0T*3Dq)Mv`Exd;f6hiGdUbTiyAXA%`$FTLv85hzQ@P;^NUk>O%a;A>ru)j zyzvyyjLY}F`5e=Sa->ogIe8yaaF1fhrkC!^v)=aRJ)3bw*j&gI~MBePi)V;rqfpjg2GqcH)MTp=gB&*VXa#u71`uE6i;W8>=#|ou{KF&MhBY!-qb%iRX4q zanJn&y!F-H($7=^$&Q2Sg=CC{z;!gwCgP_tB0YTXo7eHtkNuoyclHGv8%39VlOR?g zgew4HJHxC+^}Ow^Ynd5+7So#w@{J^@?Mbnu7S(09)jea-RxHsoBY@QqPE18JJapH^ zb&7a~#-ugLxIaOi(o7X`bR|TXD09?V#PToT)`W56A-u4T>p1e$Q>D#DM>kBi}bn~G8}dK=`A0{i8-itiDD^-t9n>P7qwsz9>G-ch3{VS~QnEZ*?G-;>L^{N&bCdG%Q_6zh=0 zcLdL>s1#^xYQ&i-l=#ZaN=2~5^xU$YUOTz%nm?w6sjC0JlT%>wnBNx!>)E%v$CGP%m6KICQ3^KkL<~?`x{&M z@>>?Ls-Y;A&s~jS+#?Z&Mr-SG;p`@nPD z^!ZJ+*Ph3@C(Xi2^$_uet%NB*N8v}}3wpc{_ViYk)GOS3`?dV+PlveYflUmK=1I?# z39A;hRS`~D+RC+8uI04V4b-q5BiBz@yeCfZPPlSIt)hk<+$x1RGb(3H=~zP!*(x7P zKu@|ySj|x?rqHTYCY(una|1NQ+9iusEEWtu%E_^lSU36v16BdICWb$emqypVEnMMM ziEGQaF)NE%ttCR57E9b*ysCnnL=g5;jn(BGPfI%8heUa;4mch$Xu1SxhiVZ>fhV zZ(0(wtjrW8uT04mfGXHokD5uBwVKYnkcOF5uw!9fI5E#=5n1h-hV)eo*qFaV2ix>~f zqIp&ey)#Eim78c*A}D1WPmhv!^2BT4mXDv!8?L{fo4)=ur{8}GiB=1@Z@(1h3HKin zFA2@Tyt7|6Olp|51zH{wztuqpPKsS#37f=ysUih^b9UmaQry zFZ{rLPg9TcVEm{|}nVi^0MOZk3KMa6rM7E;}+(!PrAnb1YVN)$+YBUdttyUcu&V2YKSLXL#y`L+mb%&GOUlmvT@4$|0GO(LNZ*ED7~ce1R#mfD)AT!BuO z#L!>{9;o7w93L?%D_n8!7sfzhwJHRFrXFxJJRid}Pz1@&wrKC@5|PUesU-z-Y@HA`LaO_ z!m&|FbOWyMk}r6KQaRqZW*#e>OdjqTVK}{)P5_iTO_GR zSsGr(j?^L2H3Mh~Q%0eL3?IevFkD5F@En2LiNwZunmMm*B|V(O-Q^L%P@aAE*$*_g zHs4#(*8J1)k$-s+x#*&cv_tz3yiZ!e*)9zy$EaTBGo_}3W?Htq0buHdLx_w*MK`I< z*0DNzGPP=*WDJTAGE0Udr6cqfd-2RN`Sc|DVoL7TwURl7J-*je|96pu8+e-ilt;%^#k~aP!xmAa82KIy4TC6#2$IoB8^+tLchXQbE|m61l7N3ar~TjO*LD{t*sX zDU2!?C+`LwMgS-gi9}eo>;xt!CrPK%eDaf@lq9q-ed$Yl?R#HiCOspvkJ+?o6T5fs z;cH*}8o&MRy}bVQujk~G*YJy9{E{F3@IQI>*=L!aPVu?VeU`6({TuSnfANc7l;3}J zbd(cLIDzkc=R54){USGi_GU&#NBH!oKSMYi;(`m#XXnlr>F@9Vi|bfY)eMh<2KR3| zK%%t+Rcqmlg-w#v5>*tmrUeWg9KarP=v-094Hqut`+q*j_}~oY>Mp7xHADrU#Iq!; zckI6p^ylu{&XJUY?rhSLyIbkN{x`KII!chekAVNIsFt^$vmG*eFBs6t8 zVI_oP+8BBntC+$~w2;xK=qVjyFuaU5rJAs!6D7*Z*a~*!_cCrzK*T{!#3*NrXs#FR znZ)lP2$a4?St*m~O0(ikt-N^KFkY`NI-02BE8kkQXzuIx?K?dB&py-t@**-lk-n<0 zum82K*dNAGTF^zd=sjY*|IlUH*FrH`95Hg7m3^RA8%*Wqx z3eMCJk8at=k~3FQbgTH)vj@2U*AKF{ci%-Wm*eekzn=HM|NZj0#~)wEMHgShz4zWLyR7c+ZVnzi$nxdO*t+$3*@bM_ zut9z;7K`)8KmLh_9(sryZn%Nhyyi8mUcFitn#GG3)7#t2>t6Rd`L)k|?sL5Q(n}c| z8{?*%KFg(-UcxVb`D;G>;SclO?|%0$t^wg#KWk+>$u4*(Jk`LX0nw?qy;ZuAnzSUDIB89c370v*gL7<=q75F zpq2?ktQoArG)5%Cgfq&3dxQl>Cv|!~hGjC(=;E~Mm2AsxrkLm zBn|it%DP9^oFY1>MAxfp*>}e{S|QBD$kaKxV&<3c``GpW>pyP&@!&u6O#e%Z$SJ3s zvT)DN{ht;@bHTO@EmR53QphSrVYwTCn9{*amF=+|GjIig$}#9RyO^WTlA%=sth0TK zDQ}7?cN#}4VV86Gt`)=)3eS*|f|B)Va}C-wmuf>njn>dRQ^ifU-pi%0zL?WLa|8a! zc8rjTlbFYq*RJJ1Zu8m6i>5V~ z%krDw{F+aE;*%^~xRCAJx8r#VXPtGH#5}~=ZZI+G8_8RZ5-2Q8XLxb6%+6htY&kr|JI-Io1#1?OOJ&&g_(sk@>r|dx z+E4!I7*(zF@FWG@Mb%7(rqfs=;m%Mf=_*I3#<+N8HJ7}iiF+O!Z*_qRfop zWQwRF1Wc^r<=*31d}Xk~5-$59wpEda(87Kpz;q;2L>Ov|(a{rOXA#`0B}AH5aBu*I z_h)Er=%ll44kcj~lkQ^y8LCPaww*_$ql!sVGkhE?kDqWU`Z*@75%NZ!BtrP95LY71 z4tG$Ut0F5{u_8D~jGo0~CSAugOu=YV79Fr&plU&!&=Q^U_7a94COcC&=MTSr=sQxVUuWqRtyuAlbo3SsM*%+sh_@oQ zF@BYfA5n>?qb!Rpq{XWtBsL71Le|SMU=1>(W&+S^x`6nUY{Bq!RIHLuRTdT-8ZBX; zs5t!9bGZ9w2ibKfjrQaY4iBcur!$m`7TMzOWOU}#@ECc^;v-+UgU2>3W5a-(wXD; zhh3_}1{o9fXD!Bs-zt`*+80t2Ea<9X&XN<@yn7o9&OC#$RFOOHeF3GdiZf405Q|3e zb%%nTBb`o>o(hv0R_J>nO};k^<-Z(z#X4Gy8Ee+8;oa|k7u&XN*s%+I*++k3AR79o$J<~$hJM3Q6`57)tD#(J^ zvW~RGBqGS+mZ0YmHzv6G!$KPIA`d>*$IpJ#$u*ar0^Sysk`m-PQ^9*>(6=YY1Tj;| zub6@+P(<@$ICcnEjS`AR@tqlpY6&HABI|cI^3%^h!^OAu%{PDY zmRoN5r=0D7SrOU3bKBPn#nLiUIG8t-Soqpz!rhQoEp)H4f)pR1FYFD)#h{}mf)=t( zX<$KUwzQQKjL{+vDK*ECJw#E2NV{dq#e!Ucd0t4~mHo6!XI^1pLL;6G<3(y2DAaJ< zo%hNx>76?cvSa)HKt|>VVzOgzhGOcJ${zPWxP$v2+)5&*vFfxHYrTmJ32_MreH>r4EkwCQf0Dvm6ni! zZp6rz6*4&ddHs57wGb2ffKZcg=}EI0&L1UHEa0chQVXL9Lt$k;KmFrACI)S^f=@^| z-~XNWd}=DiSHAL99)9>?9(iOPTc6)de}5mVR;}Xj;ls4Ix6;s#N(l~-QL=;(<2o2-ukCR_TB5bbUu8m(df?je>hUV%Hh8?79YD_{|)nsW`TkScS+L#~G@1bkM8 z?uG)le0(8WubbvmU)V@Ic_A0At-~2RjNwJ4DmqwsI{^ElLJ6vIHZ6k2GYnrcb#@(h<8 zWoF1T<4>WQuIyrLv5pbsGI5$pD&dSvtE!cY`M!eTBog6>O3g>EP?iNmn46t_>O2f@ETAH5CYEQR>mfW5KM`x=zK0L+;FE(a z?~3!9SGH0v9Hc5_(%FzCrB-1wC;?c_3uD+JFyiDKo1uX|X16r6v^Gq0U6OEJBV(mB zh2m@+!nk%;$^fcs7ID{a#~9yVLJ=AmU$A;bhOIB@>f)c^p~!XXrcGNoa-^5>@hSQ2 zqmMq${{06S85!ZJr=B98&y!BiaKjDnX64EgWk(_~5i!Ob15m|t;?K*(LC;0p(fa!O zm^EuQk3YVi?b~;7#_2~G86G1wGtI`0o7k~^2UlHn6_#aHXeKXRw~kct3Wc(cGwm?C zZHCbhT(s5e2_&NoMiv`Y>m&tm8+280IH;Z{h5d7ZcX^qY6?Y(aOuJD3wKLsVG=P z$$RzGw9UaXo7l3qz@`^=^5b7@;H>lJ^S$rh!f$_YtBmB(G*=o$Tb{?<6*Uxxe1^tn z_{J~)#O)tiLEW%VRl#GTUg>$vv;H%LF5Njk_jcXFc3&n@{5?s5}jvP^Wvd#aw*YWDaPZEKXz+ZS68&N zv-8^>DOe0blcs1AcaP{Awg{>$xpFQR*o^SE5QEDV z7p&opSFFUF`Gs8R3aPnZ$l7iJ&xkUdspX5eK8TQhyz_P4#PtEneujFbku`Jc*gECO zyK+c`9%)E4-wQ<<7(K$8xwBY4zYEQoVkn(u;%JU(yNIbo3Aqk+;RsE2i&*#YApiBF zErBP9?nqA&Th=^Fa%o_vbF@Pgt`FTQ0NX^~@`JbT>wEj68t)T7ghei(;Y#LT_m%?ddY? zKJTYVEU#ke_4V{TJWXk@ub5USI@mk#mAbmR`D@m!`Sg}8TPFTd=lq{qL@v7IRhRtY z?w@^KSA)$(?a5)5UeQ6ZV}g=ik`*;b63`^5B`z$nN>jvLM2L?pNEVVTh|b6K4TMmy zs1%v@rx+;o$x+6oDA&5K*!c^W?6QKE^_XWHEU8aY9f4$17n^$uJpSY^7SC&h8R{1LQ$QtknW2ukC~)*s3-)s zEI)Z3Jx6DFaz{T$@{<_VAsQRI>1J%A64@M2Lb2UIHLp|r|`*;yk4Y@f^fY*cr?eGKllKrpHG&^5bD=F zhsOJu&X3U)RXMf0nX^w`&Izq`?A~>V?pZC8_THEy)&sJ%z zspH4DzLDmdEW0*uWMpt0M}&?UCZ=lhrdOTIY%N8s#bx=@HlEwk!_=tFvREsr{4kqx zQ>1b(W<P2iOGz<2Rp0r-j<-ju;-_7C<<(zUvSi_} z{t-CIKdp#}@Zk;5J^f+13$=Y;X?B(Qm$eX?r7+_c2ztYjA{^{+6erZlLr*+TtqxaRv;rdv&!W>;^M{?otlzeewCm8&)2LX#qCn zk+tBV$0k{LhRV5@twJpf(@-1X=mF?YP4VIr1LO)doVBz?`ppgwE3~%NQI{wZR(z^W zg{GKCM9X8ARlH~wjxe$=rMT+iZl2mQ#g4<{>>Vz%sG*v2VO)-~lB(~AaXkY=H7Tbi zxbVyq>H5VjT>6GDGc=y%t#5k`^IG#{tO-U_Neab+bVhT1gLv4aGhtvAdQr7TtWtnd z*~wZ$Mm2McacWB{)0U26Y51-vw2lli*F!EjH^;a$Nr^l?|=8h z_O=_uif#S>>skM&6p@ooI(g2{9Xmfe(s%R}L7#BLuCnN|CX6nZX-2Vi`=wAuKcEXM z6`HmnZK)9v#2u13v>lN)YK@vo$yF#RC8nKerrnt!=&6vCv#-#wmuw%Wq|;nhnH$!r zQ_GU{RGQe$s<{if_qGdZh&+WpaTLw2ki3}ONhzy!qgC_y`zT4<~T`V4Oy*{ zNJ26ZCK3q|59{(G6`L^u;_1iCi~T@sC+@nAqe>j0R4h{}`4sXc(&;kUjKGeH(x`f% zx6H&ui5+{U*tKUAPdL)cwOb|gS2(-{@!`Qu!w-C6MNF!o2ZG&0TiO{! z64ku!vL(0^kJ8w(h>4*I>GL8Uic%mPPEuW01ECIf?VMrnfgv>0r7 z`lsp1SU3q)9(2v|u$7{8a~EvbF?*6UIcxz63yA?b-HCZLrkY53d9+9bB~%Pj|Bhi_ ze--j01sWo8OW0wF^hJM?$Q+l`-#3S$tr_|sn?{+E-#hu!pZw&f?|Rn_AM5QM_`@TQ z{IU2yJ@5a>A|h+RdFP#1vu*p1d#5L-R!L%U+@a&bDjLp-kTM3OJYSGJrP)xW4?E@# zE=LNWKl%Cl1G!H(-tWa zH$056imQ#H7N=-YqeN0ge5Hh=1wT((^NX#A5~wy^&qNc3&4Le`A7}mJFG?ok73VhN zPd!CM2y%pZu3A79H2ugd#-Rv@T!D+}Ul+tB=s0Y$ajNX7dw+eEBm!AU$bUJX5uo zp!JuFY%BK6GC;H9Hs)2dEN7qD&YgF?joRuQidqOndH%8WphaMBUc~oua=;KyWU5z| zv~D4W6z@miD(Vn2rSE>=rkYTt<|Z&)G33SzYEhIfSy)l3c<|4oT>hFnB<exhOXNfBC*gNk-)XC$EgmRI2jc)yo8}6>tx2TWUpcpuTE0iy^^t! z25$Q1Cn<=PyW;TRpVo83#q;Q>Yo)vIMK)zi6iT`b@HRpoA_%D{T-{8Yw75C?DLL(F zl`d^=Xg&+f`5YYO`oQy{%?{@s>fBxW?D_5QT^K;L==w0j9J@h}~lKdl!i2OA=Iy?6JpJMU5my zKTE@jQ9946BNG`3%!WPb;UWPo#R~|>q76HazX@$eM3<8DDy4>2y+s%&O3{|s?BvOl z_A-<;TY8pyRvATD^0~qJ@X9VpVf3PU62NqY`LYUOk<(HZEHoX}Fl88(6!{4YKP4b7 zi5Dinr!XE;nu)|$@qrJV&$SnCq%}5*n#;=mQP}uPexuC5sb$@heLVBR6ss52(NyDM zl~PPv7D{6kTFK(!7X~?NejBD`6LB5l;Z_ce&oFL>*gMoi``iY)JCoFgiiFDwgZn4h zv9*^!|7MFUAe!)0@q%+)^~tYrX*52dYzLMG2-#)TRiU729*vNrB}W}F8f*~^vZEX2@)t(?G@ zg4*lJAS|aePK+69szU78ca(!i$2fE0YO=W~+xPSY>3u>-=;rC{T!|X4`GR)xc*(o#`21Cd?{Kva$Xuw_l|`vkx;8> zHQNa}Vf>hl8_ERPJja^O%KLe&MynNVr7Afux}?%MhELYBC~3pAt?ed1R?C3sND6{X z7*n=y+x(_?y#1YjT(^$j{!b46KdgvcbImnoG!%R7eZRT)ivrCkxp_Z%QdpUPO&j@! zams2@+UA86*=ytXl-lZmiM1S`QW!?^1BGH5@V2Q>A1SiWHH9=zuZir46iw(9+m(+8{NGiQ&xV17H0U zTXz&te94K$_WVjXm3!PauyX#6A!>mqZNT?EZjdaBbyruF%y?Brx8(=UUJ}R_@4u!7 zQ3JM_E+)DGwXTsg`GjX zvB=Bu%dA;AhtlK@=C?b1}P{@VG>ZYmS>AtLy+O7x({xnYcV2QA5@|$1%>Z{jY`=;UH;iDTjY}oLB#Uc5J z6pFM|D!u?!WxYhZ}f@_+|whWW^ii8~v)30QX_<(i}hG=xog zH?f868<8iXVkx3K5^Bl_p>Q3^nmL%ECUV6Dy(2aU_K&l5&r!C#u$eEin6oUn+aj%UyWcRK04D%Pxe;GCsV+4PhW9Jp^k{eRd+d4CRL zO&zD)cqUcz!`N;y2;~;RN&%=ORk=YLM4%e3n7T8ovxbY#U%*d(u{UrP6ID&%Pk*-~ z@q&@^_#^x>*Akz6rVND~-BmhsOdq8#jO*%>=58rr9xImU8=U0CMRS>Anum4`LRh7x z%El>_NQC0D`01w0!mcvst!m)D&Eq`s$OLOY(oL~=2;X%ozA6H-_7RctR;rgbyy_zE zzHbZr4~%l-NB#>XtV!Tm5DXosOjuXB{1q)^`@YTR-_wkh%EIL1D1+1JA)lzO<3u#- z!yYYpm7bg{-S)hQD}8IQi+D~MR|zrcj+61zvI`dlO$Z!1%}%Q9Dh8D?BFQM85u6>p z@|pU|OO`L9c<4clAhzxV_M9$6D!7vfiyw>iQFlfyOJmJ!{r&)@X&1j}bl-E&&mUX9 zYR!B9`=h(_|K|MvLyE}Rr=4-e?LWNZ2GNCDBEGQEr|lJSwDy9`64hijN|0xJ%v)SW z8C1ZuV-?jEAfB+HQ#1@)rOj-jPQ00_!19F!QGu+RrR_qq9iHT5kWA?%?q?{f zvSdL$UU^hHn;Rl$O%VvWB?(|gyq2B2Q}RMTwMkgSy8?O z2o=TVoO9Y)ePR>7*C%~YI6gM`l|vhd%zQZts%VxDS%aS6Z|8*{ZKp9Cram0w#H%mB zT-}D{9jurV1!mTsG+++K)8L0I$HTdC0?sAR-EF%NQC-uTn0|X$~Jmo0?iCDr@fl~{vPQ&omO;)GAS}~ zoBh366g!G%33H<|k+8x$-+UpRokjAK`6%g`RLPEt(P#lDYsyHVsY9*K3 zL_`qL%Tc+pu=S$!zf`JQS^vytI$|nUpEnCrD}bXDD%dQniqa7&phlzYNEq}?lo&~w z42`ClQzsOzkV-&{kgp5ookuS>}B0>FX_}2wmrp?+D6Wr-AtWk z(NQIegT>ChN2rZ%dL0hol{5eKdq3d~w|{hFav+=eDqZW0LJJrZ}+QVs2AA z{%}8@Ys;iUT_|-upOBU(KedI^=Plx~yRP8AhmW#x>nM&NqPZ){o8ELj3)^NhI`|B( zdp0>MLL{bO)D$qtQ_3F1aPpYK&cg8MRwHaL=g4JU+-hXU*P{mQo0am0QGpeclf|YSt{J*DZ7!e&eq>wDcY1P{B zEk#n@#pRSE$7Fe2wrQ?w$;2|@CE*K8|AI~^?=nkMi5nK>SS_*UrQCAkll*CY&r3*@ zAK>Y7y{MYOWWnSDn$+>Hq zxbU>u==L7jX^CK|mWal@8jZ=2Mq@(_M-PwClQ)?>lHrsk?Wo}d504di@P!^mY?o+b z9j#3@oH)0W)$>o|$bllM$(c$Lu_D3H6P7KYsi}$Qp502ZRFWY|!PZ6!eo%Zn*rI3- zU;g3+%;M%LN@( z?PbcHk|~)?dVvH&AV7eC(yU-XTwV7A6>xQbtA4t!y0R>5`&`@VqU(yTi-4$rAOu8O zAOu27NbhC(%$>Qto&J5#^PW42NORrq@CyXEb93)|-t)Xq`4^|X9Yb4pV|1#9&0CM) zuB{rbIDH8&nwP{GgH=4WZ5WNNL1arlmaa&nP4Uo{Fpvn#?7AoWA$V>b{T(*0c>5AO zal^B??~xIF>YDkmr6DLhwi7OevMWTEH0t3@K8;pg#)se9hY!AI5h`{IjLd2rI$Fj} zKfVhO{_ZIpI-CQcJK`xB>(>op-P%E1bk-91lbeC+1fr^qKHWt}-NmRW@o-Fa6ga*I z$EqV7@=*2)m~y93lq-xAp={ewRkX?7fF(gC5En=poG|TWHuCX)Ngxv} z8m}yyDKW&KNPN{$7VT>@unI{WymmA}dy${FZL`I#g3tejopu{>|0fWP|7#kla2R@mlFs6-(1#0ka0l7ooK&~8foZOKDeQc&DA3IAvXoryH}1R5b9 z?JK%5v3CYXo*aU@EP_~v1vTLzU!6dtWsrL-6pY;f=R>83=-C>^!)rVH# z`7L{K?{6nzI>h&(Ats%OiV$&94cz!oH{g_0mLVR?U}SU(xBmRUc)f=XjN;y3KaRJ( ze=P>Pdk|4mcxitaqtj2~$wJH7Ir&r!1I@RMNm>&m6;*@9ss1AwecyJ#mrQk`u&!atBM!L!` z;|!1*f-VPNOBN7C)e_&WtW6`ivIPhbFL3NlUi3tqtyLRK}zuAI(xx&6SZLKXhrEe~h$prQvJcOf1hw+ZLtimV%_G*lcRq>&Zd;zB| zXop>T392$7z*aCAlty-**<2XEzJD(g$taeu>_gTqARZ0DbLx=o8dTfB>P!ayw1c9h zV+UnY#c8z9&7hE(gCE|v343!5B-+z>(|PCM+*PNd#rF{{s`%-Teudk9{4fU&hwL;Y z(eBeU1K~&ls;ZqZ618Bc9+D{)7rl8tuKn1_ShhS4l}=UHfI=FiqzOu3I!_JCiD1Lq z5;vwL*TCr3g9!CYXc=r}jnl}E3#xa}9)u=$xhhK}V>BTEm*$GPX7gGe}n zg$tMCtTWHU(C`TNL>iKKo`3k2U!q&C;nGW&AQnxabM5(vW!muDr=P*tfn)g2lY4Oe z73(m6=>ohsRYp{m(Hb$3aV;#(v?1!`*kGH)X6Un8o`kO67zX;1cyZelo_#Tkx1CH= znyN4y6Hl9HBCC0pA|$4)=Vj0~=k3_Ase~`w_#YUZDvH4A1%x=)<^u`bvQzN2Z{3R> zFAd|f*SrZ!T3tw`=h0@kQ0g`;SEk7>pAxp!fa5k``W8xN4K>w-MisIn(rJq5 zzU3n0$><=YrRH!7s=FrYQ=2dt9>BN%emz#Nnu}{c_Y>4jU|wGj?!DtSv<)o6d#<`AAKQ+3bHez_HRs?>XScx3Z$`*#z$Gza7%+VgYBYtHb~o_M3p42H@5Q0X z8t%CN8C?FB#W-`J3Z*!WsOuqv22P0^7gaM60A+Wnu+ZU^Y?LSSXk8gX;!WKsjRJmq9@6SbEKV)N zuEtA{91TiT!+}TkVBXShc#{^SmIODnsRUFYqy`0>%?uE;g2y4Vy80A!sem(1(Qxki zi;&Cr;}h52ieKEhoxe)4IE839hE*$9IgX?WDNC1P38f;v2g*!Z&g)-@<$a5=^TZd3s}*iqbt<_YBiXO0o#wF z>~-L`PYhw8V;Ev3WQdCux)YOaeMQtuc?dmwj<0duyJvR}*}Q{w zXNC|;g|L0f#>m|V(e_uXuqZJHZhaUbxr+8s7<1wpVus8Uog8U%96EyYPG5}+&sdEX z-9@}G0wq5QxsXM|kCG}RpJp|hfv`M*xa(xgNadEyycn^5hA!is?>q(bSJ-eXJ0W`w z=+ODp^tpLy!CK)XTbmt-Z_Gqu^A}S9f-qcj05<8f03U38D80Ra(ev{TvmSI(nAerby zIu#Kos06&UZ3jk1MsV*v_wxAvd*5&FTbAwOuN#(XhZkXCSkm3 zEgt^GeKUpC`REbc{@4UQ@}@Wz^e^CT_}mK< zsJhG8uGDiqsIyO^FA%xJHkKl&+bP_9>z%M{pBwxh1sI17Y9KVdC6;WU_ps~+Jo4_9 z6--WAcyfCdtLAhgTF4_z-5^(nW4odsN9*l5obeEyzv@+BOSUKt;UlHQ5%zSW2La=aW+5WOl7yi2A2KRV=-#3yG5@Oh+cT>mdbbR5_S-G#yX8S=agC%boz&4eUF3ROl)a_v2JY zLrO~t_!0F~JfGQ(C4vOQWCLj1ZU_|+PuMciY0(-o5Z5&5wCR*O*L#W_LlPRoQW52$ zd+?D<&&K&{KaLx|{}_I8-v(@W@(I)&8y|f8dfrgAsY&d~ISAE9&?XI|C8P(&Pl9nu zse$E1u<`L@jG#SZg^I=fMJ!rn;Q3)6pSXDo-hb90K6FY3>Bb=#C}B|)xcaT9p;4{E zni<9W&X|v`wgke%FG7=D#AFL$GYiA5!<9P_)|vwknR^G+C?h5H&6~F%6iQ)wW=5Qp zu9&cx^+~|00%l!w?P-)LRRipX#D1^bQ1$}?9`#9ri5T6qMm2|MQbxKz0VyNAj}0t@ z>kkmB4*JRl<_^w7Bos&A%n}T5*@Jj4kC@#Jl>m6M5R&3kle|$Rm9<%fntC(Mmc+=? zRiLo)dkz|v2vqbcGHl1j-+%7!anj0Dux-ay?A*Sc_k^&rkVJ-~)7Z0&M5P9$Rz*dt zqE!te<<*ghdsub(Nid5Q9I4M>c}o;$CX-0l@~}Mx^;iZ^W)=MM@$GnO*g)sn_czT7 zLb`*pT|q@EaS-9Qx-TOkMG!|6ilngl6{+@1#NTq=*Uvou=#m1`W5DJPcDJPf1+{>= zZ%Sd?o*L|`ghHvh_WZLhJ@3({Ha!041`*nDf3zG`Cs z*d$&YvJi@{#+mQF4u5g!65RavOX1fKvhk4XxvcN1s4}MN9=7h9=Ag2u16Ud|aaL~{ zN8n=X;c5Ky1N+evKMC&{><1b{m>cqN@rpj|-e=*gt|T%VV4KGv8)?*h8TqLRbi_%e z+(d&E(8#!(V~EZ*JO$SI^XFm10}tT#U;Gm1tY42U&&P?E-=)Ld?budN2uHE`S+7`l&We1 z=8d@KqaVf8_*5{K78)dy9){~kbLsMedJ}u$KU%iBbb)dbi0}E3=mUV_OSFK@ruYu=|nb?2W!N9U8Ji8E38&t+( z&_0$4d*MehJY5yL*s`!{X+LiJ{?%B}S%8^4ghu{ZNKygtW*|!%Ts47HKYj_bvcK@v z+p%NcFlOpe%}9=N{IUr#N{Ykb`XaK zy1`&dKcFBqTLbbNh$zk19*6cROkJS9fGe9wELG5crjG2B7TkuLIC$v5XI8FUxoz7v z#vA>Y8gcJmjW{u_vVcXZb=+q(! zJyj93Y?nM%qJoemi;<2^3Z`C-0~DQ3P9SDP5&)9r(;|xRwW3tM`qB!evq4Tbm|cJOe~Ac6BklK|Kuk>iFCRJpZUz^@#Qc76E45} zGGy!1VvR@zDJUZ(Up}E}Ep$6*J%}102}Nl(2;*vqDa$s(=@6uZ4<$rBlPFYeE-Zf$ zAooE-28v&TBOid|<)B1!2q!h@WU|YXH=mocObztp*;-W!FfD!)&F&)*MfL&*!C)Nh z*@(pA_}`!Y3=SSRglD$=9H05Z=WxauXW*W@?+t#=g|0|Y$y1m5I)s*0H5{C_acuu6 z4i1-a<(h7Uok=+MG}@v%8r2$PufQhQPPhdRZ5hX?2`F)(E1_V4W?~=~N6a-b(38Nk z$Fdk6ccGseMWZmmUP1~3@_bhHx7of@N27Ke-|~s8-h#O;!^j?d2w{HEscfr|tTlu9 zY}ZC*^acFI6<1)x6VKzBP5V%F!pMYTh%$v=&<^;ZQ8v0kgBh8WLd=i6tPJV)BP-M#9<1h=AC1 z0`pXw-QK}}W7wlCl(l7<#ciT;GCHeKihf` zA70T3*Ulqq7^paTggp%ngs`jb<7Zp;K#O)FWQS2y!bp+B9qMRnHNAHdU zz3)n7GIP-0-iA~vh3v$%*aVKnj)3enM^gfNh$S%u53d+KZ%g;A>P@7I*Ad%L&TLh+hYz7m5?07 zeL)KIG$DNK2c*TI$0d2qW5-7#700p_%kiH-x)~2W{2)H`k^hBsOZ)6*p+HH3=TTLR zkxhj*x(p|xpcLxDgQEpBo|?qR*Tn&+0L_RXkuuPrDU#8R=O#7WxjzpltYhIoE9U8S zyk)Qh83OUi7M3rH;m)VB*iV4EL_08ZfCaI9*9#<2Y^G#*x&=jw@yBXuYr*L!>8R|# zA1zv)8Ku6busj9P2_(u~NzbJ|hL}5n3r?Gl%}?%w?Gxo9iZEHInkHvF1TD~mtVfnv zCyfQUDHHJ}0TeTQ9WjFL)2*hgU6ziY6(?SABohgE2Tc~eC~sY8uHZq{)CSs?WH9dx z7yIwekseSYH#vUY1?$#5@yL@;{*gWB>jsfTBJu8e!&<5NVVG@YEPa13B7-hwygEzv zE1nQZAvB@+HXzQ*dd}e55t#MmqYJMGc zr6@Knoqke-JivGn90!u`FX5Jic)TJf#FVrsBY10gYeSr6Xb3kgOUE z%f$MD7!K|l#p31t*jy>$_DzSesBJmcb;OVkODK@gk7vSP28l>jA^RqeB&mFBiHDJ|m(aFq4j$cf1ZNiJU}dY1m~NwD zi$f{vMDUB}Msditanh*+SeRBYI8(4P~n&nkt#Ja>LrhDZ$0hYvtYd_)kGNJhlf#4n`HQhZ=h!ee1 za5>>>9`vrLGiN9MZqVeWL)(hg(YhuMb#o3%O-Es-eAWT=NGE`!FMq$+4I+mQ9a?W_ zVVIVM#M}tNJqpUs3oTtRoER}3r=9! z7pJ9(I@~}|*`cS}6;_ZmPNOb2iM&LJz(+^8rl3Y;jv9yShxq-7??PTR9-Z&>WX(HMF;8g1{&RzTGl!df|yHvMwno1-KvKi}xhPsnAZ5 z`2nEia-2Fsu{bD?eescPn43>Q?;M2|=|V^kp*>CaD2MF9BBl?Opf7GkN~1mOipHlG zba^Qg@>QNDu?7i!Ch~4!4KrufZH`+U+$)pWX^@b>Km5TD(bCd^j;;*u`sFX#7)uhm z-CVX(g=f&z%@^9DlIf!@WWdd3AthVkC*yc(&jePU-wOj1P)vdbB(Qrpk6mMvh$ajy z?Qes1U?)!Qh(oCrp%@+-j)kt)c4SgIa-{|HZeM!gPS zPQvt5#OPrrsDUR#mLmcXh6YP1AlixHoQ=)f_8^srArUoDo+u+scC4<=fz|f~yq(6x zBsIyJAfCtKMB+deDSgC^Bjg$|6`9ApzC5ed#jAh9@c#{6vyZHF!eKAT{486l39Utk z9#^^f>)L23{ExF@$sR3*Mp`7c z?Q#IQ=DLsIU6);sZ+zohXwP(@qqBp7XVpqs2qO{bO4oQ_cupP)kB}`aNklMr*h95g zM9cgXe!poSmb8SiIFp2=lI~0l5A8aNgGC3YuIfhg=zg3YGjL{a1h9_5lp63!S2vSH zcP5O3Gi8)=4Wx}Q{Awwvw?rl<46F(`XFTv_?zp$hb=pY(Al2Bw3$I)%Mz%gyCFB~u$>SbrOsL}jE1K1vLp@! zi{SR8@gj+!tF!8w=r0nL#5)0GCLf0m{dt$*P{8)<2uBl$b%c=JQ=#KbIdjDsD>gs# z%;uN>$ZH0XN~LmHy`)UIdhyY1GU5B7U&hxsIeW-v%OD z7=|2Tjtiq2B!^jzt{^`1bcPn3gAD12m;{rTxH05VR7$MCUw!6rY(JJ~%Sqd>GB9Vw zq9wTNCtt$U(=1C?|C=6=FCNJWZ^G~8Yoke+i9A~Z{z~IUrxLOf5OsKNPflQI4pq;7(k^@#C#H|OD8CmdV ze07$gYc_0t7|uE89K89>7olM~c-vdwg6Zijo_z8NcJcEian#0Q8Y6;PvVg#CzKwah zjq|%&@$gs)c4rcHR}6PNa}1xo^i*!VkC$XTJ5)gL;#SOy)^LGb$GLsIOo$^IxIrb0 z4WwfddNV4vj@roP9JI93q_M>NPiQvT3|q9r)bkiBlSG5g9;YOw3Qc>|U;yO>4)P>ORsDb9?W>Y36<|!0RbQCIeBqIts z2@opgM$}G&<+Y+c(u!88fYq&GjAbp%TiTAPVhy3*7S_f*lFg#VqDgVo^3&+nHFQNJ z(bS@amSw~u5@SW=CeFsSvG&aKao_zL0*Jd3gH3=-`cx(52uIoO3G`*$Nd(+DTXBtxMv=FOYOpZoMR zr}IC_V2k{4#Fvrzo+l$ZB8DcU0vv(c(B(Q-b++MX*~Y#`9j*Nx7#TW(f}_H;B-AVy zT1dfy?i2>xahyND4Kc?-MQ=gfwV=91USSmt#G?|^Eh<$XXw?LXEf8<=WlM~CNwYM6 z5LaHX4!f_q82{&{`*8K&-HegHy%O(VzXDQr1`)q1)ca!HxMRcJn3yRrSBmz_{FMvv zj`LTejr?_;2KP-A$_5=DrYkYvlCUS9;z6**#4qa4kh&cS6>*m0i@t@+zy7d{@&5-R z2~`A?HM+6|#n938<(Zlqjla_CUp0sni^XM?O67FAXFQHSqCli8`a=!-t z^6Ja*!lC~_$ae72%hzJ<`ehh6Z5=*;|-f5}`N8y?5+9(f+m zU$zEo`&Ysnn-BrW7aeg5A`MGIwdy02RFTjtfM4V$Z#a~}-7l0dSut_eqIPb~N=gw6 zJqPNv1JjLigZPC*!${0+gKArtTP@&%0n$vNW~VLcQECz!K9VsN$OYU8Nyc-}KhG|8 zH(Y-sw(r`BuYBdp(5d9}9aO3|mk)$W%x8%j~;`O?1i?t8+)dTNUI5G zj)@Bg!x)HJIJ0XmY|F!zX%E|uO<`#UIK3|l!>L1)YiJ|JvgKnk=L3VGU=76sYjZ}T z@x6)qGbkV0fG>XN5`?26Jn-;V{N{I$;i6Tipi?n5rU_uBe0< zMSHmc-=ppDNLd2CPDX4`+7U_wHLn1RWCnx~}&0Gq=x~xKH|6qxGB0;?xh@AU> zfDZq2E*{MXZ3=G|W-g)8FqKz&{i_C%AN}Y@r}&=VN$b}-KY`d>16f$m9Eq8OLR3f+ z(fUt}e$t8mlth=9y30(q^Myp8;x{|~B0Z<5%hOs4C4?T7714yE)RtryIU>6}GSjU% zZu<7GQJkK^mp*j`K6&*596Iz8_P^-jJ74)RH~%zpzH=JRMm(jJg*>TTcw~^f2B&kjBdPD3r=Lmlcu}202l+$2DZq zQTRi}z>$r-Y4dpe@h7nT@}0_b zpFD#1y!-ul*E_Ce{*ffRP>c{yF$7n^gl~J0Ga=YB1t`@Ly3vkws2#c%L9C@6ek6i) zw}T}lmxbVAw#u;WG7LR}`|sI^yYKoQPF~f|+!2r0SmslnP@FP@6C_m2WH(VmE?362 z*Ib8MwS+Zm)?(c`=irHr8)1<_d5}e^zKc0+2_y(wTKC21nY3v%386+2eVT#`J2QCj z*fE6SG0fDeXiY|;m!|O7D@gR(z@!zz^$+jHLx;;)H8+B#-BFVBg=ad@R1=wYgCF8- zfgT<)nIX;&eFh>^QnujBHk_yoDcXkVX$v2}@)CUE!>2>Fr%)lRh+kv`ujbXD<+mW> zhgrE#DS6O*1FoW=LRb~E&blV9GYNEA?(X`P1Fc>wJQfA{gtFICZpzHFWnIu+fj7Zyv%ai=80S~8sjwbnt>I#z45M-$&WEA`+$p|Rq3s|^#{_GmkJ*d?!xUMg>PP``A zNC1i`D3j>Tg27H)cWnn&E<=F-FI+Z6+F$nHcduYPAxi zxWbKXVkuKbVb_E^9c4+5UxuofXjIEMZRLD?{F+O#aA6Lsn|2_QRhd&et$!w2Ll**}?2KFZOg-eX)%WRGv@;n%g5(XnFtZIp1 z*KiS}_ERV|5X(qNIdv30;E`h$+_9^S-qk&5Z;{cFa@j_cZZF9q#9}%xT$QwGX!PAw zSPPtS#2|r$q++N=2l2Tt{2D8k^y8X$&p~PQ86>0}B%SnpqaaIQn!M;VfN;e@XA)Vj zWie81^Dw<_7rdFh&;!)4BL(0uNC6zeV;&6w@yIr_X{$oE77BA_#52ReMxH%qPRK?6 z+)GT?XiiE**Jjla35UwB^y*g(B5!{4o0TI+j?Ci+N0DGqQ!pgd(b>8$Xr_Anzd29% zZ#Q-RpcL{&Lr`vNWcfI*vdKLde>PonY==Ad0o{^sw8A}P31vk_-Y$!P6HXyM=NydH zL%99EAM@+$QU#u>VNrKCzWSLDK%Lo)Fi#gMupAp*X`N3eqTzG1i*z#hbWmXvZh*mG z3RJDc8>B&ctI#o5me692!&)*Ad&_CuaOVMh>`e=>q*cer80pkEkn$Vo^&40>rvo9& zwRQt1AY{pA^0?4B%22WOwUrw_@X_$Ju0x7J>p=u26w#dI+lm zhatwoZou62g=Hvg)bd5hP6Gx7TM9C)Pb;t;lpuJH#58k9@nMEM*p3NDqD(9b)lgZW zj&)caJ3u>1qN&Fw3o?V(=;5&nS@_io3@!nDHns940pVs~lS~t?GV-}1y1Ke>=dbQ$ z%gnLy34HdmpT#pzKP~Qma9R^uHIt4ph^-9W3A!&#Yj48%L|+}=re zW(l!$7b-Cw&z4pE+w+I8^1MFucW2OD7(+)ygIBBY!9eRDji~&f)-4AfBV&W|LiS*3 zCN#qF*cu~v4^IM*yf_3W(t@J81WsIsX_VP3*HCoWAn1FMtw%`yknA|5PzD=zr}49| zJc=*=mje zzuq{4J-d(MvcJ9rA-TXCo7C3$hEcjn$Xr)oF$7$|<64aH67=vSv=E<$PZy40*{bE( zaQimY?%R#;zIO>0^}5*h(gB<^kip!R7+OmtX&|f#=s>S&3HTZTl`4=`AFXL6c=($_ zybcyDSb#-~7h=__lkhhmzZO6F$xrZ`d+tXzYoS(E5g}nDR|hI2%-o9>n?wvwbtFdYfw z6DAg0QOIhM*N%YO%+;aa+a@Nb>zK%y=pJatoH-dh_Si-Y4$jAlrAs-8_LkR6JLX;{QDO66%=< z)-Rm{Z#0kjhKIOZXF{Uqkg~f5LyvI|Y+5yexFF;&Yt>rZ|0D3COxCZmj`EDdB)#7} zxET*V_8g+RiaD89%$d`IR9hVBmM~)RC=$^mTG;haMrZc`e(}iDc>1L=lu4mXiNNs! z<2LSnDBK*UzMmm0?1fBgK*Tt|c~JTSm`R_{2{I*57VQ8j$QBs4=Djxb-4Sjfh>^0I zE5jltw5zsv<4@sNa>m~icJz3W`$P->QM^t4w7^t>(yodmKF25FgY=U+wb0p zU;Xwe)GadS7M4ITO)OeA2Nzzt7NZlJ(b9h*Uf7}H8~^ePq+$jxx#%QR3VUD#Y-Hk{ zD3ZvJgbt_#RSxLXtnKJB2u^ifEYGxK%ACXz!^M&{y?EiNVeFc+u(D4=T8*GP6+_so z3UM4V8>iVoxDyA(J=tLU^0d>2v=1=i{5-{3dGED)#Q(J*!7r zu2`rxJhUZ+?4!hV0gvKxptDI>P0`)RM z=9|SUC=x60*Xy>JtOWBrA=Dk@owA0>=@Lp+2aA&l4lIinF2Lahz9*s~ z8Le?*vY05#GA83uG(uqXXovr%^SL%~!E) z-_Y^pk;J~F=f==vXokV1(!%~YVi6tgj4SeYsad!;OQ&G0><0(z%jTX^Q-k&dO_}2& z-EZuYPjDP@83%QOoFYj`5P#BCQ68_sDmx%X8WcCz(%v>UK0NwI@Ary9#4rr6(XdN? z086$kSB&yx(Q{B{@%QeZq^9&oS5O)u7#H)xbF(Xe0|(?L$r{Kwf$xQ5 z$Bx0aZA?r|LRSs+_6+c6nVPC%I%lG{Ltz;(CgD>l)7)^LJPX*8njI&4XkH_GJQ2(~i*5-B?8AyC~Qhz?FoE67?TyW|g7sA;Q;_sTXUpxWU$xM6e|MucRX1 zaKQaWS>^JZfQ~k80Lt449OwyVwHNf2XetC#^cFI$eTYTEFx>`ch{q3MKX5Pf_`9JS%LVGPk>8jmVk5|KH4icZZymaOZZ=S)_nZ$>)wF{i^F)wd;bBOcTNU2kpc<0@4yJY@vUFr-#&X5 zq}nr(d~=orM&DUx>pp_SGf-8SGW*{PgHS|e>AM* z9zBL%-tkM+>ovrpF$|BDv3GwKtCoZSXPSX!!iv`qHnh+E3Xz-yP3&gs@MmArEcc=b z(HC{SNDo&T?pwFLge%^2B`nv4X_?&ErH6>CMb_Hz(bi%h z9BsgL>M-mCQhEZ#P!yF|68V&mpKck#!sJ3M32R(_)$3(M+vecjy(8#8xex2lUkQ2a zAeO{boZ7A(Ap?PBcw&;J%6c$hQ20=7 z_zr{6ID28Fb^z3BqBcc=KWhW_Y8RKOJ{>orHNhpbcRbL??GB7>DWUihNqv$4gfsH4 zx4-k>zxl7C_O2_(=Td-Q)VJ_6R^3>Tz*}{)G#_B zz-0e?_`(*LK!)nmfD=zEDQ9kZE=bfQ1+Yh2!J55?sk z2=&dFheK8@mIS$IU~1bmP!xy5V8^1T_8s2$iv1A0RuK8nhd%V;%{TwYNWD>8Fmt$q z(r`OMtzmYv^Mi?j&%FTo4QC?FP$U0=EPy!XMLiZkeu;Vw;j=;jDwRMsgfSqY7*+go z1L;5n@716Th6WOj%X*m6)O>ic6sq~haq)Z;`k*dQui5Re-6{+(f^(P5$62f5qzwaT zi_p<`F8=qIehxzu@NmyPPV%A8X*J3SM~Dn2qg=IM(m+Si*vga3E&39w$GRmwwv2N_ zQ5?3X(Z0AHzklc`R`n(^IaxzrMuj6q@z8;3?5F^9I(77>GwASjw1%Vb-6BF^7o9B; zNJBQ7GG?Y};@jW;7M3htf~m3%K(pi8GgVpl?bch`6qa~ z$U&*_#_ro|U;ga)y~zOef~{*CzI*S?4){Sg#L4xv=lP_`oY`VVhMXIql( zN=^x)z5nhO|AU)W(#4~7YX>qJkQ<(mwHr{0X`IFOngGD$4H@&=PjH#m5SI-pVs z=xjg-84P&Dg!cGnJ+oH4w8&6{A;pRI7M#DA`5n~1b3&_fC;}@f@rVd1BwgV6H10MrRdg|DULT_2 z2%diY3AE4Yz}~%kIN-2$sEmLp2rTH1z^~+k-dUC8iV@eM=!izKpr;*APEX@#&BnB& zGslJgjI`wA)U=EaX9j&y36XkH^kmpAQIr$RfF{9X+rZ4U&Fd12)1;)rtX*!8MH0D7{C7A z91bEbX|GbQt%!h5%~#gnrgB}?AX^G_#Sn&L0jS;Oa;CwMc<#fw9=FALdp3or-r#B8 z)bY^*{U1jX1B4bYjmUHxwmy6WAaJUppuIKu`~ST4<{hu~ey? z0JNbg3r@^r0-Hj?>XqSzGWfyWTXE+jdvVT1U&7MCeuSw+qDGh&#Y~}!k&$VP9;~8L zsbgm107j;s#nFi(b{#m1_O1wQqN&sCrNAhdN&+fvWFO(Mf?AP4ST>xL!Z$>9To#z7 z8ru(2Eyc1C^&03QR&q}mho>YI!g1894k}R(H9BD&Fw~r|8?swNNVcF+BU`o6m1z!G zWd~dYiU2s#B#N8PQXrfy7^XsKNBI5x z@m=}j>yPj7%U|#R(Z9K_8)TP`81HgM1RjqQ;&N)T%&+U~pNF2_KIoc`J$v?`P$&d= zLWv(Tn%WRECzDp;c{T1M>7I#jbp|Olg<>dy!JcmHIB*#Cl8XPbR1JQ%Mkvm5M0 z*vcyh8No7bRtloK5mW;36(3cnjE38QuL?9D3ExmALIH)EQ(}ZE2dZd3WRlP)L^Om_ zw^wRl>9QsG&Exy=rLX)JnRFbLMg@gx0fn;7oR31Tj7m-13_r;0y+CK9Qg&e4GD4mP z*Rq9U7=2qyV#<7XM-tmd%NU=ru&|SOtFlmJBgj1|mIRpqacT_LgkGJ(TrG^eoWQs& zV{EzzFOudACeso^cUuaYU4@q)L5!?8sWIwSFuyl0098$_20ZljcB8wi3zxm~GF)}_ z)wuZLi*fGR>+!^q<-;?NWO zkaslLiX~JxjV3G9*>4Ip1N*S-F$b3XUgwavKSV25%RW?pBMV~2XOg7cwg!is@96a+|bc7=5aYgTKu}uJK;;=gyt`n^L*>ijs(LIEZZ6uwnP2MT>Tg z9UMK^o^g;Ef;rH@^?+HQVL}02UKuZ)fY*|zb3MoT10K3IO zLo2X-x9X|zlsdbwhbeiJA_5!9>Q--3e+z$v@bu3DUacr`NBRL773?U$arG0&9 zi5Q6FCNZaOqEoYBDi+J@4Yqe69Rj8rV8kTJ4NQ%XqgJcq{U5jrBctQ!>gvFXQ%=Ih zO^@Q?$BOu?cMibzCV7-fY-nzK`!+X#O|yYI86RzPqrEUXzVs8!=$W%xKQ*xJqcrZ1^eA@@8Y``VZrePRtW~IPZ3{>fmDV2DQesS;9v+jT}ZDrp%~DKdqm?_<^r0SP-jpLH=xnl)6k9r zzbu;9O>9ZvMtU@)=$!&gX6 zNhO~-D#9KB%-E&YsyGD|ZlKcGOcBz#qD~F|V$oiLX%i{m7s_WfrGP{$Eribx0}0rW z<2q?IXtDu^ECGlILbD86=TzV38zD*tuT(;#LMB0?oKZ+1*AZocWRnbl49f+^a#c7= z6tK$t*;!=X)tSIm)>>hxt#I5tLa6X)IIK3XcuotR+A$8R09Qb$zYatr8d@{maB2;> z`8<*YrT1L+r*Ra6J#PowBA6Pf1?t=qN;MN3Havj8`@7GgTqU>AdG+>7owoD^1~ngVVThQ4;I>I-%ERSdgi$ zR795{!}J_v5(;Mx4fKof;LSR4h0BSUZ5td#eAvETpeLU zhCOYamRqJ?FMzym5TPp`Pu|t=t?Lv; zir0@>7<#0Ro(tMhNjBg}wB1!Gt`AH5L;j5PN_{*3Wf@6;Rq$D_!{^e19mFILWzu>e z=}_X6$RykxM^aDn!>lM8G#bwlqLYFHHC9z0CEFFgwYH76l!fjV9mQ--;5ZyXU?RXK z!IYEH7~)YKM%X|s9zrr2MkEr)k&yxp?B0$2M@Fz@kp@&1#tD0j6>xxBfg64FNr#Tu zum8FADacqnCx!F-qiB(4pw%jv-x9}>4jp4=4U02v==1BC zGc}H-QXOfl%ANLUr4w7H8rX5{5c(H(;HB}StS{?xw_d|nzxp*i@ZkN>jSx2?TheKa zh2z*gRK;!gAHhfeq6fNP;*^|paLERsv!fO5EiqUXO82O?CM7k}fF#hI3D2H^=ax9b zbo@FTy8y>5z&FQW*UKp9iYOP8kku5knpM?>LVC4?b_`g<;PGt%u3tiHM;ClQD|ATJ z27iv3awl&7*;Zsr;;=Y;SK;u{!>Ck6rl?2)#I+!y;+(~4jHj|V;P+zh zt`STW6L|N@9ndRzwApzqcNDbf8k8;-rF@nd)vdv($Wh|R$sO2Nmau7m4aM9P7AJLF zIyZ_=iuhEEN8&g%Qp8lTj@4Z$=(+{dw9#a?2{kx}!Dlq}E7>~3`q?+y2@JB~&f27S zflrJO)C%zD0=f!al@KG{8OuX~rfpF|*ZT-df|Ephh$bu{=!hwC&P1A}3GuES|Da#XH zwKU2Rg&C1)>YJzql|&{WQx8|Z4UlW>^!wg`<)DHeCNQy(eeDPwf zFU{`3C~v#&MTT<)neG;K=0Lg;Uydu?LYC7Ow8-mNe_xeS!JxqmV=;VT<`O-1J;IVR zy4kra$FCpS&(3*qKJnVqXm>}j{2a>{rRdu~&RLmymbl}r)M}*NyzGC>nr(dNxnZ6j zuhP@i!=_6X&^MZ6=iylbIVx4C*;O{KTg$cYd>2cWE|V|Hr*8NRU%T;3eDf!VSiY!{ zi`QmQv{5-y6*l~qrUsgteELp|lP{MkmBsx&j^}E4UYH%@nT{;aGclc{F+r_#oMfs* zpD1z7ZrorQg`E3RFGSV!u7I$^?&2`vPi8)8@te;DLR#^ep3?`UKHz zA5FfBRa4RGBRu$Q9~&365!VHns+FUaG+*6%jOT~S#Jih#_vIJRoIgQCn?ZLga>Ew0 zp1p@B$ooFayJG~UDVg&u722ZDAk+OsV_S?n(^O}4c~_{*G;+q;M%=2;=ya8#!68|7 zh(4G5a^2KRqAHz8%97P{zFH-x)Nm~wO;ga+Fh^Dwhk~jTQKBT3R5+dS!?CZhZ;Ct` zIhq%1rRK`3nEtZHtM{`1WN45K5f9?~^k1$(6HFi_Laf|K?>$qDKU_hZG$dCxnM^!k zCX9dluWlg!rA_3spZzRXUU}{J64B_Tj%zOyzUq-3({yd@Au>;q6@YNx>CQ`xlyHKg z{QkD`A3fpSY>tX1J}fce5S54;P*h4GPeHy=n*2bc#AKgD3gH!F&JG>O56PArkC=Ff zu6q&F@`=?aS+LOJTVH((k?INb@)({yMb+*nn0=nAlc(&s7*-m~Y(S4?*t~uX|Lf!L z<(zX?V;6oIHhpD_-j%<*6_WQme{`3R9t+~<*Z(HI^VwOTYTWXe@R!zJlWmuAMv>VfiW&vDe_|a@D+!Mo~Czn zmdR#RQ%MS>5^5s} zAKDWdzG*S8wD6-HhuAt)Cfyq0!gE$(m4`7)V< z_{_28q_f;a_hLxfQ{Zvs`DgNlPhN^&nq_LX!b~_ZCUk5o{m<~%xzfAWG?T=F+}-g(>qr{(_- z-bBQ6_uW4`a{YDhd(SPm+;Y3-*v)Q#jo!N^S$1tVO2Y(swJdRlqBGB2>fC>3MTXx` zXVkgfI;hoT^UKzKrj=PamJ@bzp?HiEC!^L&cVSt4$ngYrIV(>!3XfipCc}Uq=FhLu`_!CcC4Eqc{-2nt+D6e1e3W@`e(K?HkoC5 z;4oi$PbbycLzqITDkczq=#6Mh`z-8?vF}8g<6}Ncn-Tp zZ4@tE!f&2FNaUF)@7vS^`2zD}Nvx_uq$bY(s*IDcWA)s=W0v~$3rMsiXgD&)Vq=Uq zpI6WQ51Smz3C2WCj!M7%t(#f9c`dKF=t7*D$Na7iy1F_U=o{y!cOK=+3saoEJ_cf3 zS*>AdQ*2me;MQ`I&gS~*kO(h(6(RprG*AOShGnYMrTa z)1QS`TJO{wss8liT+3tsmV^pcfda%~BEa1;v$zp^P0hbTlh2o24lk-d%?oL}ZUegpB9B zECoMLAOg;+VJ@`TK>RuB_RA+Rrx5UBv-am);6jyeY8qO_Am(K#_p2QH^%#*cOTveY zI(>gzYs;JOyz{mL|D6rwzr2Zv=jMODY1@VkXa8jPu5F*Ne4XK^rtnOcg_qC6=$NJG zOvzD|uIrLGcFGp>^5^CFHuc}maU>VQL-!P%h|YvFO;xQ)eTewCMeIXDNys?CtYV@X zQCz_~5eq<5sYYN-@yUs=!7E~nKFvEfFDE!}8P(n$B)u$#7zYW0nw+ugBpMgepKIg; zpTCLOVi>92BONu$ger#Hw=ab1v-C7IlTyYYo#Ajn=TJ4E zv#W#3#1LIE$dvQ6H#f4bJIT>qGx8@Umiz+`-_M^c_kKhiBG&DN1MWSF6s4JevSvDp^3($;F@@O6eEyq zR}o{-(P$BLRb@6xATlN-V5lnZtBN0H_Xel#=6+F507PTlS8M2ICzIJWZnWW~x=L@b?GU-3#Vy7+QwXcS*vME9j9>5Rp7wACrnjS|-lwzM}g-8Tuz0v#J# zxOeXeZ(Q0%Q^cYcOEOW)(cIidDcQz%9)F(QUXAXvx@i!_P;s0Vzs9Ee6p2bvR<$CS zU5%)m81@-1`*b!KbhcS&vrafJ6gjtq*ALqWo28mRNlWYnzWcYEn4KNM3@VtJ4r!&= z$~sPYmRfayIyFy3s6gE+mKmUXc`jesMdS_ZQN4b~N|Tff1>FqLOgGFH(o8Hfj_K(% z81>XCb?CAu;>*P{>C8|Ti3Oq;V~cBl_`c2o0K;~|OQ*9xCky!fq7&G2y%?dv?O=3I zkpp)Rqn|X0D{*qcOmOjeul>Ybcir*d-a!64n~3~UMn?L76e!9&UC(P4y{6F}S;elp ztbR*7cKuvTrzgs^FvQJoMS5QF*xZGw=AN8Y>9;BtynBhk<*u_h~EuIhl-%3<<}w5g5qluC%kWK zG@1%4QU*g4GfbNENiJ{XXS+_w_{~d~H1OQ90YazryJlu{8jH%(`g zPSh500$EmeSp>VJkVbC6HMhzWk3Yr--uFR%`imd%+@2?;7DQ1jc^!CW|1>8@A}ncd zCh$bIY(-WLAuUUl_i#;%;MD@D&Crb)o^4CYnm7!?k?$PDI*82Cv`qY3m0GQW6^r4N zU34k@b7Vy*dLh173#Vd=N!8Uc&H3DQM=ytZ^LTprMx3#E6Y)e$8t!iY?QiF>rQWFV6wpI)Ff+`w6nU-VmOmxccDP0vl(Z2irI=rlW9?LbSj=pZo^%7(r2Pp0*MvqQx1Xb|h)Ndts88K#d9Sq7*{8bA6Gp z!j{Zm-=MOIQ2Rop|w=c@*kf+}UDDz7ury({`6 z{wX{Ezdo2fCG07kLSsw$kE0V0>amC6@V#RMeIaKi8%&dqr+-o^6(0Y;io5;@n~3~_ zM@EK@EM2_pd|lW6>d4W+zI!!WHnC=$DY8M9BuUxj7JkN*Vv#me(pf1WGO7e5foF)VHegot1RSAQ z)M<_hzfFypWUy94dAxL$Dj_pLvoWiE)JA5xYRMv$rEzL%J=a|P9^Uh}zvj^KL3SUT zV*Lf()W#>I@Jx7i3}Laal-RPVlLcM9>>VpIQqIt#L?yf?#IWc@9TTNkq%C4_QL>KG zM3(7<&DiRCzQ3=ZOll#mt*z`kIYUo6!|;^J3j-zUS2PezoTSGtv97U^az$rwc!~`h z7SnnED1$;Er-mEvU3dJB=XdU5`QjyKM)MV9g^!OBQ z?Fp7F?P15$$B0D|w6sMzbYzIGt{9uw$ElCZLai#5!>YN2fBNnq|MZiil)SJ>zUhp! zS-f}=zrFoeB&|5xw?8Wzt(qR91jNK+b%({8HLW~TJn!NlQFu31&bmGhdI>7C@T zm!tc%MVxR-ERD9wrlu9k@c6-ge*MBxf_jT+d5Y6f+0q!NC!V0mEui~_(2pZFN)c(H zbn?u>K_VJle$HYNL2=GcWJr!LURCN85t6vM8`3C+vc&f(wB4Kso{22L<%3e|m+2DhDBpUR$J zp2R&aq$x2lz43F;J?EpQVczlJgAdyO-Ob~_yNSH?965GaxcRQ@S+K}H(bxNzB5HAZ zdo6guo={d@F^~AlI;Mgd*}w@xScCkaf>Tz-e=D3;c_|ar7s=?=k{pqhlsu#UFl}nP zRD_Cuo>VPTLd508ByQi*EQ&@IC+ZPc4*4hyc#0gMxlRowqN7XSOJWYaKPPt%b>PH; z8dhzJU@{+4yL>T{y@Zc`__e(MW8Y=l^L>2ub>~nVKO(0%nuzZdD7##ZWh)F``HF6S z^e;!*bu{48C5`B{@z4VybQHcuRPaA5K8w`??^;qv^YIGzxn-v3nf&bF5TCnbGdpJX zFj$H(Di&R93e_voT$<&o?)fw;5$+q$vvZ`x*^3+a4SMzZ)wWV_2# z_ck;2&`~}{J6D{i5$FzjkY@W%oxlI?VJbr5qKVjtG{u=bU;6sj`21)8mi^D|Vt8;! zg0scXMEnfu4S4UX7h%SV3?(dTnG}ybeVoM&0qdGoE}oZUtapf6iX4rmSga&DI8-1r zzn(qMAE7~0Sf124dwv5OQVOkZnP?>&%GZVVB8bbF2Gewy@uTbY( z|Lh5oo`_#nD{_f=PLgt}hse?k_~aKJ;@02pM%QCuoToT6d=;l+lgmxeH<0D=?MHdf z8#eQ~_g@0zWsKYj%wPt^sZn&33JcnENt4n{Oijp1oH#IS z)nU?`!LvMEw?2+lOo``E$W!@`|M5**+P!jloAt^gTF*KPL1y2DPBX zulNTEiMp6soF>Tdj#+@OEIH+Do$~KA0D~+f>1q(toObM5f>Q~{q zH5GE6P-U7JZUoiQLete8{5gaQ`)ImIG*hK`OqPtY5#@yWx8*T5EL%=zTY}-yEWX)5 zU?%Y^d6{b?LBWcP=?83DGoSC@dX)V~vRt&X9m*4^o@kW0p+V7?cpywX>MA)dY){cZ zoc)CghpJh29qyxPUN?jJDat96h^3)rOPtq{Vo`%dZ^7Zov2hZM<}+9>bJp4IJhi)* zC;CM*){v5RU$MFW;fJ{8U%oGeTQ}YGU8x}uO*Ikiv2AyeCwEM7^~D*e4#;FkLx~Yr zV}cV#wHC7|ORBD{C zJz4^rSFda&nTXMtuxQgg;?*LW_$)+RrDEWyuEb)BTa{`hIWbaXYNpDC=Vs{cj1mkv z7;=nW4eMlK4G^L*Qzy}RCck`Sf?xk`FB)~y%qT~YLMP*gLu)7SsEJfREdKcy&rr-( z`Rd2dq*fj$TAPq+*D>EFtNYTytE#_;1V~7B08z~%rYEG}OsGtSMoRRUa&Ar{D7;!| z(>RsAB-?oYDM(ikPDN3%h409RMzxuly&lINnv`l(AttN2HLta`^}DL7-u8#C|Cc|1 z@Fw#7^E>-DZrpr{sv95J^~^IL)LkQ1+2sd^{Ap$B+gnM`OX37m@+#u`r?9Fo6N$_{ zb8P0Yvn*kwHGI29L9fzV?c)q{9hToB*`QIJ;Y+s6tVjT$U$Ns$-}h$beu z{w*sx@QwY9+4?CxBh^xkPkrh$JpRz*{KY%2<43pN9AX?bQxfF=@#d2(Te^;woj$%j zh~kdZQCDQ~`bNp%m>q?OfBkE&f8#=?Cuex<;XAl$^CHr979E#n*!#js=EWM>_1qDf z8sl7k(K>FwXM&;reoQ^ffxSDK-)ggd!$RpY?Hy?0d$%0qwyhIVF7J31uDJA-yzAZX zBbT4zh8sRfwp8M)U-}0OH{^$kp3TZ8gO9y&F)?j`lIdWYY1-0h_Q%KBIhy6HsVeL0 z9JUxfJ&Rh{eyqgA$zC>eHM2HlkT5(9DYBcwv_pT81RKd&i$gf8s6k*c?Y45;V?$Do z{-#$hAYn~XsoHWg(6lO^7y78ggvo7L$Zwt=;iF%;OJ0eWEV4)@8swihJ5yq6GEc5j zeMxUFukcEWUp}y(4VxG8jty(c=bxhxlsOty7#BB{c(|aYOd(=ns+LS5ZP7C{Ao?SQ z9Pf(0#fUq>L@*&MHMdelaXeXp2%C`_oFbpi1-wAyhd+)v8f3Up&ThAZ7iHK+C&Syoq?lYAhT1VBdV|=>A<4=w7)8BrD-u`Ks5%SQElbn71THKKxD1Ig6hlo4p>;z3M z8P+Xp;FjN=)XPg@k*C>G5G|?^PZz;ores(|Y88^@9BVX(T9YF60!7cH zcW9K$I_I%EA>uf*6eAH1M}Mo z!S}y^vt0P%5&11oZ`&b_Ui(hgxbCla@}7py^cY3hp%-A_;a{l@TG=EI0Fuki9&`cZ6EHE-S zpAUTeS+*XrakbFQ7BLJy@xN}Mw|`JZLwx81@8`30Pp@k3YwtJuF-50!B8VIva zFDDe6Yyu2R#WWPzXHz3l*|Zi1P*Wm9Lr{;Um{NOGQf&HaCzv&62pk)|>Y+Fas`xcW zs}q&6h{*Bg&T7?DNEBK)cKZ~gTMKAeT@jV37kH&NzTx%n`uWd){?z|?=XlxkKiWi2 z^++AZ{*DzhUtKMiPt%EGAF%0Frm0)lf!bsdB76LQWtI7NPcTPG6Qfkyk*E0tlg#+D z1an<|K?{#7N$Qj&Q=W;fM^J@5Q#72!izu#5mLi!QMRD&H=SsAPeM2pbPmZ&B=_+!w zFA$9;iMK5xl3Bu3CCNQIr+DP)C)s=OC&58ug~P*4SI?v_l9G~lDTfkw z(Q1WYc9gZtGyL#(C)s%*NAWcau_(xmE$oYX66icrQQ1D}qc^5lRNq8f)Fo9ML8(rX zR9#j!XE-@FOOqKP>dxXwXJwqJ(l}Oqgw{k7FI&Ww82=eAT364npBcyVoG`5(aTQXz z`KBM^IAz}X&TDz+UtA}mKd89^A{A$6Z;8*{xSLzPdIl|#5iBi>B}RcYAqJbkjF)iS z6eAOYsFp$THO59uWSUK4X^Zh}p1OF3N=cQU;c)VfA~Y}+xI+AJocD;z8{sWmzm-u=ge;;Vi)jq1t-zUlpA5+h|3|tovl`hRI6-iNpW#U z8pAE31P+ejvAcJilR1~yuZxqkT*_mWxfD8IvO^?gOxW&KgMlfJy}hHv6@z!Zc0KOk zeN@U*G8V$hG;n%*7i-?Kf=ka{!DHJF@Xa6IL$>5#MH8GHm?Bs5Nk@_toPeCDQcXo( zAx&MAX#%RC{0BN_V3AT%XhKk_g#x?^Hj}{=6}2o0{A$HTs|9nJyrFy7n_J0pvLys% z#K|A=7~57r&xVJdt9di$o_FRa=QfZ(XbSTmJ^#~9M1CR9KD%>Z^O>73Q%&po=bqmF z|LBetukEur{PPKxy{iE)QKS-7rI6-j|F?hjeaLc5*!Z0qls%dJKBY`?#O`OK=}LvC zs8;IK3@uuQ0oy>2MA57$wOUDJd!m{OUQ}UxGN5c~)QR{;Ex|2!y~q#mev%)5^Fwr| z7cn|iX6xPk>^*un6VoLI2B)ctyQ~^UdMdhsCnh?I%5!^;@$j~jT)n6RzcL(#hzq~3 zA5fhf;hZ(?w8d3+^i_EFc)+FI0^L`ZT`r*(l~_BYksY?fqgzj4*$SQY8kfvZa{j!9 zbm$HZnnP#O;=s{>ug@{^Ms8>sM+4=v!!|M&#wo|WPK*QW9O9G<8!^?CG< zweyR62D$k+{WwZwj;9JsmMo`hK{p@x@O8}ZT*%1lUdOk;{#_~dGh+&uUb~W76!t}i zafD_llDMouV=g?UogGl*~^o8*p1PfCc@#akK)CQqW3)!%zyf~ed8h386(q!{X# z)L)i#cF~$HVfH;uMt8$VhnXSV@jduTBdd}NS#fa(TUNc9Pk#9!b|0N&)>k<^U0`i< zGlTsu*+_sHH!-C%JWLTZj5xkykW?CI)Y~xTDEy+wGRzSB?EO^D5|pb@s-cNK;9S#n zt{4&aEtwUQ@*8nRQyjkY1m?6(R5hvSwF8~==f8F9qdWHgyM^~hc>brG$V<<&JDwf< zKev%jZ$5XkwsY&w8=^s++_o}@lu6dSwiC5kr4lL1#U);9p+yKe9xwA5h#gbNc}rDH zH$~AbakzYve4;E*C2?}aWM8C_xNlJqc_FbBww;#&&mt)xpMP_1wSpFvs&LmS$A!+6+9_44h_%VO~>CbTUnp@cO!cJ6OTpL{Jb@|N`lZ^bI zP4k8ioyNsycHox#h8K_5^P!JF!@d!lni>-O#hQ3r19Y488&Ze#H>wH@7Jgr2AW|JkH^HIftVq#gaL;}vm6`BalzVE z9Q73L?;GPMhb9?PlQ;s6+2FHjRR=5QS@cW{aGC~|5#Uxu&`KTqha1>4bd2r>opUy) z@urSrxG`M46dvWLAU}Q-Et+6zdRl(H{WC*M)f}257LHPuO?2HxGEQ7(2&Sh9vO1gE zHuK}Je}s2@=w=R#4w9{^xZU zIZfZ-^xQ`%-*P;sEcp^)e2{2VRb}LYX=pUmr|DSK%Jydu^Wvcas=MVI8c(_8%7ic@l-O8 zX_&lmb%rxmwQ;b&NZ0%p0&kM2xaF%Bnwdrz!;^Cm&1_(^fABa(qexq~$!W`**!Rp7 zTem*U6I&mUAI2MAcP-z%@$0sZy(iEB?_ zXc{Mv=lIGOp5n4gF2K&`cz*A0>fd z8nHtHo7DV-$jdjp=^BP7$N0oMKh8gV=5M+3;>-EL&wqv@W}7;+E=UrU;x>m`O5wPajHW5vlNsT}!ZYHqQ*h_0kRJ;?Faq@mH#144A44@Z`)o^4T7Eh*-t=cBK z8{_!)VTvzQWNV<}IW#r3-_q3F{S@rvPqBgUr`SYx?%dhGVZ(;Y3Ha!qJuh6R+NwG9 zNEXA?>3rRMN|9-7rGh4)Gg_EItNC-nH2DI0)a(+rogzs43{?ghc8BOuo28pErm3`O zowOT03_C+Okr+`cO-%@J3=cC3Qwg6J?SL-DqHcPeMa$t$S8U=RzIVTjt<)uYA6dqW zCmy$0x?nzCT^ZJ`t>dia%``+I(Xxn-efeSTxa$dyPW!CVGN^7=V(t{-@eo&*i3u*> zu!?uRzK37`_9WX56?w(7X8hu?d}%e+C2$IK8VU<4S%%#R@t!n|NsIo$F|xBYzP{rG z6VnAQUcU@IdV<|Y$5?$@8_hA7Y1hG0bgY_2iz%WrDx9dQ+<$VKcvlQ9p5?5|meY4~ z7nO0L%!Qf~@VB4-93T1c^(5;o-g)7*#3BuR>pS0+r<}Or?H;Id{ofqmW7jR@+|3=N zj6VGG0I%7SrajZk`D+__X6Jr3ZRnyYeu8(r)*!9E$ScpzV?qIKWdc z@s~EL_G9Zu%ah11GroJKyE-@e^VEf#Z{!r_(eqP1d(j^Z+elGHh2F z&$}#%1~e2Z6zdfVYJ_wRRyM{+r{nBDae~I~7BWq(eDR5cJTzNEsaI&KGihn5BOVh< z;WFCjG)sbj&2^geOxZydHQB^?v5kA5-N&kKiw|CVI+5Hy=`RwR5dG9?B$X{XH7$i( z^=N8nl;4k{nSApHPmrHJn+wl4gVVbeG%dkm%byZ8;P|uTk;v5n3UqP#%Pse zeMcEIeDs*;-Fc|OR)C2a%b+V!VqSz+wGrW(L5!I_m4cGxh0=b;%-N8InlB<6c48;c z#m3L(A0pA%KizlVZM8r4I)C}|N8d!mvuoEb z@wR-ZwY4=qIXU?*rJ~aR;50@`qwV}A{PZ|(P?f>poMItJyMjW*4WwGotvb-;GZUTQ zgnyKC)D1$3EE8BWw9*+_zyW&?MKyT$6znW$BB9@>k?fYVF#chXk zEDI`SUdYc-w$ivu8z|;HW``@>cxZzAj_3I3tJW}ZK+wx3SlZFfb553I%t0&UXpdSb zYKf6zS%y?6bWwtPBo;^LT-U(i2TCu&pLRUEoo#P=Oazf}?u8fdwl}|vU*Gl%Ca0#u zj2$h(-a&`!KfRC5r$zbnM_03XQ^3acGq`pMoqo<-rs26mQti6R*U_@$+1C$t67f+%_rWPS$D6 zn`e+o8&ut*tlouA!uD)(1zWOdEU!TQR4<9TH1&Z?^Md&d&rDJCElNf^-@f}WM|6#3 zcZOI}C22TB{5)ncAepbRF;&Moi5PKv8dtBNni^%ln_oRxpm(Cemp-$B%?mx;gA11-~%Fnx1u}W5S7CW2WHqjawe%TR(#hYnO7#rXEh~?qTifGw94T zqWeA~738l!eGB(KzMFTy=}gMbD2EE8Or!!L2^BvgNcUivaiWO~s&CS6iFdk{xDuKB zIuypdF^)J#s3dHnRR_IXlge%(E)$e?RpbP#J~1#H&rt#t=Ic3iE8W>cC_(nKe0u4=! z*<7EXT9bJxu4dC~_mYd}s8`bR-;XH~GDe2Do<>z?Fyl!oGg?@#iV`tuFhPYu!4QgQ zIFkd+?^#P*OC#lajcZ~Z&fOQKUqV^cx=uyfik4d18aNtHIdro+9B9zKiS?WKv zvmg5}ufRB=ZK{tZ)BP$$Ca0ze+3`@=!c1?1K5u*bn~2BL?Av!xzHLUvr)PCNr!9z6XI8N7B8U;E z$nQ~nK?)4rziO34VE}g`Lt4|wnh_2S9AQP*GJd+_I4@QL(p^bOi_`2XX0bxr_nDVa z*w~n4i-?G*6y+pMv^fkj#o<1KJD)s8^SmUlJf{aIzYot9^PV`N+r$f_iN$nHRWST2 zL0~hlKF=j*E#z$_N={zAckDbOf2HC&t2ZrV^`Zr&Or1S@dUuBNFl>(Q<^5g+kn;`zog6Q_ELT%C-cz94H@RkYUnFo&1nv zfl0GcPlMV@pEHbM#H41VBC@uknqbE;R;RE(?{l7~(v=^j!u<>??3+yDup5kk5>4`&v)?QYc^wxtQV&iW_B1h znmdbq;z{0i)e?U5@Bsh(_(?8azlb%B5D{ugEeu*V+!`HzKr*ILZ`HFSYcn`I&51nJ zOciTMl4nQ9nV(E@`kFI1IWWYcC7smv^wL?&f$(6cI(3M~@(f9);HWfb|!& za(q0`Y;OUj;LH2@j%T-#X{eVd#BbdAEle}U4}bV$+0&@0x@>TZm-ewkvmF2UGpt^c z;O(#J;JkH>)F<*82`KG8Ir00zNf#Ym0HP@J=pSyp$jO;QNvg zclSN_aKooQ&NWxRky5EF(*f$1T6C;Q(^PM>YH1o@;2uO+kP?@?TTSyxMAa~m%+*Nf z0fp=+-eis0@o5&sljO!mX*MgIzd*RRr%AaQ^{UEgsXCUY;?zX~8jTw1;-u7sNHL*r zGF{B@&0ig2*Q~<_UeiUpIYjAXpJdmDxZ`q|8ytkdB{2XHC%$Ot`ZIg@%15ulGzFg($$B**#<45LRe?u;<3(j1`S&Qp<`uI-vx<&Fyg;>JDOoSm= zRy-{?tb`w@L+zxVdTEzXU4^o4v)4I9rLK&wy12zEW;KuuY5C=NIDF?A zWOaeh@aA{U`^oOqG(Klb~54E|8RV!lz;b}V`3&%(ei-hFW=L({V)@;iv;`y|$124t!FT#l-Xqv@0* z9i-R1hQI&J@8}<#B4X(BW&iq*?`H9Ww{lr)HL@g8>?^qJo2oHcbg8vlRQpbl%NDTG zQHGD4q+ue)`W78iU>HrEq-II!wqs}IY_F8}X-#Rw&WPg9l!;{`Ozg0EVC%#3mv}_R z>>J5kG+blET0)n#06{8oO5Oi8_rzB{f`{uo_h~)Xi}gH zlhlN#M2scekOLxKX3J3d*vI~g`i2Z&``V3s@FUmp!4F&~H8+7`lIRFnac&E4T?xf5 z5m%~IO`+!zS`{IHb4W&2k}((4sY*RaHm-A`FiB;6hK**N9@D3@(d7J|I_ZlNy&s`? zwE|TxFafR=4f(*SN~N@{ZiT?iXyftc4Q@X?O){zQ=1b~vhxQ?Q^|}{92?Q%Pj3bdv zb6H1w^12{?x3ay&y$AWx=dK`7vi$tMy|Tfs3u~NmD!x*%c*FP-QQf@zbzAt{dtb%L z{kLQP*i2EBzgy;B|z(I6r>=Db>DzkifU%0(Af`?7~$ zQ^LW72(MBdc@5KxNe(?UP5GcBK}OMr*rQj!?wY^8@x~h~f6BG}^5;*wiJW@g{`R+* z)^6JL&--`o{!Tb@tFOsm3r`{uDzD^)QyoF6b_KQ?0kn}`Ms%FW) zRyj9>-TM$XTz58u10(D{GDXQbrJPhl6t<+c1zh#&Rea^+m&38=navF|AbF~aY^Dl+ zk(mBzW>jJ+RL3N(XGkfHSR~Lq4RJ2bFvF-fDK|rrgy0Jircl8On7JBGA;eUs(C?8w zRFyz;mul(U^RE8tjW^zy{d27AQ_r7e6A{n&(9o^(dfGP)og99vQHknAVVd^FymKJ%XG>?6ldOQZrw4?-+kj= zYFQUcwWx^+LCRq1f@R$Q=sxzpYANf~2FhNJh|mfUlY!#i_$XIxI-BA5t>d%b+QZjx zIl(8c>Y~+BQ0!58&#s9|SqcrssrRyYA{a~!W!J8*ky3Pe>gzc$Zu4~C zIOi;AC#~dYFaBSs)fczDUcI=4vn0r@cgk#$N-fI_LVtVkMS~kML0DSRQ(tCAL2tF`5@O` z`&Pd4#UC<0G$}XCc!x&&su+4aOHz%{;3+INH0mmFtW;q(T_GryS(8pmZ&M`_<#0LR z#qm5#lSwuT9A$MBTMq?%5jO-&=^_O{2<3#wMNG`puzJv>7D=TdGG(lJJhi9BeJ_r4 z`MHh!@As`GI=dHa8Kx;K9zlH9q#M_hr+ZaR5Hv2LYIQP|cbKjElADrN($ps#x%oRE zWO#ChUC$k(w>M9r^&gU(w3SZX0{|O*m6IP6R$jEbyD6STTo4MA-X9=5HNA z$tUK-=!z{Q9W-DCQTcUel^oBPb}^+*A>>Fwu7+B+L*~w0DvRbDB-|zjcjRDN#*tCq zP_s0D>GX34^-b2+K@@lf5N_nv%xmZ!3 za=pjCS&#j~9qBoA*YZO17(#JIgO#=;gu{Z7hoGoZC~+ z-h3WAU!kcqO;0RIeI!D(>|vxFT9?){Zz{#Wwk$zWmD#v+y5LipgW>a%k4Y>dbB^xj zgplGO^fYIi{wOogj}TETY(eP9zv;HyZu^sHLH=*g zpKTKn&-K?|?_7QL)n9mF@7^l|&uRCDVd6lJwuJ%)T$a-q#SaP3V!EIS8GO}|xPCiY zqR%--F(}ilCJ7w^2|1-n7%3*1A`!2rR+^=zRWVHkJE1TW_31CTEY)RHhtTzfy$m;t zVmK1s<*7PF!=!%6I_~)1A?(1!q>c*Ha>*GcTy^1T%d`O_6k+)mm*a|!k*ly~eglKqDo?yPOx>FKtY{IN$pmJ>q0V(_ON%k5OT_iDixuLX zX}Xui$o1tY9Q7qbH4I&O*#<%wP8B|0=x`Mc649WNS+(jMtXRW$by=+lcy@3K*{{yI zR%KqA_mZ1bGgTBvWCYdNaCR&6m!~M10{CN)pDxnVTu-DhMJl4vY^g9k#j<#Wws?~L z>WZf8kHnaZI9m=chrp$jC02*#GU3X81TM7rk!e)jMQKK9i+WDpi}F|7r^ zMy@i+vD+VG=g~ua;=NaM`Qi-OBM+i6CFP27Mc_IOVJ0K%=?o|u!~fJ4zt>C_)`vsbRQtFmQnp6+5~eVc^9nf?0`B zB8Zs14VmVB*_r<|YwC~w{8={<@!WpssY8x zp~h)3 z`}p?zyJ*+@(8S5kcnfG5#rZ)|}WWj1zOD{apki$#F(4Af?*8{Z$KDd_@D# zRr*olDP|6j(^&~Pw?&L6MlfqSn^Sd6=WL?On|Xd_jF?)_+696_Z}OAlQw)}?OeiWv z&yzW{wg{p&bYdbZ!W6W-C<(X3nzYB6by1o{Lsapo#yh#`j#=(FoMm;7#i!raNooHs zlw5$LCeR~g*-sJQQ$aPTn#~lf&AjcSzvQXiCnd~Us*;o%s#HP7!VoBGyl`-ecYOSN zyyLYS_|khXN1fP)Q9MjU#$`Y`P#IEGb~`S^QBczwe$qww?6gQ7(Nv4fPihO=S#GYN zkv5rdAbL8}O!4^4BlN1rLs|QD5i?(#16d1*xktU5#C|ql{E?hUh8HHi{L+QXzI^cD z;i*6OdglL+O+>t*l}hDbeE6`A(N!7p=zV;W#jmPE&y-|#s{|ek(v{$)7Rm@uzR{4R z=w#Vb+0EIJ)3Hd(QoD^-mY7R;v9_OFZHj23nQ~!_z%0vaft@lqs@K?AaX2$#(I5`{5~)dNWiamyzV?e_eDS8cLkg?nBi^B9OIL8kl^5~N?|hq|-2N1={nlHV=?~a; z$mTDfUY1vel&{>D0HszqR*!6v~~scdfhb zBL3sD>6`V_B3u1Oqlkn8GtG0@aeV1%Z{B zQd>yPJ)8gd=?|(gi_qWyHl|h|$hOoSx?g@%y7jaxRzp!>2xV>MuV2@m+t_ zgZ$Pr@iu(VFq_SeyyudOZocRK2fv}HadqU40&R;^B(qs6+N9*ANFYssRJIDNs#GWo zV9qn2IF64CzW5q^E| zQ+)9BcN24CG>M=WM4SkTov77_m-qAW%a-%Ir~A0$*-<`pVh6`Il?lVDl#Ue5$b2?U zgDrbwc$yGNQshKHsD1}Y1*H~9iMuh!VRXF4fq@>T2B%oLsGUSCq_2OFgXtt4%{kP{ z6m6cv`CYTwz2h*t@Xt+YoO65&xydTO*f7Dk9c3Vaw1BL?SBcM5>RHHN*cAR*K#^8e zQmrkbZMacIq^QI+U5;00Cj!23`CQIE#zfH$66gx1*?`wqOP1!irEMaHq;ur>o!LQXk4g|%gnge=uuG|4DO`ZtT7SSm9gFTRk+*WXV%o9FAF z`7l?Xxkxr>$4iTO==mkwc-v#_=o^zIo-il#d`JHJmOG!~v6;z>DD;nLx zqs9-=91W+SGI7wZPt^kZl1tus_s2hei~H9<%F%i|f(Xw&_gr|w2`BuhYi3vX!J(0l zGK9MSfnip4wxPCHafAcANG3g10)E`7GC`#T=>%K!9lYu8WUY1_x@TY-aaw6+p|OBH zZZD;vBvGJlsVY0+PTHk5!{DIp@k%M6y{0fzb*Sh%R&o{Ej1&37^$%0C1;)h06^iXj zNUE`sO1Z*K-~JAP6);tH`S^AJ#r!#)96D5z@aWAw!`%JKI9IMdmg?|pBvcDWvk46k zt!m)yKTP|)IM-dXm{0!OCcbmuAV2u~nKWv>sFf0$6Qf(Na6w#Sho{hIRp_@u#vC8Z z^YDaRq%Eu|6)A<-(v)CM2OJgmSj-rUvd|xIVE@n|?mHaN-Iidk?$VaDIJG&(v-=M* zqkRUUJEWs(&KUz8`B7kTT7(Y(;2jircnEa#>>pP{#ZoNxZ~m3;WP1lB9x zk{O^tm0q%R0q6YqBfNf~!gqi9G#fYdNjC!lP3Re^@Uy#K=ldU+i#N0b$8zX(bzV{e zhTC+MTu3r2Bq$XU@jMA5g;v#=t##3@FCE>I=v zV~OwC5at-z>B59UES3H+?X^|k~Nu{LbjP(J(Uqdz}1JbrGVn%$K> z4wKufWLgq9x+5PJO^#_oRPg{zTBv4>sd$NpCZAzW^BiV-GbJ`8LxKhRe43T*l-=E= z5_!tz6kbq7PkO|1F`SMB8><$_DQQ|It|LR(bUvT^-lIJ6Tm%mer4?Lc>sc8ed zJ$Yb+erqC`U}R*Rsqumo)@^M`FXTX%BZ9aXOTKsO7u!&2oe>H4IVfR4C0J!Gz?k_gLKZxvU7BRsVSebAFz0q$--I9GzB59Uyev+wkL5Qi6nCW zmc-)t8KlOk%-qC{E&UKAiUZRZ;!oA+^@|cCzM5Y@W%HxQ4s-nCIA6MIChnmv=o2<- z5XTd6f5Fl6RH;8Ja66S$oW7dRT`z2s8RVQ9DMD)i%^o5pPKWrq!y|b9o1D-vkK4a_ zDOY~^w`_R*Ac2~YWADeGd7konFU53Xcy_>>fkRJ5C2UTU%sR3$FTQaiot5Ckl$B&& zb`dSiA`#}~e%dDN4i2-E-4OTCD=wkndD)SkssLFEap**)k?}YBBDAa*FmGws{cpax z>HoD-`~Mf~Z3`k|J^A|UQ_B`F+tzb%U$>Z@PwcDGdTI+5za)V|5H$dW_NqHsC6Ub% zCPQ|62k7+=(`n4a6~Zx!B1@WC$ytm${ZyGEo=7q27ST=NndIQ5C!+$^1&jTBZG?+vD+hy};@^?vH zO!4$4s}3pMp+U+;YAAt$uf*|%E=gFCqh!UY$s5^K1X?qNZW!pgLP`rsG-L_Zw6goa zBnSIO87Up2b@>W(Qzhn3;Rv%SdrC5c|K*BBESf#Q_wPHzkSzqCg)O@!)wHBz+B7%g zEeX0m2_#{J36YNVfkmt0bIrM3eDJJB;#MzVb&5dv$OZwP5@)zDK}y%??H^=9pi<*m zmbSOi8uO{vY^tG+rDr4oFReRdR0~~XCBhxfaWQ;fj>)6W@3bUf7=g$_K}fXaQ*5PL zd0=bE5B{)2;&49m(PL;a3fNO+;$B>eF4=OZZ=#DHj#raV`a2MQ4aTeu-Sh!}o0}!6=E8FCW&i zW}jydhP1gUQe%@eq_^_h8_vb^Vl;|=h#)!{0fsAN2TLfLE3F~JU<%C{MDxoif|MnO zx?Y0S$9D0)v#;i+pFPM(|1jV9@H?;u?;{ybNGCwS%ZWPy!C(o)+|0MHS;#+r^-X^J z+&KAUp3lEy0SR>&-yXrNyT}EiCn5#5gvUrlD$a=8U+9Mlt3_Kg81-ZH)l|l9pMq;s zcA)0ESf+uQOcI+vn+Y5C4)jTfz|nFjK~&92lO|y!%0WJIdWw~^7W0e8$Jx+3NpD$` zIu#;Lc(QpqEf)1B8A;vSL^PGQN1II58CE2j(h19e>#lWNL$Jskl<zNcIZH?*4{l2HnL9T#T=n>ue^|nKYkd5Dy(BDO!p_7qVoC!l`37X8QV~Ew zD}!no#H^4q8h1VXI&H0ueDYmqGtvJnsmej(Mhs1LNC|=Op^ePY68!vIAK{{FZed@~ zfXtF?PobbHYz`f^q(hWOk66-|79$}h@oWo@5`esXwDH!nz(8x^+v_jm~edD@ghM(oG=&X*{O}3lNK!G+4!Z_X6T-$ntq{uDN6tXRlPyy-@}x#u=^# zOj2?CbW>G8D~XvJHu6-dwK>KjD=W<1a>|q!E{0!HXcvNbYCyEYXq&-Wz_{bwW2TM+3h-C`t@s4gY}D7ui^{u$>AP&3Ee_! zm=aSXTLs6HlW9whV;f@3o5J-2=5(~s-PXiZaRA?s@ts>9V`^$GH+<>?n1!88^}LE1 z6hzOSq-Qfeyp@@Y7qN8yEEz-=&7O&1AZ`w9?hY-6S`6|zpJYzK6YnkEM7m)naVyC} za}ldzE19Wu$Vr)aPepBtM<*WR4c?H=RSFKuR7G$*QT;fM?n!Qseb8p$^>NAM6}Ijd zUih9n?z#7#!rOOxqxH52kyl@RbLxyU&baZJXP)~{gG6TNl_^>mnj}^m)U;Y;;3JTF zH6PupQ7u)7Wz$R~M|igUJjdo&koMBj<~65enX4_LL)}8v9VgTSlBo4jgfXdD<%t_e38k}LM9|VG3z@=L4lOg2 zny?N{Wck%28#sD(3l|-GHkH0d&?+O6QzOV~3Be{E>|;%r&K)9D-*AuKgDTOwxiygg_OpevC z1>#Cawr$jhpT}z}=e)BwJ1H_|kEly(osVZyRA%i^?-ilrg#lE(%9PPfX-8D;ZQ4 zGdwoN{Kgs$trgBZcPX0=3`iLQU2ouLcWq?Dre5B8#%iuQ?Ht--BTP*lMo~v0*@3O( z85*0SsVT)je)t^>7I*Mc&0#tY7?R9h@!r3zZ1j8?8IbqQNmk)3)bLt86U_eW;lZA}f&r?ctbz1`=RBO!>0 z)!f|tyYBAJGY%gbxhm|3q4g!Ym&8$W7Mfsqicy@%M(hx~V52mY2{IZlPrk-xdN@wc z5%YyfQWo)Xtuj|IT<)Ww)np%~Qk;+-`B)6xW}kuu>kqjc?Z?pVki0IGwiD=@BfH|R zB*G=oJ5D6lFcWKHKi=>b(v;*>z*bwZn-`Fob2?xD$@Bd1S1+IlgYh8bqhI+0U%KWz zK7Gy^Soi`NHvB`IVP==FJMFUmWE2YmZ`SJ_Y4{_-Y`1 zgT;Ll7e?2@s7rB}ok_FEs?pP1WVjqkL7*ZLl_ddW0_aZY%+HvtZEN9});O)2i%}F# z_l_)8#1x<_ZQ|#393w?ZO)w>T7ha5bH_Tn5Q<=0R7%K2pYSoC>r0Sux)2!NKY}h-_ z@pIc)Hg74pm`}S`rm0duv#Qd;-t{BFDMJRtG99YM`_C0o7cw3#^Kg4 ztmeE0W7xa)qgE1VrXhPtswYOxf%H%o8DZ7z;Bf3D&baD7u`P$Kzqt(S;CimT;(YFY z_%(VDA+uHyIJfK{V$<$N`RyY)K62^VoOH~EELoJKP^j|VA3n%y+jevPXD;WIWsUsu zmF>J~`e_SgcizR;jt6%+U=AI?DRsCx=C6Ds+dT1eS$!z?B$4ctl)sQoO^%& z3YVU_h#BSps#n5S5?JxY=rb?iw)=PSi{EWTQ<9i|WDc}G3<6M05)yy>82x_Cm z1i(#TD#Xn$Mz+BeEv+Nm@cEPZ^1r{#i*J2f4qo|MLx8clNBi022y&0fxZda+gfB}^6IIQ#9A>K}vX(+830AbEIMie?R7-Hk4H@+`TvxDC zg;lCgV>ZUBh8!LC7;1G)dM(>tm3Yh~3{y-fbNT&q<2<-&jLy8m$F5$)Y0IFzeLrRm zi7*xDPvJ}Fhl1OrM2cwULQ;#~!Ob^sVyfcsvA;c!jF5WlKTKo$Va_>e5jWqto-ihQ z6)G`dnyr}ZIXK0aZ@QbN_C}6dvVeiUVYck+W&WI2K6v(OM*Ci7pF4@$sG=kzK$z%b ziGFH4mBDv~L}QMb@j0aRL_{6%Vv>{8uZ*$R>P63lC^a9dZbVBGPK`1P4y1yfQ}iho zB6h!`D8)5v*1Rz=Fz|LCUAc~kAR<;Gk$5s5kM&e4!D8pIN9~}A+7c7`*pjI!npXlg zp;v6mau2^)XWKf z{f*=J#%(>^{ND$7_508Bxp#JR`I_0}lnHRF1g;u+0E^UEv~+EY6>5h0?P*-0P3j0> zmLo-~1%D$5CJBqKOqE3wM~c(iky@B11d@XgM@vyuO*U06whfHR>B0Q8&gz6mQV+@K zF3Dg#+V>d(<1j9v|FnbC2DPOb25f`AvdX}e!$Vt#NU5;6EyIeYRyzD4d4PlsvTR_A z%Tx4``~pIqDdsA4n;KoF!f`R78*9D=MG?BYE*6R6B!TDSnqs0M%0UI+Nb$_UW^VYy zcHTHx;rKOqzWPr`vuuWga$qybst{Sy@U%$&OW-d=Ye}%^o!lbE8qVRXw{7N^_iT{9 zHbUp6W;9?L1`|7;efBl;? z=Hy(h1WRu~-~W(TF$Zh{y97#T0X6i&@M%(T6y>{dl^ z8LVnd(pEZzD&!YDK_@IzN5{*5FOb6m^e0M!gaT;=nl+tO`8;-Wo?fG!=X(0Nf9n{- zvom~Pfv~){rR;#_PYWPL)0I&3WXner3|jHWYA9=b@fub6`)JxGdKq3yd`|&PpFt&T z6_Vq zuqgFZOk8fg{c+Nq!MFeJy^L&mknHG2?)?14Jo)aE`P7ZSXZM~VnNi7&CE^i@%j<%3 zR`TU5FTot&&fUFRcrvUq+My6{6c!%>LldCqnus^HqSy%*CKj+JbrfCdT+$>lJr$c8 zk5^ydzVhP~+Y96h7W%k@B5KsS0iW195fn`?&cuK(WN+lBy=c**O&d3EeA^JJf4PpB zAR^X+1q*kM47@CxP^G~NoqkS)41Mi^qlb zrUp(}*2SUTCuo~@91m|U@s)qSi-AH-=)=fcLJFIE7G0ewuD|9i#$LIVTukMQf3up2 zLt9Xt2@-Xk6fyacIzD2Q8tNEHrS_j22Fhv*w9@vm3SqcbDw zdRHDs;ee*egBY>!CG=ca+la=baD(?HzYbHGKDTOplA&Nafs~yTlmgvw$m>2wHKaH` z(?EQx5ZRnYGj$2k7UVlAS)@$QLlo&>tazb(@2)PW_ysxkZd3D|*4;>37?2SNSn>LT z5W`hu0Fn(tHHd5ul&EPez79%V>94M?CR-?hBAL4)v(tn&if%IDxAR|5PjUP6`x&W) zeCX^>uDg0UGt>iA28SaojuJH?Mg1$_>H>uUuq=n%r%xF$=?s?0(=F;O) z`wy_;@FsQ!C59SJw0wYWx{>RIp<$%6QdK|Urs+=4Vusd2DvZm3AQ;C(<_NFYZ!nS; z9=kRat3nM*j?aU-wX8&`1_6c=$C)hGuZvK~YV^L{XZ26l5fwxn+u9i5d!`c8t9>=p zsb=)Nn3~wK%P%PO;)6FV4Yw5H7Ak}pjj1M$`-+dTthJj~8c~ST5Vo<{)L0!HV7Pji zl3695_pyakqR;?In1s!O{$1t%ew&#_j3t3a#+u@X-@Ke3-uf)P2Pb%X!yu;|cM&(; z^Dy84*%QxOuI#~3|7+0IAKn9b4i@+{3-7?z-%+Yx(T zYNJM}g3z;2gL?l#{#o5=P>q z+9+b$txro9DG}*T-i~?%^pc2TMFcjBj5UrCXmrm=NRXLk73FJ^|0?>6kspZiM;#-j zz9*Wi)iq2)*_0K$7*BFVvJ~x^Z0S+>`ExxyzH5w**(tvJo;h57ZWDTK2i3k2bl;HK zj2I<}*DX4GMYV+AO3DPKl}ajoPN?#YU8I@cH;(1u{=|{(wV~g(jTDq(ya_nPDy0y)&>`=(q!XE4J3S(ig}6l!BmlxYQyDE;@p%}4dm))5s%_UzfWJrR%f25vCl8uzFi_DMB2G3gJ< z+Eg^?q%E&7N3uM^u?kvajIhCEW9@YwEIz>{xpQd>TEUNz*Bd!1wu&KlfKBDyRML=Z z>tu4QA1$TGv7c|KY_Gw(37hi_h2I6^69VripGX4hX?ym1*6pT z&|D!0Xw#lE`1#k~%SkN-Dn0j;RL0PCN6H2Yb?!*CQ`~x5z2=A%&8Be}LKsOLZc*wu zr7Gp(HqM>b$@xDyl?PuKhj|J3!iQFH+3Hys)q^PRa3q2xB_(w!YNSYi z8|u*X$j4Rqv<6y~tr&hN94zE0+?27!m7puZS+xC-xDxp{iR?p`FVp2k7)ky`(3MaU z1PxzBck1wXEtKfej1kCw4Rw_OnSiKK;1FYCmB^`0oqqq~K#0btF4K}ou2Fcs2=r_` z$Ih`96$p=C5E2e5jcmknx7m_DgGimybNi_npF4+5GsZgx>? zI-N^C`Cshst#IDSOSt#uPoS$BpS)h>r@wzeARW<_fXS-QkAC?K!$ZgM>#uy2@$L5# zE51Rzw1*%}5f@%BLSsfW)vG1OJfGL_c_tB3>5P+T^hhSfUYL>&kjb=>w9_=XGgy^9 znmOt`8iky;uvFD6?4h4ORG*-hEt7COoS`yG*+O?CNrq{i7Re|VS(#|Yk2~n9F61N~ z-}nCiOyqxEHA=};dfQZ~I6tWROb(W4Tal8u45?%(i|8N%poz?+>Y`3skTMugkMlxd zGfPs-XjEEd6c<>J7QLDI@p%k8MGk~j6k$mjD-bwSs9Av}^l)-2n@Ry`-(psvlHdL^ zt!qr)bHTCPca>C>Ei;nwx-g*2I{A-WlOE+v}*ObRM@7h7tozK}T zy6H?N2&)6KV=4q`ghPBFwLyI8xF>#4&mbh^MCgZ#y)%&=f6=g{USWumU&`T#F}fGj zv!>|d2-G^z(SE&c2D5uc~0!_X) zF}fBRh^lGWMjN&^kF9+c-~G*29_z1(m&M?G>`z_@{m5*I|B7b<|6-EkzENRNaD*9Rv zJhO@0PFTj}=bT1y%U&|psO+Js!h%DT995T+AF^H7dD`>Xn=vr+suUa&6R=P>FjF~n zGex`_XGUxWv&>nf$fAWY8T2h}idUROPA$_Ompaz>6<@tW|EnS z=yimeEKcO%*Xp`Mfh>#a@niZWhHvS@zqO>EQ$3;t^^8M)A6@wqk?lH4{!jhe@gJo1B;FIs1%?0o1WX;?%*6wGpCtYIFrXwUU zqSqTWZX!to(O0pQ1VQr>esu3v{_C!n|Y-%Gh=j6|_UFj_^ac(NZP zM5DxbT8NZKm|Rg>8h8~AzZ!`_<+6FFR;v~Nst5D`VI5IHM65uwUTAE|4@{1h=9Ujz zREKT!CPiF45y6*xSbHW&3SpQaiK}YZzR=ikBvCOTW@?%*doj`z%5kJO(e54r;g|GRW_35A z*#o476@{=-9NR=|VvL)=crmIG=NEt2AkD4tDmY%qo$EFddJSCvnX9<*_FvGR3i-e> z$FOVPdLD9Xtk3EAvrO{oGMSixACF_EbaKrz3EeEMUI!<{Phgq0iUvO;gQg$__JxP| z&FCZSOC2N@R`CbN@yAP&y==%`RAoS%7OWKIpr8hLmLWe=8R#|5QC0PAW$pguI^u#z zrQnY!sGC$po9mAIRK|T8#6eS|Zd_QmlTd@`rVNA!Z&|@BRZyE-a1$ZBYTGGgE+np{ z&RFC{4M0V7GD4O3O=?b10hggLaH>pprW zPrmR5`wx!OmdukfvNSF_g-UV;MR$y#>JY0Ogs@V-6~lTXGL%_{EMtTuqLA$q$QM7r zjim^ZX$&nvwxu1@OiB26b?gvh1N+FTsuVk7QX#1AXVz?s?|y0p=bqBVzu&Thjk`+p zyis8PV1*B#)xp{G=hBj~2>pJ1e^Qe8L=7DYEqf6aRAfrxmh&SLkWinGJZGj$pJ)p6 z=PCfdw-`p5m1jnR&!UGVMT|vxr|MX)D^=6AcndXUCU5jiamzD1 zxOYpLatNKxI-maVLM}O@oq3rOBYU@DyDmmNj~8zzpYK4=Hc1CTfgPEc=%-ld$F@tP zl$zxABt&DVR^Zwz-pzwA9b{yx$gW+7@K-hAX>nPuWqlv3Jj}$_C%E?gr}Nkon;9rt zm`WT&vvBn!|NY1YcI`jR>sz*Q&HIkWQ(HI`CV4ecqSl=ymhwr;5++2`Rm@zIWC#ms z$j*2Nv*@DH%cBYY7q+w~*-_a^e=vwJ+zTo;+LTbax9a^5q&~@XqB>prA#pCQYMRvt0yhzlamKKpFBrKRa*CFEUHP^*U>nw=QFS*zddQ3_uFr7T&50#pVU!@^GL#lt3r^YdJ0bW9-P*Hf) z@+dkMm+3BDyB{S{8RoiAp3mR^+wb`1t#`8d;95-0W_!;QENzc*$3L&7xMKpG(p!^; zK&c-tQ8V~LH#VRq4pQSB^cizWw69>Yl4P)K^Wwo#s%2jSkWM^$4Ko){P}%<)?m!Qz zY7N6uaC;Bnmj*a{VI#+Udl@fna(Ma80uQ}9#3z5-%go#`YZqiWXJu9r7`xH|S^ywZ70dJ)hf4S-^Xfn=({vZEbU_joQ#wY}yC4;Cg zQgbB+W`;>GML$`31}nU@V~Q7cZsXu+l^~&T`r39*T+zfur=*zCT*7hoF;K~pKl(Cq zMmrNumTmo`jEol<*-^%K6*8GdR?J_>@}nQ=16+uD1k#fCx9^nw zkt^P@k_YxY$cx@6d*=igEoI^{pCG5<#58iL42gI*nx)dEv~WV~DCtCCl8}3=st)_T zz1&-VfMU}GzFI*UnZOj5C~lO_X~DFS=O61wIZP0CA40-YG>>Igsko|4Esvaa#03$t z&OZIjEq}QCJ_n0Qe@_Cq(+GD1jLFK!N`z?JMS9dTd903z?S{gefmt?9qhE*(Z%CX)2AUJwzJ1$stl!kbsud}4hov4%sK$wj@^k17W;WXV__Jrp!0^*`FUf~2rCR*t ziy!1YC$8k~mv84Gzn8u3Az`aRF76S}YO)M%%5;)VwSd*iEJK)xuVJOKl%yK3E7xlD zg@?Ik>>f79b`U6&7=sEr_@LC(pOJpl73M4{gI4zU(>X|x-G>2 z-8v$J$ozTp#z4;N;({{}2s3F>XHSoJm8jnK)HGs#s}bzmjS-ZjQL`Ai3b?dDWGa#KGLFc0;wf5JoyTKO zAL2_le23vlgDXG&1?DW8%c@mtXwSFe2#=b7`6BPV;_JNolH>Tn*RQ7I)Kq0#%DL5m}B!Pqb2RuuhL^O*sSB>uFXr)d^IS zFqV)&K${GENAfbuc>Q3F7q*SkJ62;%aAOphkym;5`HMJrZH6_Ak|g{-27C74#oFjt z^M1&!=9LWx`QFX{!DH*U(cav}`!D|}$F4nwuCBQhpDYk zaP{Sv^0WIl;aL?ff7h{`aZ(#EZuvbgxd+&j1GgnkBIOZF2n4ZCR?X6sXvYgvq{9@; zGRs+{t{~^NNM9RYRVY&B$>NK==)X=aQ6pZg;15j^ls$>MR;JC<zu? z>4}-BWr8Cr5jir0NK0$$0IE8PuVk%)k5dv86s6w43uS%j|4H30hYzADDTIr{Dg2~P z(4J?zx|chuzvI)HkJ1*-l!qi0=9nKYWo_DGsu<8;Jw!g)iIVbhr;3Pj`s4EKw3DeQW*@{52(g- zu@zE>J zX6?!EV&Q@*Dm!1snmk0TTq9QTNZ1vE;#LB4FWs3W*PM~#$}{INRMdHGr_Ix^P0?4d zc%W~LUvF}VYbs5-1f5yoLa(!+J;CbX6*>E7K`;UF|FomJObV zBMhev!{lJIeYN8?Q4-ywM<*5${VUFia9HZCHVT zHpW?*nahdlDYOUOgi2CcUt;(?XFbauwYwN>7(jO%!hs^@sDtmQlA0izt}?F(>tfl; zUj&GdKi2LM2FO>G|E=D9d)5&dM6UhpXGc0`bPOFH9GV?eglBaqvk*BtRHuUmm_Y=0 z7EM=S=c0*vcB)1&JViQ@!)|bSbm9qS7Tb7V{=MYG2Fx%;lbU9w0+Shw&67f=--kv6 zTc4mj+Dk0v;l~1OS7ooKQ5Ya3u(IiG<3fmtDeT?|lysJa`XR zU3E2+rAe;)+&lT&b=RU-4^!RrIOYADz?vkEi{V-@T7&Tk5{k;4n8~7Jo4N9$4qT&w zz5P{Qdb3FHkjjf2_w&ku5;Zr(+Wg1+Pe?kZ6r{phOh^lurlb#OYJ`gQgejKiQFH^U zLK8HItgeFTe=h)SnnGu*$@v$|WB!~J$1P59^!yk}t%5r~#8hF7@`yvhY@&JYDKyVo z&4f0Gul(@0-296NnKyqK|9SHrtX+E|F*Qaggp2gLW1nbD*SR)&y^-tSl1eAJ{IU=5 z#3PS!C*QuBFgp`}bb?su6SIa027AZ|P@HN;h&m#NKRL1&pPQ=4uM?-hS3Y?b ze{=2{)~~;V$GpRA%!X*Q4bpiJH7$_N9`RU~Ov_xHcpkNsVsU%{C&rFvPOwl~s@j^3 zuT|&``?;%fFGEdZn1VLYU&R`&kZ>dCLsQTol(3%jY4y3d_a|A1!v7F0LPhyYA?>$! z9g#sqY?K)@t95gBY|E9%#Hf@B>Xl{`M8v+kb<&waJ@d0Xj41)nG^wRLo*aFF8SyU8 zkDVh8x5Flu8|oJrYxQByuni_S<8@I9QN&kgub{@1C7`NE6dyL&ZCC0`B#>O2cs~*J= zTw6@NY}7xtJfaVUh?ipufue*?E@RTvptEF7iskd0>1a*SJuAVy*(OO*8^bBYts!Vw%+_rMKL3@k@zl#ZIP=Vtx#^~#vUJ(9i0UTApjC-!5!xzp zdqou@@IhkB72zaU2hjm1uU*RzzIzY-hx^H+*287LECL-dU5)06UM{=$cLvKf^CRk+5V|8LR zo#A|vVIpELhc5lf0FO^S&2FU^EmSeaU6gTKj`annM}XLjpkA8Sla1+1XL>1bF`uTb zNMxf`{iF8nk+F`{Ai~Jl_;6?lH#MJNT$N-u*Ki_UNBsu$>fJw)48*-@?Fw+qmLz5w zK@P1m&+cqLw-?sY*p%mF^E8AkvFI(#4;RaZrj=G$UwaA5^igu{RL6x7%oJojX(6e^ zV(dWS_F`HRhrlX5F*4o^=M(Ed*5x0EvdGnd{{KM>eo<&I%H-1WsV1 z>P7@S1D=2WIa-=qSiEG3ye-2Z^1&7Fa?P5fSiSlvE_?TT_~jk9^H1Nnhh*I1;`3Is za@p}5bJ}^Br9S-eJvhUM2`W?QeocODy(Gw67XIWx{K3PL89OVHV0K#^Wp)B*O_oa7 zf`dWDRVh0ruCHR%Y;4<&ShjLcBUG1RYQz%;anm5F`D9{>#AqaZ3j-J59mTh+xVxt) z2f`RTOS0uCjE*)kP4k)Xb8I<0#?wFE!b8vho*+nY-uahs!w-MO!bOXu1%jAFsCopO z4eAU%wZ6Gyqa!$0m06uLWiSx>q#|O9OJzpaTn_XVIW$maMJ9*m*Uf{px;KslaQTso zpE&8NCe5-X_9*a3J0pzlc#t=Aofj)bo=pVQx?;o{LiCJ6Eak}qpUligNz9OZmZf1E zXJk&LOIu8H&@OgBT6ztI!>pTpl*jEC8P64nmr5w3MN}ag?bKg~5&`{{pw5U;+_y3h ziKnUS>Pm!gY+9;PYRhWA?;laA$PpVvJl~(FJ0#(kB4HNWuSsm@^bQ8fTU*QY(95q| zrzka-V7P=4HwijZ>{k!-+tK@&-6?jsid5|``x;vmg^_}bX=_~K$4L1;`J~X>5Tr35M?BbJWP|C8G+7G>#X}P_Idph{ z=KQ?qH3~MYAiW8R07c{e`|jsAzxfRpU33v&_`(-huwVhUZDSabKdUfpI{EaIIpy?I za9xkP?^?&#um2bJ?Ca&Y)gAof$1md@r@e=!)esEtqc(C7XLvtM4WfAtn(s?5*Oqh;bsX)UC z3=A`cnQbC5b2+*8E@)hUtu?c^XN+5Z{4l?}`$Z-yA@4Z*EWZA&TR8cowPZ5sNP=-X z5NmIJ{_^G(pS#?Hz~`nLZ=|{slz1J1bQ~wBu~}IH#QM#Xd`grv?^_!mN}W_ z>JpM+D|#50_7T2PGNGyD zZe)rp6zPQGzk&1~(lpI{Oa0*pSx0OTF?8Lws*w}A5D1pU)i7%E{a?J5{$fc$rtmNk zfn~gi(VW4G8*D8d;DzdQ#FM89p#U6g;l|4hX~nsmiJ;6_Foqtt$>rM!U5{E=k*3{( z>Mi8;1`L;{4!Lye4b1T&VY?W*i)#82vld;JDuL{(dc>rQUj^OtajZxJLamRgrC^TZ z@%68NT^^(#{_uyq`s%A(fBp5Ge){Rssv;1o@1mRLdXk_fd}!bQfy+7ljI(&*xu^N= zcfQTlpZF2;=4bhv4_?RzFFuv_RmY%O!+3{x;EoMYn;fM)Ig0L9F@*TE=*76UYzD{F z=l}<{;Ai*|u1xjt6bC;DWsp$h_%}+fRq_A4K$6^QLP9c?C)qrUhUQu5nH*Y67eS_* ziHRzYJ^CvD^{fBj&FurA$GPa8m+{Vv-^W>Jo=H;xuRu`0b6&n@$8qYxGK`qSYNTc- zzF)OkW%usg%$++|?uFQsYp=bQ$;nCb`8<9g7}9}smaCO3ButfjS|_ZOFf^6G5B}s? z5gkb_Vm$j%3E{}WM@YqkK{d|vfx;^>g~_%!$tD#u>B;~S>I%tpE6Ijd`3&U!M&`v< zL>UMTXhB?--GSjT$}le#UtzMTh@NuM`irO&7NOiKT?CGh$X8^x5vmIOPwl2ZF@O~O6E{?(!BJQ!;vMi% zW;8P1Z1BsmyBM{{`B3&s8p0&;P`L8uS!^zqs8P4QluZd*qy@BP3BIQP5@ z*tUHeufO^xuWfvZ$DX>4z$>z_yM+}?X405%VOHmIx)*As3=7q_@G6rMa1}TuiS`UU zVeaHf@J%3L>tP+Xub>%mj98jbi=l{qk|3FB!g(-{5@wn5bjfw;-8Mm?Tw?eB$Jw`U zLd?o(pV`f+7k!MsziuhV9JQLRS=|!gCZ{aEY-~tt4RIz!KoRO`6B85i*CJ><{P4r_ z{m-92pR2FFn$u1@jg>1`a@}>;@tyB{hh)Z(YH{N0?A*1BnJV-ykHEhwIwRfNW zcjZke0!-UPvqZ{tP9oiP-9zf!9#T){;AI&40rpqmr9>pfEfCRf{-#!R*Aunjf>dz7?|oU3NruG$sxz zh=M?544RtGx=fSpg9-gjgV)+wW(OhDL_pRGkutxM*I`IZM{MGa_H*1{ypExZZ=zcF zY0KNH;U~$ox*@phuDjIj`s=S(C5>G2pvYkI;SYaUrRk&PQ3eM4S+sbOQlr<@xHF+x zGFkcJV>xN%O5i=}01l3f@{3z<;upWTo~>I}^W+m-DCT1p%qg*K@jMpHp3aocBJ*a? zW#PP;h1_s6$9;wpTH^R>05k|@rY~8w_^-uOQIuVk| z7CCywiiLR%|Lf}cnk)k?~s1@Vt!gQ{;+4ifG(1Xm_C_U9Ao3mtM@KG{r!6#9=XhxS|- zrNTT6-=RHfonq!k#gCwoNVU#JZpdGI%I>0m_$3txG|XnK37+I zk^`b(#1iwMsZO|5r824!{&=0RCrfjR$9<#sa(uFwBaNdmqC8GyDp&j2Mh{1{9Z6V? zc{139mhYw*%WPp^i}VF%&L`+jsG0Eao{$a#PH=22FCwGGn3gzTyp=>gp*t>JZRp54 ztX;dFm!5Qt%2?!((aR67R+DF8{Tp* z^XAOwm}8D((ZYpvcC{(Ty_T9tt31(F86( zC!uCiiVG|>=CjmXLI-&Y!cv~VzNIlN%G_GNn?24R^p1eI(ZCq-(Z-`x%%#=*Jy@6N zx9t3bIwCUQg-WeH6^v4M>&0T;I7Bp>)jDK@NDu~MQk=!Kjr2;A#0Q#BziA~cabVet z(1O%A)|blJH6Lx?m?DCO-5yV7*YNd$OF6xCCa2nGGBqwL&5&+7IZ{7@u6$8Sq4Q{S z1BqpjpXLyh`;@`5eA9FjLR)7nPWWYilbv;sx@K`gQ>Wbx$w+lG={}@~X!S9Yof|lL zX)ho7z?#g|p8& zhqM3k96~>2Y`o0q$T0Orol13rTD^wryVROBBB`+&r@{o%qEk0?GMNH}Vu?&9M>d-$ zpUaWU=2TB2m&>Y=W}vo`j5sz;#BG%@lC z*+QbMCImK9^1bBRrxOX2LfFoU?I&=wzMMJwY;3s$M1rfshG-|ZH}2rZ=r-u6kZ)G; z_Ky*cxM*%F4><`y{k1)igV(RC)J5v~lS(T{>(WSTG#YR7%Ioh-W zNx_D?!B%%Gt|pk?X;ZJ287l9=$tQ}IE@|&&!{dSBn9*^UikV|sWU(Od$xG230h!RH z^4RUX=WovE&d0vNsi&U855D((-gN$3C=`lZdfBC_)|Ua~sSO+W&Ue1U>8G8>(MKQ6 zo8SCqmD1mM^UeI-JKo8zUHjC8MqX9F@bCY@=RWsoGPx|(N|ld(F672svmcAAnlZdVC8GFOma+V^VD>R`?i8 zf#+ls*fMph)jAtCZ06C`57ORIl&LuX=bt{tiN~LyK35qSy1Kg9vSo|PN_u;H)q5a= z#w%a>O4Se9v12>0dey7=;0Hg*;fEit%Du^wZ~c?&c*!X%=`L!ly6GZn4_!~VeJv%) z$Nf4bxLh=0uvEuVluWvsckwrXC`4aN2k-y zOS30)g0+%Py2&OsW@4ym&1SKKuMdAyIoCDX$H-ReBtsL3fvOUilG%f@Lyez%81T%! zpYHNlq~cLRPqlJ2-6D!zJxw_eoptC2k(AJJ;7v^bDSmrF*&>F?TQI4W(SmMEGMv)7 zsJX<_ra=0EbnEnM!`wb`E6bgE%o5U>tbmnR%6@T9++?M_guIA&ygr7oY_gdWxlEOY zJ3*332~>$x@6Ky%?2EZ+Z-a(zlQlJ_g|R}qN(Z~z@J{lz&0KcLzwl3=xQu`K#HUzt z*by9k>=7Jy+;Mn*I?{b&%^G!}-tfjZs^B4Sa_!l(S8XCcj#Q0()iqah(P#dd4}9=F z{LMSw$!&Ms%NH*GJg+(LY>qwpSU&lwPw=7_t>E0(ou`nduGds0i-fc5y2)gNU-m#^ zsk|NsN+~@J6fJ>gIVq6!yrllh)T;%(4%B!zAmgN^x#vrPVv|PGSJShmTjt6uf6h%e z+`^-euBKM2@~(Hki@*E(ce8NLVJbMj?sb33(xppTFneIaBB`=|`Z$I7LT`I`P_ennfqKiIBTS;)~H$O@-8fJXY28u~TX}^YXlro6} z<#0(gHrOo;9`LI?Scs_25*Td>#hihW1y8;dGp46zW|_5sV>ptjNv~4a zQ}vK$&>&z{?P1nxYZxz$kd0&NqiHkM@}-{)nn{##q}f#7VYTxVUm3ZKGjpf#3j0)YNjrArFjdULu(GrpGn9M#I(HotdX=_r z8_Ijo-BEn%WI7Y2vgT?AYvY8zF_*ob!As2y^MaU}QA~#^7>-}f6oV*F>@A67cAq>U);i#Ke>`)jyi_h@3@m6{rIQMnLAG%O4)0W zeTK8ndJQ+re7SCdy#0c|pn#qjA2H&vXt=xC80PPn+)j& z_r*SUP-Sm1W@5HMc50&3*`*J#mbK9`7KP4UG;J!H^vpF54H#Y~DbY0uHplha4Vz0y*=ksa$w zNJ<8Gr9d0&lNxS^6lC>~4I-KlQ8LM1l!P`ZsG~){b6R-t!wwvX7L49#gfKKgD520D z8p%|b$D)VW)wda@8@wuWHhK^$`Tr^OP!io_vqd!9W}Wvq!*P=t(-+ccme@D29m@!? ztO#3+aUG4(vf$R8A=}16jx`KUHj5nQ1~}R{;}8A}(f%;+Iq$D|)hQ?NzE6FX(@sB? zZ(MQ-e|g4VFnv}pJ#%{%Ec+KX-%Q3xjh)VT)milKA7j-6_c7Ez%&wh#Sn;Bx>FSzt z;B__|O@)mZ92{hLctrjGYhU}CDv2g0CRns+5m#S*73ZISzUn=^{N*p_UqAC1n$0GU zJ@%LaxlNWd^1YW=zU-oQ=8{Xl!`t3|0q4K{ZS3pY&;G$7zIEy4 z{MUbemGA%XXDnN~j7z_B1xFmQ96v~L5>kOo;!`gC=tsEZ%U|Z)S1sbwFTa=Sx?9<| zZ8bf~xVk7vRF)so($RXBpPxu zOA%?))f@K^NfYVFo_b!Q&&N=6(F==OK zC&wRuJYV|KmsB7DI2gwyF&y{Ya}T4VqiQlDrzNty`uo5Cd({M8ym+w+G!hghm;4

Bs;SaYYZ6~9u0hMXx7;+5=Lig1k*svgcunU%eIIO6El~?E=l34EOsNu0&PA= z=2oyISx8sZjU^{Ll3}X_)J22)DyvxKucp#5jwU4zhpLD%7u^k0h<+<*Ozye=PRfuR ze48xAWhoh^9HCg{(uBIMA2P;O9Lhl?isSJ(bxtCvM9TdwF&av1Qcr$+I`T{s(*XrQ zwX|0ARf2zvdL7~U#8CsEHj;LShvUcj^5EwnVnZ-hGD>%^r|;Um zWM>`0cRzg&x34>ipIrM3&OGA=UVF~#IPJ7ovSitEMW|Cu)+FKsA9@deeZiY(?)%!wzSNG_LS=gys6 zc;SUAfXHdb+O=z$J9jS620?0CT6RD9;DajY$m~Vl_og?!iB+ps@z6sL@##;0T1`-7 zkdf|5)luhgI;h5#Kx%0{ov$WK}d-O;6dsfrdEGxSUDYRUT zpb}|3j^IwsXO-hK*r}uC4GbwJ)D|m`9m7sAG8qcRZbY_(A7yEeI#}Tx!^zo|%oaU# zMs0}Lz}K@h^#)slr?{tjAJ>JqGCFmHBy`dDmC=SKpc$aM5tD>&4#4gYpxJ--zUo1O zP>FK#vq)TvNRlFn$ma`z>$;8K^~e2BtV1@4%$_=TXnpm`6s}wYBg&9ym0wSeevTy$ zityVYH#g7R4k>kp*O|BHh|_ zHoEIsTVG2hKZc&Qu?&lW{@vJSjFWYh=3UTcGEt0qpaZt_1w8KA9EHURLB#CgVZxC+ z3HNU1tQWn4bFX+ex7@jjzkb(e_{hgT&O83$9em;6zDU8$EA*(9F_|`Fy2ABK6579h z?sH63YV6#-hqioqf?w@3diWZ`Dcz9UdCj(A*ceiS8%77vPU+wMf3fCd0DFXuoR4NsPJYBYI znJR%~FrgJ-&OZBW&N$-?{`T#EOE#Nri8w#4?4__2GS^H(uDSl_eE7l-vwO!r-uLb^ z`T7l?p;T-#wCZP!JhEC%ymBE*{oQXw^ywxWvkn^rpL@b4>kHt`G{{M3IvY$UQNcs< zP}iIh@M!Ce&Ly6Bo#&E;}` z7Ha-o*8Ia4)YflXuRe{i5~GJUhBTz+_j~^ip3zG*YZ7be*jP{TCswVduJ$6A5KOZf zcN*L_d)q8%(7><@boR_v))aBo$5C1* zI?X7;H+A--ar;2P#_=Y;o#!Q3v_}z6d68GEr;Plg`O;i7t zeGpmFRI62$Vf6R+tNUe!ux;Bm6)Yw*6M3H;J%9V#-&S}H8BAm|RrX0_1|p{wJDJFj>KWo(|%9d2=(tczR*x*(cikn0rW zGO@}Ih3z1Xa_w9mr#KA}7SJMtUVSz%&a7auF_T$LC!@f7DBe(HhU`nWb4~eLo-(%) zv`eyHh(1(9A8aCR^o%(5{GBA!iDwSU)%x$1G$I`eB(0IU94FU=()mkAl~gn-+Ik4B zLpF#E3=EcAbR^-AMraM`jFurxe!utc8R_Jt5mPLb$+X0uSWOpPSJ`7~Q8#hPXHVNs zzEQb?N4<5tsqki&Y0H&Kwn##{D3Xnr;N-HjnGXBH9qepwC9w;L?si-!k2f)jFMM*Q zh204841;=`#pY_rrTgkU-qcxW7#yt$<~C}G#~-4xcQ*?bAJ13+_GP^1ywmy7wfFI} zE55{!FT0F0&N`bTk2;FuPdtH+j&_A7nDly?#1=@-jRa)LY`}G0l_}hM>#gcw%M3zd zFQ!hNsv4yK^L*pp5=>A-|XGLk3DBpFoXb5d@2S~_Z$2~YpPepWs70PCMv%e{Bp zLEIQ*(Smt=?@RCIl%qQl-aeZ5d<}p99`b%bF7#DHd?JEA0UL?gY``k5!j3kBu$0B< zh{zW`tgJw{HPugY3hh{>Y3OzlJuETJ?_qXkIxC!`S*9OOTT;YQmYfZRsTmie+}yZ_ z+v}@%!d^|7^#~?Btic-QzB)!TN*TDa;V%i7B2`p904n>v<|nCgUkXsu)D+SP4Mqoi zW#-)yZhop!8^frCc7t*1<7C3_GGyj2LP+xnnru-XV{}n*k@0 zW2t4aP-ZdrTtkJMn7M2P|N4)opmn{K+iqRWr~mCg`P8QenYUmO7hLd8Uir#1SaR56 z#q6EbKsBXZgY+vlO(mc+nORIOIaztfJKmvg2QS&nm^Q74sZ*vX%!fStvXqe}kR-dw zC7Z7@NXfvkckf;b`Mh$jljYKZ)#CI|29il=d&T9$pf#j2#ngPO-!Nf7oJ zIQf{Y9b)BU?3|&@psZpS*+L0B+m48`SdA=)>5DnGcs#T0SX zD{5EsgYj!|J6tg9=;aE|P!)Z!fs%G>Nd`%>VkjN*;-`_+&n{sm8>P=R;$>3SLQTig zOr%-&7~WG;awEECgr;ddHaIx=TL@(T^XrfeBBfHPQm<7;g22s1O{nyHbRT9B2wmYu z)RZep4Ve;=UJ3LTKjArR&(`c-o5YjEI*}xv$-E~F(W(`aNJHctG_yeDB&>Hg@RR2$(h7t1~bWvB4H+?7B$!z>|n$jBr;+$S?PO|Fi{@D4pV}joH{g} zguu{=b2?AdJNUQ%{4t;Y z-t`*0N1j*6O)#A$>bq>x#SS1jwc>p%l9w4 zg3V8?RhW*~oOL4aeA_EIY)(5xW0dhVS5X_;M>4#Rl3O8@goHj+g~pgEcrx)>Ed-l_ zkoEbP>eLLP1XkWBpNZ61J~SXUbh6oQ)%!@Y4pCsx?iZLz565JdvBX+Pk#2I7Qi;tZ zH3AQ~eMr_S_IO zMjOfTIUO}hmArm{~5-E4rjjg|k?m{Q~{GF_E*YK3Lg$X@FuB{C_-%d0-K(jiECAXas zDNs?66SyUvU1Ng1m4LNlF-rrTxt7lI1ZJ0qXg+)gwGC@&>zT{R)914Ci+{z|G1$0c zgjJ7h;QxH!P57b7oVkaw;^-GKd(HwDE?LIxIdjNl9L0grlqSgJ(LSJrlfEHILN1?E zO;2T=sW2j`I-Ay#UP!Gk6P4;qyo_8j+tIWZFii&FIL3E9#wI2h9Uf-G`gID7wzq#T zJ9chHkH_ihYUiBO4r9d!PGsJ!F1nox!N?W6W0Ll#EWG2?Y==m8Ox&bP-d)XxhwTCdcQFWUe`nS^7fS znX1(73?<$h<0U@#hmUa0#LYYrJ;_jhKbfdWIM&42J5Dn0DoF}WS&u4Il{Go9n~@D6ZhtDgly~%X9Ua9-|A1rlf~-R}h}?3^ zE#ceV_U0db?|VNyTZ^^M^42lR+cYv=68IA;UW^PGffVk=#Y|G+-9ROS(Q^h8@hks$ z8lJ4?`z?!3FAi{P<0N5${Isc5sBy*64XpL{a*Fd(UYb9OE~%^)8#p4*bnS53omq6+ z(^(R2VTZSwb?zSe%yyivY2@-{+*+ANWrW14Dd657|EvVU35(C?_ll zES80WrE!_=i7}ifS1Y*r)M>rUnl_U+{?kc>_Swh|(&{Joa@$>Z^Yg1OVb{J13_VLn zdyylSFXhA&Udr^|g&e+YDKn-|!?Z07GZh=+;H;!YpBDNv-yrRv_v!$lI!q{!Pq6NZ z$9ZJcJ#5>yl_#EjoUMC?u|&lD=_UT+6))xur!HXmVaL!rMe3p^)OM`H-~S-NnsF+X zGLF|!u7(bRTAa{~1;ciRr~H6zfzM-h%=TP@ThP%uEbO8|L7HLbo9IsZ{53O!m2bnz z7Rlwhm3^x1o6ItLnQ6}BSo;JPiNnZ?0#ZRniepOzduYK9v75W=_wm!(we**UNkoWQ z4hZ&@F`6!Mvq9p=2Lgq7*4BA`6oQget3Vh;hL0{G2n`roTO}DnskpuR<*&Z+o8SD- z@bmKPp2u~_1`*VLHXqA5&ZcHFUYU%-(54!_EAj|YRhv36OhP3|7^&<+>YqiL^b>La zU}Uho07qef)`&4<4Sy)Ym1%y-r{3mrZ}TArMg|aKf;00g$;3GbXsTh`LnJD;h&3pnSLMVx)w`RpHQ^1#}iJovymc5mCu+Iw!}mTRxW z)f{?f%w*o|d6YW4=$Sc#8ND+pl{)AubH%dP${hl?TgNEs2q#3dVx_NPNdIDK zB(Ce&#Ui=VR2-`f-Oph*9p*c|9Gg9Y>DDafBnxSex-r#cPG*8Jkt&b2@zarOS<_t2 zzOKClRvjUY!-sv0aUT&z2c$QZP;~rE@#_E9dX8^OwSx^psd}qxgkuTgI~z&|RFE_f z#v{MauYIA{Ass}%``z!3|HYYSUiOQdZ$E~bW{*DZG4u4PSiKYYNsMdN+HgvdO4dE$mtm} zT8Tojhk4;no~*B9TeyvJx#`3ABR&R{cQ+>aO; z9%uiaLHdVA7#`fm!#nQBbwkCY(OO31^?EZ^kW+RRF_G`%*fzyNPKivLy2bPCP#EGlK6I%#2+{MU4L*UiHt3u!^HB{9TN_3hrNDHlfiJ(t} zY;h7cnI0o{LM^Wo7fdOThEaliAwoAp6+EP9w^UiPoh~x@9A++qW;#1#oBs}R-tmpaqGnEdnNv&F@S{=sMeaOU^(g52_5Jio!Q>WTAD7%8~l>}?dqv(e81cJGk z%<>Xu#v#*vm*U_)vQMqXl5Tv4iPUzqi+N_{Gb}50lAYOwmYIQ8>_W?zz{n`fhSVyJ zrF>GHDvt@#YS7BDqr3{Mrje&aa-xZ0f|0$1)d9k>wM2a*D(&}O87vyAIV&&tx-u;k zD${5Rn;_8`ND{URjs7TLlM%4Z_8GTz++u=g(-D@y%*e*5p~%CS9-0J($gBes+wP=T z=*BK|DN>x3=w$0QQ$!ClGjmv;J(Bs_0y^j-m*iC@8A_EqSxVuu#(#_-jQ)tV#%4xJ zL#eoS%^=?2RN~%7&{Q5qiV+@*1C$B1{-Diu@HcC}5=hiYH-Wr1jc|X7eXF*o8A;?Z zfAP{A@4NS|+8^@UU#NA+2a&IS^{d{Jg-g~oYwnR!8)D+A25o1}qY+k#bWb%3<5q)I zZ~4PMFY~YD=?h1qT=r6{Jtb&7?t|7O@de40EM7;*K5K~UChou!5hoOnWx2kLY-A}= zR8AD|lPtZuiJmd(HK#I7FR``0iJ^F$vY5b>W8=0Qj-6w?UdHumAWe`okJ#`rGMX~f zl4@E>!6Ys@R6LFGv4CwgpMn=NB@)byG^V4mz;x)5;!Lv0tBs&HhtLNS#v>hD>Za-z znw7z_bC`yOY1o90O=4MChS`dsLg7#(HYSK8Jg=!_9izy{tBn%7;~*srV#%_WJ}x@C zvQN(tL#SfP-o+;ODRzVdRI~f+^fg3!S4G-&!Z4L_j25woG0kO`qs_v!Rv z3SmN*e2TH47(o$1n;(+V60%L792GU8aAc&^LuF;5MIyZ=snuZ85*|{?N|H`yeCe^G z+z2fiNkStQc(I@^pkI%vB_ZQU%t(|_*Fr}1gfR(4w=|j(G?S5vbsB~vkYG|>kBKF( zEUPQ)ibxNXzm275Fw6o@z5~O`LF_0OL({jImP}=Sb}rM69v171l>J90&SPPtOK~I- zlJaC<)^~xHpot(1Ui1!yu8ZQIettl^;?=w!k9g z@!FK#`=W`_og-;)V`sFLODjX%Kkx|0WnRQ9OUE%!pN>rlOJtNvdX6?ajj7aF$RcYw zJCdF3@piG(-^@s`4>#5@@rFKoJc? zUQQJEMnn-!QQ@&@19#US=a=EVjJEAVm>!1LARel~xQiGLuxc%rJRMxK)muv>`FN;io(py{d|cvz~Crmz9AP>0j1xI|44U71lih^$7f zt-{*c8g@@?XIR_I8O2v{m{_VbT!j*x(UgRrfrCYkF43vv2YP8|i@urRc$9u`2tQ73 zISV-($MNyp8g6}@#BZpKMAvF4c@={opa-%N|~= zP>}NfD%lED8wNw&A1J1@-gAs~#~4wlno~+zVp51m64p{a@ImsSzn!0*kP@m? zf8|+^lTAA5;Mj^O7|j^N6NEvHpb-+~Eoje>lpF>M6I|_=d0=cEE5!=V$gE_Z)k`;1 z(ISV8FtB2Sk|rC2C1zW_93fUvW}My8UUoP4P>IWogdsY zn4U)vxWu848HH#Pc`GL?@=!&wnzG0yq?A&S0?$b@=?15%`{b>jq^Bh{2}5BiM0&@8 zgQ1D1o$6$xRcW&r>1aEJoFs~FucuCx2q{#pr9p?*R7H~@H7QXkO~aimrkO?8Y;-bM zBBw3{PSc^?=%8q|F+-olTw@-cS{G9!Ye}?WVqwL4>!KmGVk2BpV>lY&{`y1Q(Y&9{ z_BP60(o8$SsWk|8*GTFS+PH^ZOO%(hrant?VB%s%ldX&Nus4mCDAoZ!OmYCQH+daW z*x-ZuCJLCRBGIIAX9}s8ysV_<0-y^UC(5B!Z7OR*Hr_u#eNTuO)A6GSFNyn>&s*}3 z7hn9bLk<`6?DZ!TMC4K4xpU`+^UizYMOR*Vb7_OP<9 zls>fDBws;oltjVfWs6W=skAhceuhNAvjasWel=N{go00Ag`yToViIm|NC&wvARY&O z)FJF}2)i;k?J#O@N_2Ya z8L10Jo^+fdrkTSsGMKu9Fbty5KnqPYU#A$iF;(xPXy%w@&t`6B9&LJw5?yrAp+I7K zXkbdUua+^kyjVndY)&?EclmCfYHVbqzJ+poMV)$QOb}Hogd?MvH6Jr>lYt`*5a|Yp4|<@MJe``fzS`P0X=7GqU%JTR1bOUcj<8>2aP0(r zPYlr96rsC@(vArT;;G%;H~i!K-uEvb|MNL z2y{_@!ed=!fTPc!MaQxp%Ha^M5vr@A+#81S#!U$|(h)71l$$zu-haSUNF3N0DnXvC zUF9Y^Xmcf#e^+viNvf2draYLT{GBot@>R<$ls${4i`kXOE!ymsxQK~y`UghX+qIV$ zWfrl-Tu7DMX-h2HM3%f=V3swPN<6{7<{tW@{fsAL^!Wo+!-{H( z%B#853N`HzO76=bX=YMI_|PPYEhMTg6Us8B zgLbn-kJdx4(?h%2Mn^K0PHhTBS?nbahHz3NGg-O`WdcD>gZ^ZYt^P)CuH3>y(Gye( zO@vf03tYr_lVsR~MjgA>L~o=9S~4>YRi>b)`W=&6ga;8f5AJu!3(w>pi4OjPnEZN6 z7<`g^7l9=W!xIfdSm?T;0Ch&Koyr!E@!c+ikBu|FrJ>llDo`7mVmVLgo_hVO&OGCS zkAM8*<1fG&dO_BoQV>yV!-fsxFFpC>bGGf+`o5uo@;}&7p%8BJSbNESrk~nI$I>3` zIW6Zs>ruRt#8geVuyu7x zv{c414Kfj0Gsf`(C7R#scOWvnk3M zO3Ioek{F02M=u$s%b%*nEXgfqG$~V|%3wIiP}I*jBa8(V#@#ASJp80afU7bDI};G) z5|vsj-HSL-M%E}(>o8T)k0Uj@l^P`}ttNRoh_uw-Rqvujw37<_ny$AvM;eA48Owty zu_?0oA*Wc8CvasCJGd_b}}NX`b4&{FcSH_ zmJ;TXI2PHQt!oX27@BvFW7ZlaG!*}^(B(o9UMuhTm0 z@^g|s8mTFxsnK*xNV)Y#v{*K~bw{``5XrcIl6)6AJOua+RoKi&!Z@2@|( zAR^a2_uVJ`zy4|E%2T&LuHTJDQ9+ebi~F?O@0( zL4MGhP>9z9!Vrq%cD3hl+P3I@cX^BENrs=-C8mWe* z)GKKw#Ek&GQG-#BByXT~jd5Ey2_jNFy6Nn6aURiDEUJ z5otylw-nam6!W68RoP3D@m7{{Qp~Cu6MCUCG;*6BZp|l{aHx-Yc-0VZyoT2w5!R(w zNK0Ud6mz2~11i;V@oYQ0W&XT*s}>)&=quM;bM?l}n>YQjkJj(C{v?CQJ`Tx zwPO0CYaf2Ek%$iE_THbc{n{aF0|D*JO!7+#WV#%6HF4uWDQ8RnTSILWQapjY8bsPb zPRfF~MW;WIye0=KmILAtiA=2%o*^EgHi+CbvY9I>_Y&8k%W<9bZ%m=paYZ9)fZkq2 z%ZG@fpxz!*4eE?EDr_uoXNkUmliQAAsk4wa=@TrnYKow2rb3;pW~t{Oe|{kEE)m4BLvOCxF!L?MwTRl3qcq>Ru-Oq7Hz zN`Fh`LIuf`00bf}4n3>WP(plBs5**r}wY@uN$ zw!(DKYLLqGUp8drph=F1Wxt}TPp~W4p*&tTG&i$B-^fs=AJGw_$A*HYhn`0`Hi8%} zqc;q}4yuFb$Jb8TEkBYMjJzIcH{{I(5Y>u0GLS z`zU?)Cpc4dO1(MkE|dIh2Wv`%meX*Y6bB*QG1oiff!r-x`V?`?JR zWu2c$pqn11@1g`tiHKO$Kxwm5mQE6L5s*5>#X*Q3MCytcyBf&^_zoEDCYhWKc@w`l z%2SN9)nCU$wN>Zowl^6fd88;^HQ*`nSAEG^#9X!X!{2D>?B{9fKqdAky2`k_TO+ zvW7Bq(KQ`Mj;V#IzMdsVR&=0Cq^S%N!caj$_IjklpbR`u_mDUs1{Dxfqt1k=Pz|c= z@prNz*uXx2KbzS?zqKE?P)|q1iNJ40SYvgf(JFW$PBTQfhNPchO5BjH<3t&ZdLFkD zQ{5j@?u%%SkJIe;@yj7mJtC^NoX#RzpZ(LF_Oz@?4)FXZ-4%(SzNl!=kiQa%CbYmX z^a;mthO^mBHS1*ddvUz&@Fh!kY}>MROR-qoUa41xuYc&e=JgL<_s2Rv&+GbA4IDyt&U~pSKt!ZTt$b-m$l}YtAp1#VoHc#}l zIv0~H`N<$+rZ*WtOxwiF>gpyT>3W+%W~xo5Tf;0EI5`uFF*SRFL{G4^1kZO<9akcB zuTJ7M6eb`Ukz_Lq-_l764n|u+2^{Us4Y14X;}O=8ty^?8+GvkTEV34}#9GE|do~M< zIdq7U5)_U}o4oQ0EK4^lwiRB(myN-=lm4{JPGAXFzx26rTa{Y_cS0W|06B9Gp zZWN@%H*0cAq3%z`c_iFj_Aj(Bz4FVGoN{r}W@|!pph2tT8blgcg#@W36$awHsytaA zZeU%skwJfmK4X}gJi)v<{}m_TI!-g7c+l7s%6u5{)v zubL6=Z?eHb$`U3BZ6bczyL zP2w#aRrbi}rz=D4w8l?VBQfoJB%z)%V-!s$QOaJim;~6hn#c!6S7`>2j&U`jIHkxd z+=vqD(I!oM2}F9?mKqp}awG{XhK45*ts-J1sVN@IXgJKa>L#{$8|VxB=r;zLaB75E zN%xm1+L*)((8eQ}kbRB-qvk1%4=qfEi&Fl4jBOS%<2>P*U|_Y&;5`#mHwUQ^b4v?# zvQZpGQ7nW}?P%|C<0R@68r$PI9?CdQSvQP^X_{`}x^W!Go?+PXlW8{Ujpo#;UC~iT z9pz>UnP#ET;Rmi?@0r;>wrkg}%D2D$?PqwwJiKii$lL!1>wi@cnOr~k;rAY2uwcOj zZEbCBVHhsmxpUXivuDqq?s?wgJ-hez2BDvqNMotbobE3Xx3bk1AmRW%ak3#GgnX3j zt0jpR#|oZgDFvAXJ(2>To~G*IxUA7kVj5bNA+3sV1V(NQyVIc9>rkAN!R{_l>Pfv| zU9&;cY!Zf^M6sYLF(gl+B%^YTD5pWjK+9wyn<2?qitRd}_c6iGqEP=?b66wVMbCpL#bS@wPsV|83H^{3VvWb%*)^xp=%VxLt%;;G=Ix?~AwP(HNiQDhJ<0(xuYL0F;ge98o?d{<`_uTVa zxe~);13bCu$^U^J{HL}4R|XNewr$%cQw6CQf4{s*cR0DuJMTRG&sY)K49FnybXI;X)M_FoYBqjQi5jL_*A?1XpVK+>y zP*Ak9Ox33WTM?x0QcODOFePWFM4QB7XdQHlPE6fa2+*vWkqFf+HPy64wEndCLxgy- zOCSOzbnW8NOnem>Ca6*mn~c@V3`YY@#8rl(F@~dY0xcji0|ktWwSXX7C$_v4x+fdW zo{w;2qDp{Sm!+O`J(T53fDyzhBasc{P^4fvTjW&lMH?uxd)0^nZTXuMY(I-lPIY)Z znsiU;S~G9%!XM9?HS^xRd-tw;=%I%cD&t$1f9sFCIsccf|FuEnH?1qLyfV7-$}20X zo_(H{3`~xcK@Z6t8y!Edn9I+8?2$)~t2ZW=@9*oMQumsRw1kW=C*VrF@yT0Fg^MIMNC( z&cy^$wJR&AOHf%9F-pRoU_ZKR;&?V0*H(Cpd|V`(SOm9t>j z@JQ+*coBvyJ>)T0Q|CZEUTWPMvV^oy*^Vt7+Uq@peS$5w3^Mp|MU7FVl!B@BP$U>G z9(w8WV}3Am(X6lk@XD*VKm73X^-2GE{krx4T@ZO8mJCeNb)j_|0v^g{vr>}VoH2c7 zCK6)y8E3p=$^G};yP{sLpV-&eH>>G;(~(ovei#~QP+q%-+zgAJlS>qj>>w%nG_-Nm z{FFjL5?yLHBGuT`5>HX*B`zfzOGq4_M6WB!#mEsPlKAErSWX5ZHB6K|SV)wW{1OjO z$O&hXiVn5NFv^H7F%QhEQ`y<1WtP>NPAC%IL5l7owf97%U^Rt>LJllSyf z-RdbU27b#m&Z0lpnYrueqmNp(e(n0(DCM^O@XD*7ADO#9uiv`<97JBA)o4iHL;S5f zx6145y03qIi>#-9nk0#M{p(-fT9sat505@YP3f(`h7eC%U`kL`2&&UbmI-}`;XHmn7v1RI<8kt}>U!uGNK=zV{` z=i+UlMMzV?@G8*t5G;d(2ROJ+57IngoMwO-nm0xzOMvPPO@&&Qd3I+$O(M+ekD;Di zalN1cks}nZoHiMBQgUpu<;qgnO+_Ec$c#leP#J9i)Y#i91M-trp#qQisp z`wMUbL6XQEgL%aw$;Gq zQ&Fw&c~Qun=4aPBdBj3TTC&+L`^2MKj{qZM0_x+b6jhyp(meCM9l0dALWA)aX zQ2k&%Ce>k>?v&VAka*1WgO=!2kZ<i$akItCBy3jlF zPUcyfJ5Qu3#G9HoCz(|XsppgA{Mm@>U#Z}KJ+5di^d$47g`t(Qr3+Kaw3mP~N#IaC zVF58?gEreluK9o;v zO;lgoL9cOtKJxp*c5q4TC*w0G7=G!WXWm1`uN;N_e?onHwRk>hP7n8t_aAyQcF9*HaUDRC$aRXgwl!PJ>BW6h;tQbZFX0`vVhF4IxsR)I%@I2q~1L3hx zMp`79Q4E3R_r|h3Ik2m1+Wp$M*E4@H`RaJ%ZICq}_}c?I+3-{1eC=?lSV9hULSsNkm2o>(n4s`dN+5P`{9we?0ND^6qXlZGoe~u3TJL_(_bzq>UXIBs^CQg|6aAE)} z9;!s`=ayp17!gVI%%!w5T_kupln0{l>EP--DcHV7gk5g3n)l?f*)b(OoDo0}zp zEKo=iS>WjC=$KgBuy*^ZwIyE~=sLSwQCWpG%yDvW47V9oD7d9eRE*}371nwRF{UmU z5i&%HWQwO6Rc+>zz~wJBD);(n-RaW^7n!Oe9npUw^3ZKXcz7)4hz!=^R3*;6HHM-0 z60k;G;pVe#tN-46?|rJdx%m^zc9EESND^5D=xFVr9FrFxxc>{e!-s$I5@{_moeoa? z_aIhou0-+1rI^%4h2hP}DWb!M<`y}Pi%wy20&z&-WnWfHk~i|@xkJrYD){SMC7<9f zY9~CgTY*!IV!H}wo6e(m-vuDcL<9j>?6Xfk`Q(>hc;SWj=kA%3xE7EkvN#})51Fj_ zRHgY<7a}1PaYcY1rLiC++uq=&tHRd`_V#kiJd{q+2;(#QPMT8?q zj$}7%_~V`H@4D;2!MET357$wv?d~i(_l#oo)=Dg?%OJ%vNb8np&(morO6`B-1lC-U zO>#v{t6CK=%qX8-LS7hpFDYhK9R(Cs7!BaqtNlo{Wq@(&sS%k2eRq6%?cYZtk(N1l zN+jk0l0+66jvxOZb^JK~=Zp70sJwmntvyuYlsJ~chr?;CxUURVf4U6gWg{@Pq^QCS z`JqO7&fBQCmod-Khk`al1Oc5X==4I@p`0QbAp{9=TS0+R4K@%!$BR9f`X~p@P({pP z*wEg5blbMCMIw=bIek(jt|=smEK;0LOuk-MQ~TgRY-oE>4%WH3zgdRaI7YrZVcQmX%w_ zQVe6iPGanXB*MpZ+x7s(_%2teQi{O#_N0NQJvz z8?VN67>+7}k{J)f9@CH+a?$h47$&I~YKkGG7_c=P88c&lcH?KCAp)82Cqd%cLXybh zhq#sO+qb7{)v8rryK~K&ebL^&zs+QG8%&3lyF(n~@f^n6q9~{~pp~mAstF=o6@*b3 zLLgv6rGba*z&33pQwGe0i)8O4lILt#7hLcuN__VuuPlgx74<8A*o6(_KQBkoW_TBqAXp@v$ID mL_$L1V?mOLgoMP$!v6x}^cT{qtsJfZ0000L*({^mz$r*EE+qRR5Z9AFR#>BQKJY#2K+nm^T^5nYT-|&9ewX4>y+P$i~ zkE5|xM=B{uBEsRpfq;M@N=u2UfPjG7{rA8?eXmS_@{)ePkX*&JTvZ*+T|JDP%|Ilq zEbNSO>r+iYz)@_a#e~&7v(LL=v(41qetcf+B6w7`wO3NLpV+r&;8{XJo1%qB;E>Z= z-+qcALIvgblq=uh8Vuva3XAWj2w{l!KFLWH3aS-4iTn-p!oX|KDhNNVJk7Mr)Hv{<~F6W=`9*!A_faPT|RMf3WXC`sgX&I!mn0UsfY=er%*kCa4O z``_}L^1u9?@2~&riN*haEe-!d&Ej-O9VYhoy-v3ASLuG4%950~er>wKjIm-BDjkZT zJWBW5-90OljOVSzB=B`S>okd%&pp|nB8xBMah{pl*T((+!=ay_AAj@Ogz&O~|3_(6 zZM*fpx~89>S=TIq9b4u{%$Y!+9ChoiQz4q2ma60I`vbqn^vm}1(oZFNKF`;a9-r}9 zNn*F{R0iG4)eeuVbGK!^G=cd)bn$$@)<=YS<1N&GI`%}a} zk>6K|^&Hk(KOF?Ve)GpLHy&GUlKo2@{)NJAd2~}9@ziyu2krM2zWvqp)%lp`@39_? zOay1xs}=D>xQ-M9BWBi6%1Ca{G1bL~Sq6LpJa{BuGoUX()FrvH;HF{~eW=u)dsmZl z`&M#bpy)~8|ISI!_rgZ;Yig9L=lt-g^N7EOpzdxZj}-cXFSnj)sBS-=|CcCU%h%4W zf9D<|>)j%v;SLK38~RL?J-TQ;4ipUu!VYc(X``oIdKfH-Ld!g?+Co@Ks|k29!Wf8- z3k;TsOrRP?NtX{*T#0Ojn(w;blYQ4`2)e>^rOIh|&-($RZZs0ZbmyJtlEk+k@sZuE zPJa%JWH9;+tlRfI#0lDG9O4yn(aSiK6o_Rev_jN11QF~|BZeL0{wUx&?xVAGtmp%S zouc5vQR5ZvAR@EFDQ1s-8Re+lM_q^!!J{F;6tX5DVhxihYBL@GczbY z^?HNs|30@4+;HDt)HJAZ?w#6SCHPOxO+y{qAD8`uE9W)>w|&SxHb8c-PE*jQ0T3rN zP`m)>2!X(UG-SUj-}{;$g`I^U4hf?7AY<_f*9*>TBJ6;e`h0l|PFdWLq#Y~JQD0;o z7lh_f9CY4847=Kmd*QAgH88=6MT)DuTybsJ=aw#ftyIX zXe93G_B&6F|G;%V?g_DDx8*xqk@xmqa#cIEsJN(u$-g_`30EH#C?NDB8E0cAI8oj2 z*nmjrk&>x|L!~E9stFYU6y&J_cyE9&-(%p(Svwl_A_f=d6~;SSftEZFz3PgWxBVjL zmBs1sV59_2l5E-pq>5Cp?}W8tA#8qK1E2g}<{0xn!^=K*w{v{YM>VruZn&GzpIvso zafSY^sQN#J@UBRGX<)XB=<%uHfd@JOY&YH&DH1-LGX#u59a+ZgH6Bw`5pNW!*K$idX%<@D%U z{(~eE!!qfuK3n=p;h3&^!c3qA2-Yqx;h*#IpC?Jg_8)zb-w6LamK3;6>~Q(dgc$$r zjIj`Y#ex5>#!v8LOHt5!_`~C!*@8ZyJDe>R6l?_rXHBiQJ&j&?dJRnHLw@0%dC&?y ztRw+VX>0|$D4Gd@ufB=1n0Y3GzDUH-e$hYm&tYm~DMa=HCB!4d*_urOC2<%6g|`oM zz0qIlR6@3x`gM!Cw?nIPD{*AFf&d|Aho`A}PJQQ53Q0Z3K1kxve(Y|?ha&PIuYWf& z|5=o8aTfACnz7sS-o~KoG}>ds|LBYh*)T+++9V$V;*2YmSbgZ!1Zo%2Y2hA$bSr>G zp2?p6KrUi}5KlLsGQZ3=GsHiKirIWunw!Ae1_$S&cWcknoj0w9s=P|O*eGhQ53^c# zD}GM6cPh(bW}~p6R64(ZcR;deOaJRHR_I1P?bOhg*XlCTw`Ug0_^?1o2lLPI{*Ir%t19vnkY1 zeCU~Y@JOTq;y0P(8}giqP9Ny1jnZ5Ks8X&b%DIv#Ew&wGC>(*>fZX4*^-n-b_mA=@ z)9|o=2uYX;)|+qp#9#l&I^6j>Z@2%n?oAs!rMAc&@p%wUoBqG;U=2?3oK??G8$2E` z4q4r<1z@67!Ib9X;)7~*nW8`w^QH8Fi&)c2zxskbGHuYPO7k} zg9SqPji(vbvBY%CU_Kf2z)#lL>slwg|dz{WW;*@6FnNKlJebI5Qv~2mK~= z+W%q)O|0yXHq)KTs@nH+JCE%b9)o8k9egqZL*n~Wfokqwu%~?l=JJG5R6yY{_={VM zMrzS5=v|g;q&(wlIB{vowh798n0G7*{Z@$GTlLm2iw@?yMh@3lrrazci1V;4d+&W; zliK^-Z`OVPPts9g_#`M_d>O<4ghyZbUHO!>eC!hYS=$;vW%(M2hyu)_Zj{5^{t)zz zVQVs}Zp6}BGsOs78?i5CuFZ!wVytTR#U=-;7TR^m(BEBnCPTm_+5!$L?AC6UF&&k> zFgkoJ>fhRF?}-LNP++tod@fhLUk8x=KF6~-d%m*cegEz0ajPc{&lCQ~f+>TClUW1t ze$V^F#91pJ8b7!(%<3hCYY(~Z)#;dCgGkNcJD7)U7Uscf%eBh;0PO_LcX+GI$HVQb zd{@+p>AdI&n&oHO)U45Cmc&b4&M?1aK-YVCLx)5WeX1e0V$E;I82w+W(s~|h90Z<- zzi!Tu4|;Qk=W+iNt~>lK{A2x>^K$sFU;ERH_ogE%f*fnqLut&_A2~+!KFY+0!Bz`$ zg#F;I)(m3hFR0n3UUFPk#1*`cfJ?U&YWlZ=pIPa+DzG|1lqFq(z-XEEi6BV3YTr>6 zA-IjF3+7{H$Xpq+&|&wht+%L)b&p?<$ytJ4mu~{M-J{ z$PFhzN3~FA(&bDuwANzR3P`O8qy8u31{#$l7ToH_k($39&Od#3DI9 z+Ye@Q(=!=sbhCC`0kci9O{N@?amvb1h%iMWs4+Un?VhWkZb36J0J+KY>h!PAHGKQl z(XWo4w+=ypulG9-k34edYraRL|8U@d+48kldiQl_@#UpV4aahW2JIu-TbUeIfB1|# zfkh;-sn!SPqS?V59(VTF+` z!r3W{S7qlPr5jb-G5!U=a3V);0i=f;Yl)>aDZH)sd@Q6*aqY+4{b@VQtk0$$H8J=v z_v2eV2AlKwx>xl7V)cJ(AvQ4#P5-Or4gnQ#K$YS&GcKt_cO{OfJ|0T_TPLT^0_wAZ z@|Pqy*(7^BE z`Vx|Gr66(mOJkZDam9;R0xQ#l0HoTWA~v2PD}j)(m?V%bD!i`%{q;(oN1CE8luX7> zG?Na7NKI%SNugoPzn+NkQ++aKZQ88pVO}k$o?`|Gd_;-}to3;N$ec|7JG+mxdKT9+s$>Y1Jv{0KQM% zO-WTEf?Uy1SwhlTE?BF(0b31$0Rws23u~$%P%8tr>51Ra0*QkB%j7tQrm@E*`QSa{ zFAOHxZzF0)(2QP%iCKMcC*t9`edzp2CZIthw)q?rB_FzH5c_GY>gS=u=OOXu`Sj;e zXx{6>@YPfSKiR7`++PX^@j^r$OXgo7!|T$TAd_nIHo~KM`9tuERaHJ(hRNaqPP3Zv>C= zdu+MvHZS`gfvZ4t&GfU$M;8q51f(Gt|Ba@#OrcVeoQ(BkQvis}&oMaF9&Aw1sTbQ;D^`Odr$yO@^An@@ai>zoaB>tu)17B^9f|X08#d8)$`w=CG7V2n)io5rQK zj=j=;T*t-23sK3Ix0R5V=&ZVfMW_Z4Yu>~ij~8ckQFf__ngPytR2NDfh@zD^@xL_7 zD=1HmImfEf4EN783?;t^-1P;cA5Gzj_@pQcRM{Pma&)&kY~FIya$YJ~1$;)#FTsZ1}3qWP;kn*zc(|X!RWzSXWyyCA#i>>P=PQNod2Or(H zj9*<|=YomB?nGJ$E7;v1{owxh1H^i+SHZfUf}@?J6#!#KXOj*n+|-^B5A(bqE}u>L`MsJ7 z9bYUbS?qpwMhLye?Asm@L7O)>rG2%@FtWw$+GcPO?!{G3mfuaY;LGJM=Z4>W z{I=6p#}C2V z`i29rvdp*rXqhFn=1JUj0iq=eE|bK+RaJGln!|a8@6i!}R}FVmU#(MVAv&vWOP5nD znZJw>_f|<*SCB{tQtT$<-QbxOXIiX5s-RwH8Y=_p4JHk5A1UWXTY2x30@X`P%ch^_ zO7eKUF4mftyFV@*daUP57yePK;y?rPbl8FidLu-p?aYhO`>qi#Wx1p$W3)jcL<5 zTVE!2u-U0VeSCSEc}m^`2{(d_?oO|*Fh_^8K zm;b>RzufaVnf3V|{B`!>V?n7u&CLfGl@wbg*Zz^F<@64d+TDuaU=~DE4_#qzsuzrq z-KxKSo6erAb&odnC!V{f(~sxwMtU$=51zo%V&0x*O=8{#XbL->N^0i^%CI>J;VM#z zi`2(ud`4NGSQyKrh=O!)xEk4YtbJs3UdmI+Sz>u^OB!d)G)gj(O>5TW!rEw|?=s0= zhWW8~@yCDitf$R+bL@)9|NZ8v^Cs3I=4li^dH5GLx22%s{&)1V-d^tcwfOZs)zWiw zNgcI>He-32DX9b@gU@HnWknGdU!Fh98VnmlwhJp06HK*%gygu|q@Vsdm(zFr&fgG% zvFiFKRBrA15+dVADeJPiJ=Rk*>#~IO=W?}6d>mOW^Dx1O)uzzE_K{q2H^ z3nzhwg0A&Zt0R!)%T89KBwy8y9f;(}R(VR+#B6ipIh;_4rf2QktlDKb*h6J(J5M_B zYGR@w?qY1@t#)W$2jcKmlLSgAqN8iTt_?29EaQ8N!`FH}$meso;OD3tqtB|WAKl$=5fz%hux;BE&r%-e9daiz(?iq>@e3tOOX; z3!G?TjXyZo_dJs`OBDV3^d;&~yZ??ZjP@o-01Ogf350 zMP0H0t0CaW_7g<$p@>!EVJ)w{F8Fohub1(&tIej}bYe-%kE5-Ot|tQb6(iMUJrBM1 zKRv8od>!BE@safV=T#o>g8h}>Ne$=beW?%7){DZVfpkY0zlz6v;hJihwc6`1wM6`h z=uay{#y_Mg3_f2ZZsirB5^u`;a6B?mkk=ySZDW9DGCVnnqH=L7kHfIj0C_X7bu-hNY}oe7c>XtmO;)sBKbT2}YP42wu!qJhmZV=;~N=1RO+EOS8g-7$Y*Na90q zIltD>^Cr98*1C|7MU)2n#e~g>K1>yxZY=hO`!)k3H3a|BQwn^KJv*MD;N1kPKhjPv zg>35i7{5X;abobJ3tw&PUR2+--(|zH@0ZVVr=Pd`E0+*t;L-YJ8ub){ici3&JY=>1 z3yKVWfDTs}ZKf3ac}S`d%rzTi5tKb6-Pj4_PNO*YzG1o>ZRFBd$~r6);l4Gm!i42n zy2TB<3&=m*d>(T##u;oFGEDU1DIA6)L-sf@NcT*>3m_VH=i*Fr zgWmyMiVj{S@Sw;K-jun?j<%p963H+NNsys^sfvU5aD;NOHz-!#F$3rd7nq4*Pg!i& zYlOh&mIzyj)g<4BxS#rKCl?}303l83C)dB?GbwXPTn@#}K1X}_fS5*cp{{`390{C6 zrmBcppipHt3&iE$m7qd}gmjEG%V*Ty^}0^i%nLXSM8MJ-5oecuZH8V7z2n_r1uzyJ zltuDMHvqUEL2q;Acm+(MY5fheB!`~ef^v_Ia*r`1cxp77C~6t^WaO)h8CxU20Hl&S z!)uow7SlQxCMB;dATxL^JZ%reme}7HWDO^Ro0y1Up`rLXQS{fzOiw>Pih8mvfQ|U@?%HZG zpUm8yr5Kk`uME?7pBsm(Q1F2hF8B&2em9H+g&Znzt#YFz2UD4bKScWJW@zVb-R*Qr zr3{CkCoTv*i$)S^xMoygAJvQnYV9i6Ci?a2cl37&7xop65 zoc185*i!nC9@OVBvE(J+`_HHP_Il=KOx?xrB25n6p=iT2V4I@ylQBeC>lU=K52IGU zs5Tlhyek=~CJ{c)?l*rj!gTVg#iH4x<`aUofz62|mNHP!hrk5ZX^FKK$ABZz1Y9tX zY{JT2SsR;6#;jdJ+_(lc{RXjHB4k0udG0qXFWE1sufNC|8Ups93KjjVoRC$V7`iw) zxoFwqW96-@8A^|Ik7J!$K}wW}6l7-I65O^%5Y7_l6Q^#y$H6Y)y=*0G1^0-6oTIrT zEDKHRrk854X*WexD|CF~Z`r@}AxbpF7lbM7b~Y$lwNw!Jww=$X-QhOyW6P??!-aN! z-N56tLU;SM%wJ~`vHA0DMA%0VX|1+^^MYC9^%hbKr8wXqjK;8?H zGNTm6VuQHkprp^h>@9{IhFp`+G&V~=Q3yDlAzxHQBLG0iUOeVlUEoAb80hGtK&Swj zR(g|2`^_51N*m)`DceP514~m-QkY##yzEe=aA1qGg;PXENJ1zR%)u(I$R2!s45su< z;y5bw9O>C@+2_Z=7;nZTys#Vz*&A?F8w?<(TkYEoz{tpCw;jD}!aCtLjg2F=W;aH0 zPQtV6**9E{2QRUXjSI0n(Rl0PRIYIh>%$a4eHsVZ$+W*P3xnq{BxoY0j1viQFT|2! z&~9UZR0a4G2`4?V!sBeSsq%F~LO&QuaB2*nuUS%oqD@qorzVK!esy7|wJ@U)D4Kz6 zvnVu;a3pK9&vP=UvQ8b!)@=7GJV9+QZNpz8v&_;@qiaE|RDUp$gJ6f>Y&1QU`u(6L z_Tj?}-CKm|e1JuyCRk4ry~$`i%Jh**jy#!&?Dso^=YxPl0T& zLU9Qmp&Z>XZ!%3c%?ocZ1d#X|1+MdCgn?>l1>Epk=B-bS4elFuLp+JK^yLJo>5P#H z8S|YLTcBwvJ;;F&(q*lBhl$QGWPod?hFqfv$yhNMVTUtU>khi$dLT^dXq4`$k*?th zQVcT8yQRF$JGmIe4=Zt6N@diAG^9j=(Ivj1H-Zz<3rW(*RSKU)S>i`B(6pgnC&+npHmtLmaZZuP(kLc0 z6uU@{ffHC?+fRC;n&hmE)oVAQ7fmW_WFUWqK%n1rO zt_BMF40B&Sj~US+z1=_(k9LR>e>Wnopq(z7m!Y=XUr!HOHk{51gq1d$9+q|EzNS2Y z#Gr;W&1R0MI@TG$Yc-`tDoxyL2}o~b8benT;@2gpodcYD&A*)$WWuI_!CactN|A}j zv4eIFcBQ7aM3s%nt5_@4nUXkDM}(F1Olbfb9E=;N_-js@(m!z@zY&pp2yuvO zfMq=jk}Yq*zv7@(d`pCs$tl&rp_?UU;{{hjcJ}zN+M-c1wo!_o;t}#O<_kiNt4(t~ z9HdPsfZuR5jVfq$2>@73OdTuCVsB!`&k!e)WFlzxF7e5pq z+@w())?~MZQuIMqI4gBwP6ULT`$*Lu*FFucD1uaRIu;LDE-~d^Mwe&EN=C;SJ|$;W z3sUz`6J6PnEsqW^Fc}(h=_qn(dcPzf#2%FBf|8UqY?3vcI=hf*09N**-4PRx*@Ls; zS#8aqt}nW$yauNa)a967DlnzFCdt4jtU;?$2Ly%C zd!iIruv%Y28nS?3cOSIui?!MJr35$QcB+Y#f<{q_A=4EuW6TVT-iKq}M+5FXgQ?#z z)jH8=V}v?F;G(D-z(gQ^%!dUaBX^Itu;x!~4bUf_NAWc1wsNx(@Vo&opaPw2eXv!V zP>K}t?O<}r*whJKM(Hc15!suR*zZ=>b4A#5L{%q>mdcHC+381Ut!7dY67#yS`I_L% zqex{~`&1yCREiVBBH3rquGa;$jOp(REk*b%T*Tmh7+Vk<{_Im<-`7mwb4rplV!KE(D0=Y$wzICYPhJC`@Y@&j=Yhee_=fjc4Zn+vi#Q;JybWC(Cv31_jh|AwVCuO&<3sdwOarH7%Z=IHzigLGYt#Td&z-I5&8oTwq7l|L!JHjH;-3`k^;t znjZ#T$UHP}#C&Ybo$(eBHdohseJV_^Ef}!Jg501;25X&uG%w|uRW9L!=9RmT*Q{X2 zA^&P59?D+Y;TrLGi%>~o)>eFN>2}# z1QR|dVK` zVZ^jL7wWktRoHJF8F^7^ZZ$IwEV2?JJ78;$P4TWdit|Q7t#u3Ip=^=@L?R8Dgfg%J zYN&Ef@b6;VIH!9Ed;wUFbDb`0(qc*}5D^$U)NE?j*z9HD9y}6O&t&({94y=POIC4X zwMR`OScYdXxd=0|+q=aeO}_b*sPc3R?k!B8J8Y#ymO`=MlyjG%XrZ-UPS)Dnc&OGY-Hq( zn=%F>JOFG?5oaJ>wSD!c^y;5F*;iweY{d#@O0%#xa(cswI(LGHi3vGukQA6ZUUhHl zOOi7F6(lRsf$qd&yY*OT9$0T&88T2PBwAxfJJ1p{qIdl;u58gF3;^IoXAfBKn&e^X zEmnwTF&0_1sGtr=xQS^}zY4;+X$NcH5e^6IBms&IAi{#IS$T(%(rk>1YKhJK%sH3lmr6hp z@vC)4@pnTgpcYXa1c|XW&(Z^x7un@XSXT%yhQxRRD_r4{C#5ISY1Cf$tQ!J3;%!xv zh`kL3B+*JOp9YoekgFHNEQfdG1K2Yr`|VKEOTV=8$pyA)lw!J=U@re9Wx5MBt>6s{ zs_F$IrD8m+{o*Qa2i4(`P#xBAGP!dl7V=W&7ltoS;ksYxRvZj+k`-db+uC6R09Ve| z!sH%1bB-CA11CjlXMRVLgkMxFef**^5dLN356!ENY zJqG~c1f4f!%OAJp9haRCJLXmONvvDTaXOfGF$?i$Aq&EB!>+xa6K5Mxc@|_4KV76N z=R@gBAaFW>_xMV5;aUrwz~Coxl9B? zw6JiCG_n;5^3+n5$|kzDX_Pkh;Abhy4iz*!Wom2ZjtD>-G1eMMaDhZghwLHb9M7sw z+9KxDiy}B0a^nZyvKfClvQe)~5W1WYP$pZQYoM=SUJb>0V!JmFDcMaHT{IVf1-D8i zNx=4~0k2?5Lz|X@>?u){5m3^HnQ<_g*74{^GlLo=h?Yl3Z3`BpVcB_-sm`B9E~``2 z@3q|I5Bn|GuNht@SeV(l;-MUR}Irr=a<#3+SkC@i`Y}@T{Xn%urc-`bA|^wyMv_TEhEdWwEppI? z{fmlRokWU?NbXD|k50xC$&Xv}YZd2tFdv19dAZXlFuo1Uc$i_)lwnuQzj&^ZVYd?p z>^BH43d(O3YA7b6lQM2JTGu3rj#1P>G|^II*-0jiYcnmqpP}l%)wM4F^r{F1!C@lj z)Pl!gpklfHhQy>gaB&SWFFh+7W*s%8#o)nrSjLyFOO|iP z5!env71x3}pr)&Y2&wQ_A?Z%pX>RP*meX<5SntA^Zk~zEh3W@ z1zvWldOjcK89%QLdhC}k`6ZR(!E(avv#9l!vz4XVfW77Sq;2TqTzn3@UmaP^69tyS zeF!gS|dDgD8?#6+%Wz{Z|jl=MTHs(qGx6nDT6%<4z0oCn_*G zM~>(k8}%!;Lz(#8f{3$Dt3^Qs%4BTkO!o;&=JF~)6&UrMAB{gCl={IHDLMy(HL}AcCFI3$YL3!pj@i~~BlzM5>AX_WY?NKwy3sC|8{j-YyOj0Ar`mL$H2_1{>D?VUIbB8x*Xp#-=Js*k@rQ<=UI!4l_oz)o zF~_g4l#hWK^*5wir@pwQUm|g?r?RYDEnjci3zd>rj7Ol24f&2$LZZ#FLqmF&fO%4g z={T(tos`#f5LU>NhSd=nbK&&|YDES|oz;~#;n97V9iw+0TXdDDM=dJ*?8L8#Su&ib z=DBau%&(@dkkt3C1IG~OU|YAzssc#zfo)h7oNDmOYYp>LS?!S=R=hY?{AgmOu?u2Y zd#aNR=qcq3>@zsf8`;qlisWZoCUL3t*W*7qiP?P}Wn&!S*NWv}#X<6Zu*IceDx;W% zkTVwRf!_)1V9ixO!zkr%LcpWQ@U}0To$0KF_RXPcgURLvPviO$Rtg!4vH(y190lqzlupr5pR~#6BPMw-JZm z|LI+FxRBVdg#e`hYz$0HOsp0lT!CD__&IV-uXzdt0zZa6NAuoClOCXneRpd&JEp7_ z@yCyw7`(;T4HLBzIDqv*4`6?l13wedq6Q#SB*$UG$X%I1=`62>f~D=+L`d)C%*Rhs z;By|W>XkGMnl9A%niswL(BbK&D-$eRE)>;lTizE=EE+)DE~gYa%}1fkSm=IfdKzaW zCQV@>%)Lj+HB*JGBNi8f!Q;*~Agdw;s-RM16GDnG>@|f(u=lTs(l8i98pI)n20Kb^ z1Gom)0~UQTU$yf#)n?qYGG#5bz?vbgrwx=0O%=Q_io@+y%qKSH=Go*Iltqi~imEJ& z?<~vQ#CU)KdYtlat%>e`)z(1{a^JOp(2-Z%aZ*MN;HJ z10T;3qzpn(hFpr{)pc5*H(xcHP>DcegX50H^x%PRRxU$8DD&aHM!dH*1VgLhi zg=we85JyY1zZaB_}XY^bp{263tx`@YCiZFp>7vf3}*%e&g_v^C`(5Xiv8jPYCcZ}T*YDpet4 zzAvc8E#OT?={MLKKyuteoO2bTUn8Q=T@WeB#z|_|kU*aY2YS>Erf20DPmRmaruI9AS4>bLTu2Lv|>XGL15n z)}R^HJM z|5unpzB;P}CQQVrabPkdr7QKpj6m3h0X-<%YH`K2U~lFjri>T6aXX&1?e}f|yku$6 zygTcpBNj^!!Oo|iuaDo~x8RN#UteOE4R9R)gbOj5joFp*gV(DW9?u9M*dr)u|3yKv z#xVe}GqA}|1{JvZn^|Xc zC(^=IQ=Ao>e<^wr(ETcI{u~rdyP!s7g6P48{om{kCB-;`ep(3D2UeYzR zC8QywH*&J~fp|ZX^%0Z^Y4YtPj8=aR%W3!9VV9g87fob388x5Z>$B{=TixWhfw1>mbwROQtHp`c%u+g+CQy`yC52dMgRz^22D)x<}4gU^_kW z*G)xM1TNqKaKQEfrbSv8jD7XNl6$+k%p2=#QR`VP`++atmQNRJ&KAK$*b@ew*A1yI zV`{WZZ-?Hp1=uNpCLfbYmbi7vHy~s&%8+1DBJtmNI!9RM&hWS6k11ex8DC?{-$>6s zVxSom;3*V-m6vGUI70GvGslxReDttY8yH0KAmAIPhtX*(+6Vvno_-Gb@) zABHk!%-7rwzf7fvel^75INZ491nrUGWAX5lT6tg~Z2Xky0(pMq$k_!WuX!j(9ReQ% zojD48@G;~Eu$@$S!4?vdl!xKOMC06qImYl|3_lP@vWK$c^n=hAe=r5Ql%AR2+UvkG z{A7?A`@LX3Sgd1}G&8xtlqP4Sp=hilZ>S(|B#y6-ro@l-9?!fY=!P{7e`r@aU z2?b5m+7)a{Gpo6ZmGOFh24J9MMgLF5Nr-(~2Is2W_UVFWshA6y-2@rsKo%s|X#huq zv015P3$VeqZ$VdScNXub7cg-oIhR2KEqqMM%%phHnbo>Y1Cb45(j9{GcR(3m)^BWa z)DL~ZSBi?cw;BTHUVIV8Gto$FTPULZm;|r5+oUP_F~3g&09hn?i=717775Z5Qa}8d zqwF;SzCjCdK5XF*_?4q$T$dKK5}fs3?vn5Xw|k8A8) zy4T>+{CgU2Ymh1j#84pSv;v>RX51V{4;vlmdpDS=0}P`hE}5+Fhz97#q;R!rm7`W2 zlH>zX5ZMPJjr3Zu)A3&RDuwyK8Av8RcsxX@BR!J$&~gey9$HxcV7g83qWIT_fg z_JSOy9ZMlvGiS*8j5tDyN)p6Z190>$ z@)G}Y(K37IsFEOoRcczgptAq+^C{qB;Cd*ktLXpE{vL4jc_Z4GYeo0axElUZkNr>= z$;GzhAQ6IjE%SW_555Resu6BI1e6Z@S6NJ5ABCQa=#oEcKEX$KtGb1onMffc)|Gfs zQ|v98v^M=)=P`|7CVm$CsgOqivP)A`DlVh#1pRxSAPRl7@+jjM;TunGbp9sf`G13L zX^IL8-6K!@SzSXskOotA=OLig0!|RdG;L-4A!4nGI!j(Evg;eOx5k_)?oQ?xj(p(q zm$t%o`%$AQ{f9lPmgaWE+7gSf_AjcYy-kjv>GaK1(pb|YlJgf_`@lxjTt}>oe*@aI z0S_;|0nmCh!lNLR#?%Xb_iS`p0~$uEH;x2)s}YD>Ix|pPR8zoYD{IYvuIS(qzLrH+ zi$e@e^6)O^NIrGo$=-0PH}sVAxD&J`fz~Hhd$*d_| zaLC~WCrYwQuN`}wj{VCSBHhff7OnNsaL7%c5Tn_DWbIJTO^?w(ZK}+=BpLaU>cK;I zk_%C}gitl#WYS;+xAp@=#56z{p4TOLF%ej!^HclFq0EQsFC2Qm`K~x)$Q35aiy01M zz?JlRUs^F(O;ccLrntKFc^pL$xeyNa%rtZz0Ugs0a*-f`1S5W(wr6~Sp8~9Sp}sBX zx-fxJ(#G#W5ok>VzXum@=MNXuCa2GrqdzZ?9^D^L5G#S$B(bX027sRo^^Xgv2tD~R zuAW#fzGJi!ma-DgOt%2at+mWc)xQP|Gb9?DS%GDvQIuGgu~PxhH|2?c6S-%M0B%>V zX>LT@^t2rAP`fM_rlxVwiZ#`Y6o$oj?bJrJ069fN_!ukg-jwPn9PiWu7K5R_Pj70I*SX!`=Y##7u0V?0%y_$T8|_CPC+IBnM8 zwvg-_V`{;`)MD;vK%+TsAxB}W-FhJ=?%R3{Pd&r^QW5W2VdK0BO9T6?y$r&57*?^B zB-qgA`S7K$xIMRT2MSIO#rOu|eFHGReI4EELp3DJ(xk+5Aq8wJhZ~k|!1Xt`-5*tZ zusHU1bKpa#sPO7=-SGZegB6zUnu2i9AkSd}1RDJ{$}=d~9|%P>f4vYSI7{?{WU+MF zGoYKlh-N+OYOsomhy!1Mkv~o9n{0hbd_Tu4eqni3{w^lD=)-X^hk~F~=uRP$@;}TN z2(lFnqEMfrnrHDlsEwIcLf*`d0$RItu;vN)5oeG^e3Bdo(#ok|PO=f8FbXRS?K91h z-)H*CQ1{HkN0?(Us~SgkznNU*%#_cDg2L?%Yn&E4Y8*!0ZN#q)j{$nu$(-VO*7-6x z01~+4`n=CSMF+kkp|@y*cjFhxX)2J<;2XSgPtIJg;3ke0#ejS|G6wAP`AKwF=VMdL`8 zZ*Hjd=ynE&vqjHy{xuJ*Voc_7$9okFv?0#0q|}9c~I- zst4j^wglz`yDz9$07>4=;Z1&`lr>#yh$)pXM(+ZE5M@MvlWMG8M?mIVaWD`~U6_}+ zphQ{#io)iGNaK4^l%A?&Y=-a}tc6+KJLC!eOS=QLh4XT-bt5{YL`i(Qow-yTN))`m z5>=_B&>B$T#mtUW}Xqdm5p>Yu07_Cw$z zKQ)6*fxE%@uiOiBAFD2Xf9`nX}ldF5lyO$L~Gt&C?*8d=icQ zdtcaNG_`hV6ml)Bv9!BW5Yp?(QWmc|()dE4P0|1~n7Wx@`qv$P$oxOhv@i_Iv}<@D zh$_L=eE?%b1p*$dtoNd7=fF<llpR{9n3{T%((F;on6rA zqZpZ_VMwDfGQy$kmRrCMY%v9MEcP?0!cw}e(*^T6jx3FhAeIUo+c$0(jFj>6oZ{JH z`y=6;*ab>rDg{Y-a8Oqn+?Gp@*LgNf>;0+XPD_i^Bqk0ZPPrv0i9d#plAE;^G2Ja$ zIR9Ry6-aQ7{$XaU+7h)0x@O97jsZu!@T0*3f~aq$pP|)x6VYVIgJl6@L@^ufW_^ zy%dR8%s;To7i(4+I48x4v?T%0HWpb~cdiPE47JI+Qrf=HP56;sdMcI;NX4UhD8M$P z$phvr6xI|KJeb{*^6n>b`Bbj|Fg?ec0}n~I(%S6YQy921lfdUuK&4T|g#j!p9)M-uDh#n<^xOSXA1a~( zKbvqbGFd4t&TCOdZ=n~57Y@PQ@fQ4i_9omlw*|B5ERsSSf-DQjp0`j&Qfx!lVu)63 z7hp1{l15wZm}T@;N7qU%`Z}ZVV9bC0em_N2%HnLkd(P<2a~QkZw8udUahPJ{@Diqf z5kWQSYbr1`F@4m=jT;a9<~P6j^QY#Bo_+D00qs)`J*B*T=l$mypr0~i(mJqFgY~Z* zMgKtsG|a5~ph+1boaAf4I?nymVVOH#XHO)am}J@ID`Gpa}F95qmy#i-XVk7}2BH=pBmV`;Nxp!NFL;mLbq~?uq4TZ84BJ zLw)K@tPv!eSxlQ5jOholJ9z-Rn|m>tR59l@(FmJJy%=1kkW>sxT4>ki(XQ2DqSWpN zJet^U3q#8Jh*%vpx2@#_s3b2-QjHc(c2Pt@Nm~R8+v;c^4k`Ul|1C5PZw zt=sUE`CsCJ=7Xqtv*4kG81xX85=6B&g4ubPs)4C#JIvTi-ENQZ%#qLL;q;{y&fmuB zYaZDSugy~g+>3Uz-IInr>JNrx!#Yw7E*nH;MFZ7|wsV9r82rXJzHthG9JHV9@o?+m z7w_Eh(C^S((wIg*^#UU&RWNv*hnhcyNHwgs*A<>@T|Toa%_1{XdOB(^g52&N)zo0J zW*uRrSR4tZc7zU|0I&GKa0oNVp?W-@k3#jEg=;p6d=p5t%`TZJ+e7-QNz zC`jLTg+(eh@)UK}w9PN$7{gBe5OyWIu_t;Mv(W?^)HW_PbO10)()U;n|4ZnBLLQp@*scbmgB2w%DXkVZzzOOg#Hv5jDaEg z*LWy-B%w1XaD|Fg=;Is}E)a5tKnQB=v>kGR@8}nvde;Ag44!PklGGh6wVbcek@W(B z7of#_v}lo`8Ii1IL0jtpX~Hd-CeUan9POllw(=1r3F;=oJT$5)$4sg)(^jaG*s*9NtK8F^!fvq#E4~bgF2fKXwAQ!uQ{=+!E_7&jFv1jY zu-}K_;&QC<55$etn{aF6R_ti+M6*AI?vaqC070P$?GXheU>XXlP1AOwg(d{!XhdtG zu((qGDBymC9qUtcu5=z(FWS9!lOGzQTv8~l2r&2SHqw@}!rHlO_pz5=dTH^z^Uixt z4hMctfcClPp6h+@Kfd?o)R=zXIcg$2$j1RE^rP9c7i~}{Tc+^HihGYqJa>v^Pcjxa z-8_*XK9Xma#vNXjDQ6Z)$CZ%WE)Y;f0o@Zq4i>=reF!qHN;QHxU`2BfM~BDZ70X_M zb#g8GbqN(JSdwCc%#paW9@Jc-ZW@?SQ<#!d7}GnkLp^{U$wQck#?exBw>Egvsz2Is z4eeSD?YNFOszD`fNMu@V%7UmFhCo?!OL-)bKtdD1Q&$WmuvTq_G_m-IU>+zoiNet6 zH$X+xdde^uc<7T115#mtaSTv5p^ykfih}q5v-cj*c3tJU_OtrheecuHk#y8$S+?cg zd&S1axZps56bQjL37v3B2!!w_A>~iG7YL!mc1$QqjO}1B2HY)MwrojOwR$_!>23G5 zSO3SHYadBAWF)5i!)9cSA(tcRl)cyd)|}t>zRw$CDS-^dF@-)_(a;T>Sl4BnLxcy5 zL$YYg2x(gs3g}h|JKKTZY@m3v7|fsv*CiSi(iDt*LjQ~F(y$ZzhD=jYBT>ZbvbP?1 zHleQ(hAv^Kh~x_DVMICBsl^KQFr?}P)B>0dLMB@gQ?oA9z_h8*uoPm^_sr!%;og4+^W_!<+z zI0v=;45pSaXf39jZhE3ldbI*+!y?cdJg21xFikn8zL?$2Wq!Y z&|%TaDp7ja|cx7I-`uUFWkd^ zZ!d@aLrnT3GT~blnY*@15Q>3f9oH3l-U=;ItRpvxBNM6RBEv9B`kA6&`);!Ji31JK z5&3_r%o|jk5Vh%JH)T>61y5yxtI~r`pQ6*Rs`Q#VIk{U7u~RCRtqI3{8)Yg4F)4J> zLlz8gF+5ZR&?<|W?jT+4K{4b}KLdm94#mvMG@G}l-HAbz4sIDvL0#TTp zPPI0S?3MTa@gGut+KT<3T*sEGa!d#y+KHhjO;YT08DU5;vv6w|hU)S;!{VOf%)^wu2h}!+@qkQM%u9w|_zZlj`aGrVTRck>|$4QJHydoYH9_=j7SM}M5xj9E7aU6nvF7%km-r>oZz{N zL7Lb(3nz()5%X1oRzxdS@q}>J(@;gRuEl7z5Tg;1t$Xwaut2xyR5iMRg|^sHLqXN( zFjEvVA}g&0RtqzyW7wt~)~Sl0RBkhchmEfn(K7QXbSx!MOAL+Fm>zR+y%=98Of-c; zv6F%M=P|H&1>bvc4S)ByU*l~zU%{_jdoo^Q3e9x!gABRCNxZN*X6>_E=WMo`=)LA6ZO94GCJqk2uL-VjG4kp~)v296)lY(}&K zh1Gt@j1QA;%xD-gD*oMy8J~u-2~HMT0z8(n(X$$AP{%Nmewgq@iPlN-&qHQXts#bo=hqdOm(FkNS1nA|8qQb;g~%2 zcpmX9S{gsaV)=dhYy}uU#$1b|Tf9JoKMbBGn%=6E>u}LD*nrG}V8BCsU5Iq5nKfcX&L>9VNh9s9SAaAD0kJq z5lK3=K$!|o-VEc6FvdP_AN#!BjD-i8ipL0r`oT(e`cA!qUvE)%$8ng!5UmCoL)A{W z6#waqT{Tjlta%1uDJ<(T(YJp*K=lplU2MRTgJVx)cRd_b_uVwyl!2 zG}5N9+DB-%nG|R-tdqLSIC)4Y8jjG$+XLjfPp91MVa*G(JhApUHgDR`?%juI)LL?& zEC!GBdW)QP_Q|X|eS!ymu$CttpCp^w$1T^MLoVAz&>Y6nM9;RDA3pdffAN*)l1W z{b~I(pZUx$T|mO?zGzpQ)zijihL`KIZFIJbP%dC zEhUzAa|eft;xHLcayZ<_e(w+mfp zL_h6I^@k`t62v{w8M2&dXlMxxz3y z>#%<3D9XP)3`$<+w9U?XR2v@ooQffXZiSg-oExt@mzk)Or=Q=;OI!C4$3B%>z{psQ z9lOSP?C~AR=T;zNn{;&BELqyYrRSW=o3A>R)yprzt#6>>?8HhXa!ipGDME2|SEyam zgkC`4#Bw0kY6LXhh>9OD6(|h*F^5C3`wkgtgbY^{nx<%*gm~GApr8?EOi2_J7IsSy zFv3u3&=oPf6!>T%)ND>tZB;OgJlR4wMy?BNOVScY{lm;OCK=QBa>Sa?!t`<$D9h*p zN|8|Iq$H>-4h{Jr&Z#+yMu9>;%OZUqPfb6=j+xyA#Tegq(Yi%ayP!HYQ6m?l70a24 zP#{UUYg>W!%JI<8d|v%eKSBJmKcmR>qfqkgZBevMObqj`Fk;6>IvyvCc5V2w*PL#pSt|GS2z&$M_X%;ODlWe!?e}&guQ1qWv1X7A{;^44mLBJLv`zSeULxu559RdJ@-lUB)@qne@@0 zI3V(F83ukUMeJcX1mPn)NcC*N_%!vG5fy zLKp21QJ@9#&C`fHji4dgx-m2&^omEW8qwc^g{sD&rn4+(GCyaNPbuVepL|-uP8&pq zE%Ml~I~Jnm2T`m7BV#_Bwzn9a^jN&CmlY?TPNlh)yb@wX=_J4)3ZzOyv*)AcPUFj8 z+sYq*<{m1w7{llw2pk4_6h88yn|bT4=TRz(9;%P3n(W(uCHLOHfp326hwM6#tj+0} z8Csr?Zg&tmHiqe==+lgkKTS5%g(2Lq!p$io!h$4H4wsv6y^;6+uUpxh#YVwDFdJhAAw{yc)7f>I22t%2{5E98a1BxXdK7x#xWa!3Htt4g!W|+cm zMWmV$C0C)*i0EtjEc0Te zkQ>DbtLaS<`BOCf6t+_&o9ZB)DoSzQY*?r1?W5|>GNTVOm0HR|ZIF4&03CE-={A9; z%a(~5+42N;zHts+9ewoG=kZMQdG=Qi&`ehd@^WI0m-aEIb@Z87YV4DOeat2K%H8(Q zFDyZ6w?^74>^Ny*!gdcx7Yf)p3um+?iHvT`Ee$RooDb~!d3_hJmFsm~wDb983x+1v zt`N74OMumFk{dK}l!}yt3E5jHBe9}3H~84G>gRqb$1(w>rA0Z`**l8ERufuWkTMBG z{~(t_>B-_3Ok$BWShwgd7r8inA#W~S$EnInvSCIh-3Y3jqUi|*PYI|~VLTpZPjeTC z!-MR1_j5QLCC&z@rl9Aw2&xWVqlWL+2qH)J^@AXg<`=C6s-xifku2Jwt0%>}>S5O- zIvSx=eymh&PR!{HstR3(Lbj-2=VH1$1r8kY*|6aN-+yEy zPj4Dxe0-W4t~rS>e(@%3>j+NukmPj;<4Y8qD0&Ck&a?Qp@9pQ0{_NkV*989~OAs_k z+b*B__-)+&?z3r?pQkx_2wgD4J(GdLQa<^=FXg;*7IFIr|AB*t>NJ`$)w*yerg1}s zl;D#nby9X6D{>h$WJ^sb<4#=F!MSIaIQQgJxbU=-seGu(qffmcrErR# zVy4>U@BhzzoVDt=>B%i7XpE!a$kvjSR%nSeUTFHn@KCXm!@Fd&7$$+5BGtWsLUsUW zc9#0^OZ3#oS?0lsj?QXFXT*&ds)QUa2MkXIOckNt0d7u_vk1*Juq<7gigYWG7E#eU z3F3x49SDbN)bh~Nofzq~d?-!2H7el*6XArMbDY3(maB_pR;8)rurwPZP-Fy}6@@HU z7t)a}u+*B*!&8s5!P&%Y$1Hv!M9IYH=`_C3x>p4?P$)}+mt%{Cj8aXgj8VI&s_~C6 zl~-QzD}V20eG}dn(6zwt?$>+^|~(FXPj~F z>D#tFHed7rC0?^nLFo_)D=mybq?Mb=SYF82czKAyE3com2R8?f(xiS=kr1XJO1`G4 zw)q;mD%l}^-hi$&aVdk75_Ca@Y(2%&=3=f&U&eK%tC<%KVEG1-o+PV?BFKxV>D=#~Ra&?TztP9N+L2Qx9tzgdqi~sxOA5bp` zG6`LY1WnK3oO74+=IhUd>Q<<1Bd?7^Dd6|)B|R+;1)Ct5o#gq{;rRh<(gu6 zZACIxPSF%xw@TzR(A+Y1R3w)vNZMaD@~QcI8EZ~4t#Q(V&=vPmQaVU!mPF19 zwn{42SsD#6Pb)I7vx{Q2#N*XxnN%kwO2I9OmRt^FvWhlcl^S;m)op{k^dv2{4SR}y zTn@-_>XTP6X)qLTpP`T{su(Fn#$Ra?@fgc^sUNda{hTl1#uM_mgx)97{Yj6t?N1lkgn?jU z2w;z7hh$JXvqU0Pw+V%2ffJ*ZTwS`DtI`)TKsS*{a#wYkS|di`tu`uknlXm`gY2vA z;(&XA5q*-1-9XDE*w99Knr3YV)pan0t4;X*!uD(7D?|-wi6Sk{8ZmJ_#+vo$pYd20 zYMf%3EVmT~Op~shLOQFGDrO<2L#jxsumn51f|l3G?va?yJBE4qsYiL@nU^>+QkIgu zm%li^yv@qZfajkd=ZY)OLa|Hu{$8p1^`kVp+RK_X``Eg1L`I?!?eU86IxA?>8UWk zt~1}a84N>qwR~Qhg}qg%&$b9l5EdgDHztq)S}T^TSQko40m2f%%E+ZMJ4vHnBVX*m zwhFSSwy1KzJ19*&YAEGKYjwx1-6zHZBw_RkA(BrWRL(=ys&AdkT=x;;9;HU8A>AVzs)OYr3xF0^@W# z$jUyeZriwWwKC&3Z4xQ0xHkwFB4 z4dNvZMlo#knh@4Pq8jKeDAr)GrE;=ib6Q5>gj7U-PQ%XX1XhSzvhKpZv{tn5qVB+bx`^MN~a4VN~LeTbhoU6PD4CVik%llWs?0Y0YIt6SjIWd&&+& zt(dY4en}&2so185Z43I9kD5yGy|LGlttUV9sZ9G)cbyXk9dXJFYaI3t(R3Qj#N*WU z6T}t=LGmuB8Rv^~$u z$8jLkOv!G^R>^gyq+a>hup)SQ?9?ylN;cGrD?aZL|=kbe~ zB#FCf(9y_qe(H3t>%5XP)zc|NIr+&v#h1Jg(YqGGxzq6khvP%+c6YO*@gn2Vkd$Nz zl&Co7H*2C`PoM}Xn8;BSu0<~i1QvSYz*Px+8^5I!mRf!l9?J4=@I zlTC}AZOm`IE8=hesDZZm72JDWFO+fSrqiG)eU?4=cUvu($S{2U?&(nyT+ zau=1(qzHp5no>_%6(nFNaU@pMjNI9Yn7Ddlh*GCP-@-oX^%*INv#mw=mC*#uW!O}v z>QraT?b|*XUW@hI*Sm;$^UkHSyGiUd_~t$9cyi6QBzQtT{bi4op8ifwSlSQGNetaX z7iK8I3)j*Tup|n$uB&oq-gFGq%u?*mi}~h#FY)oue4Xj4Cm$G7Wq}JY$(d>ChZ2ox z(f5ub7uEJKa^m!5qSb6{BSq2nSm=4|b3$HneYQ`;9H@lUGAf=x9QZ;y8DdH2uYi#I z=%Qs}n*@GHt?uEss+96wq*5h9%VW|L8vPljX;4#RR_KdZsCH9Q^5~?{G)pqP)mFq} zqlawvYVvx42Pc2XPInhhK9EWm@n8>C2PPd%F)C~&_{7BF8zgAl?`0Gv$(2`UC%J!^mAeMbgnO5 z%1O#n^1|yZZa`flQVd*L1d7L0Jjo7kE4#ei9Q1}5jSu77HB38}{OV?PmS%MtEohRG z2`MpttV;fK%a3FaTd7%uWu0&)BHvJ06xys(VpdtO!qDiqAz#!nOF5K$nmC^)6s*xO zL|1II^dLWcbQ_=j;zP%NW;Kf<*bf5dCo!_HctM8q&YDNdY4FAW^L75|uJ7>WfBq7G z_1B+bc=u)=e0Du!BS)~*g#=MH*(s}COihIx8J(4%SC>h}$!R5)M|H9A8$@bTo`-`t zg|8P-b0t*0M9Rn{ur0NZSS>Qu^l-uwGvzWJdKbk^fm-8$?Eg-eXQ?$R?Twc&A9$jA z3?Hd+=T{$Qu-9N>c!+P@`#59M4wjHE%B`blsnogd@=G~+WeKOc9$l@sNs%eE$dLSR zRZgNc>b^m2FDBi4CHFqChmZc@T})R(jC2v-snTdh;{K(l7|S3ERnuj83q+u>q081- zOSLfzOXwc#!kie!8sATc1}ErgPHBZaUu&_c9x~i$P%9Z|c}uE_j4;5o1%M-#>=m(- z5AkWmEh^%n;X7o~-C!4}gaNyK(O&YYXC`r2$b1olMn7pZi4{QgP$Qp`mgOS*Lh`)@ zzCZRowoUJ1x>S+j3R+(}`EyzzAGdMSO9TMNXEYt9O8w-m^{Wn8P!j&SDhy~+O%+M* zxo#=s3px4TL_w4*bQH9oeTBcauGekRe*XFA`+YAc%~fYTrK8&IG?`F28ab78Mt+({ z`G0?ho@j&vc?J~6OYyS0;#i)Fi8?f*?i5PaMvKx|HG{$C0AM6qO2#sGr!fqsZ7x$QW>0yfNC=_u1Tn>nrzMFTkAJ4w6ug35etjp zQaoiTdk;8FRXv(bhh`p9@a!;bZT=99tX3@g~vLmgLyT zhm0)Pip=b+2;^*P3B~>^`H$}%;t&4#Ta3^6n3hQt)?{3qghRQGM7M?{YI5gogSyyOwDl|h?_NG&I zL^@Waq)*%*BF3xXl?i0JkV`rjp<8)c)EHtffnTN?j#IX(EYf`XM68`aznYPJO{_S> zK%A#wUP!jrrZD?3&(~hyuu>zC6w170h!Z*}UMLygf>R?%kAhq&RUQ)b^s1NFe|jCo z!nWD>>0F9NW10=?Uyv#(P3y}{PfrV5(k~V5?{!^hMdC6Qp2DZI)gkw`lctY$^U5p575 zVrUrzj*aWa__Y{o#;1EGVpX7UdP-$wMrAOk&?QsKY=nKWmF*zaa}IIt3?6yr2w%AK zyM#f5zxscEjlrInsq%JCTHe85{qY$Xz2~v={u2N3z>_q+DB+Wc?_W{byk&^Z8;3aY z)Qjk!KVQByFYVaM;r-8X+G#1yI_n&q@?O01UTFtcHJi|xLeqM%Gs%W1kOUQBiSnfe zxK*zRa+Vx6#YPS-vy6N0J;a}V?m@~8S4!=?R!kt=dhxNxv#6z~Ey>B`98I^-j7}yd z4^ywt!PAqtH-UN;7I6_w;I_jr#BXc9Inqldem<||(rURVf|WzkgVp7+ zOq3sy^4^WreG&is-#^IBZ@Qe@-+3h`op}n;o~C)(oqdLsS)y0Gh*Xx z$aWXTeT_gcQUo7H6Q(2)sTU{oL5YU-2;3QJzDG9OhndbHq$m@CORYLXOE@&s5E&7@ zbP|)nip7RQlMjHbYH^yinoO^SHLLRQOp}ptg1BhXD!FoysfkB;Es`pqK)feO+FNoW zY8%Yr_$RAEUd@#tPvXR|ChkJf5)#<*zu`BE{HA(5tvh;^TU*zo=7{VCjH29pfTSe(#Y$eVhvlm)ws z9>QoY!bvzJ6&xjGk{R~IyV&Y%etbP{aXb`_ONw) zM}vwc>1VTT*Ezpru+;GB&4lDTbEqP@#4ccz2FdrH%J5{7yY70DzyH#A znVD_K#kFen3w-j!7h@Uw@F%vQTYG3!M_9OEIcKaIa3KSSB^d3ODN-uCVu zLPM9IWAFZhJiT@eH(r^eJnk9~c=DS&!Gq-5m1wcdTJ}!siQjJjUZ|w(;KIx}KYFID_u9`_T@s$2`1~US^nw z#{dSoR>;SEqlycQ+a`BCL*hM6SDYbd>dp}5b7)~2bJk|5vw&L$ zZr}}>^U20}LJ|6?g%~nZFrcY8OenMLjCZrC^#Xg{Ei~0x>9i9RKet(E3!6sU2NG2#oqzq#N4etMmAv7SbEqF0M-6818oL>scLKNEbUrU^8%lb< z$}t$%v+K6=o&Wd|k3P9pey&E<=h4Sr;4N>wNo;1N`NI?VOuI*n_t6xatgW+b@q9LJ z9F}g!s2!gru5CLen4Yr9rsvbDA0`O)@%Fc`;M|MPVZ$bu&;H%l86TaJyDeY#Q56b> z0ynsV%@#TOB7bBQhiCV^fcH~(@Td2)vLf9R`>3{^>$^5o1MwTT%y z%uI5LLt1V?qakJiHc@1tXpU^bII)G9TSzlr%-`K{AN%%BA_)y~jqSUS@S#8YGXMVl z6}<1=*K_q*SJPKK0cUIrj2}R0Iut#Hm9s9J#v2UHI#h(&q)Wr^&@g-DUkIMHSMNvK&uKTMFW?QGTKSLDySD&>|z2~kCinsIbd%C4#B30}f4 z*Y$cW+Dffb>4>5*X?#ker=Gy&McAtPlT`XYzk)q?w3A<2vOsiVT_dm+^iC7Hbkw|p z6=;}clM}*a+%o@qF0#%h8n-f@cQDIDk~YSQNbAoNtEwt7p6F-;6D-4hy zI2~Ud2EODaTLX zRK-rE_}?FXABXlG3l<^?P3A-|u@~ z{wy6mI?ETYWM*cJLx(Cn^W<(`eC`03oVkn-{_b^Le#uP?EI$CdH&GlOXQ|gAYD%W#s4grs7jskb4P*_Q@6Y^5^1bz9PPPU`%TJ$C@ux$%8y1`!p=^rd zcHr_)%2$0A*Rcj>B%cI|9v>BpCGJU8Yt>r+Gl+aGT({kJoAKP*wZ+*=CHa83@6Du# zmn5nu$_?e{pd$V$<{t6O{_ALB$8o#`HOa6gRt+LMiz>$ZJt{#yNoP-06;?%q+}L$F zmsw|1h`I4tHtNO_$}^z z;907TL|xM{(9iGP{wv&e!V`XZX_(o=n&f-R3ER+J2TU zTFNm!O`!{zHdqtbOJ%D{ftks%y9`<1at=I9s-C=Py6; zF3wq<;{3B#uwq#kJ9kbcx20Hps!63%=dm?Ax&F$lG3_4w`Xq5{ltyzC*?gA8i+WhM z?tnBkg>mwAMcmxv)Hr%-kcbSPpQWkjjEzmU-@<^oC(XQp0@+-Ph09XB{nxJG&;RmY z@WZ$eV5%yjYb zkAIL4{r>HI_Rs!8z7pag9kx#pB2=QzW%L8rKbFxGgtEI z550p^RxP6D>)iQ`@A3~{`Ztk zt9N{teMibNRb1N0BA@=g9&Wq&B32I6QF~$apT3g?^E>(HZ~u@*y&?pmERVIKZQxeN zD0I}g=AzSh=&>zH&2A5cL|Y|or@7?P^J&y(dH%VL)LJgjys(#BZoL^bWzeh_c<$*D zp5I($>(DHxo$YeY>JHxjn{VO+fAr6Uq43(7GGZ)n1ODTIXSnL(b z3pd?*HV-}Y2+zGRimDs3&}x>>ff0v?pWMR*=Uhfm-box++IsO0vb`7c;?9^4{=wa> z-*QlX{$)!RarHHCL^lf31f(c)MmWqU^yexJ{O{{H}t4QWsaC5Z1y*?vAKaMV+!90WcFRH*}$nz5IW;% z!WAiY)&aD{FJHrNndoH&Yr>;6?r~BGXW1sJ?Hq#zn`~EzmNAG5UE~*@K~q`Iw|_Lu z=Rf~-*1fn}grZ}lvof7rZaPDoom;l@-S2#x6~A=`)$xsFi~=8e_sRU)+n12b)Txbb zCG9ncO)YT)Ml)P^&T{(tiwqx`m8mDfY$JwpUf^=Wjo0wDTi?t_e)ofX?YM>udG=D^S-ikc`r z;+eK#-pq7Ccxs5^3ip3^9lw6tg)Hh@O=a9cGc9u6 zXS4l)#rr;f2hXiLcyx=m@8AyJ`J335kZbCS0k4lM@D%%OO!@qDLm0 zNK=j@Tw$FzcJtBSIbRM$wcs$*qZ`Q;PvyBM9_5ZZzKJUm=GA1#p3S83B85GBX8G73 zf1M}R?c(>|eF;~rdIN>tBaG~R2`xNKQJ~%))GIfk@4MWf12NUQ*@MB43pp<+DYNFVYxv8%*?IvzN1jRxX6ih8T7R=DzM1)A2 z*)P}ix-8nIQc36)zIW!ac3H(Xvp)lUQt*WEaVNHS8}O!5q)u|?A^M8kRtfbgjCcihQhsUa(1)1 zwSx&|LZ;yAL5LePsfw0JtAQojE?!93REZ@%H6j*J{ECY*63|H z*-d$TBUxh?13euyXQv7MNfbSlyK_0vsvTkR-~!HAy@cT-8;Am7FiFX`A_&Snvt|wN z`OUZS;g9?dPpo^Ez5B~Nw{9yJU-Cvq);`PdaAFfbvTur3%>nl?!iD_Fk6uY%XT(3< z`3Q%mYN)D#VP)BWpuxvJ^>tP(n@49chZ6hj9~$MzXeBvmg$-#e>L{9AanVV<`TA36 zR>ryejz@Uxnc<`Ftvr^C-L8l?i($j2gZ%!7|B)-NUd2^!xPUj`b_4f4@HEdpw;%ir zv7Z=mw(ptYOLsrYpZ)3E$))?zQzmIRtI3Q}E{%8Z%|mu12b>h-WCwrs`~ScT%f5oSZMCv63_k z6Gchvqp6xqsq0qCW0D(n#GtD+;QAQ+PEi z^?2h>q9RFl@JAQ1f>$gS|EFlb7OwvOel?a7fcB*%DH_stJm-OYS!`YOs@fyRiNpvM?hokjivuIsp#%k4|)^Se-mNkk;msF5_x)Mzon zes;v0WziltXK}R#A{mipgT~Axf!~n*a$g)@16>wG&xr^Gf4>r8kB7{gRybETxu|Hd zJmb?Ki_7ZZCOJoLyqhNhDK@`1hMRHuFVQW+}K zo5*)J`NT&q8arr{vPeJXc;b1i*KPUf=9&t~`Dy?pL--{9G251}eLS6p;D|Lncc;8JM7oeL%A9-NDSYTd@8I5h?&JP%KgsZD$X|TnG4A`pi+t&`@8pt` z7E#@|pWKW{ytn8iL!sibVYJ1FFQU!#MC}n6#6d(T@T)SC&Lgf(601H|S2tl+XI7iR z^IUoCvlSIv6|J9sQfd|=OP-!oS7(7?aBcP~d@taEN{f;BFm_hK?8(a0V%XBq;+70y zPVj)q;8_MqAJ>+C)tBfY9&dn-@u#My+@I!Cy_T=nWzn9Rnj((FIeJ0c+>%u3xo34a z_gjkcs-5gIvM_Gn zUzMi-foOGAmnvlrN2BcUUSdmQJLB;*Ek(e6nzWoUUU?F)S(CvHv2NnHLZTH(BA?$- z(8>|%k&tCojf>Mc&P?kp&PQ~2*{FGyIGsXES!n4Du9oKB2OnbB(2V3&$KedOy!9gf z{IB0F3)R6r>-o{6`$&mfKr`^$q`JGl@guIdXc?EDaT@g_*Y$ zhz5#3#d&8gXMSIS!^0Jcpmifp)}ZmJDlhHW&e^BudCM&q^PbypCki|H!soxn-T(TX zqXeHrhh`WZX|P~r0o!WeRoBUE$E&ZnfYVNXFHb&mgh!s<#?X-|`8n&25Ie2OVBVgt z9u_Rjvus(4D=#{QMSU3*cZjh17_H_wrdr~bYgTd7o0iiQA_6ai)66hBQDtOunDNOO zrpA3n4$Y9ydo1hssEj?$b(hZLtv8>>H}Bs_;Cn~2J*TTKzyI-nprfk;r`4cYOJdL# z&6~%ce(L?KUTIUC8s-n)cRG%L4bN?A@%cM`$alWGR^CTq<`PHA%{WyX$BD{Vrr==v za;G5r_)6f(Q-mf$8tg%Qa~0pb?_a5wJrvbQcEeG!c}S;pe(Rl=@RplT<51^cX=!MuDxwmU;uEMj!d zLr<4*>NC_UO$zfg-gy1Rd;oJmjKAm6A$+ew=lmSE{pzJC@eXoU%=>=(dbX|q3Zs=K zh8X9^$;&x>xXD-VdV+ITza1-mB4OhtRKatRfTmbF2SqzYjaxX4Bdl1uoQuvqjc?xf zBwpmTAC@M55U^p>9&UfnEmDKLb;};^zWejsedm2t8^>J56B9KK9~t4i(^43^17RKC zi>VDiP1YRb=Bo#}@r^g)c?yksOF9)z!z7i-$Z%fGm_=2N5c}H*W~NcxDVZuGI`)Cr z#G7=8EEUtxu;UUryPLjcc}_bqB-ZjMVsadvN)%5~tM0@Zf02&tD*oi7S8?fOE0~;U z(5T1EmVHLXs_fl!m_7SPaJ*yHA*995Jv&)4zY{AQX6Eoga)lLKap|=<4V@qTaGg|q z2%9_Y{`P34Og)^Xm=5F)F^){h_7*2bRix3!oumq9^UyQnJo5N<6wy1D{n|iM1cNx_ zt#3M;w_LlB+Wzk`kYC8@r!42m^#`St@%k%Q^2W`d{7%P!(w@3@}Ne(_$s$dSF?L`kCZ;19O)Zx`<5*KawKmM8kz`y@S395EDA z^zKDJyn^HIrZ8|OmtS=n_dc)&FNkDvORSjkN&3ulTlnmse}mD9DSr6aT84*bkG{l$ z%68JqL9V}Q6{nwEB53R)3hHvVuBrk!G>TuZ;MDezO64#$gOsI9{HUBSw0wC~_o$*W z3$cS9hw|?$V*V5vQkoXUP5hRFCR~=m5&Xa+&`lYH8_5$|M*b3b3X8JvcM_Bv%ug@m zUDx%4-cO{a@k2}UxT`gVjT?v9uxW@Vp4-9tEkhhSGR}KH@EJbxyBG3@?>~#!so?u2 zW~x9}M-Lgxq}dXQL85&pC^0Tg5&r9HC@D*BIu(hcZ4nv~4JSt`zly_CIsX1jU!go( zmMy9Ta;4FV0v7dV`R!l7gseTp^w?$$5u7aBQ!d$jf!p78BVAn~-bjN&;S`>H5e|$^ zanlOMOx*zj+bv?7@G;zt0ijp`8{^H zkRes>i09(Jfa3)B|IJHisO3p7dHM@jzt~g=K|+wXptplKQzU9wbkuDw&YaI1^Ea?G zUX0}@5jL^z<7y5yDvU76cK0Q=yE_uec$8zzJ1+Q_Sl;vk`R-bdFHv#`@GKc|Ns4+;*eB47%B*}TGdym*`QZc z%z}Z|Z__jqu*%fgkg-^9X-rN9m~Cmi_9-;YJ&OZ9&3yLiAF^|I4>#TTW;U*zM1Hu7 zw$@Irdf&M`zU2@DU4!g=em5u1ZlUH4q1yX-)5Yt#>$i`w@8DPj`bTW}O^THgxBT!C zHk|Y^I$IV|%MX%Pt5|`BCywW;Bh?lH_#+GB3642jc~(_ zw;g@m<6@jMvzb*ZW^>B=hIY_6 z0!ODRO9`an;iwj03mdn06kjg(5vt;0i8p{B&Am*41W?Km!c+{DC85xh7IV212}K89 zMyc*2s2s!-V<8dDV8lrnNivx%v(KHzh3B5i!M;;?d}}|y{@pV?``k7(Q^odE81Y5) z98uW+!jp6jh&`Klh}BR8g0=x~wNS+|r_#y7$U=`Rm@efsGrcV~_t9(@^oWNqp-& zcW}?+hk2>H%(WkRHFM37!EKLX3CD{i#w89rdwp^)RK)l~Nf8sBu6N^R>WT70-YnpX(17%(qd!GEH5Vy%7 zZl`6kl4iRowkz2&K{QeP3#;Ux7xH6&E1a0C_)6sVoS2IWC7G_-iA3D{zbG|-m)9$@ zXm8)X-S<4N9Q`Uf5{arjLiLQFPX&OlCC&OiAj*k{QD0*(9f|<*6NUK6Uj^c>Iao z%%9wfrdR}89!(pkGWa}eR=$RhTzUpK+;lH~F-Jly71cbIv1eGk@LWFd-ZS~+HNU`h zqVbO}x^4xY-Os=c9L3WkowX7)wh~c{ml$(N zJ+3%GiOx#oWr}05V0Hv@!4Q4l62=ezi}OI?Eof4bXC~yYfPOIW7Wx>T=vfO#PlvoZm-mT$3utn z&pVALcKwQP-E=={=yL6c&S%aE3Ho+#VO4&NCc8*$vC4D(K0Tq%xTcT^5@Ze8L7=8X z6f20;*H_)a_*x{ zPfuHD?OB3!65Wr}R7|i+Tg)3eU&A66U^#|Ng?4m@y5JX6V;~q}cWpOY?HA}*d$8km z35lxak5DfS%CQ6!;(?kfa7M zlpO25@og9L@RPm#;=V_@`KI5{we1k!_~QGSxw->$>t-^3AI<70iCT_F25q{;0$k*9 zHpNhlx(wrxa?u#L-KC;b*)UucSG6(7!KTDY z3XCv1UZzVOMoD}4Eh4Q$gau3LH%2|uYfsPs75{(TNd9H`uN zekw-To~A06kFgkuF`ZdX3+GJTz;WtAvLd)o+*7JA(Xe8Mouk0MdJj8Fd+Ag9ahqy# ztl$)j*rhQ-yL>d~P9Rl%$HK1~Xo9^wU^A}_r)Eq}Oqk40#>h4+D9unaTL@bgv-yc3 zuDtFJhK9vbFD8%m&u`zyk&#t2C8y$424vbxwXlm+i^qy(Q>o+*(C^f+Q3il zJH*}hKaZ-%aAn6RPJNLn=c4mZ;x!v*;*I^0rf>w|Z*&6@RIs0xSOr~=Brh{1vF+&B*RB-$nW5q$5Pvg(8u=59u5cn zI4M^a45yUG&W%X6vMKIFTe#rBc2t><7!(}hgC27$3LBFKCngQ%CLq(AKyNm2v^rL* zm7=5b>FdA6*6m}=T{xRk&SrRcfO{W&m~3mAuUvC3$!rZbw-YNiPQCOeLVJh&91Rf+ z8Ai_0co0dAS%)goJa$;JCP0K$z^DuDN(30j#Ljx*$op`=0<@RH@;#^y|F0r zVw@5*K7uBE+=5W39wX(IVYG2HF`JhQ%}9brV>Bc5`d$!?S41Z+x=1lX5pp>}1vHf! zp5KF=D-f#tSkyk7HJ2>qy%(Osj=eb^e&SC&`t(*_+;)VAAKk&(=bXUe_iiK%lVn?F zGccIqmLJ_lt?Hv#sqeF~7UQ0aarB>XF5mcoTC8mi7(jZP@Kq_|kj=DX#WEDtD!aXdP`6MLf-gT?lx=iP z#}T^h5L#(rQ|ctfyga|J6&Z`!gz1C`HbblV=px_LcO?o|3!?Lrrf^gRHZj6h8mBQi z`fPk(`?IW|RN^48sERF#Vp^jBd(!SY zk*s|*nMnRy6l+^oaCBA5sO0a7?%GhPTLxM>POLRUU}kvmU zJmIdxz{Mr64AbN9V@Gut-R^$MR*6vc@GBMSxdB2aFN=mRKJ9uPzog>37EY;-F&Z$f ztgtbWVr>FurZqB6ag4Mtny}~&g=CW$(96tEr%Q-SK%GK9=nP;Bw<0rR2 zNjj6@^H-fsyxAcvzK9jts3I9hknL0hp@I@OgAuv}MPWfd%)9B+DPG*xO(

  • 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 z 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 FV1f%rk=FnK literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-xxxhdpi/splash.png b/frontend/android/app/src/main/res/drawable-xxxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4b45387098ad49cbc2a93391fe44ceef8e4c6c31 GIT binary patch literal 200895 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

  • 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 z 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 FV1f%rk=FnK literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable/background.png b/frontend/android/app/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..99d8f46285223b4731486bc92f27a4eb873453df GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*6yfByWe&cOPL=>v!7 R^iZHUgQu&X%Q~loCIH=|5aR#< literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable/launch_background.xml b/frontend/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/frontend/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a05eee32290c1e7f5ed4f58e0bdcca15f712ab48 GIT binary patch literal 10741 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 literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0d64d0b3eaa2491bd0bcdf68d4adcb655c6dc2d3 GIT binary patch literal 5379 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 KMNUMnLSTY5jf^w^ literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e08d9cc7fd9e8a07c720ba4a9c1e78380d90e7b7 GIT binary patch literal 38137 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 literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4773aad4fe94debb3a315ba6585745b6f6cf98f8 GIT binary patch literal 64310 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 LNkvXXu0mjf<>E`> literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/values-night-v31/styles.xml b/frontend/android/app/src/main/res/values-night-v31/styles.xml new file mode 100644 index 0000000..9d38747 --- /dev/null +++ b/frontend/android/app/src/main/res/values-night-v31/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/android/app/src/main/res/values-night/styles.xml b/frontend/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..dbc9ea9 --- /dev/null +++ b/frontend/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/android/app/src/main/res/values-v31/styles.xml b/frontend/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 0000000..70292bf --- /dev/null +++ b/frontend/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/android/app/src/main/res/values/styles.xml b/frontend/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..0d1fa8f --- /dev/null +++ b/frontend/android/app/src/main/res/values/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/frontend/android/app/src/profile/AndroidManifest.xml b/frontend/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/frontend/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/frontend/android/build.gradle.kts b/frontend/android/build.gradle.kts new file mode 100644 index 0000000..dbee657 --- /dev/null +++ b/frontend/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/frontend/android/gradle.properties b/frontend/android/gradle.properties new file mode 100644 index 0000000..fbee1d8 --- /dev/null +++ b/frontend/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true diff --git a/frontend/android/gradle/wrapper/gradle-wrapper.properties b/frontend/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..e4ef43f --- /dev/null +++ b/frontend/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/frontend/android/settings.gradle.kts b/frontend/android/settings.gradle.kts new file mode 100644 index 0000000..ca7fe06 --- /dev/null +++ b/frontend/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") diff --git a/frontend/lib/core/constants/app_colors.dart b/frontend/lib/core/constants/app_colors.dart new file mode 100644 index 0000000..421393f --- /dev/null +++ b/frontend/lib/core/constants/app_colors.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class AppColors { + // Prevent instantiation + AppColors._(); + + // Primary Brand Colors + static const Color primaryGreen = Color(0xFF1C8248); + static const Color darkGreen = Color(0xFF085F32); + + // Backgrounds + static const Color pageBackground = Color(0xFFF9F9F9); // Off-white/Beige + static const Color surfaceWhite = Colors.white; // Cards, Dialogs + static const Color inputBackground = Color(0xFFE5E5E5); + + // Text Colors + static const Color textPrimary = Color(0xFF1A1A1A); + static const Color textSecondary = Color(0xFF666666); + static const Color textMuted = Color(0xFF999999); + + // Status Colors + static const Color error = Colors.redAccent; + static const Color warning = Colors.orange; + static const Color success = Color(0xFF1C8248); + static const Color info = Colors.blue; +} \ No newline at end of file diff --git a/frontend/lib/core/constants/app_sizes.dart b/frontend/lib/core/constants/app_sizes.dart new file mode 100644 index 0000000..843efad --- /dev/null +++ b/frontend/lib/core/constants/app_sizes.dart @@ -0,0 +1,20 @@ +class AppSizes { + // Prevent instantiation + AppSizes._(); + + // Padding & Margins + static const double p4 = 4.0; + static const double p8 = 8.0; + static const double p12 = 12.0; + static const double p16 = 16.0; // Default Standard Padding + static const double p20 = 20.0; + static const double p24 = 24.0; // Screen Edge Padding + static const double p32 = 32.0; + static const double p48 = 48.0; + + // Border Radii + static const double radiusSmall = 4.0; + static const double radiusMedium = 8.0; // Standard for Inputs/Buttons + static const double radiusLarge = 12.0; // Standard for Cards/Modals + static const double radiusCircular = 100.0; +} \ No newline at end of file diff --git a/frontend/lib/core/network/api_constants.dart b/frontend/lib/core/network/api_constants.dart new file mode 100644 index 0000000..83b74fd --- /dev/null +++ b/frontend/lib/core/network/api_constants.dart @@ -0,0 +1,7 @@ +class ApiConstants { + // IMPORTANT: For Android Emulator testing, use 10.0.2.2 + // For physical LAN testing, use the IPv4 of the Host PC (e.g., 192.168.1.X) + // For Windows Host app testing, 127.0.0.1 is fine. + // static const String baseUrl = 'http://127.0.0.1:3000/api'; + static const String baseUrl = 'http://192.168.1.107:3000/api'; +} \ No newline at end of file diff --git a/frontend/lib/core/theme/app_theme.dart b/frontend/lib/core/theme/app_theme.dart new file mode 100644 index 0000000..f85ec42 --- /dev/null +++ b/frontend/lib/core/theme/app_theme.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import '../constants/app_colors.dart'; +import '../constants/app_sizes.dart'; + +class AppTheme { + // Prevent instantiation + AppTheme._(); + + static ThemeData get lightTheme { + return ThemeData( + useMaterial3: true, + scaffoldBackgroundColor: AppColors.pageBackground, + primaryColor: AppColors.primaryGreen, + + // Color Scheme + colorScheme: ColorScheme.fromSeed( + seedColor: AppColors.primaryGreen, + primary: AppColors.primaryGreen, + secondary: AppColors.darkGreen, + surface: AppColors.surfaceWhite, + error: AppColors.error, + ), + + // AppBar Theme + appBarTheme: AppBarTheme( + backgroundColor: AppColors.surfaceWhite, + elevation: 1, + shadowColor: Colors.black.withOpacity(0.05), + scrolledUnderElevation: 0, + iconTheme: const IconThemeData(color: AppColors.textPrimary), + titleTextStyle: GoogleFonts.inter( + color: AppColors.textPrimary, + fontSize: 20, + fontWeight: FontWeight.w600, + ), + ), + + // Card Theme + cardTheme: CardThemeData( + color: AppColors.surfaceWhite, + elevation: 2, + shadowColor: Colors.black.withOpacity(0.08), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + margin: EdgeInsets.zero, + ), + + // Elevated Button Theme + elevatedButtonTheme: ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + elevation: 2, + shadowColor: AppColors.primaryGreen.withOpacity(0.4), + padding: const EdgeInsets.symmetric( + horizontal: AppSizes.p24, + vertical: AppSizes.p16, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + textStyle: GoogleFonts.inter( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: 0.5, + ), + ), + ), + + // Outlined Button Theme + outlinedButtonTheme: OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + foregroundColor: AppColors.primaryGreen, + side: const BorderSide(color: AppColors.primaryGreen, width: 1.5), + padding: const EdgeInsets.symmetric( + horizontal: AppSizes.p24, + vertical: AppSizes.p16, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + textStyle: GoogleFonts.inter( + fontSize: 14, + fontWeight: FontWeight.w600, + letterSpacing: 0.5, + ), + ), + ), + + // Text Button Theme + textButtonTheme: TextButtonThemeData( + style: TextButton.styleFrom( + foregroundColor: AppColors.primaryGreen, + padding: const EdgeInsets.symmetric( + horizontal: AppSizes.p16, + vertical: AppSizes.p12, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + textStyle: GoogleFonts.inter( + fontSize: 14, + fontWeight: FontWeight.w600, + ), + ), + ), + + // Default Input Decoration (Text Fields) + inputDecorationTheme: InputDecorationTheme( + filled: true, + fillColor: AppColors.inputBackground, + contentPadding: const EdgeInsets.symmetric( + horizontal: AppSizes.p16, + vertical: AppSizes.p16, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: BorderSide.none, + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: BorderSide.none, + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: const BorderSide(color: AppColors.primaryGreen, width: 2.0), + ), + errorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: const BorderSide(color: AppColors.error, width: 1.5), + ), + focusedErrorBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: const BorderSide(color: AppColors.error, width: 2.0), + ), + hintStyle: GoogleFonts.inter(color: AppColors.textMuted), + labelStyle: GoogleFonts.inter(color: AppColors.textSecondary), + ), + + // ListTile Theme + listTileTheme: ListTileThemeData( + contentPadding: const EdgeInsets.symmetric(horizontal: AppSizes.p16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusSmall), + ), + ), + + // Font Family & Typography + textTheme: GoogleFonts.interTextTheme(), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/domain/entities/archive_model.dart b/frontend/lib/domain/entities/archive_model.dart new file mode 100644 index 0000000..3604187 --- /dev/null +++ b/frontend/lib/domain/entities/archive_model.dart @@ -0,0 +1,31 @@ +class ArchiveModel { + final int id; + final String lrn; + final String name; + final String status; + final String archivedDate; + final String expiryDate; + final bool isExpired; + + ArchiveModel({ + required this.id, + required this.lrn, + required this.name, + required this.status, + required this.archivedDate, + required this.expiryDate, + required this.isExpired, + }); + + factory ArchiveModel.fromJson(Map json) { + return ArchiveModel( + id: (json['id'] as num).toInt(), + lrn: json['lrn'] as String, + name: json['name'] as String, + status: json['status'] as String, + archivedDate: json['archivedDate'] as String, + expiryDate: json['expiryDate'] as String, + isExpired: json['isExpired'] as bool, + ); + } +} diff --git a/frontend/lib/domain/entities/dashboard_models.dart b/frontend/lib/domain/entities/dashboard_models.dart new file mode 100644 index 0000000..c0e3831 --- /dev/null +++ b/frontend/lib/domain/entities/dashboard_models.dart @@ -0,0 +1,48 @@ +class DashboardStats { + final int totalStudents; + final int printQueueCount; + final int pendingVerifications; + final int activeUsers; + + DashboardStats({ + required this.totalStudents, + required this.printQueueCount, + required this.pendingVerifications, + required this.activeUsers, + }); + + factory DashboardStats.fromJson(Map json) { + return DashboardStats( + totalStudents: json['totalStudents'] ?? 0, + printQueueCount: json['printQueueCount'] ?? 0, + pendingVerifications: json['pendingVerifications'] ?? 0, + activeUsers: json['activeUsers'] ?? 0, + ); + } +} + +class PendingTask { + final int id; + final String fileName; + final String createdAt; + final String firstName; + final String lastName; + + PendingTask({ + required this.id, + required this.fileName, + required this.createdAt, + required this.firstName, + required this.lastName, + }); + + factory PendingTask.fromJson(Map json) { + return PendingTask( + id: json['id'] ?? 0, + fileName: json['file_name'] ?? 'Unknown', + createdAt: json['created_at'] ?? '', + firstName: json['first_name'] ?? 'Unknown', + lastName: json['last_name'] ?? '', + ); + } +} diff --git a/frontend/lib/domain/entities/document_model.dart b/frontend/lib/domain/entities/document_model.dart new file mode 100644 index 0000000..37f0e74 --- /dev/null +++ b/frontend/lib/domain/entities/document_model.dart @@ -0,0 +1,61 @@ +class DocumentModel { + final int id; + final int? studentId; + final int? requirementId; + final String fileName; + final String filePath; + final String? documentType; + final String status; // 'Pending', 'Verified', 'Draft', 'Archived', 'Rejected' + final DateTime? retentionDate; + final DateTime createdAt; + + // Extra fields for UI display + final String? studentLrn; + final String? studentName; + final String? size; + + DocumentModel({ + required this.id, + this.studentId, + this.requirementId, + required this.fileName, + required this.filePath, + this.documentType, + required this.status, + this.retentionDate, + required this.createdAt, + this.studentLrn, + this.studentName, + this.size, + }); + + factory DocumentModel.fromJson(Map json) { + return DocumentModel( + id: json['id'] as int, + studentId: json['student_id'] as int?, + requirementId: json['requirement_id'] as int?, + fileName: json['fileName'] ?? json['file_name'] ?? '', + filePath: json['filePath'] ?? json['file_path'] ?? '', + documentType: json['documentType'] ?? json['document_type'], + status: json['status'] as String? ?? 'Pending', + retentionDate: json['retention_date'] != null ? DateTime.parse(json['retention_date']) : null, + createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt']) : (json['created_at'] != null ? DateTime.parse(json['created_at']) : DateTime.now()), + studentLrn: json['studentLrn'], + studentName: json['studentName'], + size: json['size'], + ); + } + + Map toJson() { + return { + 'id': id, + 'student_id': studentId, + 'requirement_id': requirementId, + 'file_name': fileName, + 'file_path': filePath, + 'document_type': documentType, + 'status': status, + 'retention_date': retentionDate?.toIso8601String(), + }; + } +} \ No newline at end of file diff --git a/frontend/lib/domain/entities/document_requirement_model.dart b/frontend/lib/domain/entities/document_requirement_model.dart new file mode 100644 index 0000000..dea4ce5 --- /dev/null +++ b/frontend/lib/domain/entities/document_requirement_model.dart @@ -0,0 +1,83 @@ +class DocumentRequirementModel { + final int id; + final String name; + final String? description; + final String category; // 'JHS', 'SHS' + final bool isMandatory; + final bool isEnabled; + final DateTime? dueDate; + final String acceptedFileTypes; + final String schoolLevels; + final DateTime? createdAt; + final DateTime? updatedAt; + + DocumentRequirementModel({ + required this.id, + required this.name, + this.description, + required this.category, + required this.isMandatory, + this.isEnabled = true, + this.dueDate, + this.acceptedFileTypes = 'pdf,jpg,jpeg,png', + this.schoolLevels = 'JHS,SHS', + this.createdAt, + this.updatedAt, + }); + + factory DocumentRequirementModel.fromJson(Map json) { + return DocumentRequirementModel( + id: json['id'] as int, + name: json['name'] as String, + description: json['description'] as String?, + category: json['category'] as String, + isMandatory: json['is_mandatory'] == 1 || json['is_mandatory'] == true, + isEnabled: json['is_enabled'] == 1 || json['is_enabled'] == true, + dueDate: json['due_date'] != null ? DateTime.parse(json['due_date']) : null, + acceptedFileTypes: json['accepted_file_types'] ?? 'pdf,jpg,jpeg,png', + schoolLevels: json['school_levels'] ?? 'JHS,SHS', + createdAt: json['created_at'] != null ? DateTime.parse(json['created_at']) : null, + updatedAt: json['updated_at'] != null ? DateTime.parse(json['updated_at']) : null, + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + 'description': description, + 'category': category, + 'isMandatory': isMandatory, + 'isEnabled': isEnabled, + 'dueDate': dueDate?.toIso8601String(), + 'acceptedFileTypes': acceptedFileTypes, + 'schoolLevels': schoolLevels, + }; + } + + DocumentRequirementModel copyWith({ + int? id, + String? name, + String? description, + String? category, + bool? isMandatory, + bool? isEnabled, + DateTime? dueDate, + String? acceptedFileTypes, + String? schoolLevels, + }) { + return DocumentRequirementModel( + id: id ?? this.id, + name: name ?? this.name, + description: description ?? this.description, + category: category ?? this.category, + isMandatory: isMandatory ?? this.isMandatory, + isEnabled: isEnabled ?? this.isEnabled, + dueDate: dueDate ?? this.dueDate, + acceptedFileTypes: acceptedFileTypes ?? this.acceptedFileTypes, + schoolLevels: schoolLevels ?? this.schoolLevels, + createdAt: createdAt, + updatedAt: updatedAt, + ); + } +} diff --git a/frontend/lib/domain/entities/folder_model.dart b/frontend/lib/domain/entities/folder_model.dart new file mode 100644 index 0000000..70f2996 --- /dev/null +++ b/frontend/lib/domain/entities/folder_model.dart @@ -0,0 +1,126 @@ +class FolderModel { + final int id; + final String name; + final int? parentId; + final int? studentId; + final String? category; + final int? createdBy; + final DateTime createdAt; + final DateTime? updatedAt; + + // Extra fields for display + final String? studentLrn; + final String? studentFirstName; + final String? studentLastName; + final String? createdByUsername; + final int? documentCount; + + // For student folder view + final StudentInfo? student; + final List? subfolders; + final List? physicalFolders; + final List? physicalFiles; + final String? folderPath; + + FolderModel({ + required this.id, + required this.name, + this.parentId, + this.studentId, + this.category, + this.createdBy, + required this.createdAt, + this.updatedAt, + this.studentLrn, + this.studentFirstName, + this.studentLastName, + this.createdByUsername, + this.documentCount, + this.student, + this.subfolders, + this.physicalFolders, + this.physicalFiles, + this.folderPath, + }); + + factory FolderModel.fromJson(Map json) { + return FolderModel( + id: json['id'] as int, + name: json['name'] as String, + parentId: json['parent_id'] as int?, + studentId: json['student_id'] as int?, + category: json['category'] as String?, + createdBy: json['created_by'] as int?, + createdAt: json['created_at'] != null + ? DateTime.parse(json['created_at']) + : DateTime.now(), + updatedAt: json['updated_at'] != null + ? DateTime.parse(json['updated_at']) + : null, + studentLrn: json['lrn'] as String?, + studentFirstName: json['first_name'] as String?, + studentLastName: json['last_name'] as String?, + createdByUsername: json['created_by_username'] as String?, + documentCount: json['document_count'] as int?, + student: json['student'] != null + ? StudentInfo.fromJson(json['student'] as Map) + : null, + subfolders: json['subfolders'] != null + ? (json['subfolders'] as List) + .map((f) => FolderModel.fromJson(f as Map)) + .toList() + : null, + physicalFolders: json['physicalFolders'] != null + ? (json['physicalFolders'] as List) + .map((e) => PhysicalEntry.fromJson(e as Map)) + .toList() + : null, + physicalFiles: json['physicalFiles'] != null + ? (json['physicalFiles'] as List) + .map((e) => PhysicalEntry.fromJson(e as Map)) + .toList() + : null, + folderPath: json['folderPath'] as String?, + ); + } +} + +class StudentInfo { + final int id; + final String lrn; + final String firstName; + final String lastName; + + StudentInfo({ + required this.id, + required this.lrn, + required this.firstName, + required this.lastName, + }); + + factory StudentInfo.fromJson(Map json) { + return StudentInfo( + id: json['id'] as int, + lrn: json['lrn'] as String, + firstName: json['firstName'] as String? ?? json['first_name'] as String? ?? '', + lastName: json['lastName'] as String? ?? json['last_name'] as String? ?? '', + ); + } +} + +class PhysicalEntry { + final String name; + final bool isDirectory; + + PhysicalEntry({ + required this.name, + required this.isDirectory, + }); + + factory PhysicalEntry.fromJson(Map json) { + return PhysicalEntry( + name: json['name'] as String, + isDirectory: json['isDirectory'] as bool? ?? false, + ); + } +} \ No newline at end of file diff --git a/frontend/lib/domain/entities/report_models.dart b/frontend/lib/domain/entities/report_models.dart new file mode 100644 index 0000000..4a1c189 --- /dev/null +++ b/frontend/lib/domain/entities/report_models.dart @@ -0,0 +1,154 @@ +/// Represents one academic year record from the DB. +class AcademicYear { + final int id; + final String yearRange; + final String status; + + const AcademicYear({required this.id, required this.yearRange, required this.status}); + + factory AcademicYear.fromJson(Map j) => AcademicYear( + id: j['id'] as int, + yearRange: j['year_range'] as String, + status: j['status'] as String? ?? 'active', + ); +} + +/// KPI summary numbers for the Reports screen. +class ReportStats { + final int totalStudents; + final int pendingDocs; + final int verifiedDocs; + final int printQueueCount; + final int verificationRate; // 0-100 % + + const ReportStats({ + required this.totalStudents, + required this.pendingDocs, + required this.verifiedDocs, + required this.printQueueCount, + required this.verificationRate, + }); + + factory ReportStats.fromJson(Map j) => ReportStats( + totalStudents: (j['totalStudents'] as num).toInt(), + pendingDocs: (j['pendingDocs'] as num).toInt(), + verifiedDocs: (j['verifiedDocs'] as num).toInt(), + printQueueCount: (j['printQueueCount'] as num).toInt(), + verificationRate: (j['verificationRate'] as num).toInt(), + ); +} + +/// One bar in the "Enrollment by Grade" chart. +class GradeEnrollment { + final int gradeLevel; + final int count; + + const GradeEnrollment({required this.gradeLevel, required this.count}); + + factory GradeEnrollment.fromJson(Map j) => GradeEnrollment( + gradeLevel: (j['grade_level'] as num).toInt(), + count: (j['count'] as num).toInt(), + ); + + String get label => gradeLevel <= 10 ? 'G$gradeLevel' : 'G$gradeLevel'; + String get fullLabel => 'Grade $gradeLevel'; +} + +/// Document verification status breakdown. +class DocumentStatus { + final int pending; + final int verified; + final int draft; + final int archived; + + const DocumentStatus({ + required this.pending, + required this.verified, + required this.draft, + required this.archived, + }); + + int get total => pending + verified + draft + archived; + double get verificationRate => total > 0 ? verified / total : 0.0; + double get pendingRate => total > 0 ? pending / total : 0.0; + + factory DocumentStatus.fromJson(Map j) => DocumentStatus( + pending: (j['Pending'] as num?)?.toInt() ?? 0, + verified: (j['Verified'] as num?)?.toInt() ?? 0, + draft: (j['Draft'] as num?)?.toInt() ?? 0, + archived: (j['Archived'] as num?)?.toInt() ?? 0, + ); +} + +/// One student row for the Excel export detail sheet. +class ReportStudent { + final String lrn; + final String firstName; + final String lastName; + final String sex; + final int? gradeLevel; + final int verifiedDocs; + final int pendingDocs; + + const ReportStudent({ + required this.lrn, + required this.firstName, + required this.lastName, + required this.sex, + this.gradeLevel, + required this.verifiedDocs, + required this.pendingDocs, + }); + + factory ReportStudent.fromJson(Map j) => ReportStudent( + lrn: j['lrn'] as String? ?? '', + firstName: j['first_name'] as String? ?? '', + lastName: j['last_name'] as String? ?? '', + sex: j['sex'] as String? ?? '', + gradeLevel: (j['grade_level'] as num?)?.toInt(), + verifiedDocs: (j['verified_docs'] as num?)?.toInt() ?? 0, + pendingDocs: (j['pending_docs'] as num?)?.toInt() ?? 0, + ); +} + +/// Grade-level summary row for the Excel export. +class GradeExportRow { + final int gradeLevel; + final int totalStudents; + final String yearRange; + + const GradeExportRow({ + required this.gradeLevel, + required this.totalStudents, + required this.yearRange, + }); + + factory GradeExportRow.fromJson(Map j) => GradeExportRow( + gradeLevel: (j['grade_level'] as num).toInt(), + totalStudents: (j['total_students'] as num).toInt(), + yearRange: j['year_range'] as String? ?? 'All Years', + ); +} + +/// Full export payload from /api/reports/export-data. +class ReportExportData { + final List enrollmentByGrade; + final DocumentStatus documentStatus; + final List students; + + const ReportExportData({ + required this.enrollmentByGrade, + required this.documentStatus, + required this.students, + }); + + factory ReportExportData.fromJson(Map j) => ReportExportData( + enrollmentByGrade: (j['enrollmentByGrade'] as List) + .map((e) => GradeExportRow.fromJson(e as Map)) + .toList(), + documentStatus: DocumentStatus.fromJson(j['documentStatus'] as Map), + students: (j['students'] as List) + .map((e) => ReportStudent.fromJson(e as Map)) + .toList(), + ); +} diff --git a/frontend/lib/domain/entities/student_model.dart b/frontend/lib/domain/entities/student_model.dart new file mode 100644 index 0000000..69a2e2d --- /dev/null +++ b/frontend/lib/domain/entities/student_model.dart @@ -0,0 +1,161 @@ +class StudentModel { + final int id; + final String lrn; + final String firstName; + final String? middleName; + final String lastName; + final String? extension; + final String sex; + final DateTime birthDate; + final String status; // 'Enrolled', 'Graduated', 'Transferred Out', 'Dropped' + final int missingDocumentsCount; + final int? latestGradeLevel; + final String? latestSection; + final List? enrollments; + + StudentModel({ + required this.id, + required this.lrn, + required this.firstName, + this.middleName, + required this.lastName, + this.extension, + required this.sex, + required this.birthDate, + this.status = 'Enrolled', + this.missingDocumentsCount = 0, + this.latestGradeLevel, + this.latestSection, + this.enrollments, + }); + + /// Display name: "De La Cruz, Juan Jr. M." + String get fullName { + final ext = extension != null && extension!.isNotEmpty ? ' ${extension!}' : ''; + final mi = middleName != null && middleName!.isNotEmpty ? ' ${middleName![0]}.' : ''; + return '$lastName, $firstName$ext$mi'.trim(); + } + + /// e.g. "Grade 10 – Sec A" + String get gradeSection { + if (latestGradeLevel == null) return '—'; + final section = latestSection?.isNotEmpty == true ? ' — ${latestSection!}' : ''; + return 'Grade $latestGradeLevel$section'; + } + + factory StudentModel.fromJson(Map json) { + return StudentModel( + id: json['id'] as int, + lrn: json['lrn'] as String, + firstName: json['first_name'] as String, + middleName: json['middle_name'] as String?, + lastName: json['last_name'] as String, + extension: json['extension'] as String?, + sex: json['sex'] as String, + birthDate: DateTime.parse(json['birth_date'] as String), + status: json['status'] as String? ?? 'Enrolled', + missingDocumentsCount: (json['missingDocumentsCount'] as num?)?.toInt() ?? 0, + latestGradeLevel: (json['latest_grade_level'] as num?)?.toInt(), + latestSection: json['latest_section'] as String?, + enrollments: json['enrollments'] != null + ? (json['enrollments'] as List) + .map((e) => EnrollmentModel.fromJson(e as Map)) + .toList() + : null, + ); + } + + Map toJson() { + return { + 'id': id, + 'lrn': lrn, + 'first_name': firstName, + 'middle_name': middleName, + 'last_name': lastName, + 'extension': extension, + 'sex': sex, + 'birth_date': birthDate.toIso8601String().split('T').first, + 'status': status, + }; + } + + /// Used when submitting the create/update form + Map toRequestBody() { + return { + 'lrn': lrn, + 'firstName': firstName, + 'middleName': middleName, + 'lastName': lastName, + 'extension': extension, + 'sex': sex, + 'birthDate': birthDate.toIso8601String().split('T').first, + 'status': status, + }; + } + + StudentModel copyWith({ + int? id, + String? lrn, + String? firstName, + String? middleName, + String? lastName, + String? extension, + String? sex, + DateTime? birthDate, + String? status, + int? missingDocumentsCount, + int? latestGradeLevel, + String? latestSection, + }) { + return StudentModel( + id: id ?? this.id, + lrn: lrn ?? this.lrn, + firstName: firstName ?? this.firstName, + middleName: middleName ?? this.middleName, + lastName: lastName ?? this.lastName, + extension: extension ?? this.extension, + sex: sex ?? this.sex, + birthDate: birthDate ?? this.birthDate, + status: status ?? this.status, + missingDocumentsCount: missingDocumentsCount ?? this.missingDocumentsCount, + latestGradeLevel: latestGradeLevel ?? this.latestGradeLevel, + latestSection: latestSection ?? this.latestSection, + enrollments: enrollments ?? this.enrollments, + ); + } +} + +class EnrollmentModel { + final int id; + final int studentId; + final int academicYearId; + final int sectionId; + final int gradeLevel; + final String? trackStrand; + final String? yearRange; + final String? sectionName; + + EnrollmentModel({ + required this.id, + required this.studentId, + required this.academicYearId, + required this.sectionId, + required this.gradeLevel, + this.trackStrand, + this.yearRange, + this.sectionName, + }); + + factory EnrollmentModel.fromJson(Map json) { + return EnrollmentModel( + id: json['id'] as int, + studentId: json['student_id'] as int, + academicYearId: json['academic_year_id'] as int, + sectionId: json['section_id'] as int, + gradeLevel: json['grade_level'] as int, + trackStrand: json['track_strand'] as String?, + yearRange: json['year_range'] as String?, + sectionName: json['section_name'] as String?, + ); + } +} \ No newline at end of file diff --git a/frontend/lib/domain/entities/system_user.dart b/frontend/lib/domain/entities/system_user.dart new file mode 100644 index 0000000..c95734f --- /dev/null +++ b/frontend/lib/domain/entities/system_user.dart @@ -0,0 +1,52 @@ +class SystemUser { + final int id; + final String username; + final String firstName; + final String? middleName; + final String lastName; + final String? extension; + final String role; + final String? email; + final String? phone; + final String? createdAt; + + SystemUser({ + required this.id, + required this.username, + required this.firstName, + this.middleName, + required this.lastName, + this.extension, + required this.role, + this.email, + this.phone, + this.createdAt, + }); + + String get fullName { + final mid = middleName != null && middleName!.isNotEmpty ? '${middleName![0]}. ' : ''; + final ext = extension != null && extension!.isNotEmpty ? ' $extension' : ''; + return '$firstName $mid$lastName$ext'.trim(); + } + + String get initials { + final f = firstName.isNotEmpty ? firstName[0] : ''; + final l = lastName.isNotEmpty ? lastName[0] : ''; + return '$f$l'.toUpperCase(); + } + + factory SystemUser.fromJson(Map json) { + return SystemUser( + id: json['id'] as int, + username: json['username'] as String, + firstName: json['first_name'] as String, + middleName: json['middle_name'] as String?, + lastName: json['last_name'] as String, + extension: json['extension'] as String?, + role: json['role'] as String, + email: json['email'] as String?, + phone: json['phone'] as String?, + createdAt: json['created_at'] as String?, + ); + } +} diff --git a/frontend/lib/domain/entities/user_model.dart b/frontend/lib/domain/entities/user_model.dart new file mode 100644 index 0000000..09f8ec7 --- /dev/null +++ b/frontend/lib/domain/entities/user_model.dart @@ -0,0 +1,54 @@ +class UserModel { + final int id; + final String username; + final String firstName; + final String? middleName; + final String lastName; + final String? extension; + final String role; // 'super_admin', 'admin', 'teacher' + final String? email; + final String? phone; + + UserModel({ + required this.id, + required this.username, + required this.firstName, + this.middleName, + required this.lastName, + this.extension, + required this.role, + this.email, + this.phone, + }); + + // Helper to get full formatted name + String get fullName => '$firstName ${middleName != null ? '${middleName![0]}. ' : ''}$lastName ${extension ?? ''}'.trim(); + + factory UserModel.fromJson(Map json) { + return UserModel( + id: json['id'] as int, + username: json['username'] as String, + firstName: json['first_name'] as String, + middleName: json['middle_name'] as String?, + lastName: json['last_name'] as String, + extension: json['extension'] as String?, + role: json['role'] as String, + email: json['email'] as String?, + phone: json['phone'] as String?, + ); + } + + Map toJson() { + return { + 'id': id, + 'username': username, + 'first_name': firstName, + 'middle_name': middleName, + 'last_name': lastName, + 'extension': extension, + 'role': role, + 'email': email, + 'phone': phone, + }; + } +} \ No newline at end of file diff --git a/frontend/lib/domain/repositories/archive_repository.dart b/frontend/lib/domain/repositories/archive_repository.dart new file mode 100644 index 0000000..b76ee0a --- /dev/null +++ b/frontend/lib/domain/repositories/archive_repository.dart @@ -0,0 +1,88 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/archive_model.dart'; + +class ArchivePage { + final List archives; + final int total; + final int page; + final int limit; + final int totalPages; + + const ArchivePage({ + required this.archives, + required this.total, + required this.page, + required this.limit, + required this.totalPages, + }); + + factory ArchivePage.fromJson(Map json) { + final pagination = json['pagination'] as Map; + return ArchivePage( + archives: (json['archives'] as List) + .map((a) => ArchiveModel.fromJson(a as Map)) + .toList(), + total: (pagination['total'] as num).toInt(), + page: (pagination['page'] as num).toInt(), + limit: (pagination['limit'] as num).toInt(), + totalPages: (pagination['totalPages'] as num).toInt(), + ); + } +} + +class ArchiveRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _getAuthOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + Future getArchives({ + String search = '', + int page = 1, + int limit = 10, + String status = 'All Statuses', + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/archives', + queryParameters: { + if (search.trim().isNotEmpty) 'search': search.trim(), + if (status.trim().isNotEmpty) 'status': status.trim(), + 'page': page, + 'limit': limit, + }, + options: options, + ); + return ArchivePage.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch archives.'; + throw Exception(msg); + } + } + + Future restoreArchive(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.post('/archives/$id/restore', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to restore archive.'; + throw Exception(msg); + } + } + + Future purgeArchive(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/archives/$id', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to purge archive.'; + throw Exception(msg); + } + } +} diff --git a/frontend/lib/domain/repositories/auth_repository.dart b/frontend/lib/domain/repositories/auth_repository.dart new file mode 100644 index 0000000..fda0702 --- /dev/null +++ b/frontend/lib/domain/repositories/auth_repository.dart @@ -0,0 +1,173 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../domain/entities/user_model.dart'; +import '../../core/network/api_constants.dart'; + +class AuthRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + static const _tokenKey = 'jwt_token'; + static const _rememberMeKey = 'remember_me'; + + Future login(String username, String password, {bool rememberMe = false}) async { + try { + final response = await _dio.post('/auth/login', data: { + 'username': username, + 'password': password, + }); + + final token = response.data['token'] as String; + await _storage.write(key: _tokenKey, value: token); + await _storage.write(key: _rememberMeKey, value: rememberMe ? 'true' : 'false'); + + final userData = response.data['user']; + return UserModel( + id: userData['id'], + username: userData['username'], + firstName: userData['firstName'], + lastName: userData['lastName'], + role: userData['role'], + ); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to connect to the server.'; + throw Exception(errorMessage); + } + } + + /// Auto-login: returns user if a valid Remember Me token is stored, otherwise null. + Future tryAutoLogin() async { + final rememberMe = await _storage.read(key: _rememberMeKey); + if (rememberMe != 'true') return null; + + final token = await _storage.read(key: _tokenKey); + if (token == null) return null; + + try { + final options = Options(headers: {'Authorization': 'Bearer $token'}); + final response = await _dio.get('/auth/profile', options: options); + return UserModel.fromJson(response.data); + } on DioException { + // Token is invalid/expired — clear stored session + await logout(); + return null; + } + } + + Future getToken() async => await _storage.read(key: _tokenKey); + + Future logout() async { + await _storage.delete(key: _tokenKey); + await _storage.delete(key: _rememberMeKey); + } + + Future _getAuthOptions() async { + final token = await getToken(); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + Future getProfile() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/auth/profile', options: options); + return UserModel.fromJson(response.data); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to fetch profile.'; + throw Exception(errorMessage); + } + } + + Future updateProfile({ + required String firstName, + String? middleName, + required String lastName, + String? extension, + String? phone, + String? email, + }) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/auth/profile', options: options, data: { + 'firstName': firstName, + 'middleName': middleName, + 'lastName': lastName, + 'extension': extension, + 'phone': phone, + 'email': email, + }); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to update profile.'; + throw Exception(errorMessage); + } + } + + Future changePassword({ + required String currentPassword, + required String newPassword, + required String confirmPassword, + }) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/auth/change-password', options: options, data: { + 'currentPassword': currentPassword, + 'newPassword': newPassword, + 'confirmPassword': confirmPassword, + }); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to change password.'; + throw Exception(errorMessage); + } + } + + /// Submits a forgot-password request (Admin/Teacher only, no auth required). + Future requestPasswordReset({ + required String username, + required String newPassword, + required String confirmPassword, + }) async { + try { + await _dio.post('/auth/forgot-password', data: { + 'username': username, + 'newPassword': newPassword, + 'confirmPassword': confirmPassword, + }); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to submit request.'; + throw Exception(errorMessage); + } + } + + /// Super Admin: get pending password reset requests. + Future>> getResetRequests() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/auth/reset-requests', options: options); + return List>.from(response.data); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to fetch requests.'; + throw Exception(errorMessage); + } + } + + /// Super Admin: approve a password reset request. + Future approveResetRequest(int requestId) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/auth/reset-requests/$requestId/approve', options: options); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to approve.'; + throw Exception(errorMessage); + } + } + + /// Super Admin: reject a password reset request. + Future rejectResetRequest(int requestId) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/auth/reset-requests/$requestId/reject', options: options); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to reject.'; + throw Exception(errorMessage); + } + } +} \ No newline at end of file diff --git a/frontend/lib/domain/repositories/dashboard_repository.dart b/frontend/lib/domain/repositories/dashboard_repository.dart new file mode 100644 index 0000000..8dd5889 --- /dev/null +++ b/frontend/lib/domain/repositories/dashboard_repository.dart @@ -0,0 +1,44 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/dashboard_models.dart'; + +class DashboardRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _getAuthOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options( + headers: { + 'Authorization': 'Bearer $token', + }, + ); + } + + Future getStats() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/dashboard/stats', options: options); + return DashboardStats.fromJson(response.data); + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to fetch stats.'; + throw Exception(errorMessage); + } + } + + Future> getPendingTasks() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/dashboard/pending-tasks', options: options); + + if (response.data is List) { + return (response.data as List).map((task) => PendingTask.fromJson(task)).toList(); + } + return []; + } on DioException catch (e) { + final errorMessage = e.response?.data['message'] ?? 'Failed to fetch pending tasks.'; + throw Exception(errorMessage); + } + } +} diff --git a/frontend/lib/domain/repositories/document_repository.dart b/frontend/lib/domain/repositories/document_repository.dart new file mode 100644 index 0000000..80bbb64 --- /dev/null +++ b/frontend/lib/domain/repositories/document_repository.dart @@ -0,0 +1,435 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/document_model.dart'; +import '../entities/document_requirement_model.dart'; +import '../entities/folder_model.dart'; + +class DocumentPage { + final List documents; + final int total; + final int page; + final int limit; + final int totalPages; + + const DocumentPage({ + required this.documents, + required this.total, + required this.page, + required this.limit, + required this.totalPages, + }); + + factory DocumentPage.fromJson(Map json) { + final pagination = json['pagination'] as Map; + return DocumentPage( + documents: (json['documents'] as List) + .map((d) => DocumentModel.fromJson(d as Map)) + .toList(), + total: (pagination['total'] as num).toInt(), + page: (pagination['page'] as num).toInt(), + limit: (pagination['limit'] as num).toInt(), + totalPages: (pagination['totalPages'] as num).toInt(), + ); + } +} + +class PrintQueueItem { + final int queueId; + final int documentId; + final String fileName; + final String filePath; + final String? documentType; + final String status; + final String? studentName; + final String? studentLrn; + final DateTime addedAt; + + const PrintQueueItem({ + required this.queueId, + required this.documentId, + required this.fileName, + required this.filePath, + this.documentType, + required this.status, + this.studentName, + this.studentLrn, + required this.addedAt, + }); + + factory PrintQueueItem.fromJson(Map json) { + return PrintQueueItem( + queueId: json['queue_id'] as int, + documentId: json['document_id'] as int, + fileName: json['file_name'] as String? ?? '', + filePath: json['file_path'] as String? ?? '', + documentType: json['document_type'] as String?, + status: json['status'] as String? ?? 'Pending', + studentName: json['student_name'] as String?, + studentLrn: json['student_lrn'] as String?, + addedAt: json['added_at'] != null + ? DateTime.parse(json['added_at'] as String) + : DateTime.now(), + ); + } +} + + + +class RequirementsSettings { + final List jhs; + final List shs; + final List documentTypes; + + RequirementsSettings({ + required this.jhs, + required this.shs, + required this.documentTypes, + }); + + factory RequirementsSettings.fromJson(Map json) { + return RequirementsSettings( + jhs: (json['jhs'] as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(), + shs: (json['shs'] as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(), + documentTypes: (json['documentTypes'] as List) + .map((t) => t as String) + .toList(), + ); + } +} + +class MissingRequirements { + final String category; + final int gradeLevel; + final List missing; + final List pending; + final List verified; + final int totalRequired; + final int totalVerified; + + MissingRequirements({ + required this.category, + required this.gradeLevel, + required this.missing, + required this.pending, + required this.verified, + required this.totalRequired, + required this.totalVerified, + }); + + factory MissingRequirements.fromJson(Map json) { + return MissingRequirements( + category: json['category'] as String, + gradeLevel: json['gradeLevel'] as int, + missing: (json['missing'] as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(), + pending: (json['pending'] as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(), + verified: (json['verified'] as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(), + totalRequired: json['totalRequired'] as int, + totalVerified: json['totalVerified'] as int, + ); + } +} + +class DocumentRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _getAuthOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + // Documents + Future getDocuments({ + String search = '', + int page = 1, + int limit = 20, + String status = 'All Statuses', + String documentType = 'All Types', + String gradeLevel = '', + String schoolYear = '', + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/documents', + queryParameters: { + if (search.trim().isNotEmpty) 'search': search.trim(), + if (status.trim().isNotEmpty && status != 'All Statuses') 'status': status.trim(), + if (documentType.trim().isNotEmpty && documentType != 'All Types') 'documentType': documentType.trim(), + if (gradeLevel.trim().isNotEmpty) 'gradeLevel': gradeLevel.trim(), + if (schoolYear.trim().isNotEmpty) 'schoolYear': schoolYear.trim(), + 'page': page, + 'limit': limit, + }, + options: options, + ); + return DocumentPage.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch documents.'; + throw Exception(msg); + } + } + + Future updateDocumentStatus(int id, String status) async { + try { + final options = await _getAuthOptions(); + await _dio.patch('/documents/$id/status', data: {'status': status}, options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to update status.'; + throw Exception(msg); + } + } + + Future deleteDocument(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/documents/$id', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to delete document.'; + throw Exception(msg); + } + } + + Future> getDocumentsByStudent(int studentId) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/documents/student/$studentId', + options: options, + ); + return (response.data as List) + .map((d) => DocumentModel.fromJson(d as Map)) + .toList(); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch student documents.'; + throw Exception(msg); + } + } + + // Requirements + Future> getRequirements({ + String? category, + bool? isEnabled, + String search = '', + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/requirements', + queryParameters: { + if (category != null) 'category': category, + if (isEnabled != null) 'isEnabled': isEnabled.toString(), + if (search.trim().isNotEmpty) 'search': search.trim(), + }, + options: options, + ); + return (response.data as List) + .map((r) => DocumentRequirementModel.fromJson(r as Map)) + .toList(); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch requirements.'; + throw Exception(msg); + } + } + + Future getRequirementsSettings() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/requirements/settings', options: options); + return RequirementsSettings.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch requirements settings.'; + throw Exception(msg); + } + } + + Future getMissingRequirements(int studentId) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/requirements/missing/$studentId', options: options); + return MissingRequirements.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch missing requirements.'; + throw Exception(msg); + } + } + + Future createRequirement(DocumentRequirementModel requirement) async { + try { + final options = await _getAuthOptions(); + await _dio.post('/requirements', data: requirement.toJson(), options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to create requirement.'; + throw Exception(msg); + } + } + + Future updateRequirement(DocumentRequirementModel requirement) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/requirements/${requirement.id}', data: requirement.toJson(), options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to update requirement.'; + throw Exception(msg); + } + } + + Future deleteRequirement(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/requirements/$id', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to delete requirement.'; + throw Exception(msg); + } + } + + Future bulkUpdateRequirements(List> requirements) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/requirements/bulk', data: {'requirements': requirements}, options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to bulk update requirements.'; + throw Exception(msg); + } + } + + // Folders + Future> getFolders({int? studentId, int? parentId, String search = ''}) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/folders', + queryParameters: { + if (studentId != null) 'studentId': studentId, + if (parentId != null) 'parentId': parentId.toString(), + if (search.trim().isNotEmpty) 'search': search.trim(), + }, + options: options, + ); + return (response.data as List) + .map((f) => FolderModel.fromJson(f as Map)) + .toList(); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch folders.'; + throw Exception(msg); + } + } + + Future getStudentFolder(int studentId) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/folders/student/$studentId', options: options); + return FolderModel.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch student folder.'; + throw Exception(msg); + } + } + + Future createFolder({required String name, int? parentId, int? studentId, String? category}) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.post( + '/folders', + data: { + 'name': name, + if (parentId != null) 'parentId': parentId, + if (studentId != null) 'studentId': studentId, + if (category != null) 'category': category, + }, + options: options, + ); + return response.data['id'] as int; + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to create folder.'; + throw Exception(msg); + } + } + + Future renameFolder(int id, String name) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/folders/$id', data: {'name': name}, options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to rename folder.'; + throw Exception(msg); + } + } + + Future deleteFolder(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/folders/$id', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to delete folder.'; + throw Exception(msg); + } + } + + Future syncFolders(int studentId) async { + try { + final options = await _getAuthOptions(); + await _dio.post('/folders/sync', data: {'studentId': studentId}, options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to sync folders.'; + throw Exception(msg); + } + } + + // Print Queue + Future> getPrintQueue() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/documents/print-queue', options: options); + return (response.data as List) + .map((i) => PrintQueueItem.fromJson(i as Map)) + .toList(); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch print queue.'; + throw Exception(msg); + } + } + + Future addToPrintQueue(int documentId) async { + try { + final options = await _getAuthOptions(); + await _dio.post('/documents/print-queue', data: {'documentId': documentId}, options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to add to print queue.'; + throw Exception(msg); + } + } + + Future removeFromPrintQueue(int queueId) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/documents/print-queue/$queueId', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to remove from print queue.'; + throw Exception(msg); + } + } + + Future clearPrintQueue() async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/documents/print-queue/clear', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to clear print queue.'; + throw Exception(msg); + } + } +} + diff --git a/frontend/lib/domain/repositories/report_repository.dart b/frontend/lib/domain/repositories/report_repository.dart new file mode 100644 index 0000000..6de2b34 --- /dev/null +++ b/frontend/lib/domain/repositories/report_repository.dart @@ -0,0 +1,71 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/report_models.dart'; + +class ReportRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _authOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + Future> getAcademicYears() async { + try { + final res = await _dio.get('/reports/academic-years', options: await _authOptions()); + return (res.data as List).map((e) => AcademicYear.fromJson(e as Map)).toList(); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch academic years.'); + } + } + + Future getStats({int? academicYearId}) async { + try { + final res = await _dio.get( + '/reports/stats', + queryParameters: academicYearId != null ? {'academicYearId': academicYearId} : null, + options: await _authOptions(), + ); + return ReportStats.fromJson(res.data as Map); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch stats.'); + } + } + + Future> getEnrollmentByGrade({int? academicYearId}) async { + try { + final res = await _dio.get( + '/reports/enrollment-by-grade', + queryParameters: academicYearId != null ? {'academicYearId': academicYearId} : null, + options: await _authOptions(), + ); + return (res.data as List).map((e) => GradeEnrollment.fromJson(e as Map)).toList(); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch enrollment data.'); + } + } + + Future getDocumentStatus() async { + try { + final res = await _dio.get('/reports/document-status', options: await _authOptions()); + return DocumentStatus.fromJson(res.data as Map); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch document status.'); + } + } + + Future getExportData({int? academicYearId}) async { + try { + final res = await _dio.get( + '/reports/export-data', + queryParameters: academicYearId != null ? {'academicYearId': academicYearId} : null, + options: await _authOptions(), + ); + return ReportExportData.fromJson(res.data as Map); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch export data.'); + } + } +} diff --git a/frontend/lib/domain/repositories/student_repository.dart b/frontend/lib/domain/repositories/student_repository.dart new file mode 100644 index 0000000..ab62517 --- /dev/null +++ b/frontend/lib/domain/repositories/student_repository.dart @@ -0,0 +1,171 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/student_model.dart'; + +/// Paginated student list returned from the API. +class StudentPage { + final List students; + final int total; + final int page; + final int limit; + final int totalPages; + + const StudentPage({ + required this.students, + required this.total, + required this.page, + required this.limit, + required this.totalPages, + }); + + factory StudentPage.fromJson(Map json) { + final pagination = json['pagination'] as Map; + return StudentPage( + students: (json['students'] as List) + .map((s) => StudentModel.fromJson(s as Map)) + .toList(), + total: (pagination['total'] as num).toInt(), + page: (pagination['page'] as num).toInt(), + limit: (pagination['limit'] as num).toInt(), + totalPages: (pagination['totalPages'] as num).toInt(), + ); + } +} + +class StudentRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _getAuthOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + // ---------------------------------------------------------------- + // Fetch paginated students with optional search + filters + // ---------------------------------------------------------------- + Future getStudents({ + String search = '', + int page = 1, + int limit = 10, + String gradeLevel = '', + String status = '', + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get( + '/students', + queryParameters: { + if (search.trim().isNotEmpty) 'search': search.trim(), + if (gradeLevel.trim().isNotEmpty) 'gradeLevel': gradeLevel.trim(), + if (status.trim().isNotEmpty) 'status': status.trim(), + 'page': page, + 'limit': limit, + }, + options: options, + ); + return StudentPage.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch students.'; + throw Exception(msg); + } + } + + // ---------------------------------------------------------------- + // Get single student by ID + // ---------------------------------------------------------------- + Future getStudentById(int id) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/students/$id', options: options); + return StudentModel.fromJson(response.data as Map); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to fetch student.'; + throw Exception(msg); + } + } + + // ---------------------------------------------------------------- + // Create student — returns the newly created ID + // ---------------------------------------------------------------- + Future createStudent({ + required String lrn, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String sex, + required DateTime birthDate, + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.post( + '/students', + data: { + 'lrn': lrn.trim(), + 'firstName': firstName.trim(), + 'middleName': middleName?.trim(), + 'lastName': lastName.trim(), + 'extension': extension?.trim(), + 'sex': sex, + 'birthDate': '${birthDate.year}-${birthDate.month.toString().padLeft(2, '0')}-${birthDate.day.toString().padLeft(2, '0')}', + }, + options: options, + ); + return (response.data['id'] as num).toInt(); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to create student.'; + throw Exception(msg); + } + } + + // ---------------------------------------------------------------- + // Update student + // ---------------------------------------------------------------- + Future updateStudent({ + required int id, + required String lrn, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String sex, + required DateTime birthDate, + String status = 'Enrolled', + }) async { + try { + final options = await _getAuthOptions(); + await _dio.put( + '/students/$id', + data: { + 'lrn': lrn.trim(), + 'firstName': firstName.trim(), + 'middleName': middleName?.trim(), + 'lastName': lastName.trim(), + 'extension': extension?.trim(), + 'sex': sex, + 'birthDate': '${birthDate.year}-${birthDate.month.toString().padLeft(2, '0')}-${birthDate.day.toString().padLeft(2, '0')}', + 'status': status, + }, + options: options, + ); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to update student.'; + throw Exception(msg); + } + } + + // ---------------------------------------------------------------- + // Delete student + // ---------------------------------------------------------------- + Future deleteStudent(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/students/$id', options: options); + } on DioException catch (e) { + final msg = e.response?.data?['message'] ?? 'Failed to delete student.'; + throw Exception(msg); + } + } +} diff --git a/frontend/lib/domain/repositories/user_repository.dart b/frontend/lib/domain/repositories/user_repository.dart new file mode 100644 index 0000000..f089f28 --- /dev/null +++ b/frontend/lib/domain/repositories/user_repository.dart @@ -0,0 +1,101 @@ +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../entities/system_user.dart'; + +class UserRepository { + final Dio _dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + final FlutterSecureStorage _storage = const FlutterSecureStorage(); + + Future _getAuthOptions() async { + final token = await _storage.read(key: 'jwt_token'); + return Options(headers: {'Authorization': 'Bearer $token'}); + } + + Future> getUsers() async { + try { + final options = await _getAuthOptions(); + final response = await _dio.get('/users', options: options); + return (response.data as List).map((u) => SystemUser.fromJson(u)).toList(); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to fetch users.'); + } + } + + /// Creates a user and returns the temporary plaintext password (shown once only). + Future createUser({ + required String username, + String? password, // optional — backend auto-generates if omitted + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String role, + String? email, + String? phone, + }) async { + try { + final options = await _getAuthOptions(); + final response = await _dio.post('/users', options: options, data: { + 'username': username, + if (password != null && password.isNotEmpty) 'password': password, + 'firstName': firstName, + 'middleName': middleName, + 'lastName': lastName, + 'extension': extension, + 'role': role, + 'email': email, + 'phone': phone, + }); + final tempPass = response.data['temporaryPassword']; + if (tempPass == null) throw Exception('No temporary password in response.'); + return tempPass as String; + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to create user.'); + } + } + + Future updateUser({ + required int id, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String role, + String? email, + String? phone, + }) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/users/$id', options: options, data: { + 'firstName': firstName, + 'middleName': middleName, + 'lastName': lastName, + 'extension': extension, + 'role': role, + 'email': email, + 'phone': phone, + }); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to update user.'); + } + } + + Future resetPassword(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.put('/users/$id/reset-password', options: options); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to reset password.'); + } + } + + Future deleteUser(int id) async { + try { + final options = await _getAuthOptions(); + await _dio.delete('/users/$id', options: options); + } on DioException catch (e) { + throw Exception(e.response?.data['message'] ?? 'Failed to delete user.'); + } + } +} diff --git a/frontend/lib/main.dart b/frontend/lib/main.dart new file mode 100644 index 0000000..93d1739 --- /dev/null +++ b/frontend/lib/main.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +// UI Imports +import 'ui/screens/splash/splash_screen.dart'; +// Core Imports +import 'core/theme/app_theme.dart'; // Add this import + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); + runApp(const ProviderScope(child: TisRmsApp())); +} + +class TisRmsApp extends StatelessWidget { + const TisRmsApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'TIS RMS', + debugShowCheckedModeBanner: false, + + // Clean, centralized theme reference! + theme: AppTheme.lightTheme, + + home: const SplashScreen(), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/layouts/android_bottom_nav_layout.dart b/frontend/lib/ui/layouts/android_bottom_nav_layout.dart new file mode 100644 index 0000000..f011122 --- /dev/null +++ b/frontend/lib/ui/layouts/android_bottom_nav_layout.dart @@ -0,0 +1,203 @@ +import 'package:flutter/material.dart'; +import '../../core/constants/app_colors.dart'; +import '../../core/constants/app_sizes.dart'; +import '../screens/dashboard/dashboard_screen.dart'; +import '../screens/settings/settings_screen.dart'; +import '../screens/students/students_screen.dart'; +import '../screens/documents/documents_screen.dart'; +import '../screens/archives/archives_screen.dart'; +import '../screens/reports/reports_screen.dart'; +import '../screens/users/users_screen.dart'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; // Import Riverpod +import '../providers/auth_provider.dart'; // Import your Auth Provider +import '../screens/login/login_screen.dart'; // Import the Login Screen + +// Dummy screen for placeholders +class PlaceholderScreen extends StatelessWidget { + final String title; + const PlaceholderScreen(this.title, {super.key}); + @override + Widget build(BuildContext context) => Center(child: Text(title, style: const TextStyle(fontSize: 24))); +} + +class AndroidBottomNavLayout extends ConsumerStatefulWidget { + final String userRole; + + const AndroidBottomNavLayout({super.key, required this.userRole}); + + @override + ConsumerState createState() => _AndroidBottomNavLayoutState(); +} + +class _AndroidBottomNavLayoutState extends ConsumerState { + int _selectedBottomNavIndex = 0; + int _activeStackIndex = 0; + + void _onNavTapped(int index, List> allowedPrimary, List> allowedSecondary) { + if (index < allowedPrimary.length) { + setState(() { + _selectedBottomNavIndex = index; + _activeStackIndex = index; + }); + } else { + _showMoreBottomSheet(allowedPrimary, allowedSecondary); + } + } + + void _showMoreBottomSheet(List> allowedPrimary, List> allowedSecondary) { + showModalBottomSheet( + context: context, + backgroundColor: AppColors.surfaceWhite, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.vertical(top: Radius.circular(AppSizes.radiusLarge)), + ), + builder: (context) { + return SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: AppSizes.p12), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Drag Handle + Container( + width: 40, + height: 5, + margin: const EdgeInsets.only(bottom: AppSizes.p16), + decoration: BoxDecoration( + color: Colors.grey.shade300, + borderRadius: BorderRadius.circular(AppSizes.radiusSmall), + ), + ), + // Build Secondary Tabs + ...allowedSecondary.asMap().entries.map((entry) { + int secondaryIndex = entry.key; + var tab = entry.value; + + return ListTile( + leading: Container( + padding: const EdgeInsets.all(AppSizes.p8), + decoration: BoxDecoration( + color: AppColors.primaryGreen.withOpacity(0.1), + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + child: Icon(tab['icon'] as IconData, color: AppColors.primaryGreen), + ), + title: Text( + tab['label'] as String, + style: const TextStyle(fontWeight: FontWeight.w600, color: AppColors.textPrimary), + ), + trailing: const Icon(Icons.chevron_right, color: AppColors.textMuted), + onTap: () { + Navigator.pop(context); + setState(() { + _selectedBottomNavIndex = allowedPrimary.length; + _activeStackIndex = allowedPrimary.length + secondaryIndex; + }); + }, + ); + }), + const Divider(), + // Logout Option in the More Menu + ListTile( + leading: const Padding( + padding: EdgeInsets.all(AppSizes.p8), + child: Icon(Icons.logout, color: AppColors.error), + ), + title: const Text( + 'Logout', + style: TextStyle(fontWeight: FontWeight.w600, color: AppColors.error), + ), + onTap: () { + _handleLogout(); + }, + ), + ], + ), + ), + ); + }, + ); + } + + void _handleLogout() async { + // Close the Bottom Sheet modal first + Navigator.pop(context); + + // Clear state + await ref.read(authProvider.notifier).logout(); + + if (!mounted) return; + + // Route to Login + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute(builder: (_) => const LoginScreen()), + (route) => false, + ); + } + + @override + Widget build(BuildContext context) { + final primaryTabsConfig = [ + {'label': 'Dashboard', 'icon': Icons.dashboard, 'screen': const DashboardScreen(), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Students', 'icon': Icons.people_outline, 'screen': StudentsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Documents', 'icon': Icons.folder_outlined, 'screen': DocumentsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Archives', 'icon': Icons.archive_outlined, 'screen': ArchivesScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin']}, + ]; + final secondaryTabsConfig = [ + {'label': 'Reports', 'icon': Icons.bar_chart_outlined, 'screen': ReportsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin']}, + {'label': 'Users', 'icon': Icons.manage_accounts_outlined, 'screen': const UsersScreen(), 'roles': ['super_admin']}, + {'label': 'Settings', 'icon': Icons.settings_outlined, 'screen': SettingsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + ]; + final allowedPrimary = primaryTabsConfig.where((t) => (t['roles'] as List).contains(widget.userRole)).toList(); + final allowedSecondary = secondaryTabsConfig.where((t) => (t['roles'] as List).contains(widget.userRole)).toList(); + final allAllowedTabs = [...allowedPrimary, ...allowedSecondary]; + + List bottomNavItems = allowedPrimary.map((tab) { + return BottomNavigationBarItem( + icon: Icon(tab['icon'] as IconData), + label: tab['label'] as String, + ); + }).toList(); + + if (allowedSecondary.isNotEmpty) { + bottomNavItems.add( + const BottomNavigationBarItem( + icon: Icon(Icons.more_horiz), + label: 'More', + ), + ); + } + + return Scaffold( + backgroundColor: AppColors.pageBackground, + body: IndexedStack( + index: _activeStackIndex, + children: allAllowedTabs.map((t) => t['screen'] as Widget).toList(), + ), + bottomNavigationBar: Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.1), + blurRadius: 10, + offset: const Offset(0, -5), + ), + ], + ), + child: BottomNavigationBar( + currentIndex: _selectedBottomNavIndex, + onTap: (i) => _onNavTapped(i, allowedPrimary, allowedSecondary), + backgroundColor: AppColors.primaryGreen, + selectedItemColor: Colors.white, + unselectedItemColor: Colors.white70, + showUnselectedLabels: true, + type: BottomNavigationBarType.fixed, + selectedLabelStyle: const TextStyle(fontWeight: FontWeight.bold, fontSize: 12), + unselectedLabelStyle: const TextStyle(fontWeight: FontWeight.w500, fontSize: 11), + items: bottomNavItems, + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/layouts/responsive_layout.dart b/frontend/lib/ui/layouts/responsive_layout.dart new file mode 100644 index 0000000..d196742 --- /dev/null +++ b/frontend/lib/ui/layouts/responsive_layout.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'android_bottom_nav_layout.dart'; +import 'windows_sidebar_layout.dart'; + +class ResponsiveLayout extends StatelessWidget { + final String userRole; // Keep passing this from your Auth State + + const ResponsiveLayout({super.key, required this.userRole}); + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + // Breakpoint: If width is less than 800px, serve Mobile/Android UI + if (constraints.maxWidth < 800) { + return AndroidBottomNavLayout(userRole: userRole); + } + // Breakpoint: If width is 800px or larger, serve Desktop/Windows UI + else { + return WindowsSidebarLayout(userRole: userRole); + } + }, + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/layouts/windows_sidebar_layout.dart b/frontend/lib/ui/layouts/windows_sidebar_layout.dart new file mode 100644 index 0000000..02c2ef3 --- /dev/null +++ b/frontend/lib/ui/layouts/windows_sidebar_layout.dart @@ -0,0 +1,183 @@ +import 'package:flutter/material.dart'; +import '../../core/constants/app_colors.dart'; +import '../../core/constants/app_sizes.dart'; +import '../screens/dashboard/dashboard_screen.dart'; +import '../screens/settings/settings_screen.dart'; +import '../screens/students/students_screen.dart'; +import '../screens/documents/documents_screen.dart'; +import '../screens/archives/archives_screen.dart'; +import '../screens/reports/reports_screen.dart'; +import '../screens/users/users_screen.dart'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; // Import Riverpod +import '../providers/auth_provider.dart'; // Import your Auth Provider +import '../screens/login/login_screen.dart'; // Import the Login Screen + +// Dummy screen for placeholders +class PlaceholderScreen extends StatelessWidget { + final String title; + const PlaceholderScreen(this.title, {super.key}); + @override + Widget build(BuildContext context) => Center(child: Text(title, style: const TextStyle(fontSize: 24))); +} + +class WindowsSidebarLayout extends ConsumerStatefulWidget { + final String userRole; + + const WindowsSidebarLayout({super.key, required this.userRole}); + + @override + ConsumerState createState() => _WindowsSidebarLayoutState(); +} + +class _WindowsSidebarLayoutState extends ConsumerState { + int _currentIndex = 0; + + void _handleLogout() async { + await ref.read(authProvider.notifier).logout(); + if (!mounted) return; + Navigator.of(context).pushAndRemoveUntil( + MaterialPageRoute(builder: (_) => const LoginScreen()), + (route) => false, + ); + } + + @override + Widget build(BuildContext context) { + final allTabs = [ + {'label': 'Dashboard', 'icon': Icons.dashboard_outlined, 'activeIcon': Icons.dashboard, 'screen': const DashboardScreen(), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Students', 'icon': Icons.people_outline, 'activeIcon': Icons.people, 'screen': StudentsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Documents', 'icon': Icons.folder_outlined, 'activeIcon': Icons.folder, 'screen': DocumentsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + {'label': 'Archives', 'icon': Icons.archive_outlined, 'activeIcon': Icons.archive, 'screen': ArchivesScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin']}, + {'label': 'Reports', 'icon': Icons.bar_chart_outlined, 'activeIcon': Icons.bar_chart, 'screen': ReportsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin']}, + {'label': 'Users', 'icon': Icons.manage_accounts_outlined, 'activeIcon': Icons.manage_accounts, 'screen': const UsersScreen(), 'roles': ['super_admin']}, + {'label': 'Settings', 'icon': Icons.settings_outlined, 'activeIcon': Icons.settings, 'screen': SettingsScreen(userRole: widget.userRole), 'roles': ['super_admin', 'admin', 'teacher']}, + ]; + final tabs = allTabs.where((tab) => (tab['roles'] as List).contains(widget.userRole)).toList(); + + return Scaffold( + backgroundColor: AppColors.pageBackground, // Solid Off-white beige + body: Row( + children: [ + // ========================================== + // WINDOWS SIDEBAR (Fixed Width: 260px) + // ========================================== + Container( + width: 260, + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [AppColors.darkGreen, AppColors.primaryGreen], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.15), + blurRadius: 10, + offset: const Offset(3, 0), + ) + ], + ), + child: Column( + children: [ + // Branding Header + Padding( + padding: const EdgeInsets.symmetric( + vertical: AppSizes.p32, + horizontal: AppSizes.p24 + ), + child: Row( + children: [ + Image.asset('assets/images/logo.png', width: 42, height: 42), + const SizedBox(width: AppSizes.p12), + const Expanded( + child: Text( + 'TIS RMS', + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + color: Colors.white, + letterSpacing: 1.0, + ), + ), + ), + ], + ), + ), + + // Navigation Items + Expanded( + child: ListView.builder( + padding: const EdgeInsets.symmetric(horizontal: AppSizes.p12), + itemCount: tabs.length, + itemBuilder: (context, index) { + final tab = tabs[index]; + final isSelected = _currentIndex == index; + + return Padding( + padding: const EdgeInsets.only(bottom: AppSizes.p8), + child: Material( + color: Colors.transparent, + child: ListTile( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + selected: isSelected, + selectedTileColor: Colors.white.withOpacity(0.15), // Soft highlight + leading: Icon( + (isSelected ? tab['activeIcon'] ?? tab['icon'] : tab['icon']) as IconData, + color: isSelected ? Colors.white : Colors.white70, + ), + title: Text( + tab['label'] as String, + style: TextStyle( + fontWeight: isSelected ? FontWeight.bold : FontWeight.w500, + color: isSelected ? Colors.white : Colors.white70, + fontSize: 15, + ), + ), + onTap: () => setState(() => _currentIndex = index), + ), + ), + ); + }, + ), + ), + + // Bottom Section: Logout + Divider(height: 1, color: Colors.white24), + Padding( + padding: const EdgeInsets.all(AppSizes.p16), + child: ListTile( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + leading: Icon(Icons.logout, color: Colors.redAccent.shade100), + title: Text( + 'Logout', + style: TextStyle(color: Colors.redAccent.shade100, fontWeight: FontWeight.bold), + ), + hoverColor: Colors.white.withOpacity(0.05), + onTap: () { + _handleLogout(); + }, + ), + ), + ], + ), + ), + + // ========================================== + // MAIN CONTENT AREA + // ========================================== + Expanded( + child: IndexedStack( + index: _currentIndex, + children: tabs.map((t) => t['screen'] as Widget).toList(), + ), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/providers/archives_provider.dart b/frontend/lib/ui/providers/archives_provider.dart new file mode 100644 index 0000000..c7fe808 --- /dev/null +++ b/frontend/lib/ui/providers/archives_provider.dart @@ -0,0 +1,93 @@ +import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/archive_repository.dart'; + +final archiveRepositoryProvider = Provider((ref) { + return ArchiveRepository(); +}); + +class ArchiveQueryParams { + final String search; + final int page; + final int limit; + final String status; + + const ArchiveQueryParams({ + this.search = '', + this.page = 1, + this.limit = 10, + this.status = 'All Statuses', + }); + + ArchiveQueryParams copyWith({ + String? search, + int? page, + int? limit, + String? status, + }) { + return ArchiveQueryParams( + search: search ?? this.search, + page: page ?? this.page, + limit: limit ?? this.limit, + status: status ?? this.status, + ); + } +} + +final archiveQueryProvider = NotifierProvider(ArchiveQueryNotifier.new); + +class ArchiveQueryNotifier extends Notifier { + @override + ArchiveQueryParams build() => const ArchiveQueryParams(); + + void setSearch(String value) => state = state.copyWith(search: value, page: 1); + void setPage(int page) => state = state.copyWith(page: page); + void setLimit(int limit) => state = state.copyWith(limit: limit, page: 1); + void setStatus(String status) => state = state.copyWith(status: status, page: 1); + void reset() => state = const ArchiveQueryParams(); +} + +final archivePageProvider = FutureProvider.autoDispose((ref) async { + final query = ref.watch(archiveQueryProvider); + final repo = ref.read(archiveRepositoryProvider); + + return repo.getArchives( + search: query.search, + page: query.page, + limit: query.limit, + status: query.status, + ); +}); + +final archiveMutationProvider = AsyncNotifierProvider(ArchiveMutationNotifier.new); + +class ArchiveMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future restoreArchive(int id) async { + state = const AsyncLoading(); + try { + final repo = ref.read(archiveRepositoryProvider); + await repo.restoreArchive(id); + state = const AsyncData(null); + ref.invalidate(archivePageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future purgeArchive(int id) async { + state = const AsyncLoading(); + try { + final repo = ref.read(archiveRepositoryProvider); + await repo.purgeArchive(id); + state = const AsyncData(null); + ref.invalidate(archivePageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} diff --git a/frontend/lib/ui/providers/auth_provider.dart b/frontend/lib/ui/providers/auth_provider.dart new file mode 100644 index 0000000..7a293aa --- /dev/null +++ b/frontend/lib/ui/providers/auth_provider.dart @@ -0,0 +1,62 @@ +import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/auth_repository.dart'; +import '../../domain/entities/user_model.dart'; + +final authRepositoryProvider = Provider((ref) => AuthRepository()); + +final authProvider = AsyncNotifierProvider(() { + return AuthNotifier(); +}); + +class AuthNotifier extends AsyncNotifier { + @override + FutureOr build() { + return null; // Always starts null; auto-login handled in SplashScreen + } + + Future login(String username, String password, {bool rememberMe = false}) async { + state = const AsyncLoading(); + try { + final repository = ref.read(authRepositoryProvider); + final user = await repository.login(username, password, rememberMe: rememberMe); + state = AsyncData(user); + return true; + } catch (e, st) { + state = AsyncError(e, st); + return false; + } + } + + /// Called from SplashScreen — tries to auto-login from stored token. + Future tryAutoLogin() async { + try { + final repository = ref.read(authRepositoryProvider); + final user = await repository.tryAutoLogin(); + if (user != null) { + state = AsyncData(user); + } + return user; + } catch (_) { + return null; + } + } + + Future logout() async { + final repository = ref.read(authRepositoryProvider); + await repository.logout(); + state = const AsyncData(null); + } +} + +// Full profile data provider +final profileProvider = FutureProvider.autoDispose((ref) async { + final repository = ref.read(authRepositoryProvider); + return await repository.getProfile(); +}); + +// Super Admin: pending password reset requests +final resetRequestsProvider = FutureProvider.autoDispose>>((ref) async { + final repository = ref.read(authRepositoryProvider); + return await repository.getResetRequests(); +}); \ No newline at end of file diff --git a/frontend/lib/ui/providers/dashboard_provider.dart b/frontend/lib/ui/providers/dashboard_provider.dart new file mode 100644 index 0000000..af404a3 --- /dev/null +++ b/frontend/lib/ui/providers/dashboard_provider.dart @@ -0,0 +1,23 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/dashboard_repository.dart'; +import '../../domain/entities/dashboard_models.dart'; + +final dashboardRepositoryProvider = Provider((ref) { + return DashboardRepository(); +}); + +class DashboardData { + final DashboardStats stats; + final List pendingTasks; + + DashboardData({required this.stats, required this.pendingTasks}); +} + +final dashboardDataProvider = FutureProvider.autoDispose((ref) async { + final repository = ref.read(dashboardRepositoryProvider); + + final stats = await repository.getStats(); + final tasks = await repository.getPendingTasks(); + + return DashboardData(stats: stats, pendingTasks: tasks); +}); diff --git a/frontend/lib/ui/providers/document_provider.dart b/frontend/lib/ui/providers/document_provider.dart new file mode 100644 index 0000000..6f63e8f --- /dev/null +++ b/frontend/lib/ui/providers/document_provider.dart @@ -0,0 +1,424 @@ +import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/document_repository.dart'; +import '../../domain/entities/document_requirement_model.dart'; +import '../../domain/entities/folder_model.dart'; + +final documentRepositoryProvider = Provider((ref) { + return DocumentRepository(); +}); + +// ============================================================ +// Query params for documents +// ============================================================ +class DocumentQueryParams { + final String search; + final int page; + final int limit; + final String status; + final String documentType; + final String gradeLevel; + final String schoolYear; + // Optional: filter by specific student (for "Open Documents Folder" redirect) + final int? studentId; + + const DocumentQueryParams({ + this.search = '', + this.page = 1, + this.limit = 20, + this.status = 'All Statuses', + this.documentType = 'All Types', + this.gradeLevel = '', + this.schoolYear = '', + this.studentId, + }); + + DocumentQueryParams copyWith({ + String? search, + int? page, + int? limit, + String? status, + String? documentType, + String? gradeLevel, + String? schoolYear, + int? studentId, + bool clearStudentId = false, + }) { + return DocumentQueryParams( + search: search ?? this.search, + page: page ?? this.page, + limit: limit ?? this.limit, + status: status ?? this.status, + documentType: documentType ?? this.documentType, + gradeLevel: gradeLevel ?? this.gradeLevel, + schoolYear: schoolYear ?? this.schoolYear, + studentId: clearStudentId ? null : (studentId ?? this.studentId), + ); + } +} + +final documentQueryProvider = + NotifierProvider( + DocumentQueryNotifier.new); + +class DocumentQueryNotifier extends Notifier { + @override + DocumentQueryParams build() => const DocumentQueryParams(); + + void setSearch(String value) => state = state.copyWith(search: value, page: 1); + void setPage(int page) => state = state.copyWith(page: page); + void setLimit(int limit) => state = state.copyWith(limit: limit, page: 1); + void setStatus(String status) => state = state.copyWith(status: status, page: 1); + void setDocumentType(String type) => state = state.copyWith(documentType: type, page: 1); + void setGradeLevel(String gradeLevel) => state = state.copyWith(gradeLevel: gradeLevel, page: 1); + void setSchoolYear(String schoolYear) => state = state.copyWith(schoolYear: schoolYear, page: 1); + + /// Navigate to a specific student's documents + void setStudentId(int? studentId) { + state = state.copyWith( + studentId: studentId, + clearStudentId: studentId == null, + page: 1, + search: '', + ); + } + + void reset() => state = const DocumentQueryParams(); +} + +// ============================================================ +// Document page provider — fetches from /documents with all filters +// OR from /documents/student/:id when studentId is specified +// ============================================================ +final documentPageProvider = + FutureProvider.autoDispose((ref) async { + final query = ref.watch(documentQueryProvider); + final repo = ref.read(documentRepositoryProvider); + + // If filtering by a specific student, use the student-specific endpoint + if (query.studentId != null) { + final docs = await repo.getDocumentsByStudent(query.studentId!); + return DocumentPage( + documents: docs, + total: docs.length, + page: 1, + limit: docs.length, + totalPages: 1, + ); + } + + return repo.getDocuments( + search: query.search, + page: query.page, + limit: query.limit, + status: query.status, + documentType: query.documentType, + gradeLevel: query.gradeLevel, + schoolYear: query.schoolYear, + ); +}); + + +// ============================================================ +// Student-specific documents provider +// ============================================================ +final studentDocumentsProvider = + FutureProvider.family.autoDispose, int>((ref, studentId) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getDocumentsByStudent(studentId); +}); + +// ============================================================ +// Folders for all students — list of student root folders +// ============================================================ +final studentFoldersProvider = + FutureProvider.autoDispose>((ref) async { + final repo = ref.read(documentRepositoryProvider); + // Fetch top-level folders (no parentId filter = all root folders) + return repo.getFolders(); +}); + +// ============================================================ +// Requirements providers +// ============================================================ +final documentRequirementsProvider = + FutureProvider.autoDispose>((ref) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getRequirements(); +}); + +final requirementsSettingsProvider = + FutureProvider.autoDispose((ref) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getRequirementsSettings(); +}); + +final missingRequirementsProvider = + FutureProvider.family.autoDispose((ref, studentId) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getMissingRequirements(studentId); +}); + +// ============================================================ +// Folder providers +// ============================================================ +final foldersProvider = + FutureProvider.autoDispose>((ref) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getFolders(); +}); + +final studentFolderProvider = + FutureProvider.family.autoDispose((ref, studentId) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getStudentFolder(studentId); +}); + +// ============================================================ +// Print Queue providers +// ============================================================ +final printQueueProvider = + FutureProvider.autoDispose>((ref) async { + final repo = ref.read(documentRepositoryProvider); + return repo.getPrintQueue(); +}); + +final printQueueMutationProvider = + AsyncNotifierProvider( + PrintQueueMutationNotifier.new); + +class PrintQueueMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future addToQueue(int documentId) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.addToPrintQueue(documentId); + state = const AsyncData(null); + ref.invalidate(printQueueProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future removeFromQueue(int queueId) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.removeFromPrintQueue(queueId); + state = const AsyncData(null); + ref.invalidate(printQueueProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future clearQueue() async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.clearPrintQueue(); + state = const AsyncData(null); + ref.invalidate(printQueueProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} + +// ============================================================ +// Document mutations +// ============================================================ +final documentMutationProvider = + AsyncNotifierProvider( + DocumentMutationNotifier.new); + +class DocumentMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future updateDocumentStatus(int id, String status) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.updateDocumentStatus(id, status); + state = const AsyncData(null); + ref.invalidate(documentPageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future deleteDocument(int id) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.deleteDocument(id); + state = const AsyncData(null); + ref.invalidate(documentPageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} + +// ============================================================ +// Requirement mutations +// ============================================================ +final requirementMutationProvider = + AsyncNotifierProvider( + RequirementMutationNotifier.new); + +class RequirementMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future createRequirement(DocumentRequirementModel requirement) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.createRequirement(requirement); + state = const AsyncData(null); + ref.invalidate(requirementsSettingsProvider); + ref.invalidate(documentRequirementsProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future updateRequirement(DocumentRequirementModel requirement) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.updateRequirement(requirement); + state = const AsyncData(null); + ref.invalidate(requirementsSettingsProvider); + ref.invalidate(documentRequirementsProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future deleteRequirement(int id) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.deleteRequirement(id); + state = const AsyncData(null); + ref.invalidate(requirementsSettingsProvider); + ref.invalidate(documentRequirementsProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future bulkUpdateRequirements( + List> requirements) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.bulkUpdateRequirements(requirements); + state = const AsyncData(null); + ref.invalidate(requirementsSettingsProvider); + ref.invalidate(documentRequirementsProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} + +// ============================================================ +// Folder mutations +// ============================================================ +final folderMutationProvider = + AsyncNotifierProvider( + FolderMutationNotifier.new); + +class FolderMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future createFolder( + {required String name, + int? parentId, + int? studentId, + String? category}) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + final id = await repo.createFolder( + name: name, + parentId: parentId, + studentId: studentId, + category: category, + ); + state = const AsyncData(null); + ref.invalidate(foldersProvider); + ref.invalidate(studentFoldersProvider); + if (studentId != null) { + ref.invalidate(studentFolderProvider(studentId)); + } + return id; + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future renameFolder(int id, String name) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.renameFolder(id, name); + state = const AsyncData(null); + ref.invalidate(foldersProvider); + ref.invalidate(studentFoldersProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future deleteFolder(int id, {int? studentId}) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.deleteFolder(id); + state = const AsyncData(null); + ref.invalidate(foldersProvider); + ref.invalidate(studentFoldersProvider); + if (studentId != null) { + ref.invalidate(studentFolderProvider(studentId)); + } + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future syncFolders(int studentId) async { + state = const AsyncLoading(); + try { + final repo = ref.read(documentRepositoryProvider); + await repo.syncFolders(studentId); + state = const AsyncData(null); + ref.invalidate(studentFolderProvider(studentId)); + ref.invalidate(foldersProvider); + ref.invalidate(studentFoldersProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} \ No newline at end of file diff --git a/frontend/lib/ui/providers/reports_provider.dart b/frontend/lib/ui/providers/reports_provider.dart new file mode 100644 index 0000000..f8f8b93 --- /dev/null +++ b/frontend/lib/ui/providers/reports_provider.dart @@ -0,0 +1,42 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/report_repository.dart'; +import '../../domain/entities/report_models.dart'; + +// Repository provider +final reportRepositoryProvider = Provider((ref) => ReportRepository()); + +// Selected academic year (null = all years) +final selectedAcademicYearIdProvider = NotifierProvider(() => SelectedYearNotifier()); + +class SelectedYearNotifier extends Notifier { + @override + int? build() => null; + void select(int? id) => state = id; +} + +// Academic years list +final academicYearsProvider = FutureProvider>((ref) async { + return await ref.read(reportRepositoryProvider).getAcademicYears(); +}); + +// KPI stats — re-fetches when selected year changes +final reportStatsProvider = FutureProvider.autoDispose((ref) async { + final yearId = ref.watch(selectedAcademicYearIdProvider); + return await ref.read(reportRepositoryProvider).getStats(academicYearId: yearId); +}); + +// Enrollment by grade — re-fetches when selected year changes +final enrollmentByGradeProvider = FutureProvider.autoDispose>((ref) async { + final yearId = ref.watch(selectedAcademicYearIdProvider); + return await ref.read(reportRepositoryProvider).getEnrollmentByGrade(academicYearId: yearId); +}); + +// Document status (global, not filtered by year) +final documentStatusProvider = FutureProvider.autoDispose((ref) async { + return await ref.read(reportRepositoryProvider).getDocumentStatus(); +}); + +// Full export data — triggered manually, not auto-watched +final reportExportDataProvider = FutureProvider.autoDispose.family((ref, yearId) async { + return await ref.read(reportRepositoryProvider).getExportData(academicYearId: yearId); +}); diff --git a/frontend/lib/ui/providers/student_provider.dart b/frontend/lib/ui/providers/student_provider.dart new file mode 100644 index 0000000..1f40596 --- /dev/null +++ b/frontend/lib/ui/providers/student_provider.dart @@ -0,0 +1,233 @@ +import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../core/network/api_constants.dart'; +import '../../domain/repositories/student_repository.dart'; +import '../../domain/entities/student_model.dart'; + + +// ============================================================ +// Academic Years Model +// ============================================================ +class AcademicYear { + final int id; + final String yearRange; + final String status; + + AcademicYear({required this.id, required this.yearRange, required this.status}); + + factory AcademicYear.fromJson(Map json) { + return AcademicYear( + id: json['id'] as int, + yearRange: json['year_range'] as String, + status: json['status'] as String? ?? 'active', + ); + } +} + +// ============================================================ +// Repository provider +// ============================================================ +final studentRepositoryProvider = Provider((ref) { + return StudentRepository(); +}); + +// ============================================================ +// Academic Years Provider +// ============================================================ +final academicYearsProvider = FutureProvider.autoDispose>((ref) async { + final storage = const FlutterSecureStorage(); + final token = await storage.read(key: 'jwt_token'); + final dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl)); + + try { + final response = await dio.get( + '/setup/academic-years', + options: Options(headers: {'Authorization': 'Bearer $token'}), + ); + return (response.data as List) + .map((y) => AcademicYear.fromJson(y as Map)) + .toList(); + } catch (e) { + return []; + } +}); + +// ============================================================ +// Student Detail Provider +// ============================================================ +final studentDetailProvider = FutureProvider.family.autoDispose((ref, studentId) async { + final repo = ref.read(studentRepositoryProvider); + return repo.getStudentById(studentId); +}); + +// ============================================================ +// Query params state — drives what the list shows +// ============================================================ +class StudentQueryParams { + final String search; + final int page; + final int limit; + final String gradeLevel; // '' = All + final String status; // '' = All + + const StudentQueryParams({ + this.search = '', + this.page = 1, + this.limit = 10, + this.gradeLevel = '', + this.status = '', + }); + + StudentQueryParams copyWith({ + String? search, + int? page, + int? limit, + String? gradeLevel, + String? status, + }) { + return StudentQueryParams( + search: search ?? this.search, + page: page ?? this.page, + limit: limit ?? this.limit, + gradeLevel: gradeLevel ?? this.gradeLevel, + status: status ?? this.status, + ); + } +} + +// ============================================================ +// Notifier — manages the live query state +// ============================================================ +final studentQueryProvider = + NotifierProvider( + StudentQueryNotifier.new, +); + +class StudentQueryNotifier extends Notifier { + @override + StudentQueryParams build() => const StudentQueryParams(); + + void setSearch(String value) { + // Reset to page 1 whenever search changes + state = state.copyWith(search: value, page: 1); + } + + void setPage(int page) => state = state.copyWith(page: page); + + void setLimit(int limit) => state = state.copyWith(limit: limit, page: 1); + + void setGradeLevel(String grade) => + state = state.copyWith(gradeLevel: grade, page: 1); + + void setStatus(String status) => + state = state.copyWith(status: status, page: 1); + + void reset() => state = const StudentQueryParams(); +} + +// ============================================================ +// Async data provider — re-fetches when query changes +// ============================================================ +final studentPageProvider = FutureProvider.autoDispose((ref) async { + final query = ref.watch(studentQueryProvider); + final repo = ref.read(studentRepositoryProvider); + + return repo.getStudents( + search: query.search, + page: query.page, + limit: query.limit, + gradeLevel: query.gradeLevel, + status: query.status, + ); +}); + +// ============================================================ +// Mutation notifier — handles Create / Update / Delete +// ============================================================ +final studentMutationProvider = + AsyncNotifierProvider( + StudentMutationNotifier.new, +); + +class StudentMutationNotifier extends AsyncNotifier { + @override + FutureOr build() {} + + Future createStudent({ + required String lrn, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String sex, + required DateTime birthDate, + }) async { + state = const AsyncLoading(); + try { + final repo = ref.read(studentRepositoryProvider); + await repo.createStudent( + lrn: lrn, + firstName: firstName, + middleName: middleName, + lastName: lastName, + extension: extension, + sex: sex, + birthDate: birthDate, + ); + state = const AsyncData(null); + // Invalidate to refresh the list + ref.invalidate(studentPageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future updateStudent({ + required int id, + required String lrn, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String sex, + required DateTime birthDate, + String status = 'Enrolled', + }) async { + state = const AsyncLoading(); + try { + final repo = ref.read(studentRepositoryProvider); + await repo.updateStudent( + id: id, + lrn: lrn, + firstName: firstName, + middleName: middleName, + lastName: lastName, + extension: extension, + sex: sex, + birthDate: birthDate, + status: status, + ); + state = const AsyncData(null); + ref.invalidate(studentPageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } + + Future deleteStudent(int id) async { + state = const AsyncLoading(); + try { + final repo = ref.read(studentRepositoryProvider); + await repo.deleteStudent(id); + state = const AsyncData(null); + ref.invalidate(studentPageProvider); + } catch (e, st) { + state = AsyncError(e, st); + rethrow; + } + } +} diff --git a/frontend/lib/ui/providers/users_provider.dart b/frontend/lib/ui/providers/users_provider.dart new file mode 100644 index 0000000..b8baccb --- /dev/null +++ b/frontend/lib/ui/providers/users_provider.dart @@ -0,0 +1,82 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../domain/repositories/user_repository.dart'; +import '../../domain/entities/system_user.dart'; + +final userRepositoryProvider = Provider((ref) => UserRepository()); + +final usersProvider = AsyncNotifierProvider>(() { + return UsersNotifier(); +}); + +class UsersNotifier extends AsyncNotifier> { + @override + Future> build() async { + return await ref.read(userRepositoryProvider).getUsers(); + } + + Future refresh() async { + state = const AsyncLoading(); + state = await AsyncValue.guard(() => ref.read(userRepositoryProvider).getUsers()); + } + + /// Returns the generated temporary password to display once. + Future createUser({ + required String username, + String? password, + required String firstName, + String? middleName, + required String lastName, + String? extension, + required String role, + String? email, + String? phone, + }) async { + try { + final tempPassword = await ref.read(userRepositoryProvider).createUser( + username: username, password: password, firstName: firstName, + middleName: middleName, lastName: lastName, extension: extension, + role: role, email: email, phone: phone, + ); + await refresh(); + return tempPassword; + } catch (e) { + rethrow; + } + } + + Future updateUser({ + required int id, required String firstName, String? middleName, + required String lastName, String? extension, required String role, + String? email, String? phone, + }) async { + try { + await ref.read(userRepositoryProvider).updateUser( + id: id, firstName: firstName, middleName: middleName, lastName: lastName, + extension: extension, role: role, email: email, phone: phone, + ); + await refresh(); + return true; + } catch (e) { + rethrow; + } + } + + Future resetPassword(int id) async { + try { + await ref.read(userRepositoryProvider).resetPassword(id); + return true; + } catch (e) { + rethrow; + } + } + + Future deleteUser(int id) async { + try { + await ref.read(userRepositoryProvider).deleteUser(id); + await refresh(); + return true; + } catch (e) { + rethrow; + } + } +} diff --git a/frontend/lib/ui/screens/archives/archives_screen.dart b/frontend/lib/ui/screens/archives/archives_screen.dart new file mode 100644 index 0000000..71ec07c --- /dev/null +++ b/frontend/lib/ui/screens/archives/archives_screen.dart @@ -0,0 +1,381 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../providers/archives_provider.dart'; +import '../../../domain/entities/archive_model.dart'; + +class ArchivesScreen extends ConsumerStatefulWidget { + final String userRole; + + const ArchivesScreen({super.key, required this.userRole}); + + @override + ConsumerState createState() => _ArchivesScreenState(); +} + +class _ArchivesScreenState extends ConsumerState { + final TextEditingController _searchController = TextEditingController(); + Timer? _debounce; + + @override + void dispose() { + _searchController.dispose(); + _debounce?.cancel(); + super.dispose(); + } + + void _onSearchChanged(String query) { + if (_debounce?.isActive ?? false) _debounce!.cancel(); + _debounce = Timer(const Duration(milliseconds: 500), () { + ref.read(archiveQueryProvider.notifier).setSearch(query); + }); + } + + void _handleRestore(ArchiveModel archive) async { + try { + await ref.read(archiveMutationProvider.notifier).restoreArchive(archive.id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('${archive.name} restored to active records.'), backgroundColor: AppColors.success), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Failed to restore: $e'), backgroundColor: AppColors.error), + ); + } + } + + void _handlePermanentDelete(ArchiveModel archive) { + // RBAC Check just in case + if (widget.userRole != 'super_admin' && widget.userRole != 'admin') return; + + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Confirm Permanent Purge', style: TextStyle(color: AppColors.error)), + content: Text('Are you sure you want to permanently delete ${archive.name}? This action cannot be undone and will purge all connected documents.'), + actions: [ + TextButton(onPressed: () => Navigator.pop(context), child: const Text('CANCEL')), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: AppColors.error, foregroundColor: Colors.white), + onPressed: () async { + Navigator.pop(context); + try { + await ref.read(archiveMutationProvider.notifier).purgeArchive(archive.id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('${archive.name} permanently deleted.'), backgroundColor: AppColors.error), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Failed to purge: $e'), backgroundColor: AppColors.error), + ); + } + }, + child: const Text('PURGE RECORD'), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + final archiveState = ref.watch(archivePageProvider); + final query = ref.watch(archiveQueryProvider); + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeaderControls(context, query), + const SizedBox(height: AppSizes.p24), + + // ========================================== + // RETENTION RULES BANNER + // ========================================== + Container( + width: double.infinity, + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.05), + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + border: Border.all(color: Colors.blue.withOpacity(0.2)), + ), + child: const Row( + children: [ + Icon(Icons.info_outline, color: Colors.blue), + SizedBox(width: AppSizes.p12), + Expanded( + child: Text( + 'Retention Engine Rules: Graduated (5 Yrs) • Transferred Out (5 Yrs) • Dropped (3 Yrs). Records marked in red have exceeded their retention period and are ready for permanent purging.', + style: TextStyle(color: Color(0xFF0D47A1), fontSize: 13), // Material Blue 900 + ), + ), + ], + ), + ), + const SizedBox(height: AppSizes.p24), + + // ========================================== + // RESPONSIVE DATA VIEW + // ========================================== + Expanded( + child: archiveState.when( + data: (pageData) { + if (pageData.archives.isEmpty) { + return const Center(child: Text('No archived records found.')); + } + return LayoutBuilder( + builder: (context, constraints) { + if (constraints.maxWidth > 800) { + return _buildDesktopTable(pageData.archives); + } else { + return _buildMobileCardList(pageData.archives); + } + }, + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (err, stack) => Center(child: Text('Error: $err', style: const TextStyle(color: AppColors.error))), + ), + ), + + if (archiveState.hasValue && archiveState.value!.totalPages > 1) + _buildPaginationControls(archiveState.value!.totalPages, query.page), + ], + ), + ), + ), + ); + } + + // ========================================== + // HEADER CONTROLS + // ========================================== + Widget _buildHeaderControls(BuildContext context, ArchiveQueryParams query) { + return LayoutBuilder( + builder: (context, constraints) { + bool isDesktop = constraints.maxWidth > 800; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'System Archives', + style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.textPrimary), + ), + const SizedBox(height: AppSizes.p16), + Row( + children: [ + Expanded( + flex: 2, + child: CustomTextField( + hintText: 'Search archived records...', + prefixIcon: Icons.search, + controller: _searchController, + onChanged: _onSearchChanged, + ), + ), + const SizedBox(width: AppSizes.p16), + if (isDesktop) ...[ + Expanded( + flex: 1, + child: Container( + padding: const EdgeInsets.symmetric(horizontal: AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade300), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: query.status, + isExpanded: true, + items: ['All Statuses', 'Graduated', 'Transferred Out', 'Dropped'] + .map((String value) => DropdownMenuItem(value: value, child: Text(value))) + .toList(), + onChanged: (val) { + if (val != null) { + ref.read(archiveQueryProvider.notifier).setStatus(val); + } + }, + ), + ), + ), + ), + ], + ], + ), + ], + ); + }, + ); + } + + // ========================================== + // DESKTOP TABLE + // ========================================== + Widget _buildDesktopTable(List archives) { + return Container( + width: double.infinity, + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 10, offset: const Offset(0, 4))], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: DataTable( + headingRowColor: WidgetStateProperty.all(AppColors.primaryGreen.withOpacity(0.05)), + columns: const [ + DataColumn(label: Text('LRN', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Name', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Final Status', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Date Archived', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Retention Expiry', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Actions', style: TextStyle(fontWeight: FontWeight.bold))), + ], + rows: archives.map((archive) { + return DataRow(cells: [ + DataCell(Text(archive.lrn, style: const TextStyle(fontWeight: FontWeight.w500))), + DataCell(Text(archive.name)), + DataCell(_buildStatusChip(archive.status)), + DataCell(Text(archive.archivedDate, style: const TextStyle(color: AppColors.textSecondary))), + DataCell(Text( + archive.expiryDate, + style: TextStyle(color: archive.isExpired ? AppColors.error : AppColors.primaryGreen, fontWeight: archive.isExpired ? FontWeight.bold : FontWeight.normal), + )), + DataCell(_buildActionButtons(archive)), + ]); + }).toList(), + ), + ), + ), + ); + } + + // ========================================== + // MOBILE CARD LIST + // ========================================== + Widget _buildMobileCardList(List archives) { + return ListView.separated( + itemCount: archives.length, + separatorBuilder: (context, index) => const SizedBox(height: AppSizes.p12), + itemBuilder: (context, index) { + final archive = archives[index]; + + return Container( + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + border: archive.isExpired ? Border.all(color: AppColors.error.withOpacity(0.3)) : null, + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 8, offset: const Offset(0, 2))], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(archive.lrn, style: const TextStyle(fontWeight: FontWeight.bold, color: AppColors.primaryGreen)), + _buildStatusChip(archive.status), + ], + ), + const SizedBox(height: AppSizes.p8), + Text(archive.name, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const Padding( + padding: EdgeInsets.symmetric(vertical: AppSizes.p12), + child: Divider(height: 1), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Archived: ${archive.archivedDate}', style: const TextStyle(color: AppColors.textSecondary, fontSize: 12)), + Text( + 'Expires: ${archive.expiryDate}', + style: TextStyle(color: archive.isExpired ? AppColors.error : AppColors.primaryGreen, fontSize: 12, fontWeight: archive.isExpired ? FontWeight.bold : FontWeight.normal), + ), + ], + ), + _buildActionButtons(archive), + ], + ), + ], + ), + ); + }, + ); + } + + // ========================================== + // PAGINATION CONTROLS + // ========================================== + Widget _buildPaginationControls(int totalPages, int currentPage) { + return Padding( + padding: const EdgeInsets.only(top: AppSizes.p16), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + IconButton( + icon: const Icon(Icons.chevron_left), + onPressed: currentPage > 1 + ? () => ref.read(archiveQueryProvider.notifier).setPage(currentPage - 1) + : null, + ), + Text('Page $currentPage of $totalPages', style: const TextStyle(fontWeight: FontWeight.bold)), + IconButton( + icon: const Icon(Icons.chevron_right), + onPressed: currentPage < totalPages + ? () => ref.read(archiveQueryProvider.notifier).setPage(currentPage + 1) + : null, + ), + ], + ), + ); + } + + // ========================================== + // HELPER COMPONENTS + // ========================================== + Widget _buildStatusChip(String status) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration(color: Colors.grey.shade200, borderRadius: BorderRadius.circular(20)), + child: Text(status, style: TextStyle(color: Colors.grey.shade800, fontWeight: FontWeight.w600, fontSize: 12)), + ); + } + + Widget _buildActionButtons(ArchiveModel archive) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon(Icons.restore, color: AppColors.primaryGreen), + tooltip: 'Restore to Active', + onPressed: () => _handleRestore(archive), + ), + if (widget.userRole == 'super_admin' || widget.userRole == 'admin') // RBAC Protection + IconButton( + icon: Icon(Icons.delete_forever, color: archive.isExpired ? AppColors.error : Colors.grey.shade400), + tooltip: 'Permanently Purge', + onPressed: () => _handlePermanentDelete(archive), + ), + ], + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/dashboard/dashboard_screen.dart b/frontend/lib/ui/screens/dashboard/dashboard_screen.dart new file mode 100644 index 0000000..159f384 --- /dev/null +++ b/frontend/lib/ui/screens/dashboard/dashboard_screen.dart @@ -0,0 +1,251 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../shared/cards/stat_card.dart'; +import '../../providers/dashboard_provider.dart'; +import '../../providers/auth_provider.dart'; +import '../../../domain/entities/dashboard_models.dart'; +import '../../../domain/entities/user_model.dart'; + +class DashboardScreen extends ConsumerStatefulWidget { + const DashboardScreen({super.key}); + + @override + ConsumerState createState() => _DashboardScreenState(); +} + +class _DashboardScreenState extends ConsumerState { + Future _handleRefresh() async { + ref.invalidate(dashboardDataProvider); + // Wait for the new data to finish loading + await ref.read(dashboardDataProvider.future); + } + + @override + Widget build(BuildContext context) { + final dashboardAsync = ref.watch(dashboardDataProvider); + final user = ref.watch(authProvider).value; + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: dashboardAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, stackTrace) => Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.error_outline, color: Colors.red, size: 48), + const SizedBox(height: 12), + Text('$error', style: const TextStyle(color: Colors.red)), + const SizedBox(height: 16), + ElevatedButton.icon( + onPressed: _handleRefresh, + icon: const Icon(Icons.refresh), + label: const Text('Retry'), + ), + ], + ), + ), + data: (data) => RefreshIndicator( + onRefresh: _handleRefresh, + child: SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + padding: const EdgeInsets.all(24.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTopBar(user), + const SizedBox(height: 32), + const Text( + 'Dashboard Overview', + style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + Text( + 'Welcome back, ${user?.firstName ?? 'Admin'}. Here is what is happening today.', + style: TextStyle(fontSize: 16, color: Colors.grey.shade600), + ), + const SizedBox(height: 24), + _buildStatGrid(data.stats), + const SizedBox(height: 32), + const Text( + 'Pending Tasks', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 16), + _buildPendingTasksList(data.pendingTasks), + const SizedBox(height: 48), + ], + ), + ), + ), + ), + ), + ); + } + + // ========================================== + // TOP BAR MODULE + // ========================================== + Widget _buildTopBar(UserModel? user) { + final String initials = user != null && user.firstName.isNotEmpty && user.lastName.isNotEmpty + ? '${user.firstName[0]}${user.lastName[0]}'.toUpperCase() + : 'SA'; + + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Dummy Search Bar (Expands on Desktop, fixed width on Mobile) + Expanded( + flex: 1, + child: Container( + constraints: const BoxConstraints(maxWidth: 400), + child: TextField( + decoration: InputDecoration( + hintText: 'Search students by LRN or Name...', + prefixIcon: const Icon(Icons.search), + filled: true, + fillColor: Colors.white, + contentPadding: const EdgeInsets.symmetric(vertical: 0), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8.0), + borderSide: BorderSide.none, + ), + ), + ), + ), + ), + const SizedBox(width: 16), + // Icons + Row( + children: [ + // Notification with Red Badge + Stack( + children: [ + IconButton( + icon: const Icon(Icons.notifications_outlined, size: 28), + onPressed: () { + // TODO: Open Notification Modal + }, + ), + Positioned( + right: 8, + top: 8, + child: Container( + padding: const EdgeInsets.all(4), + decoration: const BoxDecoration( + color: Colors.redAccent, + shape: BoxShape.circle, + ), + child: const Text( + '3', + style: TextStyle(color: Colors.white, fontSize: 10, fontWeight: FontWeight.bold), + ), + ), + ), + ], + ), + const SizedBox(width: 16), + // User Profile Mockup + CircleAvatar( + backgroundColor: const Color(0xFF1C8248), + child: Text(initials, style: const TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + ), + ], + ), + ], + ); + } + + // ========================================== + // RESPONSIVE STAT GRID + // ========================================== + Widget _buildStatGrid(DashboardStats stats) { + return LayoutBuilder( + builder: (context, constraints) { + // Breakpoint logic: >= 800px is Windows (4 columns), < 800px is Android (2 columns) + int crossAxisCount = constraints.maxWidth >= 800 ? 4 : 2; + + return GridView( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: crossAxisCount, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + // THE FIX: This forces the card to always be exactly 110 pixels tall, + // completely ignoring the width and preventing vertical squishing! + mainAxisExtent: 110, + ), + children: [ + StatCard(title: 'Total Students', value: stats.totalStudents.toString(), icon: Icons.school), + StatCard(title: 'Pending Docs', value: stats.pendingVerifications.toString(), icon: Icons.folder_shared, iconColor: Colors.orange), + StatCard(title: 'Print Queue', value: stats.printQueueCount.toString(), icon: Icons.print, iconColor: Colors.blue), + StatCard(title: 'Active Users', value: stats.activeUsers.toString(), icon: Icons.badge), // Super Admin specific stat + ], + ); + }, + ); + } + + // ========================================== + // PENDING TASKS LIST + // ========================================== + Widget _buildPendingTasksList(List tasks) { + if (tasks.isEmpty) { + return Container( + padding: const EdgeInsets.all(24.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12.0), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.03), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: const Center( + child: Text('No pending tasks at the moment.', style: TextStyle(color: Colors.grey)), + ), + ); + } + + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12.0), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.03), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: tasks.length, + separatorBuilder: (context, index) => Divider(height: 1, color: Colors.grey.shade200), + itemBuilder: (context, index) { + final task = tasks[index]; + return ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + leading: CircleAvatar( + backgroundColor: Colors.orange.withOpacity(0.1), + child: const Icon(Icons.folder_shared, color: Colors.orange), + ), + title: Text('Verify ${task.fileName} for ${task.firstName} ${task.lastName}', style: const TextStyle(fontWeight: FontWeight.w500)), + subtitle: Text('Submitted on ${task.createdAt.split('T').first}'), + trailing: const Icon(Icons.chevron_right, color: Colors.grey), + onTap: () { + // TODO: Navigate to specific task + }, + ); + }, + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/documents/documents_screen.dart b/frontend/lib/ui/screens/documents/documents_screen.dart new file mode 100644 index 0000000..29c3bf6 --- /dev/null +++ b/frontend/lib/ui/screens/documents/documents_screen.dart @@ -0,0 +1,952 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../providers/document_provider.dart'; +import '../../providers/student_provider.dart'; +import '../students/student_detail_screen.dart'; +import 'widgets/file_folder_card.dart'; +import 'widgets/upload_ocr_modal.dart'; +import 'widgets/print_queue_modal.dart'; + +class DocumentsScreen extends ConsumerStatefulWidget { + final String userRole; + /// When set, the screen auto-filters to this student's documents + final int? initialStudentId; + + const DocumentsScreen({ + super.key, + this.userRole = 'teacher', + this.initialStudentId, + }); + + @override + ConsumerState createState() => _DocumentsScreenState(); +} + +class _DocumentsScreenState extends ConsumerState + with SingleTickerProviderStateMixin { + final TextEditingController _searchController = TextEditingController(); + Timer? _debounce; + bool _isGridView = false; + bool _showFilters = false; + late final TabController _tabController; + + // Filter values — kept in sync with provider + String _selectedStatus = 'All Statuses'; + String _selectedDocumentType = 'All Types'; + String _selectedGradeLevel = 'All Grades'; + String _selectedSchoolYear = 'All Years'; + + @override + void initState() { + super.initState(); + // 2 tabs: 0=Folders, 1=Documents + _tabController = TabController(length: 2, vsync: this); + // If a specific student was passed, jump directly to Documents tab + if (widget.initialStudentId != null) { + _tabController.index = 1; + WidgetsBinding.instance.addPostFrameCallback((_) { + ref + .read(documentQueryProvider.notifier) + .setStudentId(widget.initialStudentId); + }); + } + } + + @override + void dispose() { + _tabController.dispose(); + _searchController.dispose(); + _debounce?.cancel(); + super.dispose(); + } + + void _onSearchChanged(String query) { + if (_debounce?.isActive ?? false) _debounce!.cancel(); + _debounce = Timer(const Duration(milliseconds: 500), () { + ref.read(documentQueryProvider.notifier).setSearch(query); + }); + } + + void _applyFilters() { + final n = ref.read(documentQueryProvider.notifier); + n.setStatus(_selectedStatus); + n.setDocumentType(_selectedDocumentType); + n.setGradeLevel( + _selectedGradeLevel == 'All Grades' ? '' : _selectedGradeLevel); + n.setSchoolYear( + _selectedSchoolYear == 'All Years' ? '' : _selectedSchoolYear); + } + + void _clearFilters() { + setState(() { + _selectedStatus = 'All Statuses'; + _selectedDocumentType = 'All Types'; + _selectedGradeLevel = 'All Grades'; + _selectedSchoolYear = 'All Years'; + _searchController.clear(); + }); + ref.read(documentQueryProvider.notifier).reset(); + } + + void _handleAction(String action, int documentId, int? studentId) async { + if (action == 'view_profile' && studentId != null) { + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => + StudentDetailScreen(studentId: studentId, userRole: widget.userRole), + )); + } else if (action == 'delete') { + _confirmDelete(documentId); + } else if (action == 'queue') { + try { + await ref + .read(printQueueMutationProvider.notifier) + .addToQueue(documentId); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Added to Print Queue.'), + backgroundColor: AppColors.primaryGreen, + )); + } catch (e) { + if (!mounted) return; + final msg = e.toString().replaceFirst('Exception: ', ''); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(msg), + backgroundColor: AppColors.warning, + )); + } + } else if (action == 'preview') { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Preview feature coming soon.'), + backgroundColor: Colors.blue, + )); + } else if (action == 'download') { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Download started.'), + backgroundColor: Colors.blue, + )); + } + } + + void _confirmDelete(int id) { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + title: const Row(children: [ + Icon(Icons.warning_amber_rounded, color: AppColors.error), + SizedBox(width: 8), + Text('Delete Document', style: TextStyle(color: AppColors.error)), + ]), + content: + const Text('Are you sure you want to permanently delete this document?'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: const Text('CANCEL')), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.error, + foregroundColor: Colors.white), + onPressed: () async { + Navigator.pop(ctx); + try { + await ref + .read(documentMutationProvider.notifier) + .deleteDocument(id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Document deleted.'), + backgroundColor: AppColors.error, + )); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Failed to delete: $e'), + backgroundColor: AppColors.error, + )); + } + }, + child: const Text('DELETE'), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + final docState = ref.watch(documentPageProvider); + final query = ref.watch(documentQueryProvider); + final requirementsAsync = ref.watch(documentRequirementsProvider); + final academicYearsAsync = ref.watch(academicYearsProvider); + final foldersAsync = ref.watch(foldersProvider); + final screenW = MediaQuery.of(context).size.width; + final isMobile = screenW < 700; + final isStudentFiltered = query.studentId != null; + + return Scaffold( + backgroundColor: Colors.transparent, + floatingActionButton: isMobile + ? FloatingActionButton( + backgroundColor: AppColors.primaryGreen, + onPressed: () => showDialog( + context: context, + builder: (_) => const UploadOcrModal()), + child: const Icon(Icons.cloud_upload, color: Colors.white), + ) + : null, + body: SafeArea( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Top Header ── + _buildTopHeader(isMobile, isStudentFiltered, query), + + // ── TabBar ── + Container( + color: AppColors.surfaceWhite, + child: TabBar( + controller: _tabController, + labelColor: AppColors.primaryGreen, + unselectedLabelColor: AppColors.textSecondary, + indicatorColor: AppColors.primaryGreen, + indicatorWeight: 2.5, + labelStyle: const TextStyle(fontWeight: FontWeight.w600, fontSize: 13), + tabs: const [ + Tab(icon: Icon(Icons.folder, size: 18), text: 'Student Folders'), + Tab(icon: Icon(Icons.description, size: 18), text: 'All Documents'), + ], + ), + ), + + // ── Filter Panel (Documents tab only) ── + if (_showFilters && _tabController.index == 1) + _buildFilterPanel(requirementsAsync, academicYearsAsync, isMobile), + + const Divider(height: 1), + + // ── Tab Body ── + Expanded( + child: TabBarView( + controller: _tabController, + children: [ + // Tab 0: Student Folders + _buildFoldersTab(foldersAsync, isMobile), + + // Tab 1: All Documents + Column( + children: [ + Expanded( + child: docState.when( + loading: () => const Center( + child: CircularProgressIndicator( + color: AppColors.primaryGreen)), + error: (e, _) => _buildErrorState(e.toString()), + data: (pageData) => pageData.documents.isEmpty + ? _buildEmptyState() + : _isGridView + ? _buildGridView(pageData.documents) + : _buildListView(pageData.documents), + ), + ), + // Pagination + docState.maybeWhen( + data: (p) => p.totalPages > 1 + ? _buildPagination(p.totalPages, query.page) + : const SizedBox.shrink(), + orElse: () => const SizedBox.shrink(), + ), + ], + ), + ], + ), + ), + ], + ), + ), + ); + } + + // ══════════════════════════════════════════════════════════════ + // TOP HEADER + // ══════════════════════════════════════════════════════════════ + Widget _buildTopHeader( + bool isMobile, bool isStudentFiltered, DocumentQueryParams query) { + return Container( + color: AppColors.surfaceWhite, + padding: EdgeInsets.symmetric( + horizontal: isMobile ? 12 : 20, vertical: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Title row + Row( + children: [ + const Icon(Icons.folder_open, + color: AppColors.primaryGreen, size: 26), + const SizedBox(width: 10), + Expanded( + child: Text( + isStudentFiltered + ? 'Student Documents' + : 'Document Manager', + style: TextStyle( + fontSize: isMobile ? 18 : 22, + fontWeight: FontWeight.bold, + color: AppColors.textPrimary, + ), + ), + ), + // Clear student filter badge + if (isStudentFiltered) + TextButton.icon( + onPressed: () { + ref + .read(documentQueryProvider.notifier) + .setStudentId(null); + }, + icon: const Icon(Icons.close, size: 16), + label: const Text('All Students', + style: TextStyle(fontSize: 12)), + style: TextButton.styleFrom( + foregroundColor: AppColors.primaryGreen), + ), + if (!isMobile) ...[ + const SizedBox(width: 8), + _buildPrintQueueButton(), + const SizedBox(width: 8), + SizedBox( + width: 130, + child: PrimaryButton( + label: 'UPLOAD', + onPressed: () => showDialog( + context: context, + builder: (_) => const UploadOcrModal()), + ), + ), + ], + ], + ), + + const SizedBox(height: 10), + + // Search + Controls row + Row( + children: [ + Expanded( + child: CustomTextField( + hintText: 'Search by name, LRN, file…', + prefixIcon: Icons.search, + controller: _searchController, + onChanged: _onSearchChanged, + ), + ), + const SizedBox(width: 8), + + // Filter toggle + _buildIconToggle( + icon: Icons.tune, + isActive: _showFilters, + tooltip: 'Toggle Filters', + onTap: () => setState(() => _showFilters = !_showFilters), + ), + const SizedBox(width: 6), + + // Grid/List toggle + _buildIconToggle( + icon: _isGridView ? Icons.view_list : Icons.grid_view, + isActive: false, + tooltip: _isGridView ? 'Switch to List' : 'Switch to Grid', + onTap: () => setState(() => _isGridView = !_isGridView), + ), + + if (isMobile) ...[ + const SizedBox(width: 6), + _buildPrintQueueButton(compact: true), + ], + ], + ), + + // Active filter chips + if (_hasActiveFilters()) + Padding( + padding: const EdgeInsets.only(top: 8), + child: _buildActiveFilterChips(), + ), + ], + ), + ); + } + + bool _hasActiveFilters() => + _selectedStatus != 'All Statuses' || + _selectedDocumentType != 'All Types' || + _selectedGradeLevel != 'All Grades' || + _selectedSchoolYear != 'All Years' || + _searchController.text.isNotEmpty; + + Widget _buildActiveFilterChips() { + final chips = []; + if (_selectedStatus != 'All Statuses') + chips.add(_filterChip('Status: $_selectedStatus')); + if (_selectedDocumentType != 'All Types') + chips.add(_filterChip('Type: $_selectedDocumentType')); + if (_selectedGradeLevel != 'All Grades') + chips.add(_filterChip('Grade: $_selectedGradeLevel')); + if (_selectedSchoolYear != 'All Years') + chips.add(_filterChip('Year: $_selectedSchoolYear')); + chips.add(TextButton( + onPressed: _clearFilters, + style: TextButton.styleFrom( + foregroundColor: AppColors.error, + padding: const EdgeInsets.symmetric(horizontal: 8)), + child: const Text('Clear All', style: TextStyle(fontSize: 12)), + )); + + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row(children: chips), + ); + } + + Widget _filterChip(String label) => Container( + margin: const EdgeInsets.only(right: 6), + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration( + color: AppColors.primaryGreen.withValues(alpha: 0.08), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: AppColors.primaryGreen.withValues(alpha: 0.3)), + ), + child: Text(label, + style: const TextStyle( + fontSize: 11, + color: AppColors.primaryGreen, + fontWeight: FontWeight.w500)), + ); + + Widget _buildIconToggle({ + required IconData icon, + required bool isActive, + required String tooltip, + required VoidCallback onTap, + }) { + return Tooltip( + message: tooltip, + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(8), + child: Container( + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: isActive + ? AppColors.primaryGreen.withValues(alpha: 0.1) + : AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: isActive + ? AppColors.primaryGreen + : Colors.grey.shade300, + ), + ), + child: Icon(icon, + size: 20, + color: isActive ? AppColors.primaryGreen : AppColors.textSecondary), + ), + ), + ); + } + + Widget _buildPrintQueueButton({bool compact = false}) { + return Tooltip( + message: 'Print Queue', + child: OutlinedButton.icon( + onPressed: () => showDialog( + context: context, builder: (_) => const PrintQueueModal()), + icon: const Icon(Icons.print, size: 18), + label: compact + ? const SizedBox.shrink() + : const Text('Print Queue'), + style: OutlinedButton.styleFrom( + foregroundColor: AppColors.textPrimary, + side: BorderSide(color: Colors.grey.shade300), + padding: compact + ? const EdgeInsets.all(10) + : const EdgeInsets.symmetric(horizontal: 14, vertical: 10), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8)), + ), + ), + ); + } + + // ══════════════════════════════════════════════════════════════ + // FILTER PANEL + // ══════════════════════════════════════════════════════════════ + Widget _buildFilterPanel( + AsyncValue> requirementsAsync, + AsyncValue> academicYearsAsync, + bool isMobile, + ) { + final docTypes = requirementsAsync.when( + data: (reqs) => + ['All Types', ...reqs.map((r) => r.name as String).toSet().toList()..sort()], + loading: () => ['All Types'], + error: (_, __) => ['All Types'], + ); + final years = academicYearsAsync.when( + data: (y) => ['All Years', ...y.map((ay) => ay.yearRange as String)], + loading: () => ['All Years'], + error: (_, __) => ['All Years'], + ); + + return Container( + color: Colors.grey.shade50, + padding: EdgeInsets.symmetric( + horizontal: isMobile ? 12 : 20, vertical: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Filters', + style: + TextStyle(fontWeight: FontWeight.w600, fontSize: 13, color: AppColors.textSecondary)), + const SizedBox(height: 10), + Wrap( + spacing: 10, + runSpacing: 10, + children: [ + _buildDropdown( + label: 'Status', + value: _selectedStatus, + items: const [ + 'All Statuses','Pending','Verified','Draft','Archived','Rejected' + ], + onChanged: (v) { + setState(() => _selectedStatus = v!); + _applyFilters(); + }, + ), + _buildDropdown( + label: 'Document Type', + value: _selectedDocumentType, + items: docTypes, + onChanged: (v) { + setState(() => _selectedDocumentType = v!); + _applyFilters(); + }, + ), + _buildDropdown( + label: 'Grade Level', + value: _selectedGradeLevel, + items: const [ + 'All Grades','7','8','9','10','11','12' + ], + onChanged: (v) { + setState(() => _selectedGradeLevel = v!); + _applyFilters(); + }, + ), + _buildDropdown( + label: 'School Year', + value: _selectedSchoolYear, + items: years, + onChanged: (v) { + setState(() => _selectedSchoolYear = v!); + _applyFilters(); + }, + ), + ], + ), + const SizedBox(height: 8), + Row(mainAxisAlignment: MainAxisAlignment.end, children: [ + TextButton( + onPressed: _clearFilters, + child: const Text('Clear All', + style: TextStyle(color: AppColors.error))), + const SizedBox(width: 8), + SizedBox( + width: 120, + child: PrimaryButton(label: 'Apply', onPressed: _applyFilters), + ), + ]), + ], + ), + ); + } + + Widget _buildDropdown({ + required String label, + required String value, + required List items, + required ValueChanged onChanged, + }) { + // Guard: if value is not in items, use first item + final safeValue = items.contains(value) ? value : items.first; + return Container( + constraints: const BoxConstraints(minWidth: 150), + padding: const EdgeInsets.symmetric(horizontal: 12), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.grey.shade300), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: safeValue, + hint: Text(label, style: const TextStyle(fontSize: 13)), + isExpanded: false, + isDense: true, + items: items + .map((i) => DropdownMenuItem( + value: i, + child: Text(i, style: const TextStyle(fontSize: 13)))) + .toList(), + onChanged: onChanged, + ), + ), + ); + } + + // ══════════════════════════════════════════════════════════════ + // FOLDERS TAB + // ══════════════════════════════════════════════════════════════ + Widget _buildFoldersTab(AsyncValue> foldersAsync, bool isMobile) { + return foldersAsync.when( + loading: () => const Center( + child: CircularProgressIndicator(color: AppColors.primaryGreen)), + error: (e, _) => _buildErrorState(e.toString()), + data: (folders) { + if (folders.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.folder_off_outlined, + size: 64, color: Colors.grey.shade300), + const SizedBox(height: 16), + const Text('No Student Folders', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColors.textSecondary)), + const SizedBox(height: 8), + const Text('Student folders are created automatically.', + style: TextStyle(color: AppColors.textMuted)), + ], + ), + ); + } + + return LayoutBuilder(builder: (ctx, c) { + int cols = (c.maxWidth / 200).floor().clamp(2, 6); + return GridView.builder( + padding: const EdgeInsets.all(16), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: cols, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 1.1, + ), + itemCount: folders.length, + itemBuilder: (ctx, i) { + final folder = folders[i]; + return InkWell( + onTap: () { + if (folder.studentId != null) { + _tabController.index = 1; + ref + .read(documentQueryProvider.notifier) + .setStudentId(folder.studentId); + } + }, + borderRadius: BorderRadius.circular(12), + child: Container( + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.grey.shade200), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.04), + blurRadius: 8, + offset: const Offset(0, 2), + ) + ], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.folder, + size: 48, color: Colors.orange), + const SizedBox(height: 12), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: Text( + folder.name, + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 13, + color: AppColors.textPrimary), + ), + ), + const SizedBox(height: 4), + Text( + '${folder.documentCount ?? 0} Documents', + style: const TextStyle( + fontSize: 11, color: AppColors.textSecondary), + ), + ], + ), + ), + ); + }, + ); + }); + }, + ); + } + + + // ══════════════════════════════════════════════════════════════ + // GRID VIEW + // ══════════════════════════════════════════════════════════════ + Widget _buildGridView(List documents) { + return LayoutBuilder(builder: (ctx, c) { + int cols = (c.maxWidth / 180).floor().clamp(2, 6); + return GridView.builder( + padding: const EdgeInsets.all(16), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: cols, + crossAxisSpacing: 12, + mainAxisSpacing: 12, + childAspectRatio: 1.0, + ), + itemCount: documents.length, + itemBuilder: (ctx, i) => FileFolderCard( + document: documents[i], + isGrid: true, + userRole: widget.userRole, + onTap: () {}, + onActionSelected: (a) => + _handleAction(a, documents[i].id, documents[i].studentId), + onViewProfile: (sid) => Navigator.of(context).push(MaterialPageRoute( + builder: (_) => + StudentDetailScreen(studentId: sid, userRole: widget.userRole), + )), + ), + ); + }); + } + + // ══════════════════════════════════════════════════════════════ + // LIST VIEW + // ══════════════════════════════════════════════════════════════ + Widget _buildListView(List documents) { + return Container( + margin: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(12), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.04), + blurRadius: 10, + offset: const Offset(0, 2)), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: Column( + children: [ + // Table header + Container( + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + color: AppColors.primaryGreen.withValues(alpha: 0.06), + child: const Row( + children: [ + SizedBox(width: 44), + Expanded( + flex: 3, + child: Text('File Name', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColors.textSecondary))), + Expanded( + flex: 2, + child: Text('Student', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColors.textSecondary))), + Expanded( + flex: 2, + child: Text('Doc Type', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColors.textSecondary))), + Expanded( + child: Text('Status', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + color: AppColors.textSecondary))), + SizedBox(width: 40), + ], + ), + ), + Expanded( + child: ListView.separated( + itemCount: documents.length, + separatorBuilder: (_, __) => + Divider(height: 1, color: Colors.grey.shade100), + itemBuilder: (ctx, i) => FileFolderCard( + document: documents[i], + isGrid: false, + userRole: widget.userRole, + onTap: () {}, + onActionSelected: (a) => + _handleAction(a, documents[i].id, documents[i].studentId), + onViewProfile: (sid) => + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => StudentDetailScreen( + studentId: sid, userRole: widget.userRole), + )), + ), + ), + ), + ], + ), + ), + ); + } + + // ══════════════════════════════════════════════════════════════ + // EMPTY / ERROR STATES + // ══════════════════════════════════════════════════════════════ + Widget _buildEmptyState() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.folder_off_outlined, size: 72, color: Colors.grey.shade300), + const SizedBox(height: 16), + const Text('No documents found', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + color: AppColors.textPrimary)), + const SizedBox(height: 8), + const Text('Upload a document or adjust your filters', + style: TextStyle(color: AppColors.textSecondary)), + if (_hasActiveFilters()) ...[ + const SizedBox(height: 16), + TextButton.icon( + onPressed: _clearFilters, + icon: const Icon(Icons.clear_all), + label: const Text('Clear Filters')), + ], + ], + ), + ); + } + + Widget _buildErrorState(String message) { + final clean = message.startsWith('Exception: ') + ? message.substring(11) + : message; + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.wifi_off_rounded, size: 56, color: AppColors.error), + const SizedBox(height: 16), + Text(clean, + textAlign: TextAlign.center, + style: const TextStyle(color: AppColors.error)), + const SizedBox(height: 16), + ElevatedButton.icon( + icon: const Icon(Icons.refresh), + label: const Text('Retry'), + onPressed: () => ref.invalidate(documentPageProvider), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white), + ), + ], + ), + ); + } + + // ══════════════════════════════════════════════════════════════ + // PAGINATION + // ══════════════════════════════════════════════════════════════ + Widget _buildPagination(int totalPages, int currentPage) { + return Container( + color: AppColors.surfaceWhite, + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + IconButton( + icon: const Icon(Icons.chevron_left), + onPressed: currentPage > 1 + ? () => ref + .read(documentQueryProvider.notifier) + .setPage(currentPage - 1) + : null, + ), + ...List.generate(totalPages, (i) => i + 1) + .where((p) => (p - currentPage).abs() <= 2) + .map((p) { + final isActive = p == currentPage; + return GestureDetector( + onTap: () => + ref.read(documentQueryProvider.notifier).setPage(p), + child: Container( + width: 32, + height: 32, + margin: const EdgeInsets.symmetric(horizontal: 2), + decoration: BoxDecoration( + color: isActive ? AppColors.primaryGreen : Colors.transparent, + borderRadius: BorderRadius.circular(6), + border: isActive + ? null + : Border.all(color: Colors.grey.shade300), + ), + child: Center( + child: Text('$p', + style: TextStyle( + fontSize: 13, + fontWeight: FontWeight.w600, + color: isActive + ? Colors.white + : AppColors.textSecondary)), + ), + ), + ); + }), + IconButton( + icon: const Icon(Icons.chevron_right), + onPressed: currentPage < totalPages + ? () => ref + .read(documentQueryProvider.notifier) + .setPage(currentPage + 1) + : null, + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/documents/widgets/file_folder_card.dart b/frontend/lib/ui/screens/documents/widgets/file_folder_card.dart new file mode 100644 index 0000000..b3dc07a --- /dev/null +++ b/frontend/lib/ui/screens/documents/widgets/file_folder_card.dart @@ -0,0 +1,287 @@ +import 'package:flutter/material.dart'; +import '../../../../core/constants/app_colors.dart'; +import '../../../../core/constants/app_sizes.dart'; +import '../../../../domain/entities/document_model.dart'; + +class FileFolderCard extends StatelessWidget { + final DocumentModel document; + final bool isGrid; + final String userRole; + final VoidCallback onTap; + final void Function(String)? onActionSelected; + final void Function(int studentId)? onViewProfile; + + const FileFolderCard({ + super.key, + required this.document, + required this.isGrid, + required this.userRole, + required this.onTap, + this.onActionSelected, + this.onViewProfile, + }); + + IconData get _fileIcon { + final name = document.fileName.toLowerCase(); + if (name.endsWith('.pdf')) return Icons.picture_as_pdf; + if (name.endsWith('.png') || + name.endsWith('.jpg') || + name.endsWith('.jpeg')) return Icons.image; + return Icons.insert_drive_file; + } + + Color get _fileColor { + final name = document.fileName.toLowerCase(); + if (name.endsWith('.pdf')) return Colors.redAccent; + if (name.endsWith('.png') || + name.endsWith('.jpg') || + name.endsWith('.jpeg')) return Colors.blueAccent; + return AppColors.primaryGreen; + } + + Color get _statusColor { + switch (document.status) { + case 'Verified': + return AppColors.success; + case 'Pending': + return Colors.orange; + case 'Draft': + return Colors.grey; + case 'Archived': + return Colors.blue; + case 'Rejected': + return AppColors.error; + default: + return Colors.grey; + } + } + + List> _buildMenuItems() { + final items = >[ + const PopupMenuItem( + value: 'preview', + child: ListTile( + dense: true, + leading: Icon(Icons.visibility, size: 18), + title: Text('Preview', style: TextStyle(fontSize: 14)))), + const PopupMenuItem( + value: 'queue', + child: ListTile( + dense: true, + leading: Icon(Icons.print, size: 18), + title: Text('Add to Print Queue', + style: TextStyle(fontSize: 14)))), + const PopupMenuItem( + value: 'download', + child: ListTile( + dense: true, + leading: Icon(Icons.download, size: 18), + title: Text('Download', style: TextStyle(fontSize: 14)))), + const PopupMenuDivider(), + const PopupMenuItem( + value: 'view_profile', + child: ListTile( + dense: true, + leading: + Icon(Icons.person, size: 18, color: AppColors.primaryGreen), + title: Text('View Student Profile', + style: TextStyle(fontSize: 14)))), + ]; + + if (userRole != 'teacher') { + items.add(const PopupMenuDivider()); + items.add(const PopupMenuItem( + value: 'delete', + child: ListTile( + dense: true, + leading: + Icon(Icons.delete_outline, size: 18, color: AppColors.error), + title: Text('Delete', + style: + TextStyle(fontSize: 14, color: AppColors.error))))); + } + return items; + } + + @override + Widget build(BuildContext context) { + if (isGrid) return _buildGridCard(); + return _buildListRow(); + } + + // ════════════════════════════════════════ + // GRID CARD + // ════════════════════════════════════════ + Widget _buildGridCard() { + return InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + child: Container( + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + border: Border.all(color: Colors.grey.shade200), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.03), + blurRadius: 6, + offset: const Offset(0, 2)), + ], + ), + child: Stack( + children: [ + Padding( + padding: const EdgeInsets.all(12), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: _fileColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon(_fileIcon, size: 40, color: _fileColor), + ), + const SizedBox(height: 10), + Text( + document.fileName, + maxLines: 2, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.center, + style: const TextStyle( + fontWeight: FontWeight.w600, + fontSize: 12, + color: AppColors.textPrimary), + ), + const SizedBox(height: 4), + Text( + document.studentName ?? document.studentLrn ?? 'Unknown', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 11, color: AppColors.textSecondary), + ), + const SizedBox(height: 6), + _buildStatusBadge(small: true), + ], + ), + ), + Positioned( + top: 2, + right: 2, + child: PopupMenuButton( + icon: const Icon(Icons.more_vert, + color: AppColors.textSecondary, size: 18), + onSelected: onActionSelected, + itemBuilder: (_) => _buildMenuItems(), + ), + ), + ], + ), + ), + ); + } + + // ════════════════════════════════════════ + // LIST ROW — matches the table header columns + // ════════════════════════════════════════ + Widget _buildListRow() { + return InkWell( + onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + child: Row( + children: [ + // File icon + Container( + width: 36, + height: 36, + decoration: BoxDecoration( + color: _fileColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon(_fileIcon, size: 18, color: _fileColor), + ), + const SizedBox(width: 8), + + // File name + Expanded( + flex: 3, + child: Text( + document.fileName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontWeight: FontWeight.w600, + fontSize: 13, + color: AppColors.textPrimary), + ), + ), + + // Student + Expanded( + flex: 2, + child: Text( + document.studentName ?? + (document.studentLrn != null + ? 'LRN: ${document.studentLrn}' + : '—'), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, color: AppColors.textSecondary), + ), + ), + + // Doc type + Expanded( + flex: 2, + child: Text( + document.documentType ?? '—', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, color: AppColors.textSecondary), + ), + ), + + // Status + Expanded(child: _buildStatusBadge()), + + // Actions + SizedBox( + width: 40, + child: PopupMenuButton( + icon: const Icon(Icons.more_vert, + size: 18, color: AppColors.textSecondary), + onSelected: onActionSelected, + itemBuilder: (_) => _buildMenuItems(), + ), + ), + ], + ), + ), + ); + } + + Widget _buildStatusBadge({bool small = false}) { + return Container( + padding: EdgeInsets.symmetric( + horizontal: small ? 6 : 8, vertical: small ? 2 : 3), + decoration: BoxDecoration( + color: _statusColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20), + border: + Border.all(color: _statusColor.withValues(alpha: 0.3)), + ), + child: Text( + document.status, + style: TextStyle( + fontSize: small ? 10 : 11, + color: _statusColor, + fontWeight: FontWeight.w600), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/documents/widgets/print_queue_modal.dart b/frontend/lib/ui/screens/documents/widgets/print_queue_modal.dart new file mode 100644 index 0000000..ede016f --- /dev/null +++ b/frontend/lib/ui/screens/documents/widgets/print_queue_modal.dart @@ -0,0 +1,317 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../../core/constants/app_colors.dart'; +import '../../../../core/constants/app_sizes.dart'; +import '../../../../domain/repositories/document_repository.dart' + show PrintQueueItem; +import '../../../shared/buttons/primary_button.dart'; +import '../../../providers/document_provider.dart'; + +class PrintQueueModal extends ConsumerStatefulWidget { + const PrintQueueModal({super.key}); + + @override + ConsumerState createState() => _PrintQueueModalState(); +} + +class _PrintQueueModalState extends ConsumerState { + bool _isPrinting = false; + + Future _handlePrintAll(List items) async { + if (items.isEmpty) return; + setState(() => _isPrinting = true); + + // Simulate sending batch to printer (replace with real print service when available) + await Future.delayed(const Duration(seconds: 2)); + + if (!mounted) return; + setState(() => _isPrinting = false); + Navigator.of(context).pop(); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Batch sent to printer successfully!'), + backgroundColor: AppColors.success, + ), + ); + } + + Future _removeItem(int queueId) async { + try { + await ref + .read(printQueueMutationProvider.notifier) + .removeFromQueue(queueId); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Failed to remove: $e'), + backgroundColor: AppColors.error, + )); + } + } + + Future _clearAll() async { + try { + await ref.read(printQueueMutationProvider.notifier).clearQueue(); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Failed to clear queue: $e'), + backgroundColor: AppColors.error, + )); + } + } + + @override + Widget build(BuildContext context) { + final queueAsync = ref.watch(printQueueProvider); + + return Dialog( + backgroundColor: AppColors.surfaceWhite, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 520, maxHeight: 620), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Header ── + Row( + children: [ + Container( + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: AppColors.primaryGreen.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon(Icons.print, + color: AppColors.primaryGreen, size: 22), + ), + const SizedBox(width: AppSizes.p12), + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Print Queue', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: AppColors.textPrimary)), + Text('Documents staged for batch printing', + style: TextStyle( + fontSize: 12, + color: AppColors.textSecondary)), + ], + ), + ), + IconButton( + icon: const Icon(Icons.close, + color: AppColors.textSecondary), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + const Divider(height: AppSizes.p32), + + // ── Queue Content ── + Expanded( + child: queueAsync.when( + loading: () => const Center( + child: CircularProgressIndicator( + color: AppColors.primaryGreen)), + error: (e, _) => _buildErrorState(e.toString()), + data: (items) => items.isEmpty + ? _buildEmptyState() + : _buildQueueList(items), + ), + ), + + // ── Footer ── + queueAsync.maybeWhen( + data: (items) => items.isNotEmpty + ? _buildFooter(items) + : const SizedBox.shrink(), + orElse: () => const SizedBox.shrink(), + ), + ], + ), + ), + ), + ); + } + + Widget _buildQueueList(List items) { + return ListView.separated( + itemCount: items.length, + separatorBuilder: (_, __) => + Divider(height: 1, color: Colors.grey.shade100), + itemBuilder: (ctx, i) { + final item = items[i]; + final isPdf = item.fileName.toLowerCase().endsWith('.pdf'); + return ListTile( + contentPadding: + const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + leading: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: (isPdf ? Colors.red : Colors.blue) + .withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + isPdf ? Icons.picture_as_pdf : Icons.image, + color: isPdf ? Colors.redAccent : Colors.blueAccent, + size: 20, + ), + ), + title: Text( + item.fileName, + style: const TextStyle( + fontWeight: FontWeight.w600, fontSize: 13), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (item.studentName != null) + Text(item.studentName!, + style: const TextStyle( + fontSize: 11, color: AppColors.textSecondary)), + if (item.documentType != null) + Text(item.documentType!, + style: const TextStyle( + fontSize: 11, color: AppColors.textMuted)), + ], + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + _buildStatusChip(item.status), + IconButton( + icon: const Icon(Icons.remove_circle_outline, + color: AppColors.error, size: 20), + tooltip: 'Remove from Queue', + onPressed: () => _removeItem(item.queueId), + ), + ], + ), + ); + }, + ); + } + + Widget _buildStatusChip(String status) { + Color color; + switch (status) { + case 'Verified': + color = AppColors.success; + break; + case 'Pending': + color = Colors.orange; + break; + default: + color = Colors.grey; + } + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), + decoration: BoxDecoration( + color: color.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: color.withValues(alpha: 0.3)), + ), + child: Text(status, + style: TextStyle( + fontSize: 10, color: color, fontWeight: FontWeight.w600)), + ); + } + + Widget _buildFooter(List items) { + return Column( + children: [ + const Divider(height: AppSizes.p32), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('${items.length} document${items.length > 1 ? 's' : ''}', + style: const TextStyle( + fontWeight: FontWeight.bold, + color: AppColors.textPrimary)), + const Text('Ready for batch print', + style: TextStyle( + color: AppColors.textSecondary, fontSize: 12)), + ], + ), + Row( + children: [ + TextButton( + onPressed: _isPrinting ? null : _clearAll, + child: const Text('CLEAR ALL', + style: TextStyle( + color: AppColors.textSecondary, + fontWeight: FontWeight.bold)), + ), + const SizedBox(width: AppSizes.p8), + SizedBox( + width: 130, + child: PrimaryButton( + label: 'PRINT ALL', + isLoading: _isPrinting, + onPressed: () => _handlePrintAll(items), + ), + ), + ], + ), + ], + ), + ], + ); + } + + Widget _buildEmptyState() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.print_disabled, size: 64, color: Colors.grey.shade300), + const SizedBox(height: AppSizes.p16), + const Text('Queue is empty', + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p8), + const Text( + 'Open a document\'s menu and select\n"Add to Print Queue" to batch print.', + textAlign: TextAlign.center, + style: TextStyle(color: AppColors.textMuted, fontSize: 13), + ), + ], + ), + ); + } + + Widget _buildErrorState(String message) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.error_outline, size: 48, color: AppColors.error), + const SizedBox(height: 12), + const Text('Failed to load print queue', + style: TextStyle(color: AppColors.error)), + const SizedBox(height: 8), + TextButton( + onPressed: () => ref.invalidate(printQueueProvider), + child: const Text('Retry'), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/documents/widgets/requirements_settings_modal.dart b/frontend/lib/ui/screens/documents/widgets/requirements_settings_modal.dart new file mode 100644 index 0000000..e3936f8 --- /dev/null +++ b/frontend/lib/ui/screens/documents/widgets/requirements_settings_modal.dart @@ -0,0 +1,177 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../../core/constants/app_colors.dart'; +import '../../../../core/constants/app_sizes.dart'; +import '../../../providers/document_provider.dart'; +import '../../../shared/buttons/primary_button.dart'; +import '../../../../domain/entities/document_requirement_model.dart'; + +class RequirementsSettingsModal extends ConsumerStatefulWidget { + const RequirementsSettingsModal({super.key}); + + @override + ConsumerState createState() => _RequirementsSettingsModalState(); +} + +class _RequirementsSettingsModalState extends ConsumerState { + @override + Widget build(BuildContext context) { + final settingsAsync = ref.watch(documentRequirementsSettingsProvider); + + return Dialog( + backgroundColor: AppColors.surfaceWhite, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 800, maxHeight: 700), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Row( + children: [ + Icon(Icons.settings, color: AppColors.primaryGreen, size: 28), + SizedBox(width: AppSizes.p12), + Text( + 'Document Requirements Settings', + style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold, color: AppColors.textPrimary), + ), + ], + ), + IconButton( + icon: const Icon(Icons.close, color: AppColors.textSecondary), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + const Divider(height: AppSizes.p32), + + // Content + Expanded( + child: settingsAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (e, _) => Center(child: Text('Error: $e', style: const TextStyle(color: AppColors.error))), + data: (settings) => SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildCategorySection('Junior High School (JHS)', settings.jhs), + const SizedBox(height: AppSizes.p24), + _buildCategorySection('Senior High School (SHS)', settings.shs), + ], + ), + ), + ), + ), + + // Footer + const Divider(height: AppSizes.p32), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + OutlinedButton.icon( + onPressed: _addNewRequirement, + icon: const Icon(Icons.add), + label: const Text('Add New Requirement'), + ), + PrimaryButton( + label: 'DONE', + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + ], + ), + ), + ), + ); + } + + Widget _buildCategorySection(String title, List requirements) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: AppSizes.p16), + if (requirements.isEmpty) + const Text('No requirements configured.', style: TextStyle(color: AppColors.textSecondary)) + else + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: requirements.length, + itemBuilder: (context, index) { + final req = requirements[index]; + return Card( + margin: const EdgeInsets.only(bottom: AppSizes.p8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusMedium)), + child: ListTile( + title: Text(req.name, style: const TextStyle(fontWeight: FontWeight.w600)), + subtitle: Text( + '${req.description ?? "No description"} | Mandatory: ${req.isMandatory ? "Yes" : "No"}', + style: const TextStyle(fontSize: 12), + ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Switch( + value: req.isEnabled ?? true, + activeColor: AppColors.primaryGreen, + onChanged: (val) { + _toggleRequirement(req, val); + }, + ), + IconButton( + icon: const Icon(Icons.delete, color: AppColors.error), + onPressed: () => _deleteRequirement(req.id), + ), + ], + ), + ), + ); + }, + ), + ], + ); + } + + void _addNewRequirement() { + // Show dialog to add a new requirement + ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Add requirement form coming soon'))); + } + + void _toggleRequirement(DocumentRequirementModel req, bool isEnabled) async { + try { + final updatedReq = DocumentRequirementModel( + id: req.id, + name: req.name, + description: req.description, + category: req.category, + isMandatory: req.isMandatory, + isEnabled: isEnabled, + dueDate: req.dueDate, + acceptedFileTypes: req.acceptedFileTypes, + schoolLevels: req.schoolLevels, + ); + await ref.read(documentRequirementsMutationProvider.notifier).updateRequirement(updatedReq); + ref.invalidate(documentRequirementsSettingsProvider); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Error: $e'))); + } + } + + void _deleteRequirement(int id) async { + try { + await ref.read(documentRequirementsMutationProvider.notifier).deleteRequirement(id); + ref.invalidate(documentRequirementsSettingsProvider); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Error: $e'))); + } + } +} diff --git a/frontend/lib/ui/screens/documents/widgets/upload_ocr_modal.dart b/frontend/lib/ui/screens/documents/widgets/upload_ocr_modal.dart new file mode 100644 index 0000000..d2cb346 --- /dev/null +++ b/frontend/lib/ui/screens/documents/widgets/upload_ocr_modal.dart @@ -0,0 +1,393 @@ +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import '../../../../core/constants/app_colors.dart'; +import '../../../../core/constants/app_sizes.dart'; +import '../../../../core/network/api_constants.dart'; +import '../../../shared/inputs/custom_text_field.dart'; +import '../../../shared/buttons/primary_button.dart'; +import '../../../providers/document_provider.dart'; + +class UploadOcrModal extends ConsumerStatefulWidget { + const UploadOcrModal({super.key}); + + @override + ConsumerState createState() => _UploadOcrModalState(); +} + +class _UploadOcrModalState extends ConsumerState { + int _currentStep = 0; + + File? _selectedFile; + String? _fileName; + String? _fileSize; + + final TextEditingController _lrnController = TextEditingController(); + final TextEditingController _remarksController = TextEditingController(); + + String? _selectedDocumentType; + int? _selectedRequirementId; + int? _matchedStudentId; + + bool _isSubmitting = false; + bool _isValidating = false; + String? _errorMessage; + + @override + void dispose() { + _lrnController.dispose(); + _remarksController.dispose(); + super.dispose(); + } + + void _pickFile() async { + FilePickerResult? result = await FilePicker.pickFiles( + type: FileType.custom, + allowedExtensions: ['pdf', 'jpg', 'png', 'jpeg'], + ); + + if (result != null) { + final file = File(result.files.single.path!); + final size = (file.lengthSync() / (1024 * 1024)).toStringAsFixed(2); + + setState(() { + _selectedFile = file; + _fileName = result.files.single.name; + _fileSize = '$size MB'; + _currentStep = 1; + }); + + _processOCR(); + } + } + + void _processOCR() async { + // Simulate OCR delay + await Future.delayed(const Duration(milliseconds: 1500)); + if (!mounted) return; + setState(() { + _currentStep = 2; + }); + } + + Future _validateAndUpload() async { + setState(() { + _errorMessage = null; + }); + + final lrn = _lrnController.text.trim(); + if (lrn.isEmpty || lrn.length != 12) { + setState(() => _errorMessage = 'Valid 12-digit LRN is required.'); + return; + } + if (_selectedDocumentType == null) { + setState(() => _errorMessage = 'Please select a Document Type.'); + return; + } + if (_selectedFile == null) { + setState(() => _errorMessage = 'No file selected.'); + return; + } + + setState(() => _isSubmitting = true); + + try { + final storage = const FlutterSecureStorage(); + final token = await storage.read(key: 'jwt_token'); + final dio = Dio(BaseOptions(baseUrl: ApiConstants.baseUrl, headers: {'Authorization': 'Bearer $token'})); + + // 1. Validate LRN and get Student ID + final studentsRes = await dio.get('/students', queryParameters: {'search': lrn}); + final students = studentsRes.data['students'] as List; + if (students.isEmpty) { + setState(() { + _errorMessage = 'Student with LRN $lrn not found.'; + _isSubmitting = false; + }); + return; + } + final studentId = students[0]['id']; + + // 2. Upload Document + final formData = FormData.fromMap({ + 'studentId': studentId, + 'documentType': _selectedDocumentType, + 'requirementId': _selectedRequirementId, + 'remarks': _remarksController.text.trim(), + 'document': await MultipartFile.fromFile(_selectedFile!.path, filename: _fileName), + }); + + await dio.post('/documents/upload', data: formData); + + if (!mounted) return; + ref.invalidate(documentPageProvider); // Refresh list + Navigator.of(context).pop(); + + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Document uploaded successfully.'), + backgroundColor: AppColors.success, + ), + ); + + } on DioException catch (e) { + setState(() { + _errorMessage = e.response?.data?['message'] ?? 'Failed to upload document.'; + _isSubmitting = false; + }); + } catch (e) { + setState(() { + _errorMessage = 'An unexpected error occurred.'; + _isSubmitting = false; + }); + } + } + + @override + Widget build(BuildContext context) { + return Dialog( + backgroundColor: AppColors.surfaceWhite, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 600, minHeight: 400), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Upload & Scan Document', + style: TextStyle(fontSize: 22, fontWeight: FontWeight.bold, color: AppColors.primaryGreen), + ), + IconButton( + icon: const Icon(Icons.close, color: AppColors.textSecondary), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + const Divider(height: 32), + + if (_errorMessage != null) + Container( + padding: const EdgeInsets.all(AppSizes.p12), + margin: const EdgeInsets.only(bottom: AppSizes.p16), + color: AppColors.error.withOpacity(0.1), + child: Row( + children: [ + const Icon(Icons.error_outline, color: AppColors.error), + const SizedBox(width: AppSizes.p8), + Expanded(child: Text(_errorMessage!, style: const TextStyle(color: AppColors.error))), + ], + ), + ), + + Expanded( + flex: _currentStep == 2 ? 1 : 0, + child: AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + child: _buildCurrentStep(), + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildCurrentStep() { + switch (_currentStep) { + case 0: return _buildStep0Upload(); + case 1: return _buildStep1Processing(); + case 2: return _buildStep2Review(); + default: return const SizedBox.shrink(); + } + } + + Widget _buildStep0Upload() { + return InkWell( + onTap: _pickFile, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + child: Container( + width: double.infinity, + height: 250, + decoration: BoxDecoration( + color: AppColors.primaryGreen.withOpacity(0.05), + border: Border.all(color: AppColors.primaryGreen.withOpacity(0.3), width: 2), + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.primaryGreen.withOpacity(0.1), + shape: BoxShape.circle, + ), + child: const Icon(Icons.cloud_upload_outlined, size: 64, color: AppColors.primaryGreen), + ), + const SizedBox(height: AppSizes.p16), + const Text( + 'Click to browse or drag file here', + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: AppColors.textPrimary), + ), + const SizedBox(height: AppSizes.p8), + const Text( + 'Supports PDF, JPG, PNG (Max 10MB)', + style: TextStyle(color: AppColors.textSecondary), + ), + const SizedBox(height: AppSizes.p24), + ElevatedButton( + onPressed: _pickFile, + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + elevation: 0, + ), + child: const Text('Select Document'), + ), + ], + ), + ), + ); + } + + Widget _buildStep1Processing() { + return SizedBox( + width: double.infinity, + height: 250, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CircularProgressIndicator(color: AppColors.primaryGreen), + const SizedBox(height: AppSizes.p24), + const Text( + 'Running OCR Engine...', + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), + ), + const SizedBox(height: AppSizes.p8), + Text( + 'Analyzing $_fileName', + style: const TextStyle(color: AppColors.textSecondary), + ), + ], + ), + ); + } + + Widget _buildStep2Review() { + final requirementsAsync = ref.watch(documentRequirementsProvider); + + return SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(AppSizes.p12), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.1), + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.blue.shade200), + ), + child: Row( + children: [ + const Icon(Icons.info_outline, color: Colors.blue), + const SizedBox(width: AppSizes.p12), + Expanded( + child: Text( + 'File: $_fileName ($_fileSize). Please select the document type and enter the student LRN.', + style: const TextStyle(color: Color(0xFF0D47A1), fontSize: 13), + ), + ), + ], + ), + ), + const SizedBox(height: AppSizes.p24), + + CustomTextField( + hintText: 'Student LRN (12 Digits)', + prefixIcon: Icons.pin_outlined, + controller: _lrnController, + ), + const SizedBox(height: AppSizes.p16), + + requirementsAsync.when( + data: (requirements) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade300), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: _selectedDocumentType, + hint: const Text('Select Document Type'), + isExpanded: true, + items: requirements.map((req) { + return DropdownMenuItem( + value: req.name, + child: Text('${req.name} (${req.category})'), + ); + }).toList(), + onChanged: (val) { + setState(() { + _selectedDocumentType = val; + final reqMatch = requirements.firstWhere((r) => r.name == val); + _selectedRequirementId = reqMatch.id; + }); + }, + ), + ), + ); + }, + loading: () => const CircularProgressIndicator(), + error: (e, st) => Text('Failed to load types: $e', style: const TextStyle(color: AppColors.error)), + ), + + const SizedBox(height: AppSizes.p16), + CustomTextField( + hintText: 'Remarks (Optional)', + prefixIcon: Icons.comment_outlined, + controller: _remarksController, + ), + + const SizedBox(height: AppSizes.p32), + + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + setState(() { + _currentStep = 0; + _selectedFile = null; + }); + }, + child: const Text('RE-UPLOAD', style: TextStyle(color: AppColors.textSecondary, fontWeight: FontWeight.bold)), + ), + const SizedBox(width: AppSizes.p16), + SizedBox( + width: 200, + child: PrimaryButton( + label: 'UPLOAD DOCUMENT', + isLoading: _isSubmitting, + onPressed: _validateAndUpload, + ), + ), + ], + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/login/login_screen.dart b/frontend/lib/ui/screens/login/login_screen.dart new file mode 100644 index 0000000..a126969 --- /dev/null +++ b/frontend/lib/ui/screens/login/login_screen.dart @@ -0,0 +1,366 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../layouts/windows_sidebar_layout.dart'; +import '../../layouts/android_bottom_nav_layout.dart'; +import '../../providers/auth_provider.dart'; + +class LoginScreen extends ConsumerStatefulWidget { + const LoginScreen({super.key}); + + @override + ConsumerState createState() => _LoginScreenState(); +} + +class _LoginScreenState extends ConsumerState { + final TextEditingController _usernameController = TextEditingController(); + final TextEditingController _passwordController = TextEditingController(); + bool _obscurePassword = true; + bool _rememberMe = false; + + @override + void dispose() { + _usernameController.dispose(); + _passwordController.dispose(); + super.dispose(); + } + + void _handleLogin() async { + if (_usernameController.text.trim().isEmpty || _passwordController.text.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Please enter both username and password.')), + ); + return; + } + + FocusScope.of(context).unfocus(); + + final success = await ref.read(authProvider.notifier).login( + _usernameController.text.trim(), + _passwordController.text, + rememberMe: _rememberMe, + ); + + if (!mounted) return; + + if (success) { + final user = ref.read(authProvider).value; + final isDesktop = MediaQuery.of(context).size.width >= 800; + Navigator.of(context).pushReplacement( + MaterialPageRoute( + builder: (_) => isDesktop + ? WindowsSidebarLayout(userRole: user!.role) + : AndroidBottomNavLayout(userRole: user!.role), + ), + ); + } else { + final error = ref.read(authProvider).error.toString(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(error.replaceAll('Exception: ', '')), + backgroundColor: AppColors.error, + ), + ); + } + } + + void _showForgotPasswordDialog() { + showDialog( + context: context, + builder: (ctx) => _ForgotPasswordDialog( + onSuccess: (msg) { + Navigator.pop(ctx); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(msg), backgroundColor: AppColors.success), + ); + }, + ), + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.pageBackground, + body: LayoutBuilder( + builder: (context, constraints) { + if (constraints.maxWidth >= 800) { + // Desktop: Split Layout + return Row( + children: [ + Expanded( + flex: 5, + child: Container( + color: AppColors.primaryGreen, + padding: const EdgeInsets.all(AppSizes.p48), + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset('assets/images/logo.png', width: 220, height: 220), + const SizedBox(height: AppSizes.p24), + const Text('TIS RMS', style: TextStyle(fontSize: 42, fontWeight: FontWeight.bold, color: Colors.white, letterSpacing: 2.0)), + const Text('Tiaong, Quezon', style: TextStyle(fontSize: 18, color: Colors.white70, letterSpacing: 1.0)), + const SizedBox(height: AppSizes.p32), + const Text('Record Management System', style: TextStyle(fontSize: 20, color: Colors.white, fontWeight: FontWeight.w600)), + const SizedBox(height: AppSizes.p8), + const Text('Secure Academic Records Database System', textAlign: TextAlign.center, style: TextStyle(fontSize: 15, color: Colors.white70)), + ], + ), + ), + ), + ), + Expanded( + flex: 4, + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 400), + child: _buildLoginForm(), + ), + ), + ), + ], + ); + } else { + // Mobile: Stacked Layout + return Center( + child: SingleChildScrollView( + padding: const EdgeInsets.all(AppSizes.p24), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 400), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset('assets/images/logo.png', width: 120, height: 120), + const SizedBox(height: AppSizes.p24), + const Text('Welcome Back', style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.primaryGreen)), + const SizedBox(height: AppSizes.p8), + const Text('Login to your account', style: TextStyle(fontSize: 16, color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p48), + _buildLoginForm(), + ], + ), + ), + ), + ); + } + }, + ), + ); + } + + Widget _buildLoginForm() { + final authState = ref.watch(authProvider); + final isLoading = authState.isLoading; + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + CustomTextField( + hintText: 'Username', + prefixIcon: Icons.person_outline, + controller: _usernameController, + ), + const SizedBox(height: AppSizes.p16), + CustomTextField( + hintText: 'Password', + prefixIcon: Icons.lock_outline, + controller: _passwordController, + isPassword: true, + obscureText: _obscurePassword, + onToggleVisibility: () => setState(() => _obscurePassword = !_obscurePassword), + ), + const SizedBox(height: AppSizes.p8), + + // Remember Me + Forgot Password row + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Checkbox( + value: _rememberMe, + activeColor: AppColors.primaryGreen, + onChanged: (val) => setState(() => _rememberMe = val ?? false), + ), + const Text('Remember Me', style: TextStyle(fontSize: 13, color: AppColors.textSecondary)), + ], + ), + TextButton( + onPressed: _showForgotPasswordDialog, + child: const Text('Forgot Password?', style: TextStyle(color: AppColors.primaryGreen, fontWeight: FontWeight.w600)), + ), + ], + ), + + const SizedBox(height: AppSizes.p16), + PrimaryButton( + label: 'LOGIN', + isLoading: isLoading, + onPressed: _handleLogin, + ), + ], + ); + } +} + +// ================================================================ +// FORGOT PASSWORD DIALOG +// ================================================================ +class _ForgotPasswordDialog extends ConsumerStatefulWidget { + final void Function(String message) onSuccess; + const _ForgotPasswordDialog({required this.onSuccess}); + + @override + ConsumerState<_ForgotPasswordDialog> createState() => _ForgotPasswordDialogState(); +} + +class _ForgotPasswordDialogState extends ConsumerState<_ForgotPasswordDialog> { + final _usernameCtrl = TextEditingController(); + final _newPassCtrl = TextEditingController(); + final _confirmPassCtrl = TextEditingController(); + bool _obscureNew = true; + bool _obscureConfirm = true; + bool _isLoading = false; + String? _error; + + @override + void dispose() { + _usernameCtrl.dispose(); + _newPassCtrl.dispose(); + _confirmPassCtrl.dispose(); + super.dispose(); + } + + Future _handleSubmit() async { + final username = _usernameCtrl.text.trim(); + final newPass = _newPassCtrl.text; + final confirmPass = _confirmPassCtrl.text; + + if (username.isEmpty || newPass.isEmpty || confirmPass.isEmpty) { + setState(() => _error = 'All fields are required.'); + return; + } + if (newPass != confirmPass) { + setState(() => _error = 'Passwords do not match.'); + return; + } + if (newPass.length < 6) { + setState(() => _error = 'Password must be at least 6 characters.'); + return; + } + + setState(() { _isLoading = true; _error = null; }); + + try { + final repo = ref.read(authRepositoryProvider); + await repo.requestPasswordReset( + username: username, + newPassword: newPass, + confirmPassword: confirmPass, + ); + if (mounted) { + widget.onSuccess('Reset request submitted. Awaiting Super Admin approval.'); + } + } catch (e) { + if (mounted) { + setState(() => _error = e.toString().replaceAll('Exception: ', '')); + } + } finally { + if (mounted) setState(() => _isLoading = false); + } + } + + @override + Widget build(BuildContext context) { + return Dialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 420), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.lock_reset, color: AppColors.primaryGreen), + const SizedBox(width: 10), + const Expanded( + child: Text('Forgot Password', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)), + ), + IconButton(icon: const Icon(Icons.close), onPressed: () => Navigator.pop(context)), + ], + ), + const SizedBox(height: 8), + const Text( + 'Admin and Teacher accounts only. Your request will be reviewed by the Super Admin.', + style: TextStyle(fontSize: 13, color: AppColors.textSecondary), + ), + const Divider(height: 28), + + CustomTextField(hintText: 'Your Username', prefixIcon: Icons.person_outline, controller: _usernameCtrl), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'New Password', + prefixIcon: Icons.lock_outline, + controller: _newPassCtrl, + isPassword: true, + obscureText: _obscureNew, + onToggleVisibility: () => setState(() => _obscureNew = !_obscureNew), + ), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'Confirm New Password', + prefixIcon: Icons.lock_outline, + controller: _confirmPassCtrl, + isPassword: true, + obscureText: _obscureConfirm, + onToggleVisibility: () => setState(() => _obscureConfirm = !_obscureConfirm), + ), + + if (_error != null) ...[ + const SizedBox(height: 12), + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration( + color: Colors.red.shade50, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.red.shade200), + ), + child: Row(children: [ + Icon(Icons.error_outline, color: Colors.red.shade600, size: 16), + const SizedBox(width: 8), + Expanded(child: Text(_error!, style: TextStyle(color: Colors.red.shade700, fontSize: 13))), + ]), + ), + ], + + const SizedBox(height: AppSizes.p24), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton(onPressed: () => Navigator.pop(context), child: const Text('CANCEL')), + const SizedBox(width: 12), + SizedBox( + width: 140, + child: PrimaryButton( + label: 'SUBMIT REQUEST', + isLoading: _isLoading, + onPressed: _handleSubmit, + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/reports/reports_screen.dart b/frontend/lib/ui/screens/reports/reports_screen.dart new file mode 100644 index 0000000..6be771f --- /dev/null +++ b/frontend/lib/ui/screens/reports/reports_screen.dart @@ -0,0 +1,589 @@ +import 'dart:io'; +import 'package:excel/excel.dart' hide Border; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../../domain/entities/report_models.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../shared/cards/stat_card.dart'; +import '../../providers/reports_provider.dart'; + +class ReportsScreen extends ConsumerStatefulWidget { + final String userRole; + const ReportsScreen({super.key, required this.userRole}); + + @override + ConsumerState createState() => _ReportsScreenState(); +} + +class _ReportsScreenState extends ConsumerState { + bool _isExporting = false; + + // ── Excel Export ───────────────────────────────────────────────────────────── + Future _handleExportExcel() async { + setState(() => _isExporting = true); + try { + final yearId = ref.read(selectedAcademicYearIdProvider); + final data = await ref.read(reportRepositoryProvider).getExportData(academicYearId: yearId); + + final years = ref.read(academicYearsProvider).asData?.value ?? []; + final yearLabel = yearId != null + ? years.firstWhere((y) => y.id == yearId, orElse: () => AcademicYear(id: 0, yearRange: 'Selected', status: '')).yearRange + : 'All Years'; + + final bytes = _buildExcel(data, yearLabel); + final defaultFileName = 'TIS_RMS_Report_${yearLabel.replaceAll('-', '_')}_${DateTime.now().millisecondsSinceEpoch}.xlsx'; + + String? savePath; + + if (Platform.isAndroid) { + // Request permissions + var storageStatus = await Permission.storage.status; + var manageStatus = await Permission.manageExternalStorage.status; + + if (!storageStatus.isGranted && !manageStatus.isGranted) { + await [Permission.storage, Permission.manageExternalStorage].request(); + storageStatus = await Permission.storage.status; + manageStatus = await Permission.manageExternalStorage.status; + } + + if (!storageStatus.isGranted && !manageStatus.isGranted) { + if (!mounted) return; + final retry = await _showPermissionDeniedDialog(); + if (retry == true) { + await openAppSettings(); + // Ask user to confirm after returning from settings + if (!mounted) return; + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Text('Confirm Permission'), + content: const Text('Did you grant the storage permission in settings?'), + actions: [ + TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('No')), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: AppColors.primaryGreen, foregroundColor: Colors.white), + onPressed: () => Navigator.pop(ctx, true), + child: const Text('Yes') + ), + ], + ), + ); + + if (confirmed == true) { + storageStatus = await Permission.storage.status; + manageStatus = await Permission.manageExternalStorage.status; + if (!storageStatus.isGranted && !manageStatus.isGranted) { + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Storage permission is still denied. Cannot export.'), + backgroundColor: Colors.red, + )); + setState(() => _isExporting = false); + } + return; + } + } else { + setState(() => _isExporting = false); + return; + } + } else { + setState(() => _isExporting = false); + return; + } + } + + final selectedDirectory = await FilePicker.getDirectoryPath( + dialogTitle: 'Select folder to save report', + ); + + if (selectedDirectory == null) { + setState(() => _isExporting = false); + return; + } + savePath = '$selectedDirectory/$defaultFileName'; + } else if (Platform.isWindows) { + savePath = await FilePicker.saveFile( + dialogTitle: 'Save Report As...', + fileName: defaultFileName, + type: FileType.custom, + allowedExtensions: ['xlsx'], + ); + + if (savePath == null) { + setState(() => _isExporting = false); + return; + } + } else { + final dir = await getApplicationDocumentsDirectory(); + savePath = '${dir.path}/$defaultFileName'; + } + + final file = File(savePath); + await file.writeAsBytes(bytes); + + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('✅ Saved successfully: ${file.path}'), + backgroundColor: AppColors.success, + duration: const Duration(seconds: 5), + )); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Export failed: $e'), + backgroundColor: Colors.red, + duration: const Duration(seconds: 5), + )); + } finally { + if (mounted) setState(() => _isExporting = false); + } + } + + Future _showPermissionDeniedDialog() { + return showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Permission Denied'), + content: const Text('Storage permission is required to save the exported Excel file. Would you like to open app settings to grant the permission?'), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(false), + child: const Text('Cancel'), + ), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: AppColors.primaryGreen, foregroundColor: Colors.white), + onPressed: () => Navigator.of(context).pop(true), + child: const Text('Open Settings'), + ), + ], + ), + ); + } + + + List _buildExcel(ReportExportData data, String yearLabel) { + final excel = Excel.createExcel(); + excel.delete('Sheet1'); // Remove default sheet + + // ── Sheet 1: Summary ──────────────────────────────────────────────────── + final summary = excel['Summary']; + _excelTitle(summary, 'A1', 'TIAONG INTEGRATED SCHOOL — TIS RMS', 7); + _excelTitle(summary, 'A2', 'Annual Report: $yearLabel', 7); + _excelTitle(summary, 'A3', 'Generated: ${DateTime.now().toString().substring(0, 19)}', 7); + + summary.cell(CellIndex.indexByString('A5')).value = TextCellValue('KEY METRICS'); + _boldCell(summary, 'A5'); + _header(summary, 'A6', 'Metric'); _header(summary, 'B6', 'Value'); + final stats = [ + ['Total Students Enrolled', data.students.length.toString()], + ['Verified Documents', data.documentStatus.verified.toString()], + ['Pending Documents', data.documentStatus.pending.toString()], + ['Archived Documents', data.documentStatus.archived.toString()], + ]; + for (int i = 0; i < stats.length; i++) { + summary.cell(CellIndex.indexByString('A${7 + i}')).value = TextCellValue(stats[i][0]); + summary.cell(CellIndex.indexByString('B${7 + i}')).value = TextCellValue(stats[i][1]); + } + + summary.cell(CellIndex.indexByString('A13')).value = TextCellValue('ENROLLMENT BY GRADE LEVEL'); + _boldCell(summary, 'A13'); + _header(summary, 'A14', 'Grade Level'); _header(summary, 'B14', 'Total Students'); + for (int i = 0; i < data.enrollmentByGrade.length; i++) { + final row = data.enrollmentByGrade[i]; + summary.cell(CellIndex.indexByString('A${15 + i}')).value = TextCellValue('Grade ${row.gradeLevel}'); + summary.cell(CellIndex.indexByString('B${15 + i}')).value = IntCellValue(row.totalStudents); + } + + summary.setColumnWidth(0, 32); + summary.setColumnWidth(1, 20); + + // ── Sheet 2: Student List ──────────────────────────────────────────────── + final students = excel['Student List']; + _excelTitle(students, 'A1', 'STUDENT DOCUMENT COMPLIANCE REPORT — $yearLabel', 7); + final headers = ['#', 'LRN', 'Last Name', 'First Name', 'Sex', 'Grade Level', 'Verified Docs', 'Pending Docs', 'Status']; + for (int c = 0; c < headers.length; c++) { + final cell = students.cell(CellIndex.indexByColumnRow(columnIndex: c, rowIndex: 2)); + cell.value = TextCellValue(headers[c]); + cell.cellStyle = CellStyle(bold: true, backgroundColorHex: ExcelColor.fromHexString('#1C8248'), fontColorHex: ExcelColor.fromHexString('#FFFFFF')); + } + for (int r = 0; r < data.students.length; r++) { + final s = data.students[r]; + final row = [ + (r + 1).toString(), + s.lrn, + s.lastName, + s.firstName, + s.sex, + s.gradeLevel != null ? 'Grade ${s.gradeLevel}' : 'N/A', + s.verifiedDocs.toString(), + s.pendingDocs.toString(), + s.pendingDocs == 0 ? 'Complete' : 'Incomplete', + ]; + for (int c = 0; c < row.length; c++) { + final cell = students.cell(CellIndex.indexByColumnRow(columnIndex: c, rowIndex: r + 3)); + cell.value = TextCellValue(row[c]); + if (row[c] == 'Incomplete') { + cell.cellStyle = CellStyle(fontColorHex: ExcelColor.fromHexString('#C62828')); + } else if (row[c] == 'Complete') { + cell.cellStyle = CellStyle(fontColorHex: ExcelColor.fromHexString('#1C8248')); + } + } + } + students.setColumnWidth(0, 6); students.setColumnWidth(1, 18); + students.setColumnWidth(2, 20); students.setColumnWidth(3, 20); + students.setColumnWidth(4, 8); students.setColumnWidth(5, 14); + students.setColumnWidth(6, 15); students.setColumnWidth(7, 15); + students.setColumnWidth(8, 12); + + return excel.encode()!; + } + + void _excelTitle(Sheet sheet, String addr, String text, int span) { + final cell = sheet.cell(CellIndex.indexByString(addr)); + cell.value = TextCellValue(text); + cell.cellStyle = CellStyle(bold: true, fontSize: 14, fontColorHex: ExcelColor.fromHexString('#1C8248')); + } + + void _boldCell(Sheet sheet, String addr) { + sheet.cell(CellIndex.indexByString(addr)).cellStyle = CellStyle(bold: true, fontSize: 11); + } + + void _header(Sheet sheet, String addr, String text) { + final cell = sheet.cell(CellIndex.indexByString(addr)); + cell.value = TextCellValue(text); + cell.cellStyle = CellStyle(bold: true, backgroundColorHex: ExcelColor.fromHexString('#E8F5E9')); + } + + // ── Build ───────────────────────────────────────────────────────────────── + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: RefreshIndicator( + onRefresh: () async { + ref.invalidate(reportStatsProvider); + ref.invalidate(enrollmentByGradeProvider); + ref.invalidate(documentStatusProvider); + }, + child: SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(context), + const SizedBox(height: AppSizes.p24), + _buildMetricsGrid(), + const SizedBox(height: AppSizes.p24), + LayoutBuilder(builder: (ctx, constraints) { + if (constraints.maxWidth > 800) { + return Row(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Expanded(flex: 3, child: _buildEnrollmentChart()), + const SizedBox(width: AppSizes.p24), + Expanded(flex: 2, child: _buildDocumentStatusCard()), + ]); + } + return Column(children: [ + _buildEnrollmentChart(), + const SizedBox(height: AppSizes.p24), + _buildDocumentStatusCard(), + ]); + }), + const SizedBox(height: AppSizes.p48), + ], + ), + ), + ), + ), + ); + } + + // ── Header + Filters ────────────────────────────────────────────────────── + Widget _buildHeader(BuildContext context) { + final yearsAsync = ref.watch(academicYearsProvider); + final selectedYearId = ref.watch(selectedAcademicYearIdProvider); + final isDesktop = MediaQuery.of(context).size.width > 600; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('System Reports & Analytics', + style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.textPrimary)), + const SizedBox(height: AppSizes.p8), + Text('Live data from the TIS RMS database.', + style: TextStyle(fontSize: 16, color: Colors.grey.shade600)), + ], + ), + ), + if (isDesktop) ...[ + // School Year Dropdown + yearsAsync.when( + loading: () => const SizedBox(width: 160, child: LinearProgressIndicator()), + error: (e, st) => const SizedBox.shrink(), + data: (years) => Container( + padding: const EdgeInsets.symmetric(horizontal: AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade300), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: selectedYearId, + hint: const Text('All Years', style: TextStyle(fontWeight: FontWeight.bold)), + items: [ + const DropdownMenuItem(value: null, child: Text('All Years', style: TextStyle(fontWeight: FontWeight.bold))), + ...years.map((y) => DropdownMenuItem( + value: y.id, + child: Text(y.yearRange, style: const TextStyle(fontWeight: FontWeight.bold)), + )), + ], + onChanged: (val) => ref.read(selectedAcademicYearIdProvider.notifier).select(val), + ), + ), + ), + ), + const SizedBox(width: AppSizes.p16), + SizedBox( + width: 190, + child: PrimaryButton( + label: 'EXPORT TO EXCEL', + isLoading: _isExporting, + onPressed: _handleExportExcel, + ), + ), + ], + ], + ), + // Mobile controls + if (!isDesktop) ...[ + const SizedBox(height: AppSizes.p16), + yearsAsync.when( + loading: () => const LinearProgressIndicator(), + error: (e, st) => const SizedBox.shrink(), + data: (years) => DropdownButtonFormField( + initialValue: selectedYearId, + decoration: InputDecoration( + labelText: 'School Year', + border: OutlineInputBorder(borderRadius: BorderRadius.circular(AppSizes.radiusMedium)), + contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + ), + items: [ + const DropdownMenuItem(value: null, child: Text('All Years')), + ...years.map((y) => DropdownMenuItem(value: y.id, child: Text(y.yearRange))), + ], + onChanged: (val) => ref.read(selectedAcademicYearIdProvider.notifier).select(val), + ), + ), + const SizedBox(height: AppSizes.p12), + PrimaryButton(label: 'EXPORT TO EXCEL', isLoading: _isExporting, onPressed: _handleExportExcel), + ], + ], + ); + } + + // ── KPI Cards ──────────────────────────────────────────────────────────── + Widget _buildMetricsGrid() { + final statsAsync = ref.watch(reportStatsProvider); + return statsAsync.when( + loading: () => const SizedBox(height: 110, child: Center(child: CircularProgressIndicator())), + error: (err, _) => _errorWidget('Failed to load stats: $err'), + data: (stats) => LayoutBuilder( + builder: (ctx, constraints) { + final cols = constraints.maxWidth >= 800 ? 4 : (constraints.maxWidth >= 500 ? 2 : 1); + return GridView( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: cols, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + mainAxisExtent: 110, + ), + children: [ + StatCard(title: 'Total Enrollees', value: stats.totalStudents.toString(), icon: Icons.people, iconColor: AppColors.primaryGreen), + StatCard(title: 'Verified Documents', value: stats.verifiedDocs.toString(), icon: Icons.verified, iconColor: Colors.blue), + StatCard(title: 'Verification Rate', value: '${stats.verificationRate}%', icon: Icons.verified_user, iconColor: Colors.teal), + StatCard(title: 'Pending Print Queue', value: stats.printQueueCount.toString(), icon: Icons.print, iconColor: Colors.orange), + ], + ); + }, + ), + ); + } + + // ── Enrollment Bar Chart ───────────────────────────────────────────────── + Widget _buildEnrollmentChart() { + final enrollAsync = ref.watch(enrollmentByGradeProvider); + final selectedYearId = ref.watch(selectedAcademicYearIdProvider); + final years = ref.watch(academicYearsProvider).asData?.value ?? []; + final yearLabel = selectedYearId != null + ? years.firstWhere((y) => y.id == selectedYearId, orElse: () => AcademicYear(id: 0, yearRange: 'Selected', status: '')).yearRange + : 'All Years'; + + return Container( + padding: const EdgeInsets.all(AppSizes.p24), + decoration: _cardDecoration(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Enrollment by Grade Level', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: 4), + Text('School Year: $yearLabel', style: const TextStyle(color: AppColors.textSecondary, fontSize: 13)), + const SizedBox(height: AppSizes.p24), + enrollAsync.when( + loading: () => const SizedBox(height: 200, child: Center(child: CircularProgressIndicator())), + error: (err, _) => _errorWidget('$err'), + data: (grades) { + if (grades.isEmpty) return _emptyWidget('No enrollment data for selected year.'); + final maxCount = grades.map((g) => g.count).reduce((a, b) => a > b ? a : b); + return SizedBox( + height: 220, + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: grades.map((grade) { + final pct = maxCount > 0 ? grade.count / maxCount : 0.0; + return Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text(grade.count.toString(), style: const TextStyle(fontWeight: FontWeight.bold, color: AppColors.primaryGreen, fontSize: 12)), + const SizedBox(height: 4), + AnimatedContainer( + duration: const Duration(milliseconds: 700), + curve: Curves.easeOutQuart, + margin: const EdgeInsets.symmetric(horizontal: 4), + height: 170 * pct, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [AppColors.primaryGreen, AppColors.primaryGreen.withValues(alpha: 0.55)], + begin: Alignment.topCenter, end: Alignment.bottomCenter, + ), + borderRadius: const BorderRadius.vertical(top: Radius.circular(6)), + ), + ), + const SizedBox(height: 8), + Text(grade.label, style: const TextStyle(color: AppColors.textSecondary, fontSize: 11)), + ], + ), + ); + }).toList(), + ), + ); + }, + ), + ], + ), + ); + } + + // ── Document Status Card ───────────────────────────────────────────────── + Widget _buildDocumentStatusCard() { + final docAsync = ref.watch(documentStatusProvider); + return Container( + padding: const EdgeInsets.all(AppSizes.p24), + decoration: _cardDecoration(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('Document Status', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: 4), + const Text('Overall document verification health', style: TextStyle(color: AppColors.textSecondary, fontSize: 13)), + const SizedBox(height: AppSizes.p24), + docAsync.when( + loading: () => const SizedBox(height: 160, child: Center(child: CircularProgressIndicator())), + error: (err, _) => _errorWidget('$err'), + data: (doc) { + final verRate = doc.verificationRate; + return Column(children: [ + Center( + child: Stack(alignment: Alignment.center, children: [ + SizedBox( + width: 140, height: 140, + child: CircularProgressIndicator( + value: verRate, + strokeWidth: 14, + backgroundColor: Colors.grey.shade200, + valueColor: AlwaysStoppedAnimation( + verRate >= 0.8 ? AppColors.primaryGreen : verRate >= 0.5 ? Colors.orange : Colors.red, + ), + ), + ), + Column(mainAxisSize: MainAxisSize.min, children: [ + Text('${(verRate * 100).round()}%', style: const TextStyle(fontSize: 30, fontWeight: FontWeight.bold)), + const Text('Verified', style: TextStyle(color: AppColors.textSecondary, fontSize: 12)), + ]), + ]), + ), + const SizedBox(height: AppSizes.p24), + const Divider(), + const SizedBox(height: AppSizes.p12), + _legendRow('Verified', AppColors.primaryGreen, doc.verified), + const SizedBox(height: 8), + _legendRow('Pending', Colors.orange, doc.pending), + const SizedBox(height: 8), + _legendRow('Draft', Colors.blue, doc.draft), + const SizedBox(height: 8), + _legendRow('Archived', Colors.grey, doc.archived), + ]); + }, + ), + ], + ), + ); + } + + // ── Helpers ────────────────────────────────────────────────────────────── + Widget _legendRow(String label, Color color, int count) => Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: [ + Container(width: 12, height: 12, decoration: BoxDecoration(color: color, shape: BoxShape.circle)), + const SizedBox(width: 8), + Text(label, style: const TextStyle(fontWeight: FontWeight.w500)), + ]), + Text(count.toString(), style: TextStyle(fontWeight: FontWeight.bold, color: color)), + ], + ); + + Widget _errorWidget(String msg) => Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration(color: Colors.red.shade50, borderRadius: BorderRadius.circular(8)), + child: Row(children: [ + const Icon(Icons.error_outline, color: Colors.red), + const SizedBox(width: 8), + Expanded(child: Text(msg, style: const TextStyle(color: Colors.red))), + ]), + ); + + Widget _emptyWidget(String msg) => Center( + child: Padding( + padding: const EdgeInsets.all(32), + child: Column(mainAxisSize: MainAxisSize.min, children: [ + Icon(Icons.bar_chart, size: 48, color: Colors.grey.shade400), + const SizedBox(height: 12), + Text(msg, style: TextStyle(color: Colors.grey.shade500)), + ]), + ), + ); + + BoxDecoration _cardDecoration() => BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 10, offset: const Offset(0, 4))], + ); +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/settings/requirements_settings_screen.dart b/frontend/lib/ui/screens/settings/requirements_settings_screen.dart new file mode 100644 index 0000000..0f45804 --- /dev/null +++ b/frontend/lib/ui/screens/settings/requirements_settings_screen.dart @@ -0,0 +1,552 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../providers/document_provider.dart'; +import '../../../domain/entities/document_requirement_model.dart'; + +class RequirementsSettingsScreen extends ConsumerStatefulWidget { + const RequirementsSettingsScreen({super.key}); + + @override + ConsumerState createState() => _RequirementsSettingsScreenState(); +} + +class _RequirementsSettingsScreenState extends ConsumerState + with SingleTickerProviderStateMixin { + late TabController _tabController; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final settingsAsync = ref.watch(requirementsSettingsProvider); + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(), + const SizedBox(height: AppSizes.p24), + Container( + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + child: TabBar( + controller: _tabController, + labelColor: AppColors.primaryGreen, + unselectedLabelColor: AppColors.textSecondary, + indicatorColor: AppColors.primaryGreen, + tabs: const [ + Tab(text: 'JHS Requirements'), + Tab(text: 'SHS Requirements'), + ], + ), + ), + const SizedBox(height: AppSizes.p16), + Expanded( + child: settingsAsync.when( + data: (settings) => TabBarView( + controller: _tabController, + children: [ + _buildRequirementsList(settings.jhs), + _buildRequirementsList(settings.shs), + ], + ), + loading: () => const Center(child: CircularProgressIndicator()), + error: (e, st) => Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.error_outline, size: 48, color: AppColors.error), + const SizedBox(height: AppSizes.p16), + Text('Error: $e', style: const TextStyle(color: AppColors.error)), + const SizedBox(height: AppSizes.p16), + PrimaryButton( + label: 'Retry', + onPressed: () => ref.invalidate(requirementsSettingsProvider), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + floatingActionButton: FloatingActionButton.extended( + backgroundColor: AppColors.primaryGreen, + onPressed: () => _showAddRequirementModal(context), + icon: const Icon(Icons.add, color: Colors.white), + label: const Text('Add Document Type', style: TextStyle(color: Colors.white)), + ), + ); + } + + Widget _buildHeader() { + return Row( + children: [ + IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () => Navigator.of(context).pop(), + ), + const SizedBox(width: AppSizes.p8), + const Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Document Requirements', + style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold, color: AppColors.textPrimary), + ), + Text( + 'Configure required documents for JHS and SHS students', + style: TextStyle(fontSize: 14, color: AppColors.textSecondary), + ), + ], + ), + ), + ], + ); + } + + Widget _buildRequirementsList(List requirements) { + if (requirements.isEmpty) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.folder_off_outlined, size: 64, color: Colors.grey.shade400), + const SizedBox(height: AppSizes.p16), + const Text('No requirements configured', style: TextStyle(color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p8), + const Text( + 'Click the button below to add document requirements', + style: TextStyle(color: AppColors.textSecondary, fontSize: 12), + ), + ], + ), + ); + } + + return ListView.builder( + padding: const EdgeInsets.only(bottom: 80), + itemCount: requirements.length, + itemBuilder: (context, index) { + final req = requirements[index]; + return _buildRequirementCard(req); + }, + ); + } + + Widget _buildRequirementCard(DocumentRequirementModel req) { + return Container( + margin: const EdgeInsets.only(bottom: AppSizes.p12), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade200), + ), + child: ExpansionTile( + tilePadding: const EdgeInsets.symmetric(horizontal: AppSizes.p16, vertical: AppSizes.p8), + childrenPadding: const EdgeInsets.all(AppSizes.p16), + leading: Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: req.isMandatory + ? AppColors.error.withValues(alpha: 0.1) + : AppColors.primaryGreen.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + ), + child: Icon( + req.isMandatory ? Icons.warning_amber : Icons.check_circle_outline, + color: req.isMandatory ? AppColors.error : AppColors.primaryGreen, + ), + ), + title: Text( + req.name, + style: const TextStyle(fontWeight: FontWeight.w600, fontSize: 16), + ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 4), + Row( + children: [ + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: req.category == 'JHS' + ? Colors.blue.withValues(alpha: 0.1) + : Colors.purple.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(4), + ), + child: Text( + req.category, + style: TextStyle( + fontSize: 12, + color: req.category == 'JHS' ? Colors.blue : Colors.purple, + fontWeight: FontWeight.w500, + ), + ), + ), + const SizedBox(width: 8), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: req.isMandatory + ? AppColors.error.withValues(alpha: 0.1) + : Colors.grey.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(4), + ), + child: Text( + req.isMandatory ? 'Mandatory' : 'Optional', + style: TextStyle( + fontSize: 12, + color: req.isMandatory ? AppColors.error : Colors.grey, + fontWeight: FontWeight.w500, + ), + ), + ), + const SizedBox(width: 8), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: req.isEnabled + ? AppColors.success.withValues(alpha: 0.1) + : Colors.grey.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(4), + ), + child: Text( + req.isEnabled ? 'Enabled' : 'Disabled', + style: TextStyle( + fontSize: 12, + color: req.isEnabled ? AppColors.success : Colors.grey, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ), + if (req.dueDate != null) ...[ + const SizedBox(height: 4), + Text( + 'Due: ${_formatDate(req.dueDate!)}', + style: const TextStyle(fontSize: 12, color: AppColors.textSecondary), + ), + ], + ], + ), + children: [ + if (req.description != null && req.description!.isNotEmpty) ...[ + Text(req.description!, style: const TextStyle(color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p12), + ], + _buildDetailRow('Accepted File Types', req.acceptedFileTypes), + _buildDetailRow('School Levels', req.schoolLevels), + const SizedBox(height: AppSizes.p16), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton.icon( + onPressed: () => _showEditRequirementModal(context, req), + icon: const Icon(Icons.edit, size: 18), + label: const Text('Edit'), + ), + const SizedBox(width: AppSizes.p8), + TextButton.icon( + onPressed: () => _confirmDelete(req), + icon: const Icon(Icons.delete, size: 18, color: AppColors.error), + label: const Text('Delete', style: TextStyle(color: AppColors.error)), + ), + ], + ), + ], + ), + ); + } + + Widget _buildDetailRow(String label, String value) { + return Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: 140, + child: Text(label, style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 13)), + ), + Expanded( + child: Text(value, style: const TextStyle(fontSize: 13)), + ), + ], + ), + ); + } + + String _formatDate(DateTime date) { + return '${date.month}/${date.day}/${date.year}'; + } + + void _showAddRequirementModal(BuildContext context) { + showDialog( + context: context, + builder: (context) => RequirementFormModal( + category: _tabController.index == 0 ? 'JHS' : 'SHS', + ), + ); + } + + void _showEditRequirementModal(BuildContext context, DocumentRequirementModel req) { + showDialog( + context: context, + builder: (context) => RequirementFormModal( + requirement: req, + category: req.category, + ), + ); + } + + void _confirmDelete(DocumentRequirementModel req) { + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Text('Delete Requirement', style: TextStyle(color: AppColors.error)), + content: Text('Are you sure you want to delete "${req.name}"?'), + actions: [ + TextButton(onPressed: () => Navigator.pop(context), child: const Text('CANCEL')), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: AppColors.error, foregroundColor: Colors.white), + onPressed: () async { + Navigator.pop(context); + try { + await ref.read(requirementMutationProvider.notifier).deleteRequirement(req.id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Requirement deleted'), backgroundColor: AppColors.success), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Failed: $e'), backgroundColor: AppColors.error), + ); + } + }, + child: const Text('DELETE'), + ), + ], + ), + ); + } +} + +class RequirementFormModal extends ConsumerStatefulWidget { + final DocumentRequirementModel? requirement; + final String category; + + const RequirementFormModal({ + super.key, + this.requirement, + required this.category, + }); + + @override + ConsumerState createState() => _RequirementFormModalState(); +} + +class _RequirementFormModalState extends ConsumerState { + final _formKey = GlobalKey(); + late TextEditingController _nameController; + late TextEditingController _descController; + late TextEditingController _dueDateController; + + late String _category; + late bool _isMandatory; + late bool _isEnabled; + late String _acceptedFileTypes; + + bool _isLoading = false; + + @override + void initState() { + super.initState(); + final req = widget.requirement; + _nameController = TextEditingController(text: req?.name ?? ''); + _descController = TextEditingController(text: req?.description ?? ''); + _dueDateController = TextEditingController( + text: req?.dueDate != null ? '${req!.dueDate!.month}/${req.dueDate!.day}/${req.dueDate!.year}' : '', + ); + _category = req?.category ?? widget.category; + _isMandatory = req?.isMandatory ?? true; + _isEnabled = req?.isEnabled ?? true; + _acceptedFileTypes = req?.acceptedFileTypes ?? 'pdf,jpg,jpeg,png'; + } + + @override + void dispose() { + _nameController.dispose(); + _descController.dispose(); + _dueDateController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final isEditing = widget.requirement != null; + + return AlertDialog( + title: Text(isEditing ? 'Edit Document Type' : 'Add Document Type'), + content: SizedBox( + width: 400, + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CustomTextField( + hintText: 'Document Name', + controller: _nameController, + prefixIcon: Icons.description, + validator: (v) => v?.trim().isEmpty == true ? 'Name is required' : null, + ), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'Description', + controller: _descController, + prefixIcon: Icons.notes, + maxLines: 2, + ), + const SizedBox(height: AppSizes.p12), + DropdownButtonFormField( + value: _category, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.school), + border: OutlineInputBorder(), + ), + items: ['JHS', 'SHS'].map((c) => DropdownMenuItem(value: c, child: Text(c))).toList(), + onChanged: (v) => setState(() => _category = v!), + ), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'Due Date (MM/DD/YYYY)', + controller: _dueDateController, + prefixIcon: Icons.calendar_today, + ), + const SizedBox(height: AppSizes.p12), + DropdownButtonFormField( + value: _acceptedFileTypes, + decoration: const InputDecoration( + prefixIcon: Icon(Icons.attach_file), + border: OutlineInputBorder(), + ), + items: const [ + DropdownMenuItem(value: 'pdf', child: Text('PDF only')), + DropdownMenuItem(value: 'pdf,jpg,jpeg,png', child: Text('PDF, JPG, PNG')), + DropdownMenuItem(value: 'pdf,doc,docx', child: Text('PDF, Word')), + DropdownMenuItem(value: 'pdf,jpg,jpeg,png,doc,docx', child: Text('All')), + ], + onChanged: (v) => setState(() => _acceptedFileTypes = v!), + ), + const SizedBox(height: AppSizes.p16), + SwitchListTile( + title: const Text('Mandatory'), + value: _isMandatory, + onChanged: (v) => setState(() => _isMandatory = v), + activeColor: AppColors.error, + ), + SwitchListTile( + title: const Text('Enabled'), + value: _isEnabled, + onChanged: (v) => setState(() => _isEnabled = v), + activeColor: AppColors.success, + ), + ], + ), + ), + ), + ), + actions: [ + TextButton(onPressed: () => Navigator.pop(context), child: const Text('CANCEL')), + PrimaryButton( + label: isEditing ? 'UPDATE' : 'CREATE', + isLoading: _isLoading, + onPressed: _handleSubmit, + ), + ], + ); + } + + Future _handleSubmit() async { + if (!_formKey.currentState!.validate()) return; + + setState(() => _isLoading = true); + + try { + DateTime? dueDate; + if (_dueDateController.text.trim().isNotEmpty) { + final parts = _dueDateController.text.trim().split('/'); + if (parts.length == 3) { + dueDate = DateTime( + int.parse(parts[2]), + int.parse(parts[0]), + int.parse(parts[1]), + ); + } + } + + final requirement = DocumentRequirementModel( + id: widget.requirement?.id ?? 0, + name: _nameController.text.trim(), + description: _descController.text.trim().isEmpty ? null : _descController.text.trim(), + category: _category, + isMandatory: _isMandatory, + isEnabled: _isEnabled, + dueDate: dueDate, + acceptedFileTypes: _acceptedFileTypes, + schoolLevels: 'JHS,SHS', + ); + + if (widget.requirement != null) { + await ref.read(requirementMutationProvider.notifier).updateRequirement(requirement); + } else { + await ref.read(requirementMutationProvider.notifier).createRequirement(requirement); + } + + if (!mounted) return; + Navigator.pop(context); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(widget.requirement != null ? 'Requirement updated' : 'Requirement created'), + backgroundColor: AppColors.success, + ), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Failed: $e'), backgroundColor: AppColors.error), + ); + } finally { + if (mounted) setState(() => _isLoading = false); + } + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/settings/settings_screen.dart b/frontend/lib/ui/screens/settings/settings_screen.dart new file mode 100644 index 0000000..b5e949c --- /dev/null +++ b/frontend/lib/ui/screens/settings/settings_screen.dart @@ -0,0 +1,343 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../providers/auth_provider.dart'; +import 'requirements_settings_screen.dart'; + +class SettingsScreen extends ConsumerStatefulWidget { + final String? userRole; + const SettingsScreen({super.key, this.userRole}); + + @override + ConsumerState createState() => _SettingsScreenState(); +} + +class _SettingsScreenState extends ConsumerState { + // Profile controllers + final _firstNameCtrl = TextEditingController(); + final _middleNameCtrl = TextEditingController(); + final _lastNameCtrl = TextEditingController(); + final _extCtrl = TextEditingController(); + final _phoneCtrl = TextEditingController(); + final _emailCtrl = TextEditingController(); + + // Password controllers + final _currentPassCtrl = TextEditingController(); + final _newPassCtrl = TextEditingController(); + final _confirmPassCtrl = TextEditingController(); + bool _obscureCurrent = true; + bool _obscureNew = true; + bool _obscureConfirm = true; + + bool _isInitialized = false; + bool _isProfileLoading = false; + bool _isPasswordLoading = false; + + @override + void dispose() { + _firstNameCtrl.dispose(); + _middleNameCtrl.dispose(); + _lastNameCtrl.dispose(); + _extCtrl.dispose(); + _phoneCtrl.dispose(); + _emailCtrl.dispose(); + _currentPassCtrl.dispose(); + _newPassCtrl.dispose(); + _confirmPassCtrl.dispose(); + super.dispose(); + } + + Future _handleUpdateProfile() async { + setState(() => _isProfileLoading = true); + try { + final repo = ref.read(authRepositoryProvider); + await repo.updateProfile( + firstName: _firstNameCtrl.text.trim(), + middleName: _middleNameCtrl.text.trim(), + lastName: _lastNameCtrl.text.trim(), + extension: _extCtrl.text.trim(), + phone: _phoneCtrl.text.trim(), + email: _emailCtrl.text.trim(), + ); + ref.invalidate(profileProvider); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Profile updated successfully!'), backgroundColor: AppColors.success), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Failed: $e'), backgroundColor: Colors.red), + ); + } finally { + if (mounted) setState(() => _isProfileLoading = false); + } + } + + Future _handleChangePassword() async { + final current = _currentPassCtrl.text; + final newPass = _newPassCtrl.text; + final confirm = _confirmPassCtrl.text; + + if (current.isEmpty || newPass.isEmpty || confirm.isEmpty) { + _showSnack('All password fields are required.', isError: true); + return; + } + if (newPass != confirm) { + _showSnack('New passwords do not match.', isError: true); + return; + } + if (newPass.length < 6) { + _showSnack('New password must be at least 6 characters.', isError: true); + return; + } + + setState(() => _isPasswordLoading = true); + try { + final repo = ref.read(authRepositoryProvider); + await repo.changePassword( + currentPassword: current, + newPassword: newPass, + confirmPassword: confirm, + ); + _currentPassCtrl.clear(); + _newPassCtrl.clear(); + _confirmPassCtrl.clear(); + if (!mounted) return; + _showSnack('Password changed successfully!'); + } catch (e) { + if (!mounted) return; + _showSnack(e.toString().replaceAll('Exception: ', ''), isError: true); + } finally { + if (mounted) setState(() => _isPasswordLoading = false); + } + } + + void _showSnack(String msg, {bool isError = false}) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(msg), + backgroundColor: isError ? Colors.red : AppColors.success, + )); + } + + @override + Widget build(BuildContext context) { + final profileAsync = ref.watch(profileProvider); + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: profileAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (err, _) => Center(child: Text('Error: $err')), + data: (user) { + if (!_isInitialized) { + Future.microtask(() { + if (mounted && !_isInitialized) { + _firstNameCtrl.text = user.firstName; + _middleNameCtrl.text = user.middleName ?? ''; + _lastNameCtrl.text = user.lastName; + _extCtrl.text = user.extension ?? ''; + _phoneCtrl.text = user.phone ?? ''; + _emailCtrl.text = user.email ?? ''; + setState(() => _isInitialized = true); + } + }); + } + + return SingleChildScrollView( + padding: const EdgeInsets.all(AppSizes.p24), + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 700), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header + const Text('Account Settings', style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.textPrimary)), + const SizedBox(height: AppSizes.p8), + const Text('Manage your profile information and security settings.', style: TextStyle(fontSize: 16, color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p32), + + // ── Profile Card ────────────────────────────────────── + _buildCard( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row(children: [ + const CircleAvatar( + radius: 30, + backgroundColor: AppColors.primaryGreen, + child: Icon(Icons.person, size: 30, color: Colors.white), + ), + const SizedBox(width: AppSizes.p16), + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + const Text('Profile Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + Text('Role: ${user.role.toUpperCase().replaceAll('_', ' ')}', + style: const TextStyle(color: AppColors.primaryGreen, fontWeight: FontWeight.w600)), + ]), + ]), + const Padding(padding: EdgeInsets.symmetric(vertical: AppSizes.p24), child: Divider()), + + LayoutBuilder(builder: (ctx, constraints) { + final wide = constraints.maxWidth > 500; + final spacing = AppSizes.p16; + if (wide) { + return Column(children: [ + Row(children: [ + Expanded(child: CustomTextField(hintText: 'First Name', prefixIcon: Icons.badge_outlined, controller: _firstNameCtrl)), + SizedBox(width: spacing), + Expanded(child: CustomTextField(hintText: 'Middle Name', prefixIcon: Icons.badge_outlined, controller: _middleNameCtrl)), + ]), + SizedBox(height: spacing), + Row(children: [ + Expanded(flex: 3, child: CustomTextField(hintText: 'Last Name', prefixIcon: Icons.badge_outlined, controller: _lastNameCtrl)), + SizedBox(width: spacing), + Expanded(child: CustomTextField(hintText: 'Ext. (Jr)', prefixIcon: Icons.text_format, controller: _extCtrl)), + ]), + SizedBox(height: spacing), + Row(children: [ + Expanded(child: CustomTextField(hintText: 'Phone Number', prefixIcon: Icons.phone_outlined, controller: _phoneCtrl)), + SizedBox(width: spacing), + Expanded(child: CustomTextField(hintText: 'Email Address', prefixIcon: Icons.email_outlined, controller: _emailCtrl)), + ]), + ]); + } else { + return Column(children: [ + CustomTextField(hintText: 'First Name', prefixIcon: Icons.badge_outlined, controller: _firstNameCtrl), + SizedBox(height: spacing), + CustomTextField(hintText: 'Middle Name', prefixIcon: Icons.badge_outlined, controller: _middleNameCtrl), + SizedBox(height: spacing), + CustomTextField(hintText: 'Last Name', prefixIcon: Icons.badge_outlined, controller: _lastNameCtrl), + SizedBox(height: spacing), + CustomTextField(hintText: 'Ext. (Jr)', prefixIcon: Icons.text_format, controller: _extCtrl), + SizedBox(height: spacing), + CustomTextField(hintText: 'Phone Number', prefixIcon: Icons.phone_outlined, controller: _phoneCtrl), + SizedBox(height: spacing), + CustomTextField(hintText: 'Email Address', prefixIcon: Icons.email_outlined, controller: _emailCtrl), + ]); + } + }), + const SizedBox(height: AppSizes.p32), + Align( + alignment: Alignment.centerRight, + child: SizedBox( + width: 200, + child: PrimaryButton(label: 'SAVE CHANGES', isLoading: _isProfileLoading, onPressed: _handleUpdateProfile), + ), + ), + ], + ), + ), + + const SizedBox(height: AppSizes.p24), + + // ── Document Requirements Settings (Super Admin Only) ── + if (widget.userRole == 'super_admin') ...[ + _buildCard( + child: InkWell( + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => const RequirementsSettingsScreen(), + ), + ); + }, + child: const Row(children: [ + Icon(Icons.folder_copy_outlined, color: AppColors.primaryGreen), + SizedBox(width: AppSizes.p8), + Expanded(child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Document Requirements', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + Text('Configure required documents for JHS and SHS', style: TextStyle(fontSize: 13, color: AppColors.textSecondary)), + ], + )), + Icon(Icons.chevron_right, color: AppColors.textSecondary), + ]), + ), + ), + const SizedBox(height: AppSizes.p24), + ], + + // ── Change Password Card ────────────────────────────── + _buildCard( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Row(children: [ + Icon(Icons.lock_outline, color: AppColors.textPrimary), + SizedBox(width: AppSizes.p8), + Text('Change Password', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + ]), + const SizedBox(height: 6), + const Text('Enter your current password before setting a new one.', style: TextStyle(fontSize: 13, color: AppColors.textSecondary)), + const Divider(height: 28), + + CustomTextField( + hintText: 'Current Password', + prefixIcon: Icons.lock_open_outlined, + controller: _currentPassCtrl, + isPassword: true, + obscureText: _obscureCurrent, + onToggleVisibility: () => setState(() => _obscureCurrent = !_obscureCurrent), + ), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'New Password', + prefixIcon: Icons.lock_outline, + controller: _newPassCtrl, + isPassword: true, + obscureText: _obscureNew, + onToggleVisibility: () => setState(() => _obscureNew = !_obscureNew), + ), + const SizedBox(height: AppSizes.p12), + CustomTextField( + hintText: 'Confirm New Password', + prefixIcon: Icons.lock_outline, + controller: _confirmPassCtrl, + isPassword: true, + obscureText: _obscureConfirm, + onToggleVisibility: () => setState(() => _obscureConfirm = !_obscureConfirm), + ), + const SizedBox(height: AppSizes.p24), + Align( + alignment: Alignment.centerRight, + child: SizedBox( + width: 200, + child: PrimaryButton(label: 'UPDATE PASSWORD', isLoading: _isPasswordLoading, onPressed: _handleChangePassword), + ), + ), + ], + ), + ), + + const SizedBox(height: AppSizes.p48), + ], + ), + ), + ), + ); + }, + ), + ), + ); + } + + Widget _buildCard({required Widget child}) { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(AppSizes.p24), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 10, offset: const Offset(0, 4))], + border: Border.all(color: Colors.grey.shade200), + ), + child: child, + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/splash/splash_screen.dart b/frontend/lib/ui/screens/splash/splash_screen.dart new file mode 100644 index 0000000..3ce5d52 --- /dev/null +++ b/frontend/lib/ui/screens/splash/splash_screen.dart @@ -0,0 +1,80 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../login/login_screen.dart'; +import '../../layouts/windows_sidebar_layout.dart'; +import '../../layouts/android_bottom_nav_layout.dart'; +import '../../providers/auth_provider.dart'; + +class SplashScreen extends ConsumerStatefulWidget { + const SplashScreen({super.key}); + + @override + ConsumerState createState() => _SplashScreenState(); +} + +class _SplashScreenState extends ConsumerState { + @override + void initState() { + super.initState(); + _initializeApp(); + } + + Future _initializeApp() async { + await Future.delayed(const Duration(milliseconds: 1800)); + if (!mounted) return; + + // Try to auto-login if Remember Me was enabled + final user = await ref.read(authProvider.notifier).tryAutoLogin(); + + if (!mounted) return; + + if (user != null) { + final isDesktop = MediaQuery.of(context).size.width >= 800; + Navigator.of(context).pushReplacement( + MaterialPageRoute( + builder: (_) => isDesktop + ? WindowsSidebarLayout(userRole: user.role) + : AndroidBottomNavLayout(userRole: user.role), + ), + ); + } else { + Navigator.of(context).pushReplacement( + MaterialPageRoute(builder: (_) => const LoginScreen()), + ); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: const Color(0xFFF9F9F9), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset('assets/images/logo.png', width: 150, height: 150), + const SizedBox(height: 24), + const Text( + 'TIS RMS', + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Color(0xFF1C8248), + letterSpacing: 1.2, + ), + ), + const SizedBox(height: 8), + const Text( + 'Record Management System', + style: TextStyle(fontSize: 14, color: Colors.grey), + ), + const SizedBox(height: 48), + const CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation(Color(0xFF1C8248)), + ), + ], + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/students/student_detail_screen.dart b/frontend/lib/ui/screens/students/student_detail_screen.dart new file mode 100644 index 0000000..3e6a3b9 --- /dev/null +++ b/frontend/lib/ui/screens/students/student_detail_screen.dart @@ -0,0 +1,337 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../../domain/repositories/document_repository.dart' show MissingRequirements; +import '../../providers/student_provider.dart'; +import '../../providers/document_provider.dart'; + +class StudentDetailScreen extends ConsumerWidget { + final int studentId; + final String userRole; + + const StudentDetailScreen({ + super.key, + required this.studentId, + required this.userRole, + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final studentAsync = ref.watch(studentDetailProvider(studentId)); + final missingReqsAsync = ref.watch(missingRequirementsProvider(studentId)); + + return Scaffold( + backgroundColor: AppColors.pageBackground, + appBar: AppBar( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + title: const Text('Student Profile'), + leading: IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () => Navigator.of(context).pop(), + ), + ), + body: studentAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (e, st) => Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.error_outline, size: 48, color: AppColors.error), + const SizedBox(height: AppSizes.p16), + Text('Error: $e', style: const TextStyle(color: AppColors.error)), + ], + ), + ), + data: (student) => SingleChildScrollView( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Student Info Card + _buildInfoCard(student), + const SizedBox(height: AppSizes.p24), + + // Enrollments + if (student.enrollments != null && student.enrollments!.isNotEmpty) ...[ + const Text('Enrollments', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: AppSizes.p12), + ...student.enrollments!.map((e) => _buildEnrollmentCard(e)).toList(), + const SizedBox(height: AppSizes.p24), + ], + + // Document Requirements Status + const Text('Document Requirements', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + const SizedBox(height: AppSizes.p12), + missingReqsAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (e, _) => Text('Error loading requirements: $e', style: const TextStyle(color: AppColors.error)), + data: (missing) => _buildRequirementsStatus(missing), + ), + ], + ), + ), + ), + ); + } + + Widget _buildInfoCard(dynamic student) { + return Container( + padding: const EdgeInsets.all(AppSizes.p20), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [ + BoxShadow(color: Colors.black.withValues(alpha: 0.05), blurRadius: 10, offset: const Offset(0, 4)), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + CircleAvatar( + radius: 36, + backgroundColor: AppColors.primaryGreen, + child: Text( + '${student.firstName?[0] ?? ''}${student.lastName?[0] ?? ''}', + style: const TextStyle(fontSize: 24, color: Colors.white, fontWeight: FontWeight.bold), + ), + ), + const SizedBox(width: AppSizes.p16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${student.firstName} ${student.middleName != null ? student.middleName + ' ' : ''}${student.lastName} ${student.extension ?? ''}', + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + Text( + 'LRN: ${student.lrn}', + style: const TextStyle(color: AppColors.textSecondary, fontSize: 14), + ), + ], + ), + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: _getStatusColor(student.status).withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Text( + student.status ?? 'Enrolled', + style: TextStyle( + color: _getStatusColor(student.status), + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + const Divider(height: 32), + Row( + children: [ + _buildInfoItem('Sex', student.sex), + const SizedBox(width: AppSizes.p24), + _buildInfoItem('Birth Date', _formatDate(student.birthDate)), + ], + ), + ], + ), + ); + } + + Widget _buildInfoItem(String label, String value) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, style: const TextStyle(color: AppColors.textSecondary, fontSize: 12)), + Text(value, style: const TextStyle(fontWeight: FontWeight.w600)), + ], + ); + } + + Widget _buildEnrollmentCard(dynamic enrollment) { + return Container( + margin: const EdgeInsets.only(bottom: AppSizes.p8), + padding: const EdgeInsets.all(AppSizes.p12), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade200), + ), + child: Row( + children: [ + Container( + width: 48, + height: 48, + decoration: BoxDecoration( + color: Colors.blue.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + ), + child: const Icon(Icons.school, color: Colors.blue), + ), + const SizedBox(width: AppSizes.p12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Grade ${enrollment.gradeLevel}', + style: const TextStyle(fontWeight: FontWeight.w600), + ), + Text( + '${enrollment.sectionName ?? 'N/A'} - ${enrollment.yearRange ?? 'N/A'}', + style: const TextStyle(color: AppColors.textSecondary, fontSize: 13), + ), + if (enrollment.trackStrand != null) + Text( + 'Track: ${enrollment.trackStrand}', + style: const TextStyle(color: AppColors.textSecondary, fontSize: 12), + ), + ], + ), + ), + ], + ), + ); + } + + Widget _buildRequirementsStatus(MissingRequirements missing) { + return Container( + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade200), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Summary + Row( + children: [ + _buildStatusChip( + 'Total Required', + '${missing.totalRequired}', + AppColors.primaryGreen, + ), + const SizedBox(width: AppSizes.p8), + _buildStatusChip( + 'Verified', + '${missing.totalVerified}', + AppColors.success, + ), + const SizedBox(width: AppSizes.p8), + _buildStatusChip( + 'Missing', + '${missing.totalRequired - missing.totalVerified}', + missing.totalRequired - missing.totalVerified > 0 + ? AppColors.error + : AppColors.success, + ), + ], + ), + const SizedBox(height: AppSizes.p16), + + // Missing Documents + if (missing.missing.isNotEmpty) ...[ + const Text('Missing Documents', style: TextStyle(fontWeight: FontWeight.w600, color: AppColors.error)), + const SizedBox(height: AppSizes.p8), + ...missing.missing.map((req) => _buildRequirementItem(req.name, 'Missing', AppColors.error)), + const SizedBox(height: AppSizes.p12), + ], + + // Pending Documents + if (missing.pending.isNotEmpty) ...[ + const Text('Pending Documents', style: TextStyle(fontWeight: FontWeight.w600, color: Colors.orange)), + const SizedBox(height: AppSizes.p8), + ...missing.pending.map((req) => _buildRequirementItem( + req.name, + 'Pending', + Colors.orange, + )), + const SizedBox(height: AppSizes.p12), + ], + + // Verified Documents + if (missing.verified.isNotEmpty) ...[ + const Text('Verified Documents', style: TextStyle(fontWeight: FontWeight.w600, color: AppColors.success)), + const SizedBox(height: AppSizes.p8), + ...missing.verified.map((req) => _buildRequirementItem(req.name, 'Verified', AppColors.success)), + ], + + if (missing.missing.isEmpty && missing.pending.isEmpty && missing.verified.isEmpty) + const Center( + child: Padding( + padding: EdgeInsets.all(AppSizes.p24), + child: Text('No document requirements for this student', style: TextStyle(color: AppColors.textSecondary)), + ), + ), + ], + ), + ); + } + + Widget _buildStatusChip(String label, String value, Color color) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), + decoration: BoxDecoration( + color: color.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text(value, style: TextStyle(fontWeight: FontWeight.bold, color: color)), + const SizedBox(width: 4), + Text(label, style: TextStyle(fontSize: 12, color: color)), + ], + ), + ); + } + + Widget _buildRequirementItem(String name, String status, Color color) { + return Padding( + padding: const EdgeInsets.only(bottom: 6), + child: Row( + children: [ + Icon( + status == 'Verified' ? Icons.check_circle : Icons.warning, + size: 16, + color: color, + ), + const SizedBox(width: 8), + Expanded(child: Text(name)), + Text(status, style: TextStyle(color: color, fontSize: 12, fontWeight: FontWeight.w500)), + ], + ), + ); + } + + Color _getStatusColor(String? status) { + switch (status) { + case 'Enrolled': + return AppColors.success; + case 'Graduated': + return Colors.blue; + case 'Transferred Out': + return Colors.orange; + case 'Dropped': + return AppColors.error; + default: + return Colors.grey; + } + } + + String _formatDate(dynamic date) { + if (date == null) return 'N/A'; + if (date is DateTime) { + return '${date.month}/${date.day}/${date.year}'; + } + return date.toString(); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/students/students_screen.dart b/frontend/lib/ui/screens/students/students_screen.dart new file mode 100644 index 0000000..823f174 --- /dev/null +++ b/frontend/lib/ui/screens/students/students_screen.dart @@ -0,0 +1,748 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../../domain/entities/student_model.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../providers/student_provider.dart'; +import '../documents/documents_screen.dart'; +import '../students/student_detail_screen.dart'; +import 'widgets/add_edit_student_modal.dart'; + +class StudentsScreen extends ConsumerStatefulWidget { + final String userRole; + const StudentsScreen({super.key, this.userRole = 'teacher'}); + + @override + ConsumerState createState() => _StudentsScreenState(); +} + +class _StudentsScreenState extends ConsumerState { + final TextEditingController _searchController = TextEditingController(); + Timer? _debounce; + + static const _gradeLevels = ['All Grades', '7', '8', '9', '10', '11', '12']; + static const _statusItems = ['All Status', 'Enrolled', 'Graduated', 'Transferred Out', 'Dropped']; + static const _pageSizes = [10, 20, 50]; + + @override + void initState() { + super.initState(); + // Listen for text changes and debounce search + _searchController.addListener(_onSearchChanged); + } + + @override + void dispose() { + _debounce?.cancel(); + _searchController.removeListener(_onSearchChanged); + _searchController.dispose(); + super.dispose(); + } + + void _onSearchChanged() { + _debounce?.cancel(); + _debounce = Timer(const Duration(milliseconds: 500), () { + ref.read(studentQueryProvider.notifier).setSearch(_searchController.text); + }); + } + + // ---------------------------------------------------------------- + // SHOW ADD / EDIT MODAL + // ---------------------------------------------------------------- + void _openModal({StudentModel? student}) async { + final result = await showDialog( + context: context, + barrierDismissible: false, + builder: (_) => AddEditStudentModal(student: student), + ); + // result == true means success — list already refreshed by provider + if (result == true && mounted) { + // Provider already invalidated inside mutation notifier + } + } + + // ---------------------------------------------------------------- + // DELETE CONFIRM + // ---------------------------------------------------------------- + Future _confirmDelete(StudentModel student) async { + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Text('Delete Student?'), + content: Text( + 'Are you sure you want to permanently delete ' + '"${student.fullName}"? This cannot be undone.', + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(ctx).pop(false), + child: const Text('CANCEL'), + ), + TextButton( + onPressed: () => Navigator.of(ctx).pop(true), + style: TextButton.styleFrom(foregroundColor: AppColors.error), + child: const Text('DELETE'), + ), + ], + ), + ); + + if (confirmed == true && mounted) { + try { + await ref.read(studentMutationProvider.notifier).deleteStudent(student.id); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Student deleted successfully.'), + backgroundColor: AppColors.success, + ), + ); + } + } catch (e) { + if (mounted) { + final raw = e.toString(); + final msg = raw.startsWith('Exception: ') ? raw.substring(11) : raw; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(msg), backgroundColor: AppColors.error), + ); + } + } + } + } + + // ---------------------------------------------------------------- + // NAVIGATION HELPERS + // ---------------------------------------------------------------- + void _viewProfile(int studentId) { + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => StudentDetailScreen( + studentId: studentId, + userRole: widget.userRole, + ), + )); + } + + void _openDocumentsFolder(int studentId) { + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => DocumentsScreen( + userRole: widget.userRole, + initialStudentId: studentId, + ), + )); + } + + // ================================================================ + // BUILD + // ================================================================ + @override + Widget build(BuildContext context) { + final query = ref.watch(studentQueryProvider); + final pageAsync = ref.watch(studentPageProvider); + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ── Header + Controls ── + _buildHeaderControls(context, query), + const SizedBox(height: AppSizes.p24), + + // ── Data Table / Cards ── + Expanded( + child: pageAsync.when( + loading: () => const Center( + child: CircularProgressIndicator(color: AppColors.primaryGreen), + ), + error: (err, _) => _buildError(err.toString()), + data: (page) => LayoutBuilder( + builder: (ctx, c) => c.maxWidth > 800 + ? _buildDesktopTable(page.students) + : _buildMobileCardList(page.students), + ), + ), + ), + + // ── Pagination ── + const SizedBox(height: AppSizes.p16), + pageAsync.maybeWhen( + data: (page) => _buildPagination(query, page), + orElse: () => const SizedBox.shrink(), + ), + ], + ), + ), + ), + ); + } + + // ================================================================ + // HEADER + CONTROLS + // ================================================================ + Widget _buildHeaderControls(BuildContext context, StudentQueryParams query) { + final gradeValue = query.gradeLevel.isEmpty ? 'All Grades' : query.gradeLevel; + final statusValue = query.status.isEmpty ? 'All Status' : query.status; + + return LayoutBuilder(builder: (_, c) { + final isDesktop = c.maxWidth > 800; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Title row + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + 'Students Directory', + style: TextStyle( + fontSize: 28, + fontWeight: FontWeight.bold, + color: AppColors.textPrimary, + ), + ), + // Add Student Button + if (widget.userRole != 'teacher') + SizedBox( + width: isDesktop ? 180 : 50, + child: isDesktop + ? PrimaryButton( + label: '+ ADD STUDENT', + onPressed: () => _openModal(), + ) + : ElevatedButton( + onPressed: () => _openModal(), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + padding: const EdgeInsets.all(14), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(AppSizes.radiusMedium), + ), + ), + child: const Icon(Icons.add), + ), + ), + ], + ), + const SizedBox(height: AppSizes.p16), + + // Search + Filters row + Wrap( + spacing: AppSizes.p12, + runSpacing: AppSizes.p12, + children: [ + // Search field + SizedBox( + width: isDesktop ? 300 : double.infinity, + child: TextField( + controller: _searchController, + decoration: InputDecoration( + hintText: 'Search by LRN or name…', + prefixIcon: const Icon(Icons.search, color: AppColors.textSecondary), + filled: true, + fillColor: AppColors.surfaceWhite, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + borderSide: BorderSide(color: Colors.grey.shade300), + ), + suffixIcon: _searchController.text.isNotEmpty + ? IconButton( + icon: const Icon(Icons.close, size: 18), + onPressed: () { + _searchController.clear(); + ref.read(studentQueryProvider.notifier).setSearch(''); + }, + ) + : null, + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), + ), + ), + ), + + // Grade Level filter + _FilterDropdown( + value: gradeValue, + items: _gradeLevels, + icon: Icons.school_outlined, + onChanged: (v) { + ref.read(studentQueryProvider.notifier) + .setGradeLevel(v == 'All Grades' ? '' : v); + }, + ), + + // Status filter + _FilterDropdown( + value: statusValue, + items: _statusItems, + icon: Icons.flag_outlined, + onChanged: (v) { + ref.read(studentQueryProvider.notifier) + .setStatus(v == 'All Status' ? '' : v); + }, + ), + + // Page size selector + _FilterDropdown( + value: '${query.limit} / page', + items: _pageSizes.map((n) => '$n / page').toList(), + icon: Icons.format_list_numbered, + onChanged: (v) { + final n = int.tryParse(v.split(' ').first) ?? 10; + ref.read(studentQueryProvider.notifier).setLimit(n); + }, + ), + ], + ), + ], + ); + }); + } + + // ================================================================ + // DESKTOP DATA TABLE + // ================================================================ + Widget _buildDesktopTable(List students) { + if (students.isEmpty) return _buildEmptyState(); + + return Container( + width: double.infinity, + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.04), + blurRadius: 12, + offset: const Offset(0, 4), + ), + ], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: DataTable( + headingRowColor: WidgetStateProperty.all( + AppColors.primaryGreen.withValues(alpha: 0.06), + ), + dataRowMaxHeight: 56, + columns: const [ + DataColumn(label: Text('LRN', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Name', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Grade & Sec.', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Status', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Missing Docs', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Actions', style: TextStyle(fontWeight: FontWeight.bold))), + ], + rows: students.map((student) { + return DataRow(cells: [ + DataCell(Text(student.lrn, style: const TextStyle(fontWeight: FontWeight.w600))), + DataCell(Text(student.fullName)), + DataCell(Text(student.gradeSection)), + DataCell(_StatusChip(status: student.status)), + DataCell(_MissingDocsBadge(count: student.missingDocumentsCount)), + DataCell(_ActionButtons( + student: student, + userRole: widget.userRole, + onEdit: () => _openModal(student: student), + onDelete: () => _confirmDelete(student), + onViewProfile: () => _viewProfile(student.id), + onOpenDocuments: () => _openDocumentsFolder(student.id), + )), + ]); + }).toList(), + ), + ), + ), + ), + ); + } + + // ================================================================ + // MOBILE CARD LIST + // ================================================================ + Widget _buildMobileCardList(List students) { + if (students.isEmpty) return _buildEmptyState(); + + return ListView.separated( + itemCount: students.length, + separatorBuilder: (ctx, index) => const SizedBox(height: AppSizes.p12), + itemBuilder: (_, i) { + final s = students[i]; + return Container( + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.04), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + s.lrn, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: AppColors.primaryGreen, + ), + ), + _StatusChip(status: s.status), + ], + ), + const SizedBox(height: AppSizes.p8), + Text(s.fullName, style: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold)), + Text(s.gradeSection, style: const TextStyle(color: AppColors.textSecondary)), + const Padding( + padding: EdgeInsets.symmetric(vertical: AppSizes.p12), + child: Divider(height: 1), + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: [ + const Text('Missing Docs: ', style: TextStyle(color: AppColors.textSecondary)), + _MissingDocsBadge(count: s.missingDocumentsCount), + ]), + _ActionButtons( + student: s, + userRole: widget.userRole, + onEdit: () => _openModal(student: s), + onDelete: () => _confirmDelete(s), + onViewProfile: () => _viewProfile(s.id), + onOpenDocuments: () => _openDocumentsFolder(s.id), + ), + ], + ), + ], + ), + ); + }, + ); + } + + // ================================================================ + // PAGINATION CONTROLS + // ================================================================ + Widget _buildPagination(StudentQueryParams query, dynamic page) { + final total = page.total as int; + final totalPages = page.totalPages as int; + final current = query.page; + + final from = total == 0 ? 0 : ((current - 1) * query.limit) + 1; + final to = (current * query.limit).clamp(0, total); + + return Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + 'Showing $from–$to of $total', + style: const TextStyle(color: AppColors.textSecondary, fontSize: 13), + ), + const SizedBox(width: AppSizes.p12), + + // First page + _PaginationButton( + icon: Icons.first_page, + enabled: current > 1, + onTap: () => ref.read(studentQueryProvider.notifier).setPage(1), + ), + // Prev + _PaginationButton( + icon: Icons.chevron_left, + enabled: current > 1, + onTap: () => ref.read(studentQueryProvider.notifier).setPage(current - 1), + ), + + // Page number chips + ...List.generate(totalPages, (i) => i + 1) + .where((p) => (p - current).abs() <= 2) + .map((p) => _PageChip( + page: p, + current: current, + onTap: () => ref.read(studentQueryProvider.notifier).setPage(p), + )), + + // Next + _PaginationButton( + icon: Icons.chevron_right, + enabled: current < totalPages, + onTap: () => ref.read(studentQueryProvider.notifier).setPage(current + 1), + ), + // Last page + _PaginationButton( + icon: Icons.last_page, + enabled: current < totalPages, + onTap: () => ref.read(studentQueryProvider.notifier).setPage(totalPages), + ), + ], + ); + } + + Widget _buildEmptyState() { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.people_outline, size: 64, color: Colors.grey.shade300), + const SizedBox(height: 16), + Text( + 'No students found.', + style: TextStyle(color: AppColors.textSecondary, fontSize: 16), + ), + const SizedBox(height: 8), + Text( + 'Try adjusting your search or filters.', + style: TextStyle(color: AppColors.textMuted, fontSize: 13), + ), + ], + ), + ); + } + + Widget _buildError(String message) { + final clean = message.startsWith('Exception: ') ? message.substring(11) : message; + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.wifi_off_rounded, size: 56, color: AppColors.error), + const SizedBox(height: 16), + Text( + clean, + textAlign: TextAlign.center, + style: const TextStyle(color: AppColors.error), + ), + const SizedBox(height: 16), + ElevatedButton.icon( + icon: const Icon(Icons.refresh), + label: const Text('Retry'), + onPressed: () => ref.invalidate(studentPageProvider), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + ), + ), + ], + ), + ); + } +} + +// ================================================================ +// EXTRACTED COMPONENTS +// ================================================================ + +class _FilterDropdown extends StatelessWidget { + final String value; + final List items; + final IconData icon; + final ValueChanged onChanged; + + const _FilterDropdown({ + required this.value, + required this.items, + required this.icon, + required this.onChanged, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 12), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade300), + ), + child: DropdownButtonHideUnderline( + child: DropdownButton( + value: value, + icon: const Icon(Icons.expand_more, size: 18), + isDense: true, + items: items.map((i) => DropdownMenuItem(value: i, child: Text(i, style: const TextStyle(fontSize: 13)))).toList(), + onChanged: (v) => onChanged(v!), + ), + ), + ); + } +} + +class _StatusChip extends StatelessWidget { + final String status; + const _StatusChip({required this.status}); + + Color get _bg { + return switch (status) { + 'Enrolled' => AppColors.primaryGreen.withValues(alpha: 0.10), + 'Graduated' => Colors.blue.withValues(alpha: 0.10), + 'Transferred Out' => Colors.orange.withValues(alpha: 0.10), + 'Dropped' => Colors.red.withValues(alpha: 0.10), + _ => Colors.grey.shade200, + }; + } + + Color get _text { + return switch (status) { + 'Enrolled' => AppColors.primaryGreen, + 'Graduated' => Colors.blue.shade700, + 'Transferred Out' => Colors.orange.shade800, + 'Dropped' => Colors.red.shade700, + _ => Colors.grey.shade700, + }; + } + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration(color: _bg, borderRadius: BorderRadius.circular(20)), + child: Text(status, style: TextStyle(color: _text, fontWeight: FontWeight.w600, fontSize: 12)), + ); + } +} + +class _MissingDocsBadge extends StatelessWidget { + final int count; + const _MissingDocsBadge({required this.count}); + + @override + Widget build(BuildContext context) { + if (count == 0) return const Icon(Icons.check_circle, color: AppColors.primaryGreen, size: 22); + return Container( + padding: const EdgeInsets.all(6), + decoration: const BoxDecoration(color: AppColors.error, shape: BoxShape.circle), + child: Text( + count > 99 ? '99+' : count.toString(), + style: const TextStyle(color: Colors.white, fontSize: 11, fontWeight: FontWeight.bold), + ), + ); + } +} + +class _ActionButtons extends StatelessWidget { + final StudentModel student; + final String userRole; + final VoidCallback onEdit; + final VoidCallback onDelete; + final VoidCallback onViewProfile; + final VoidCallback onOpenDocuments; + + const _ActionButtons({ + required this.student, + required this.userRole, + required this.onEdit, + required this.onDelete, + required this.onViewProfile, + required this.onOpenDocuments, + }); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Tooltip( + message: 'View Profile', + child: IconButton( + icon: const Icon(Icons.person_outline, color: AppColors.primaryGreen), + onPressed: onViewProfile, + ), + ), + Tooltip( + message: 'Open Documents Folder', + child: IconButton( + icon: const Icon(Icons.folder_open, color: Colors.orange), + onPressed: onOpenDocuments, + ), + ), + if (userRole != 'teacher') ...[ + Tooltip( + message: 'Edit Student', + child: IconButton( + icon: const Icon(Icons.edit_outlined, color: Colors.blueAccent), + onPressed: onEdit, + ), + ), + Tooltip( + message: 'Delete Student', + child: IconButton( + icon: const Icon(Icons.delete_outline, color: AppColors.error), + onPressed: onDelete, + ), + ), + ], + ], + ); + } +} + +class _PaginationButton extends StatelessWidget { + final IconData icon; + final bool enabled; + final VoidCallback onTap; + const _PaginationButton({required this.icon, required this.enabled, required this.onTap}); + + @override + Widget build(BuildContext context) { + return IconButton( + icon: Icon(icon, size: 20, color: enabled ? AppColors.primaryGreen : Colors.grey.shade300), + onPressed: enabled ? onTap : null, + ); + } +} + +class _PageChip extends StatelessWidget { + final int page; + final int current; + final VoidCallback onTap; + const _PageChip({required this.page, required this.current, required this.onTap}); + + @override + Widget build(BuildContext context) { + final isActive = page == current; + return GestureDetector( + onTap: onTap, + child: Container( + width: 34, + height: 34, + margin: const EdgeInsets.symmetric(horizontal: 2), + decoration: BoxDecoration( + color: isActive ? AppColors.primaryGreen : Colors.transparent, + borderRadius: BorderRadius.circular(8), + border: isActive ? null : Border.all(color: Colors.grey.shade300), + ), + child: Center( + child: Text( + '$page', + style: TextStyle( + fontSize: 13, + fontWeight: FontWeight.w600, + color: isActive ? Colors.white : AppColors.textSecondary, + ), + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/students/widgets/add_edit_student_modal.dart b/frontend/lib/ui/screens/students/widgets/add_edit_student_modal.dart new file mode 100644 index 0000000..228a0cc --- /dev/null +++ b/frontend/lib/ui/screens/students/widgets/add_edit_student_modal.dart @@ -0,0 +1,460 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../../core/constants/app_colors.dart'; +import '../../../../core/constants/app_sizes.dart'; +import '../../../../domain/entities/student_model.dart'; + +import '../../../shared/buttons/primary_button.dart'; +import '../../../providers/student_provider.dart'; + +class AddEditStudentModal extends ConsumerStatefulWidget { + final StudentModel? student; // null → Add mode, non-null → Edit mode + + const AddEditStudentModal({super.key, this.student}); + + @override + ConsumerState createState() => _AddEditStudentModalState(); +} + +class _AddEditStudentModalState extends ConsumerState { + final _formKey = GlobalKey(); + + late TextEditingController _lrnController; + late TextEditingController _firstNameController; + late TextEditingController _middleNameController; + late TextEditingController _lastNameController; + late TextEditingController _extController; + + String _selectedSex = 'Male'; + String _selectedStatus = 'Enrolled'; + DateTime? _selectedDob; + bool _isLoading = false; + String? _errorMessage; + + static const _statuses = ['Enrolled', 'Graduated', 'Transferred Out', 'Dropped']; + + @override + void initState() { + super.initState(); + final s = widget.student; + _lrnController = TextEditingController(text: s?.lrn ?? ''); + _firstNameController = TextEditingController(text: s?.firstName ?? ''); + _middleNameController = TextEditingController(text: s?.middleName ?? ''); + _lastNameController = TextEditingController(text: s?.lastName ?? ''); + _extController = TextEditingController(text: s?.extension ?? ''); + if (s != null) { + _selectedSex = s.sex; + _selectedDob = s.birthDate; + _selectedStatus = s.status; + } + } + + @override + void dispose() { + _lrnController.dispose(); + _firstNameController.dispose(); + _middleNameController.dispose(); + _lastNameController.dispose(); + _extController.dispose(); + super.dispose(); + } + + // ---------------------------------------------------------------- + // VALIDATION HELPERS + // ---------------------------------------------------------------- + String? _validateLRN(String? value) { + if (value == null || value.trim().isEmpty) return 'LRN is required.'; + if (!RegExp(r'^\d{12}$').hasMatch(value.trim())) { + return 'LRN must be exactly 12 digits (numbers only).'; + } + return null; + } + + String? _validateRequired(String? value, String fieldName) { + if (value == null || value.trim().isEmpty) return '$fieldName is required.'; + if (value.trim().length < 2) return '$fieldName must be at least 2 characters.'; + return null; + } + + Future _selectDate() async { + final picked = await showDatePicker( + context: context, + initialDate: _selectedDob ?? DateTime(2010), + firstDate: DateTime(1980), + lastDate: DateTime.now(), + builder: (ctx, child) => Theme( + data: Theme.of(ctx).copyWith( + colorScheme: const ColorScheme.light( + primary: AppColors.primaryGreen, + onPrimary: Colors.white, + onSurface: AppColors.textPrimary, + ), + ), + child: child!, + ), + ); + if (picked != null) setState(() => _selectedDob = picked); + } + + // ---------------------------------------------------------------- + // SUBMIT + // ---------------------------------------------------------------- + Future _handleSave() async { + setState(() => _errorMessage = null); + + // 1. Form validation + if (!_formKey.currentState!.validate()) return; + + // 2. DOB required check + if (_selectedDob == null) { + setState(() => _errorMessage = 'Please select a Date of Birth.'); + return; + } + + setState(() => _isLoading = true); + + try { + final notifier = ref.read(studentMutationProvider.notifier); + + if (widget.student == null) { + // ---- CREATE ---- + await notifier.createStudent( + lrn: _lrnController.text.trim(), + firstName: _firstNameController.text.trim(), + middleName: _middleNameController.text.trim().isEmpty + ? null + : _middleNameController.text.trim(), + lastName: _lastNameController.text.trim(), + extension: _extController.text.trim().isEmpty + ? null + : _extController.text.trim(), + sex: _selectedSex, + birthDate: _selectedDob!, + ); + } else { + // ---- UPDATE ---- + await notifier.updateStudent( + id: widget.student!.id, + lrn: _lrnController.text.trim(), + firstName: _firstNameController.text.trim(), + middleName: _middleNameController.text.trim().isEmpty + ? null + : _middleNameController.text.trim(), + lastName: _lastNameController.text.trim(), + extension: _extController.text.trim().isEmpty + ? null + : _extController.text.trim(), + sex: _selectedSex, + birthDate: _selectedDob!, + status: _selectedStatus, + ); + } + + if (!mounted) return; + Navigator.of(context).pop(true); + _showSuccessSnack(); + } catch (e) { + if (!mounted) return; + // Extract clean message from "Exception: ..." string + final raw = e.toString(); + final msg = raw.startsWith('Exception: ') ? raw.substring(11) : raw; + setState(() { + _isLoading = false; + _errorMessage = msg; + }); + } + } + + void _showSuccessSnack() { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + widget.student == null + ? 'Student added successfully!' + : 'Student updated successfully!', + ), + backgroundColor: AppColors.success, + ), + ); + } + + // ---------------------------------------------------------------- + // BUILD + // ---------------------------------------------------------------- + @override + Widget build(BuildContext context) { + final isEdit = widget.student != null; + + return Dialog( + backgroundColor: AppColors.surfaceWhite, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + ), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 620), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // ---- Header ---- + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + isEdit ? 'Update Student Record' : 'Add New Student', + style: const TextStyle( + fontSize: 22, + fontWeight: FontWeight.bold, + color: AppColors.primaryGreen, + ), + ), + IconButton( + icon: const Icon(Icons.close, color: AppColors.textSecondary), + onPressed: () => Navigator.of(context).pop(), + ), + ], + ), + const Divider(height: 32), + + // ---- Error Banner ---- + if (_errorMessage != null) ...[ + _ErrorBanner(message: _errorMessage!), + const SizedBox(height: AppSizes.p16), + ], + + // ---- LRN ---- + TextFormField( + controller: _lrnController, + keyboardType: TextInputType.number, + maxLength: 12, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], + validator: _validateLRN, + decoration: const InputDecoration( + labelText: 'LRN (Learner Reference Number)', + hintText: '12-digit number', + prefixIcon: Icon(Icons.pin_outlined), + counterText: '', + ), + ), + const SizedBox(height: AppSizes.p16), + + // ---- Name fields ---- + LayoutBuilder(builder: (ctx, c) { + final wide = c.maxWidth > 400; + if (wide) { + return Column(children: [ + Row(children: [ + Expanded( + child: TextFormField( + controller: _firstNameController, + validator: (v) => _validateRequired(v, 'First name'), + decoration: const InputDecoration( + labelText: 'First Name', + prefixIcon: Icon(Icons.badge_outlined), + ), + ), + ), + const SizedBox(width: AppSizes.p16), + Expanded( + child: TextFormField( + controller: _middleNameController, + decoration: const InputDecoration( + labelText: 'Middle Name (optional)', + prefixIcon: Icon(Icons.badge_outlined), + ), + ), + ), + ]), + const SizedBox(height: AppSizes.p16), + Row(children: [ + Expanded( + flex: 3, + child: TextFormField( + controller: _lastNameController, + validator: (v) => _validateRequired(v, 'Last name'), + decoration: const InputDecoration( + labelText: 'Last Name', + prefixIcon: Icon(Icons.badge_outlined), + ), + ), + ), + const SizedBox(width: AppSizes.p16), + Expanded( + flex: 1, + child: TextFormField( + controller: _extController, + decoration: const InputDecoration( + labelText: 'Ext.', + hintText: 'Jr / III', + prefixIcon: Icon(Icons.text_format), + ), + ), + ), + ]), + ]); + } else { + return Column(children: [ + TextFormField( + controller: _firstNameController, + validator: (v) => _validateRequired(v, 'First name'), + decoration: const InputDecoration(labelText: 'First Name'), + ), + const SizedBox(height: AppSizes.p12), + TextFormField( + controller: _middleNameController, + decoration: const InputDecoration(labelText: 'Middle Name'), + ), + const SizedBox(height: AppSizes.p12), + TextFormField( + controller: _lastNameController, + validator: (v) => _validateRequired(v, 'Last name'), + decoration: const InputDecoration(labelText: 'Last Name'), + ), + const SizedBox(height: AppSizes.p12), + TextFormField( + controller: _extController, + decoration: const InputDecoration(labelText: 'Extension (Jr / III)'), + ), + ]); + } + }), + const SizedBox(height: AppSizes.p16), + + // ---- Sex + DOB ---- + Row(children: [ + Expanded( + child: DropdownButtonFormField( + initialValue: _selectedSex, + validator: (v) => v == null ? 'Please select sex.' : null, + decoration: const InputDecoration( + labelText: 'Sex', + prefixIcon: Icon(Icons.wc), + ), + items: ['Male', 'Female'] + .map((s) => DropdownMenuItem(value: s, child: Text(s))) + .toList(), + onChanged: (v) => setState(() => _selectedSex = v!), + ), + ), + const SizedBox(width: AppSizes.p16), + Expanded( + child: GestureDetector( + onTap: _selectDate, + child: InputDecorator( + decoration: InputDecoration( + labelText: 'Date of Birth', + prefixIcon: const Icon(Icons.calendar_today, color: AppColors.textSecondary), + errorText: (_isLoading == false && _errorMessage != null && _selectedDob == null) + ? '' : null, + ), + child: Text( + _selectedDob == null + ? 'Select date…' + : '${_selectedDob!.year}-' + '${_selectedDob!.month.toString().padLeft(2, '0')}-' + '${_selectedDob!.day.toString().padLeft(2, '0')}', + style: TextStyle( + color: _selectedDob == null + ? AppColors.textMuted + : AppColors.textPrimary, + fontSize: 16, + ), + ), + ), + ), + ), + ]), + const SizedBox(height: AppSizes.p16), + + // ---- Status (edit only) ---- + if (isEdit) ...[ + DropdownButtonFormField( + initialValue: _selectedStatus, + decoration: const InputDecoration( + labelText: 'Status', + prefixIcon: Icon(Icons.info_outline), + ), + items: _statuses + .map((s) => DropdownMenuItem(value: s, child: Text(s))) + .toList(), + onChanged: (v) => setState(() => _selectedStatus = v!), + ), + const SizedBox(height: AppSizes.p16), + ], + + const SizedBox(height: AppSizes.p16), + + // ---- Actions ---- + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: _isLoading ? null : () => Navigator.of(context).pop(), + child: const Text( + 'CANCEL', + style: TextStyle( + color: AppColors.textSecondary, + fontWeight: FontWeight.bold, + ), + ), + ), + const SizedBox(width: AppSizes.p16), + SizedBox( + width: 180, + child: PrimaryButton( + label: isEdit ? 'UPDATE RECORD' : 'SAVE STUDENT', + isLoading: _isLoading, + onPressed: _handleSave, + ), + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +/// A clean inline error banner +class _ErrorBanner extends StatelessWidget { + final String message; + const _ErrorBanner({required this.message}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + color: AppColors.error.withValues(alpha: 0.08), + border: Border.all(color: AppColors.error.withValues(alpha: 0.4)), + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Icon(Icons.error_outline, color: AppColors.error, size: 20), + const SizedBox(width: 8), + Expanded( + child: Text( + message, + style: const TextStyle( + color: AppColors.error, + fontSize: 14, + ), + ), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/users/users_screen.dart b/frontend/lib/ui/screens/users/users_screen.dart new file mode 100644 index 0000000..4e8153f --- /dev/null +++ b/frontend/lib/ui/screens/users/users_screen.dart @@ -0,0 +1,851 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../../../core/constants/app_colors.dart'; +import '../../../core/constants/app_sizes.dart'; +import '../../../domain/entities/system_user.dart'; +import '../../shared/inputs/custom_text_field.dart'; +import '../../shared/buttons/primary_button.dart'; +import '../../providers/users_provider.dart'; +import '../../providers/auth_provider.dart'; + +class UsersScreen extends ConsumerStatefulWidget { + const UsersScreen({super.key}); + + @override + ConsumerState createState() => _UsersScreenState(); +} + +class _UsersScreenState extends ConsumerState { + final TextEditingController _searchController = TextEditingController(); + String _searchQuery = ''; + String _roleFilter = 'all'; // 'all', 'super_admin', 'admin', 'teacher' + + @override + void initState() { + super.initState(); + _searchController.addListener(() { + setState(() => _searchQuery = _searchController.text.toLowerCase()); + }); + } + + @override + void dispose() { + _searchController.dispose(); + super.dispose(); + } + + List _filter(List users) { + var result = users; + // Apply role filter first + if (_roleFilter != 'all') { + result = result.where((u) => u.role == _roleFilter).toList(); + } + // Then apply search filter + if (_searchQuery.isNotEmpty) { + result = result.where((u) => + u.username.toLowerCase().contains(_searchQuery) || + u.fullName.toLowerCase().contains(_searchQuery) || + u.role.toLowerCase().contains(_searchQuery) + ).toList(); + } + return result; + } + + Future _handleRefresh() async { + await ref.read(usersProvider.notifier).refresh(); + } + + Future _confirmResetPassword(SystemUser user) async { + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + title: const Row(children: [ + Icon(Icons.lock_reset, color: Colors.orange), + SizedBox(width: 8), + Text('Reset Password'), + ]), + content: Text( + 'Reset the password for "${user.username}"?\n\nTheir new password will be: changeme123', + ), + actions: [ + TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('CANCEL')), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: Colors.orange, foregroundColor: Colors.white), + onPressed: () => Navigator.pop(ctx, true), + child: const Text('RESET'), + ), + ], + ), + ); + if (confirmed != true || !mounted) return; + + try { + await ref.read(usersProvider.notifier).resetPassword(user.id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Password for "${user.username}" reset to "changeme123".'), backgroundColor: AppColors.success), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Error: $e'), backgroundColor: Colors.red), + ); + } + } + + Future _confirmDelete(SystemUser user) async { + final confirmed = await showDialog( + context: context, + builder: (ctx) => AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + title: const Row(children: [ + Icon(Icons.delete_outline, color: Colors.red), + SizedBox(width: 8), + Text('Delete User'), + ]), + content: Text('Are you sure you want to permanently delete "${user.username}"? This action cannot be undone.'), + actions: [ + TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('CANCEL')), + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: Colors.red, foregroundColor: Colors.white), + onPressed: () => Navigator.pop(ctx, true), + child: const Text('DELETE'), + ), + ], + ), + ); + if (confirmed != true || !mounted) return; + + try { + await ref.read(usersProvider.notifier).deleteUser(user.id); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('User "${user.username}" deleted.'), backgroundColor: AppColors.success), + ); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Error: $e'), backgroundColor: Colors.red), + ); + } + } + + void _openModal({SystemUser? user}) { + showDialog( + context: context, + builder: (ctx) => AddEditUserModal(user: user), + ); + } + + @override + Widget build(BuildContext context) { + final usersAsync = ref.watch(usersProvider); + + return Scaffold( + backgroundColor: Colors.transparent, + body: SafeArea( + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(context), + const SizedBox(height: AppSizes.p16), + // Reset requests panel (super_admin only) + _buildResetRequestsPanel(), + const SizedBox(height: AppSizes.p8), + Expanded( + child: usersAsync.when( + loading: () => const Center(child: CircularProgressIndicator()), + error: (err, _) => Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.error_outline, color: Colors.red, size: 48), + const SizedBox(height: 16), + Text('$err', style: const TextStyle(color: Colors.red)), + const SizedBox(height: 16), + ElevatedButton.icon( + onPressed: _handleRefresh, + icon: const Icon(Icons.refresh), + label: const Text('Retry'), + ), + ], + ), + ), + data: (users) { + final filtered = _filter(users); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Role filter chips + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + _buildFilterChip('All', 'all', users.length, Colors.grey), + const SizedBox(width: 8), + _buildFilterChip('Super Admin', 'super_admin', + users.where((u) => u.role == 'super_admin').length, Colors.purple), + const SizedBox(width: 8), + _buildFilterChip('Admin', 'admin', + users.where((u) => u.role == 'admin').length, Colors.blue), + const SizedBox(width: 8), + _buildFilterChip('Teacher', 'teacher', + users.where((u) => u.role == 'teacher').length, AppColors.primaryGreen), + ], + ), + ), + const SizedBox(height: AppSizes.p16), + Expanded( + child: RefreshIndicator( + onRefresh: _handleRefresh, + child: LayoutBuilder( + builder: (context, constraints) { + if (constraints.maxWidth > 800) { + return _buildDesktopTable(filtered); + } else { + return _buildMobileList(filtered); + } + }, + ), + ), + ), + ], + ); + }, + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildResetRequestsPanel() { + final requestsAsync = ref.watch(resetRequestsProvider); + final currentUser = ref.watch(authProvider).value; + if (currentUser?.role != 'super_admin') return const SizedBox.shrink(); + + return requestsAsync.when( + loading: () => const SizedBox.shrink(), + error: (_, __) => const SizedBox.shrink(), + data: (requests) { + if (requests.isEmpty) return const SizedBox.shrink(); + return Container( + margin: const EdgeInsets.only(bottom: AppSizes.p8), + decoration: BoxDecoration( + color: Colors.orange.shade50, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + border: Border.all(color: Colors.orange.shade200), + ), + child: ExpansionTile( + leading: const Icon(Icons.lock_clock, color: Colors.orange), + title: Text( + '${requests.length} Pending Password Reset Request${requests.length > 1 ? 's' : ''}', + style: const TextStyle(fontWeight: FontWeight.bold, color: Colors.orange), + ), + children: requests.map((req) { + return ListTile( + title: Text('${req['first_name']} ${req['last_name']} (@${req['username']})'), + subtitle: Text('Role: ${(req['role'] as String).toUpperCase().replaceAll('_', ' ')} • Requested: ${(req['requested_at'] as String).split('T').first}'), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + TextButton.icon( + icon: const Icon(Icons.check_circle, color: AppColors.success), + label: const Text('Approve', style: TextStyle(color: AppColors.success)), + onPressed: () async { + try { + final repo = ref.read(authRepositoryProvider); + await repo.approveResetRequest(req['id'] as int); + ref.invalidate(resetRequestsProvider); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Password reset approved.'), backgroundColor: AppColors.success, + )); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('$e'), backgroundColor: Colors.red)); + } + }, + ), + TextButton.icon( + icon: const Icon(Icons.cancel, color: Colors.red), + label: const Text('Reject', style: TextStyle(color: Colors.red)), + onPressed: () async { + try { + final repo = ref.read(authRepositoryProvider); + await repo.rejectResetRequest(req['id'] as int); + ref.invalidate(resetRequestsProvider); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('Request rejected.'), backgroundColor: Colors.grey, + )); + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('$e'), backgroundColor: Colors.red)); + } + }, + ), + ], + ), + ); + }).toList(), + ), + ); + }, + ); + } + + Widget _buildHeader(BuildContext context) { + final isDesktop = MediaQuery.of(context).size.width > 800; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('User Management', + style: TextStyle(fontSize: 28, fontWeight: FontWeight.bold, color: AppColors.textPrimary)), + const SizedBox(height: 4), + const Text('Manage system accounts and access roles.', + style: TextStyle(fontSize: 14, color: AppColors.textSecondary)), + const SizedBox(height: AppSizes.p16), + Row( + children: [ + Expanded( + flex: 2, + child: CustomTextField( + hintText: 'Search by username, name or role...', + prefixIcon: Icons.search, + controller: _searchController, + ), + ), + const SizedBox(width: AppSizes.p16), + SizedBox( + width: isDesktop ? 180 : 50, + child: isDesktop + ? PrimaryButton(label: '+ NEW USER', onPressed: () => _openModal()) + : ElevatedButton( + onPressed: () => _openModal(), + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.primaryGreen, + foregroundColor: Colors.white, + padding: const EdgeInsets.all(14), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusMedium)), + ), + child: const Icon(Icons.add), + ), + ), + ], + ), + ], + ); + } + + Widget _buildFilterChip(String label, String filterKey, int count, Color color) { + final isActive = _roleFilter == filterKey; + return GestureDetector( + onTap: () => setState(() => _roleFilter = filterKey), + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 7), + decoration: BoxDecoration( + color: isActive ? color : color.withValues(alpha: 0.08), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: isActive ? color : color.withValues(alpha: 0.3), width: isActive ? 2 : 1), + boxShadow: isActive ? [BoxShadow(color: color.withValues(alpha: 0.3), blurRadius: 6, offset: const Offset(0, 2))] : [], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (isActive) ...[ + Icon(Icons.check, color: Colors.white, size: 13), + const SizedBox(width: 4), + ], + Text( + '$label ($count)', + style: TextStyle( + color: isActive ? Colors.white : color, + fontWeight: FontWeight.w700, + fontSize: 12, + ), + ), + ], + ), + ), + ); + } + + Widget _buildDesktopTable(List users) { + return Container( + width: double.infinity, + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 10, offset: const Offset(0, 4))], + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + child: SingleChildScrollView( + child: DataTable( + headingRowColor: WidgetStateProperty.all(AppColors.primaryGreen.withValues(alpha: 0.05)), + columnSpacing: 24, + columns: const [ + DataColumn(label: Text('User', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Username', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Access Role', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Contact', style: TextStyle(fontWeight: FontWeight.bold))), + DataColumn(label: Text('Actions', style: TextStyle(fontWeight: FontWeight.bold))), + ], + rows: users.isEmpty + ? [const DataRow(cells: [ + DataCell(Text('No users found.')), DataCell(Text('')), + DataCell(Text('')), DataCell(Text('')), DataCell(Text('')), + ])] + : users.map((user) => DataRow(cells: [ + DataCell(Row(children: [ + CircleAvatar( + radius: 16, + backgroundColor: _roleColor(user.role).withValues(alpha: 0.15), + child: Text(user.initials, style: TextStyle(fontSize: 11, fontWeight: FontWeight.bold, color: _roleColor(user.role))), + ), + const SizedBox(width: 10), + Text(user.fullName, style: const TextStyle(fontWeight: FontWeight.w600)), + ])), + DataCell(Text('@${user.username}', style: const TextStyle(color: AppColors.textSecondary))), + DataCell(_buildRoleChip(user.role)), + DataCell(Text(user.email ?? user.phone ?? '—', style: const TextStyle(color: AppColors.textSecondary, fontSize: 13))), + DataCell(_buildActions(user)), + ])).toList(), + ), + ), + ), + ); + } + + Widget _buildMobileList(List users) { + if (users.isEmpty) { + return const Center(child: Text('No users found.', style: TextStyle(color: AppColors.textSecondary))); + } + return ListView.separated( + itemCount: users.length, + separatorBuilder: (_, __) => const SizedBox(height: AppSizes.p12), + itemBuilder: (context, index) { + final user = users[index]; + return Container( + padding: const EdgeInsets.all(AppSizes.p16), + decoration: BoxDecoration( + color: AppColors.surfaceWhite, + borderRadius: BorderRadius.circular(AppSizes.radiusLarge), + boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 8)], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + CircleAvatar( + radius: 20, + backgroundColor: _roleColor(user.role).withValues(alpha: 0.15), + child: Text(user.initials, style: TextStyle(fontWeight: FontWeight.bold, color: _roleColor(user.role))), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(user.fullName, style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 15)), + Text('@${user.username}', style: const TextStyle(color: AppColors.textSecondary, fontSize: 13)), + ], + ), + ), + _buildRoleChip(user.role), + ], + ), + if (user.email != null || user.phone != null) ...[ + const SizedBox(height: 8), + Text( + [if (user.email != null) user.email!, if (user.phone != null) user.phone!].join(' · '), + style: const TextStyle(fontSize: 12, color: AppColors.textSecondary), + ), + ], + const Divider(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [_buildActions(user)], + ), + ], + ), + ); + }, + ); + } + + Widget _buildRoleChip(String role) { + final color = _roleColor(role); + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), + decoration: BoxDecoration(color: color.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(20)), + child: Text(role.toUpperCase().replaceAll('_', ' '), + style: TextStyle(color: color, fontWeight: FontWeight.bold, fontSize: 11)), + ); + } + + Color _roleColor(String role) { + if (role == 'super_admin') return Colors.purple; + if (role == 'admin') return Colors.blue; + return AppColors.primaryGreen; + } + + Widget _buildActions(SystemUser user) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon(Icons.lock_reset, color: Colors.orange), + tooltip: 'Reset Password to "changeme123"', + onPressed: () => _confirmResetPassword(user), + ), + IconButton( + icon: const Icon(Icons.edit, color: AppColors.primaryGreen), + tooltip: 'Edit User', + onPressed: () => _openModal(user: user), + ), + if (user.role != 'super_admin') + IconButton( + icon: const Icon(Icons.delete_outline, color: Colors.red), + tooltip: 'Delete User', + onPressed: () => _confirmDelete(user), + ), + ], + ); + } +} + +// ============================================================ +// ADD / EDIT MODAL (moved inline for clean imports) +// ============================================================ +class AddEditUserModal extends ConsumerStatefulWidget { + final SystemUser? user; + const AddEditUserModal({super.key, this.user}); + + @override + ConsumerState createState() => _AddEditUserModalState(); +} + +class _AddEditUserModalState extends ConsumerState { + final _formKey = GlobalKey(); + late TextEditingController _usernameCtrl; + late TextEditingController _firstNameCtrl; + late TextEditingController _middleNameCtrl; + late TextEditingController _lastNameCtrl; + late TextEditingController _extCtrl; + late TextEditingController _emailCtrl; + late TextEditingController _phoneCtrl; + String _selectedRole = 'teacher'; + bool _isLoading = false; + + bool get _isEdit => widget.user != null; + + @override + void initState() { + super.initState(); + final u = widget.user; + _usernameCtrl = TextEditingController(text: u?.username ?? ''); + _firstNameCtrl = TextEditingController(text: u?.firstName ?? ''); + _middleNameCtrl = TextEditingController(text: u?.middleName ?? ''); + _lastNameCtrl = TextEditingController(text: u?.lastName ?? ''); + _extCtrl = TextEditingController(text: u?.extension ?? ''); + _emailCtrl = TextEditingController(text: u?.email ?? ''); + _phoneCtrl = TextEditingController(text: u?.phone ?? ''); + if (u != null) _selectedRole = u.role; + } + + @override + void dispose() { + for (final c in [_usernameCtrl, _firstNameCtrl, _middleNameCtrl, _lastNameCtrl, _extCtrl, _emailCtrl, _phoneCtrl]) { + c.dispose(); + } + super.dispose(); + } + + Future _handleSave() async { + if (!_formKey.currentState!.validate()) return; + setState(() => _isLoading = true); + + try { + final notifier = ref.read(usersProvider.notifier); + if (_isEdit) { + await notifier.updateUser( + id: widget.user!.id, + firstName: _firstNameCtrl.text.trim(), + middleName: _middleNameCtrl.text.trim(), + lastName: _lastNameCtrl.text.trim(), + extension: _extCtrl.text.trim(), + role: _selectedRole, + email: _emailCtrl.text.trim(), + phone: _phoneCtrl.text.trim(), + ); + if (!mounted) return; + Navigator.of(context).pop(); + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: Text('User updated successfully!'), + backgroundColor: AppColors.success, + )); + } else { + // Create — backend auto-generates a temporary password + final username = _usernameCtrl.text.trim(); + final tempPassword = await notifier.createUser( + username: username, + firstName: _firstNameCtrl.text.trim(), + middleName: _middleNameCtrl.text.trim(), + lastName: _lastNameCtrl.text.trim(), + extension: _extCtrl.text.trim(), + role: _selectedRole, + email: _emailCtrl.text.trim(), + phone: _phoneCtrl.text.trim(), + ); + if (!mounted) return; + // Close create modal first + Navigator.of(context).pop(); + // Show one-time credentials dialog + _showCredentialsDialog(context, username: username, tempPassword: tempPassword); + } + } catch (e) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text('Error: ${e.toString().replaceAll('Exception: ', '')}'), + backgroundColor: Colors.red, + )); + } finally { + if (mounted) setState(() => _isLoading = false); + } + } + + void _showCredentialsDialog(BuildContext ctx, {required String username, required String tempPassword}) { + bool copied = false; + showDialog( + context: ctx, + barrierDismissible: false, // Must explicitly dismiss + builder: (dialogCtx) => StatefulBuilder( + builder: (dialogCtx, setDialogState) => AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + icon: const Icon(Icons.check_circle, color: AppColors.success, size: 48), + title: const Text('User Created!', textAlign: TextAlign.center, style: TextStyle(fontWeight: FontWeight.bold)), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + '⚠️ Copy and share these credentials now. The temporary password will not be shown again.', + style: TextStyle(fontSize: 13, color: Colors.orange, fontWeight: FontWeight.w600), + textAlign: TextAlign.center, + ), + const SizedBox(height: 20), + _credentialRow('Username', username), + const SizedBox(height: 10), + _credentialRow('Temp. Password', tempPassword, highlight: true), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: OutlinedButton.icon( + icon: Icon(copied ? Icons.check : Icons.copy, size: 18), + label: Text(copied ? 'Copied!' : 'Copy Credentials'), + style: OutlinedButton.styleFrom( + foregroundColor: copied ? AppColors.success : AppColors.primaryGreen, + side: BorderSide(color: copied ? AppColors.success : AppColors.primaryGreen), + ), + onPressed: () { + Clipboard.setData(ClipboardData( + text: 'Username: $username\nTemporary Password: $tempPassword', + )); + setDialogState(() => copied = true); + }, + ), + ), + ], + ), + actions: [ + ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: AppColors.primaryGreen, foregroundColor: Colors.white), + onPressed: () => Navigator.of(dialogCtx).pop(), + child: const Text('DONE'), + ), + ], + ), + ), + ); + } + + Widget _credentialRow(String label, String value, {bool highlight = false}) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10), + decoration: BoxDecoration( + color: highlight ? AppColors.primaryGreen.withValues(alpha: 0.07) : Colors.grey.shade50, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: highlight ? AppColors.primaryGreen.withValues(alpha: 0.3) : Colors.grey.shade200), + ), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, style: const TextStyle(fontSize: 11, color: Colors.grey, fontWeight: FontWeight.w500)), + const SizedBox(height: 2), + Text(value, style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold, color: highlight ? AppColors.primaryGreen : AppColors.textPrimary, letterSpacing: 0.5)), + ], + ), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return Dialog( + backgroundColor: AppColors.surfaceWhite, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppSizes.radiusLarge)), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 560), + child: Padding( + padding: const EdgeInsets.all(AppSizes.p24), + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: [ + Icon(_isEdit ? Icons.edit : Icons.person_add, color: AppColors.primaryGreen), + const SizedBox(width: 8), + Text( + _isEdit ? 'Edit System User' : 'Create New User', + style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: AppColors.textPrimary), + ), + ]), + IconButton(icon: const Icon(Icons.close), onPressed: () => Navigator.of(context).pop()), + ], + ), + const Divider(height: 28), + + // Name row + Row(children: [ + Expanded(child: _field('First Name', Icons.badge_outlined, _firstNameCtrl, required: true)), + const SizedBox(width: 12), + Expanded(child: _field('Middle Name', Icons.badge_outlined, _middleNameCtrl)), + ]), + const SizedBox(height: AppSizes.p12), + Row(children: [ + Expanded(flex: 3, child: _field('Last Name', Icons.badge_outlined, _lastNameCtrl, required: true)), + const SizedBox(width: 12), + Expanded(flex: 1, child: _field('Ext.', Icons.text_format, _extCtrl)), + ]), + const SizedBox(height: AppSizes.p12), + + // Username (locked on edit) + _field('Username', Icons.person_outline, _usernameCtrl, required: !_isEdit, readOnly: _isEdit), + const SizedBox(height: AppSizes.p12), + + // Role dropdown — locked for super_admin + if (_isEdit && widget.user?.role == 'super_admin') + Container( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14), + decoration: BoxDecoration( + color: Colors.grey.shade100, + borderRadius: BorderRadius.circular(AppSizes.radiusMedium), + border: Border.all(color: Colors.grey.shade300), + ), + child: const Row(children: [ + Icon(Icons.shield, color: Colors.purple, size: 20), + SizedBox(width: 12), + Text('Super Admin', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.purple)), + SizedBox(width: 8), + Icon(Icons.lock, color: Colors.grey, size: 14), + SizedBox(width: 4), + Text('(Role cannot be changed)', style: TextStyle(fontSize: 12, color: Colors.grey)), + ]), + ) + else + DropdownButtonFormField( + value: _selectedRole, + decoration: const InputDecoration(prefixIcon: Icon(Icons.shield_outlined, color: AppColors.textSecondary)), + items: const [ + DropdownMenuItem(value: 'teacher', child: Text('Teacher')), + DropdownMenuItem(value: 'admin', child: Text('Admin')), + ], + onChanged: (val) => setState(() => _selectedRole = val!), + ), + const SizedBox(height: AppSizes.p12), + + // Email & Phone + Row(children: [ + Expanded(child: _field('Email', Icons.email_outlined, _emailCtrl)), + const SizedBox(width: 12), + Expanded(child: _field('Phone', Icons.phone_outlined, _phoneCtrl)), + ]), + const SizedBox(height: AppSizes.p12), + + // Auto-generate notice (create only) + if (!_isEdit) + Container( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10), + decoration: BoxDecoration( + color: AppColors.primaryGreen.withValues(alpha: 0.07), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: AppColors.primaryGreen.withValues(alpha: 0.3)), + ), + child: const Row(children: [ + Icon(Icons.auto_awesome, color: AppColors.primaryGreen, size: 16), + SizedBox(width: 8), + Expanded( + child: Text( + 'A secure temporary password will be auto-generated and shown once after creation.', + style: TextStyle(fontSize: 12, color: AppColors.primaryGreen, fontWeight: FontWeight.w600), + ), + ), + ]), + ), + + const SizedBox(height: AppSizes.p12), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton(onPressed: () => Navigator.pop(context), child: const Text('CANCEL')), + const SizedBox(width: AppSizes.p16), + SizedBox( + width: 150, + child: PrimaryButton( + label: _isEdit ? 'UPDATE' : 'CREATE', + isLoading: _isLoading, + onPressed: _handleSave, + ), + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } + + Widget _field(String hint, IconData icon, TextEditingController ctrl, {bool required = false, bool readOnly = false}) { + return CustomTextField( + hintText: hint, + prefixIcon: icon, + controller: ctrl, + readOnly: readOnly, + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/screens/users/widgets/add_edit_user_modal.dart b/frontend/lib/ui/screens/users/widgets/add_edit_user_modal.dart new file mode 100644 index 0000000..980acdb --- /dev/null +++ b/frontend/lib/ui/screens/users/widgets/add_edit_user_modal.dart @@ -0,0 +1,3 @@ +// This file is kept for backward compatibility. +// The AddEditUserModal is now defined in users_screen.dart. +export '../users_screen.dart' show AddEditUserModal; \ No newline at end of file diff --git a/frontend/lib/ui/shared/buttons/primary_button.dart b/frontend/lib/ui/shared/buttons/primary_button.dart new file mode 100644 index 0000000..7d8103a --- /dev/null +++ b/frontend/lib/ui/shared/buttons/primary_button.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; + +class PrimaryButton extends StatelessWidget { + final String label; + final VoidCallback onPressed; + final bool isLoading; + + const PrimaryButton({ + super.key, + required this.label, + required this.onPressed, + this.isLoading = false, + }); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: 50, + child: ElevatedButton( + onPressed: isLoading ? null : onPressed, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF1C8248), // Primary Green + foregroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + elevation: 0, + ), + child: isLoading + ? const SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + color: Colors.white, + strokeWidth: 2.5, + ), + ) + : Text( + label, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + letterSpacing: 0.5, + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/shared/cards/stat_card.dart b/frontend/lib/ui/shared/cards/stat_card.dart new file mode 100644 index 0000000..d3f3781 --- /dev/null +++ b/frontend/lib/ui/shared/cards/stat_card.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; + +class StatCard extends StatelessWidget { + final String title; + final String value; + final IconData icon; + final Color? iconColor; + + const StatCard({ + super.key, + required this.title, + required this.value, + required this.icon, + this.iconColor, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(20.0), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12.0), + boxShadow: [ + BoxShadow( + color: Colors.black.withOpacity(0.03), + blurRadius: 10, + offset: const Offset(0, 4), + ), + ], + ), + child: Row( + children: [ + // Icon Container + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: (iconColor ?? const Color(0xFF1C8248)).withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Icon( + icon, + size: 28, + color: iconColor ?? const Color(0xFF1C8248), + ), + ), + const SizedBox(width: 16), + // Text Details + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + title, + maxLines: 1, // Prevent title from wrapping to two lines + overflow: TextOverflow.ellipsis, // Add '...' if title is too long + style: TextStyle( + fontSize: 14, + color: Colors.grey.shade600, + fontWeight: FontWeight.w500, + ), + ), + const SizedBox(height: 4), + // FittedBox shrinks the text dynamically if the number gets too massive + FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: Text( + value, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.black87, + ), + ), + ), + ], + ), + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/frontend/lib/ui/shared/inputs/custom_text_field.dart b/frontend/lib/ui/shared/inputs/custom_text_field.dart new file mode 100644 index 0000000..92f882c --- /dev/null +++ b/frontend/lib/ui/shared/inputs/custom_text_field.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; + +class CustomTextField extends StatelessWidget { + final String hintText; + final IconData prefixIcon; + final bool isPassword; + final bool obscureText; + final VoidCallback? onToggleVisibility; + final TextEditingController? controller; + final bool readOnly; + final void Function(String)? onChanged; + final String? Function(String?)? validator; + final int? maxLines; + final TextInputType? keyboardType; + + const CustomTextField({ + super.key, + required this.hintText, + required this.prefixIcon, + this.isPassword = false, + this.obscureText = false, + this.onToggleVisibility, + this.controller, + this.readOnly = false, + this.onChanged, + this.validator, + this.maxLines = 1, + this.keyboardType, + }); + + @override + Widget build(BuildContext context) { + return TextFormField( + controller: controller, + obscureText: obscureText, + readOnly: readOnly, + onChanged: onChanged, + validator: validator, + maxLines: maxLines, + keyboardType: keyboardType, + decoration: InputDecoration( + hintText: hintText, + prefixIcon: Icon(prefixIcon, color: Colors.grey.shade600), + border: const OutlineInputBorder(), + // Suffix icon only shows if it's a password field + suffixIcon: isPassword + ? IconButton( + icon: Icon( + obscureText ? Icons.visibility_off : Icons.visibility, + color: Colors.grey.shade600, + ), + onPressed: onToggleVisibility, + ) + : null, + ), + ); + } +} \ No newline at end of file diff --git a/frontend/pubspec.lock b/frontend/pubspec.lock new file mode 100644 index 0000000..d8bddee --- /dev/null +++ b/frontend/pubspec.lock @@ -0,0 +1,946 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "8d7ff3948166b8ec5da0fbb5962000926b8e02f2ed9b3e51d1738905fbd4c98d" + url: "https://pub.dev" + source: hosted + version: "93.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: de7148ed2fcec579b19f122c1800933dfa028f6d9fd38a152b04b1516cec120b + url: "https://pub.dev" + source: hosted + version: "10.0.1" + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f" + url: "https://pub.dev" + source: hosted + version: "2.0.3" + archive: + dependency: transitive + description: + name: archive + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" + source: hosted + version: "3.6.1" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: transitive + description: + name: async + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + url: "https://pub.dev" + source: hosted + version: "2.13.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + change_app_package_name: + dependency: "direct dev" + description: + name: change_app_package_name + sha256: "8e43b754fe960426904d77ed4c62fa8c9834deaf6e293ae40963fa447482c4c5" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" + cross_file: + dependency: transitive + description: + name: cross_file + sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937" + url: "https://pub.dev" + source: hosted + version: "0.3.5+2" + crypto: + dependency: transitive + description: + name: crypto + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" + source: hosted + version: "3.0.7" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" + url: "https://pub.dev" + source: hosted + version: "1.0.9" + dbus: + dependency: transitive + description: + name: dbus + sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 + url: "https://pub.dev" + source: hosted + version: "0.7.12" + dio: + dependency: "direct main" + description: + name: dio + sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c + url: "https://pub.dev" + source: hosted + version: "5.9.2" + dio_web_adapter: + dependency: transitive + description: + name: dio_web_adapter + sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + equatable: + dependency: transitive + description: + name: equatable + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" + url: "https://pub.dev" + source: hosted + version: "2.0.8" + excel: + dependency: "direct main" + description: + name: excel + sha256: "1a15327dcad260d5db21d1f6e04f04838109b39a2f6a84ea486ceda36e468780" + url: "https://pub.dev" + source: hosted + version: "4.0.6" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + ffi: + dependency: transitive + description: + name: ffi + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: f13a03000d942e476bc1ff0a736d2e9de711d2f89a95cd4c1d88f861c3348387 + url: "https://pub.dev" + source: hosted + version: "11.0.2" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7" + url: "https://pub.dev" + source: hosted + version: "0.14.4" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_native_splash: + dependency: "direct main" + description: + name: flutter_native_splash + sha256: "7062602e0dbd29141fb8eb19220b5871ca650be5197ab9c1f193a28b17537bc7" + url: "https://pub.dev" + source: hosted + version: "2.4.4" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: "38d1c268de9097ff59cf0e844ac38759fc78f76836d37edad06fa21e182055a0" + url: "https://pub.dev" + source: hosted + version: "2.0.34" + flutter_riverpod: + dependency: "direct main" + description: + name: flutter_riverpod + sha256: "4e166be88e1dbbaa34a280bdb744aeae73b7ef25fdf8db7a3bb776760a3648e2" + url: "https://pub.dev" + source: hosted + version: "3.3.1" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "8b302d17096ba88f911b7eb317c71d5e691da60a259549f42b38c658d1776d87" + url: "https://pub.dev" + source: hosted + version: "10.1.0" + flutter_secure_storage_darwin: + dependency: transitive + description: + name: flutter_secure_storage_darwin + sha256: "3af15a3cb2bf5b8b776832bd01776f8018766aece55623176e28b406481fb320" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: "073a62b3aeb866ab4ce795f960413948e51e5a42a9b0c8333b6daf5bb3208a1c" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: "4e9391085e524954a51e3625b7c9c7e9851dc3f376603208bb45c24b9a66255d" + url: "https://pub.dev" + source: hosted + version: "8.1.0" + hooks: + dependency: transitive + description: + name: hooks + sha256: "025f060e86d2d4c3c47b56e33caf7f93bf9283340f26d23424ebcfccf34f621e" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + html: + dependency: transitive + description: + name: html + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" + url: "https://pub.dev" + source: hosted + version: "0.15.6" + http: + dependency: transitive + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + image: + dependency: transitive + description: + name: image + sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d + url: "https://pub.dev" + source: hosted + version: "4.3.0" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + jni: + dependency: transitive + description: + name: jni + sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f + url: "https://pub.dev" + source: hosted + version: "1.0.0" + jni_flutter: + dependency: transitive + description: + name: jni_flutter + sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: cb09e7dac6210041fad964ed7fbee004f14258b4eca4040f72d1234062ace4c8 + url: "https://pub.dev" + source: hosted + version: "4.11.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" + source: hosted + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + lints: + dependency: transitive + description: + name: lints + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + url: "https://pub.dev" + source: hosted + version: "0.12.19" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + url: "https://pub.dev" + source: hosted + version: "0.13.0" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "6ba77bb18063eebe9de401f5e6437e95e1438af0a87a3a39084fbd37c90df572" + url: "https://pub.dev" + source: hosted + version: "0.17.6" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" + url: "https://pub.dev" + source: hosted + version: "9.3.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + path_provider: + dependency: "direct main" + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" + url: "https://pub.dev" + source: hosted + version: "2.3.1" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" + url: "https://pub.dev" + source: hosted + version: "2.6.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" + url: "https://pub.dev" + source: hosted + version: "7.0.2" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + record_use: + dependency: transitive + description: + name: record_use + sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed" + url: "https://pub.dev" + source: hosted + version: "0.6.0" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: "8c22216be8ad3ef2b44af3a329693558c98eca7b8bd4ef495c92db0bba279f83" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" + source: hosted + version: "1.10.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: transitive + description: + name: test + sha256: "280d6d890011ca966ad08df7e8a4ddfab0fb3aa49f96ed6de56e3521347a9ae7" + url: "https://pub.dev" + source: hosted + version: "1.30.0" + test_api: + dependency: transitive + description: + name: test_api + sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" + url: "https://pub.dev" + source: hosted + version: "0.7.10" + test_core: + dependency: transitive + description: + name: test_core + sha256: "0381bd1585d1a924763c308100f2138205252fb90c9d4eeaf28489ee65ccde51" + url: "https://pub.dev" + source: hosted + version: "0.6.16" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2 + url: "https://pub.dev" + source: hosted + version: "2.3.1" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" + url: "https://pub.dev" + source: hosted + version: "15.2.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + win32: + dependency: transitive + description: + name: win32 + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e + url: "https://pub.dev" + source: hosted + version: "5.15.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.11.5 <4.0.0" + flutter: ">=3.38.4" diff --git a/frontend/pubspec.yaml b/frontend/pubspec.yaml new file mode 100644 index 0000000..a4fcd28 --- /dev/null +++ b/frontend/pubspec.yaml @@ -0,0 +1,118 @@ +name: frontend +description: "A new Flutter project." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: ^3.11.5 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + flutter_native_splash: 2.4.4 + flutter_riverpod: ^3.3.1 + dio: ^5.9.2 + flutter_secure_storage: ^10.1.0 + google_fonts: ^8.1.0 + excel: ^4.0.6 + path_provider: ^2.1.5 + file_picker: ^11.0.2 + permission_handler: ^12.0.1 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_launcher_icons: ^0.14.4 + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^6.0.0 + change_app_package_name: ^1.5.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/images/logo.png + - assets/templates/School-Form-10-JHS.xlsx + - assets/templates/SSHS-SF-10-v2026_corrected.xlsx + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package + +flutter_launcher_icons: + android: true + ios: false # Set to true only if you plan to support iOS later + windows: + generate: true + image_path: "assets/images/logo.png" + icon_size: 256 # Standard optimal size for Windows .ico + image_path: "assets/images/logo.png" + min_sdk_android: 21 # Ensures compatibility with older Android devices + +flutter_native_splash: + color: "#F9F9F9" # Off-white page background + image: "assets/images/logo.png" + android_12: + image: "assets/images/logo.png" + icon_background_color: "#F9F9F9" diff --git a/frontend/test/widget_test.dart b/frontend/test/widget_test.dart new file mode 100644 index 0000000..157176f --- /dev/null +++ b/frontend/test/widget_test.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +// Use a relative import to reliably find your main.dart file +import '../lib/main.dart'; + +void main() { + testWidgets('App boots up and displays the Splash Screen', (WidgetTester tester) async { + // 1. Build our app and trigger a frame. + await tester.pumpWidget(const TisRmsApp()); + + // 2. Verify that our branding text is present on the Splash Screen + expect(find.text('TIS RMS'), findsOneWidget); + expect(find.text('Record Management System'), findsOneWidget); + + // 3. Verify that the loading spinner is present + expect(find.byType(CircularProgressIndicator), findsOneWidget); + + // Note: We don't pump the timer here because the test environment + // shouldn't wait for the 2.5 second simulated delay. We just want + // to ensure the initial widget tree renders without crashing. + }); +} \ No newline at end of file diff --git a/frontend/windows/.gitignore b/frontend/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/frontend/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/frontend/windows/CMakeLists.txt b/frontend/windows/CMakeLists.txt new file mode 100644 index 0000000..c826e18 --- /dev/null +++ b/frontend/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(frontend LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "frontend") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/frontend/windows/flutter/CMakeLists.txt b/frontend/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/frontend/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/frontend/windows/flutter/generated_plugin_registrant.cc b/frontend/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8883006 --- /dev/null +++ b/frontend/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,17 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); +} diff --git a/frontend/windows/flutter/generated_plugin_registrant.h b/frontend/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/frontend/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/frontend/windows/flutter/generated_plugins.cmake b/frontend/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..d1aac24 --- /dev/null +++ b/frontend/windows/flutter/generated_plugins.cmake @@ -0,0 +1,26 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_windows + permission_handler_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/frontend/windows/runner/CMakeLists.txt b/frontend/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/frontend/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/frontend/windows/runner/Runner.rc b/frontend/windows/runner/Runner.rc new file mode 100644 index 0000000..5f107b0 --- /dev/null +++ b/frontend/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "TeamSB", "TIS Academic Institution" "\0" + VALUE "FileDescription", "TIS Record Management System" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "tis_rms" "\0" + VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "tis_rms.exe" "\0" + VALUE "ProductName", "TIS RMS" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/frontend/windows/runner/flutter_window.cpp b/frontend/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/frontend/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/frontend/windows/runner/flutter_window.h b/frontend/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/frontend/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/frontend/windows/runner/main.cpp b/frontend/windows/runner/main.cpp new file mode 100644 index 0000000..8aff516 --- /dev/null +++ b/frontend/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"TIS Record Management System", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/frontend/windows/runner/resource.h b/frontend/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/frontend/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/frontend/windows/runner/resources/app_icon.ico b/frontend/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..50e6ae733ce892fee10ff2e7084d4647e623ceaa GIT binary patch literal 107375 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 JPDHLkV1h(d!BPMK literal 0 HcmV?d00001 diff --git a/frontend/windows/runner/runner.exe.manifest b/frontend/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..153653e --- /dev/null +++ b/frontend/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/frontend/windows/runner/utils.cpp b/frontend/windows/runner/utils.cpp new file mode 100644 index 0000000..3a0b465 --- /dev/null +++ b/frontend/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/frontend/windows/runner/utils.h b/frontend/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/frontend/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/frontend/windows/runner/win32_window.cpp b/frontend/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/frontend/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/frontend/windows/runner/win32_window.h b/frontend/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/frontend/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_

  • 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

    5V0@jwK1Y9+c}$#vgc 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

    5V0@jwK1Y9+c}$#vgc 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 z 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 FV1f%rk=FnK literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-v21/background.png b/frontend/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..99d8f46285223b4731486bc92f27a4eb873453df GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*6yfByWe&cOPL=>v!7 R^iZHUgQu&X%Q~loCIH=|5aR#< literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-v21/launch_background.xml b/frontend/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..3cc4948 --- /dev/null +++ b/frontend/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/android/app/src/main/res/drawable-xhdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-xhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4516e765c55d4439391743acf75fc23f11c67594 GIT binary patch literal 58620 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 literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-xhdpi/splash.png b/frontend/android/app/src/main/res/drawable-xhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4516e765c55d4439391743acf75fc23f11c67594 GIT binary patch literal 58620 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 literal 0 HcmV?d00001 diff --git a/frontend/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/frontend/android/app/src/main/res/drawable-xxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e5db34f295c378c733735c5d5dd76e1bb674b8fd GIT binary patch literal 119905 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