diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index 766ab4e..eb35c2d 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.2.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_flutter_pdfviewer","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_flutter_pdfviewer-31.1.19/","native_build":true,"dependencies":["device_info_plus"],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.31/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_android","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_android-7.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_android","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_android-1.0.52/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"open_file_android","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_android-2.2.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.13/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_flutter_pdfviewer","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_flutter_pdfviewer-31.1.19/","native_build":true,"dependencies":["device_info_plus"],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.2.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_mac","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_pdfviewer_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_macos-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.3/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"syncfusion_pdfviewer_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_linux-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_windows-1.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"syncfusion_pdfviewer_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_windows-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","dependencies":[],"dev_dependency":false},{"name":"firebase_auth_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth_web-6.1.0/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core_web-3.3.0/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging_web-4.1.0/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","dependencies":[],"dev_dependency":false},{"name":"google_sign_in_web","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_web-1.1.0/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"syncfusion_pdfviewer_web","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_web-31.1.19/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.1/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"local_auth","dependencies":["local_auth_android","local_auth_darwin","local_auth_windows"]},{"name":"local_auth_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"local_auth_darwin","dependencies":[]},{"name":"local_auth_windows","dependencies":[]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"syncfusion_flutter_pdfviewer","dependencies":["url_launcher","device_info_plus","syncfusion_pdfviewer_web","syncfusion_pdfviewer_macos","syncfusion_pdfviewer_windows","syncfusion_pdfviewer_linux"]},{"name":"syncfusion_pdfviewer_linux","dependencies":[]},{"name":"syncfusion_pdfviewer_macos","dependencies":[]},{"name":"syncfusion_pdfviewer_web","dependencies":[]},{"name":"syncfusion_pdfviewer_windows","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-01-23 17:36:48.523629","version":"3.32.1","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.2.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_ios-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_flutter_pdfviewer","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_flutter_pdfviewer-31.1.19/","native_build":true,"dependencies":["device_info_plus"],"dev_dependency":false},{"name":"url_launcher_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_ios-6.3.4/","native_build":true,"dependencies":[],"dev_dependency":false}],"android":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_plugin_android_lifecycle","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.31/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_android","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_android-7.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_android","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_android-1.0.52/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"],"dev_dependency":false},{"name":"open_file_android","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_android-1.0.6/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_android","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_android-2.2.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_android","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_android-2.4.13/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_flutter_pdfviewer","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_flutter_pdfviewer-31.1.19/","native_build":true,"dependencies":["device_info_plus"],"dev_dependency":false},{"name":"url_launcher_android","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_android-6.3.20/","native_build":true,"dependencies":[],"dev_dependency":false}],"macos":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"firebase_messaging","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging-16.0.4/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"flutter_secure_storage_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-3.1.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"google_sign_in_ios","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_ios-6.2.1/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_darwin","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_darwin-1.6.0/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_mac","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_mac-1.0.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"path_provider_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.2/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_foundation","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_foundation-2.5.4/","shared_darwin_source":true,"native_build":true,"dependencies":[],"dev_dependency":false},{"name":"syncfusion_pdfviewer_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_macos-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_macos","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_macos-3.2.3/","native_build":true,"dependencies":[],"dev_dependency":false}],"linux":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.2.3/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_linux-0.0.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.4.1/","native_build":false,"dependencies":["path_provider_linux"],"dev_dependency":false},{"name":"syncfusion_pdfviewer_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_linux-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_linux","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.2/","native_build":true,"dependencies":[],"dev_dependency":false}],"windows":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"firebase_auth","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth-6.1.2/","native_build":true,"dependencies":["firebase_core"],"dev_dependency":false},{"name":"firebase_core","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core-4.2.1/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"flutter_secure_storage_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"local_auth_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/local_auth_windows-1.0.11/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"open_file_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_windows-0.0.3/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"path_provider_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/","native_build":false,"dependencies":[],"dev_dependency":false},{"name":"shared_preferences_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.4.1/","native_build":false,"dependencies":["path_provider_windows"],"dev_dependency":false},{"name":"syncfusion_pdfviewer_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_windows-31.1.19/","native_build":true,"dependencies":[],"dev_dependency":false},{"name":"url_launcher_windows","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.5/","native_build":true,"dependencies":[],"dev_dependency":false}],"web":[{"name":"connectivity_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/connectivity_plus-6.1.5/","dependencies":[],"dev_dependency":false},{"name":"device_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/device_info_plus-11.5.0/","dependencies":[],"dev_dependency":false},{"name":"file_picker","path":"/home/venba/.pub-cache/hosted/pub.dev/file_picker-10.3.7/","dependencies":[],"dev_dependency":false},{"name":"firebase_auth_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_auth_web-6.1.0/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"firebase_core_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_core_web-3.3.0/","dependencies":[],"dev_dependency":false},{"name":"firebase_messaging_web","path":"/home/venba/.pub-cache/hosted/pub.dev/firebase_messaging_web-4.1.0/","dependencies":["firebase_core_web"],"dev_dependency":false},{"name":"flutter_secure_storage_web","path":"/home/venba/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/","dependencies":[],"dev_dependency":false},{"name":"fluttertoast","path":"/home/venba/.pub-cache/hosted/pub.dev/fluttertoast-9.0.0/","dependencies":[],"dev_dependency":false},{"name":"google_sign_in_web","path":"/home/venba/.pub-cache/hosted/pub.dev/google_sign_in_web-1.1.0/","dependencies":[],"dev_dependency":false},{"name":"open_file_web","path":"/home/venba/.pub-cache/hosted/pub.dev/open_file_web-0.0.4/","dependencies":[],"dev_dependency":false},{"name":"package_info_plus","path":"/home/venba/.pub-cache/hosted/pub.dev/package_info_plus-8.3.1/","dependencies":[],"dev_dependency":false},{"name":"pdf_render","path":"/home/venba/.pub-cache/hosted/pub.dev/pdf_render-1.4.12/","dependencies":[],"dev_dependency":false},{"name":"shared_preferences_web","path":"/home/venba/.pub-cache/hosted/pub.dev/shared_preferences_web-2.4.3/","dependencies":[],"dev_dependency":false},{"name":"syncfusion_pdfviewer_web","path":"/home/venba/.pub-cache/hosted/pub.dev/syncfusion_pdfviewer_web-31.1.19/","dependencies":[],"dev_dependency":false},{"name":"url_launcher_web","path":"/home/venba/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.1/","dependencies":[],"dev_dependency":false}]},"dependencyGraph":[{"name":"connectivity_plus","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_secure_storage","dependencies":["flutter_secure_storage_linux","flutter_secure_storage_macos","flutter_secure_storage_web","flutter_secure_storage_windows"]},{"name":"flutter_secure_storage_linux","dependencies":[]},{"name":"flutter_secure_storage_macos","dependencies":[]},{"name":"flutter_secure_storage_web","dependencies":[]},{"name":"flutter_secure_storage_windows","dependencies":["path_provider"]},{"name":"fluttertoast","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"local_auth","dependencies":["local_auth_android","local_auth_darwin","local_auth_windows"]},{"name":"local_auth_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"local_auth_darwin","dependencies":[]},{"name":"local_auth_windows","dependencies":[]},{"name":"open_file","dependencies":["open_file_android","open_file_web","open_file_ios","open_file_mac","open_file_windows","open_file_linux"]},{"name":"open_file_android","dependencies":[]},{"name":"open_file_ios","dependencies":[]},{"name":"open_file_linux","dependencies":[]},{"name":"open_file_mac","dependencies":[]},{"name":"open_file_web","dependencies":[]},{"name":"open_file_windows","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"pdf_render","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"syncfusion_flutter_pdfviewer","dependencies":["url_launcher","device_info_plus","syncfusion_pdfviewer_web","syncfusion_pdfviewer_macos","syncfusion_pdfviewer_windows","syncfusion_pdfviewer_linux"]},{"name":"syncfusion_pdfviewer_linux","dependencies":[]},{"name":"syncfusion_pdfviewer_macos","dependencies":[]},{"name":"syncfusion_pdfviewer_web","dependencies":[]},{"name":"syncfusion_pdfviewer_windows","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2026-01-31 17:05:45.939876","version":"3.32.1","swift_package_manager_enabled":{"ios":false,"macos":false}} \ No newline at end of file diff --git a/lib/core/services/api_service.dart b/lib/core/services/api_service.dart index 536798e..88b0f93 100644 --- a/lib/core/services/api_service.dart +++ b/lib/core/services/api_service.dart @@ -1420,12 +1420,12 @@ class ApiService { query = 'agent_id=$id'; } - // final url = Uri.parse( - // '${Env.apiUrl}enquiry/enquiryList?$query&only_policy_data=true&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&staff_id=$selectedStaffId', - // ); final url = Uri.parse( - 'http://localhost/nhance_partner_be/enquiry/enquiryList?$query&only_policy_data=true&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&staff_id=$selectedStaffId', + '${Env.apiUrl}enquiry/enquiryList?$query&only_policy_data=true&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&staff_id=$selectedStaffId', ); + // final url = Uri.parse( + // 'http://localhost/nhance_partner_be/enquiry/enquiryList?$query&only_policy_data=true&from_date=${fromDate ?? ''}&to_date=${toDate ?? ''}&staff_id=$selectedStaffId', + // ); // if (role == 'manager') { // url = Uri.parse( @@ -2186,15 +2186,18 @@ class ApiService { } } - Future> fetchAuditHistory(id) async { + Future> fetchAuditHistory(id,table) async { print("fetchAuditHistory - $id "); if (_token == null) { await _initializeToken(); } // final url = Uri.parse('${Env.apiUrl}audit/history?table_name=partner_policy&pk=80',); + // final url = Uri.parse( + // '${Env.apiUrl}audit/history?table_name=partner_policy&pk=${id ?? ''}', + // ); final url = Uri.parse( - '${Env.apiUrl}audit/history?table_name=partner_policy&pk=${id ?? ''}', + '${Env.apiUrl}audit/history?table_name==${table ?? ''}&pk=${id ?? ''}', ); final headers = { diff --git a/lib/presentation/screens/staff/policy/policy_list.dart b/lib/presentation/screens/staff/policy/policy_list.dart index da0fb9e..da0cb72 100644 --- a/lib/presentation/screens/staff/policy/policy_list.dart +++ b/lib/presentation/screens/staff/policy/policy_list.dart @@ -861,7 +861,7 @@ class policylistState extends ConsumerState { SizedBox(width: 10), InkWell( onTap: () { - showAuditHistoryModal(context, item['id']); + showAuditHistoryModal(context, item['policy_id']); }, child: Container( padding: EdgeInsets.all(5.4), @@ -1204,7 +1204,7 @@ class AuditHistoryModalState extends ConsumerState { try { // Use widget.policyId here! final response = await apiService.fetchAuditHistory( - widget.policyId.toString(), + widget.policyId.toString(),'partner_policy' ); if (response != null && response['status'] == "success") { diff --git a/lib/presentation/screens/staff/policy/policy_validation.dart b/lib/presentation/screens/staff/policy/policy_validation.dart index b18a802..0cc6f21 100644 --- a/lib/presentation/screens/staff/policy/policy_validation.dart +++ b/lib/presentation/screens/staff/policy/policy_validation.dart @@ -38,14 +38,24 @@ class _policyValidationState extends ConsumerState { // --- Api / state late ApiService apiService; bool isLoading = false; + bool isLoadingFile = false; bool isLoadingVehicleType = false; + bool isLoadingVehicleTypeForCommission = false; bool isLoadingFuelType = false; + bool isLoadingBroker = false; + bool isLoadingPaymentMode = false; + bool isLoadingInsurancePlan = false; dynamic managerId; dynamic userId; String? _cachedPdfUrl; String? pdfUrl; // full file path from API + bool highlightEnqBroker = false; + bool highlightDocBroker = false; + String? enqBroker; // Stores the NAME of the enquiry broker + final ValueNotifier brokerMismatchNotifier = ValueNotifier(false); + // --- Controllers (all editable fields) final List controllerKeys = [ // Policy @@ -343,6 +353,17 @@ class _policyValidationState extends ConsumerState { }; update(); _loadInitialData(); + // Set the initial enqBroker name from the fetched data list + if (selectedBroker != null) { + final item = filteredBrokerData.firstWhere( + (element) => element['id'].toString() == selectedBroker, + orElse: () => {}, + ); + enqBroker = item['name']?.toString(); + } + + // Check immediately after data is loaded + WidgetsBinding.instance.addPostFrameCallback((_) => _validateBrokerMatch()); } @@ -394,7 +415,7 @@ class _policyValidationState extends ConsumerState { Future getBroker() async { print('getBroker called'); setState(() { - isLoading = true; + isLoadingBroker = true; }); try { @@ -417,7 +438,7 @@ class _policyValidationState extends ConsumerState { print('Exception occurred: $e'); } finally { setState(() { - isLoading = false; + isLoadingBroker = false; }); } } @@ -425,7 +446,7 @@ class _policyValidationState extends ConsumerState { Future getInsurancPlanType() async { print('getInsurancPlanType called'); setState(() { - isLoading = true; + isLoadingInsurancePlan = true; }); try { @@ -451,13 +472,13 @@ class _policyValidationState extends ConsumerState { print('Exception occurred: $e'); } finally { setState(() { - isLoading = false; + isLoadingInsurancePlan = false; }); } } Future getPaymentMode() async { - setState(() => isLoading = true); + setState(() => isLoadingPaymentMode = true); try { final response = await apiService.fetchMasterDropDown('PaymentMode'); @@ -479,22 +500,22 @@ class _policyValidationState extends ConsumerState { } }); } else { - setState(() { + // setState(() { getPaymentModeData.clear(); filteredPaymentModeData.clear(); - }); + // }); } } catch (e) { print('Exception occurred: $e'); } finally { - setState(() => isLoading = false); + setState(() => isLoadingPaymentMode = false); } } Future getEnquiryVehicleTypeForCommission() async { - setState(() => isLoading = true); + setState(() => isLoadingVehicleTypeForCommission = true); try { final response = @@ -528,7 +549,7 @@ class _policyValidationState extends ConsumerState { } catch (e) { print('Exception occurred: $e'); } finally { - setState(() => isLoading = false); + setState(() => isLoadingVehicleTypeForCommission = false); } } @@ -659,7 +680,7 @@ class _policyValidationState extends ConsumerState { } if (!mounted) return; - setState(() => isLoading = true); + setState(() => isLoadingFile = true); try { final url = Uri.parse( @@ -675,7 +696,7 @@ class _policyValidationState extends ConsumerState { print('Exception in getPolicyFilePath: $e\n$st'); } finally { if (!mounted) return; - setState(() => isLoading = false); + setState(() => isLoadingFile = false); } } @@ -888,6 +909,23 @@ class _policyValidationState extends ConsumerState { // return; // } + // 1. Force a final check + _validateBrokerMatch(); + + // 2. Check the notifier value instead of the old booleans + if (brokerMismatchNotifier.value) { + final String enqName = (enqBroker ?? 'Not Selected'); + final String docName = (controllers['broker_name']?.text ?? 'Empty'); + + // await _confirmBrokerChange( + // context, + // enquiryBroker: enqName, + // documentBroker: docName, + // ); + + return; // 🛑 STOP: Does not proceed to API call + } + final payload = {"id": policyId, ...dataDetails(), "updated_by": userId}; if (!mounted) return; @@ -935,6 +973,91 @@ class _policyValidationState extends ConsumerState { } } + void _validateBrokerMatch() { + final String enqName = (enqBroker ?? '').trim().toLowerCase(); + final String docName = (controllers['broker_name']?.text ?? '').trim().toLowerCase(); + + // setState(() { + // if (enqName.isNotEmpty && docName.isNotEmpty && enqName != docName) { + // highlightEnqBroker = true; + // highlightDocBroker = true; + // } else { + // // If they match OR one is empty, remove the red highlight + // highlightEnqBroker = false; + // highlightDocBroker = false; + // } + // }); + + // Update the notifier instead of a boolean + setState + brokerMismatchNotifier.value = (enqName.isNotEmpty && docName.isNotEmpty && enqName != docName); + + } + + Future _confirmBrokerChange( + BuildContext context, { + required String enquiryBroker, + required String documentBroker, + }) async { + return await showDialog( + context: context, + barrierDismissible: false, + builder: (context) => AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + title: Row( + children: [ + Icon(Icons.warning_amber_rounded, color: Colors.orange), + SizedBox(width: 8), + Text("Broker Mismatch", style: GoogleFonts.poppins(fontWeight: FontWeight.bold)), + ], + ), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("The brokers do not match:", style: GoogleFonts.poppins(fontSize: 13)), + const SizedBox(height: 16), + _dialogBrokerRow("Enquiry Broker:", enquiryBroker), + const SizedBox(height: 12), + _dialogBrokerRow("Document Broker:", documentBroker), + // const SizedBox(height: 20), + // Text("Do you want to proceed with the update?", + // style: GoogleFonts.poppins(fontWeight: FontWeight.w500, fontSize: 13)), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, false), + child: Text("OK", style: TextStyle(color: Colors.grey[700], fontWeight: FontWeight.bold)), + ), + // ElevatedButton( + // style: ElevatedButton.styleFrom( + // backgroundColor: const Color(0xFF2E7D6E), + // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)), + // ), + // onPressed: () => Navigator.pop(context, true), + // child: const Text("PROCEED", style: TextStyle(color: Colors.white)), + // ), + ], + ), + ) ?? false; + } + + Widget _dialogBrokerRow(String label, String value) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(label, style: GoogleFonts.poppins(fontSize: 11, color: Colors.grey[600])), + Text(value, + style: GoogleFonts.poppins( + fontSize: 14, + color: Colors.red[700], + fontWeight: FontWeight.bold + ) + ), + ], + ); + } + Future _fetchCommision() async { print('_fetchCommision IN'); final policyId = widget.item?['policy_id']; @@ -1136,10 +1259,10 @@ class _policyValidationState extends ConsumerState { onChanged: (val) { if (val != null) { - setState(() { + // setState(() { // selectedVehicleType = val; controllers['vehicleType']?.text = val; - }); + // }); // setState(() {}); print("Selected Vehicle Type: $val"); } @@ -1252,10 +1375,10 @@ class _policyValidationState extends ConsumerState { onChanged: (val) { if (val != null) { - setState(() { + // setState(() { // selectedFuelType = val; controllers['fuelType']?.text = val; - }); + // }); // setState(() {}); print("Selected Fuel Type: $val"); } @@ -1267,7 +1390,120 @@ class _policyValidationState extends ConsumerState { - Widget buildBrokerAsPerEnquiry(BuildContext context) { + Widget buildBrokerAsPerEnquiry(BuildContext context, String EnqID) { + // 1. Find the currently selected broker object from your list + final Map? selectedBrokers = selectedBroker != null + ? filteredBrokerData.firstWhere( + (item) => item['id'].toString() == selectedBroker, + orElse: () => {}, + ) + : null; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // HEADER SECTION: Label + Info Icon + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Broker (as per Enquiry)", + style: GoogleFonts.poppins( + fontWeight: FontWeight.w500, + fontSize: 11, + ), + ), + const SizedBox(width: 6), + Tooltip( + message: 'View Audit History', + child: InkWell( + onTap: () { + showDialog( + context: context, + barrierDismissible: false, + builder: (_) => NewAuditHistoryModal( + enquiryId: EnqID, + ), + ); + }, + child: const Icon( + Icons.info_outline, + size: 14, + color: Color(0xFF2E7D6E), + ), + ), + ), + ], + ), + const SizedBox(height: 6), + + // DROPDOWN SECTION: Searchable + Red Border Logic + ValueListenableBuilder( + valueListenable: brokerMismatchNotifier, // Listens to the mismatch flag + builder: (context, isMismatched, child) { + return Container( + decoration: BoxDecoration( + // The border turns red instantly if there is a mismatch + border: Border.all( + color: isMismatched ? Colors.red : Colors.transparent, + width: 1.5, + ), + borderRadius: BorderRadius.circular(6), + ), + child: DropdownSearch>( + key: dropDownKeyBroker, + + // Define how to compare broker maps (Critical to prevent errors) + compareFn: (item1, item2) => + item1['id'].toString() == item2['id'].toString(), + + // Items to show + items: (filter, _) => filteredBrokerData, + + // Display the broker name in the selection + itemAsString: (item) => item['name'].toString(), + + selectedItem: (selectedBrokers != null && selectedBrokers.isNotEmpty) + ? selectedBrokers + : null, + + // SEARCH CONFIGURATION + popupProps: PopupProps.menu( + showSearchBox: true, // Enables the search bar + searchFieldProps: TextFieldProps( + decoration: InputDecoration( + hintText: "Search broker name...", + prefixIcon: const Icon(Icons.search), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + fit: FlexFit.loose, + ), + + onChanged: (val) { + if (val != null) { + // Update data variables + selectedBroker = val['id'].toString(); + enqBroker = val['name'].toString(); + controllers['enquiry_broker_id_for_commission']?.text = val['id'].toString(); + + // Trigger the highlight check WITHOUT calling setState + _validateBrokerMatch(); + } + }, + + validator: (val) => val == null ? "" : null, + ), + ); + }, + ) + ], + ); + } + + Widget buildBOASPerEnquiry(BuildContext context, String EnqID) { final Map? selectedBrokers = selectedBroker != null ? filteredBrokerData.firstWhere( @@ -1279,16 +1515,48 @@ class _policyValidationState extends ConsumerState { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "Broker (as per Enquiry)", - style: GoogleFonts.poppins( - fontWeight: FontWeight.w500, - fontSize: 11, - ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "Broker (as per Enquiry)", + style: GoogleFonts.poppins( + fontWeight: FontWeight.w500, + fontSize: 11, + ), + ), + const SizedBox(width: 6), + Tooltip( + message: 'View Audit History', + child: InkWell( + onTap: () { + showDialog( + context: context, + barrierDismissible: false, + builder: (_) => NewAuditHistoryModal( + enquiryId: EnqID, // Note: Ensure this class is defined correctly as discussed + ), + ); + }, + child: const Icon( + Icons.info_outline, + size: 14, + color: Color(0xFF2E7D6E), + ), + ), + ), + ], ), const SizedBox(height: 6), - - DropdownSearch>( + Container( + decoration: BoxDecoration( + border: Border.all( + color: highlightEnqBroker ? Colors.red : Colors.transparent, + width: 1.5, + ), + borderRadius: BorderRadius.circular(6), + ), + child: DropdownSearch>( key: dropDownKeyBroker, items: (filter, _) => filteredBrokerData, @@ -1303,19 +1571,23 @@ class _policyValidationState extends ConsumerState { compareFn: (item1, item2) => item1['id'].toString() == item2['id'].toString(), - onChanged: (val) { - if (val != null) { - selectedBroker = val['id'].toString(); - controllers['enquiry_broker_id_for_commission']?.text = - val['id'].toString(); - } - }, + onChanged: (val) { + if (val != null) { + setState(() { + selectedBroker = val['id'].toString(); + enqBroker = val['name'].toString(); + controllers['enquiry_broker_id_for_commission']?.text = val['id'].toString(); + }); + _validateBrokerMatch(); // 👈 Check mismatch immediately + } + }, validator: (val) { if (val == null) return ""; return null; }, - ), + ), + ) ], ); } @@ -1593,6 +1865,8 @@ class _policyValidationState extends ConsumerState { List? inputFormatters, // 👈 ADD THIS ValueChanged? onChanged, // 👈 ADD THIS String? rightLabel, // 👈 ADD THIS + Widget? infoIcon, // 👈 ADD THIS + bool highlight = false, // 👈 ADD THIS }) { return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -1608,6 +1882,20 @@ class _policyValidationState extends ConsumerState { label, style: GoogleFonts.poppins(fontWeight: FontWeight.w500, fontSize: 11), ), + + // if (required) + // const Text( + // ' *', + // style: TextStyle(color: Colors.red, fontSize: 11), + // ), + + if (infoIcon != null) ...[ + const SizedBox(width: 6), + infoIcon, + ], + + const Spacer(), + if (rightLabel != null) Text( rightLabel, @@ -1642,7 +1930,20 @@ class _policyValidationState extends ConsumerState { return null; }, decoration: InputDecoration( - border: OutlineInputBorder(borderRadius: BorderRadius.circular(6)), + border: OutlineInputBorder(borderRadius: BorderRadius.circular(6), + borderSide: BorderSide( + color: highlight ? Colors.red : Colors.grey, + width: highlight ? 1.6 : 1, + ), + ), + // Inside _buildInput decoration: + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(6), + borderSide: BorderSide( + color: highlight ? Colors.red : Colors.grey.shade400, + width: highlight ? 1.6 : 1, + ), + ), isDense: true, hintText: hintText, hintStyle: hintText == null @@ -2325,7 +2626,7 @@ class _policyValidationState extends ConsumerState { SizedBox(height: 10), Row( children: [ - Expanded(child:buildBrokerAsPerEnquiry(context)), + Expanded(child:buildBrokerAsPerEnquiry(context,widget.item['id'].toString())), const SizedBox(width: 8), Expanded(child:buildInsurancPlanType(context)), ], @@ -2333,12 +2634,47 @@ class _policyValidationState extends ConsumerState { Row( children: [ Expanded( - child: _buildInput( - 'Broker (as per Document) *', - controllers['broker_name']!, - required: true, + child: ValueListenableBuilder( + valueListenable: brokerMismatchNotifier, + builder: (context, isMismatched, child) { + return _buildInput( + 'Broker (as per Document) *', + controllers['broker_name']!, + required: true, + highlight: isMismatched, // 👈 Passes true/false to your _buildInput + onChanged: (val) { + _validateBrokerMatch(); + }, + ); + }, ), ), + // Expanded( + // child: _buildInput( + // 'Broker (as per Document)', + // controllers['broker_name']!, + // required: true, + // infoIcon: Tooltip( + // message: 'View Audit History', + // child: InkWell( + // onTap: () { + // showDialog( + // context: context, + // barrierDismissible: false, + // builder: (_) => NewAuditHistoryModal( + // policyId: '878', + // ), + // ); + // }, + // child: const Icon( + // Icons.info_outline, + // size: 14, + // color: Color(0xFF2E7D6E), + // ), + // ), + // ), + // ), + // ), const SizedBox(width: 8), Expanded( child: _buildInput( @@ -2456,4 +2792,141 @@ class DateInputFormatter extends TextInputFormatter { selection: TextSelection.collapsed(offset: formatted.length), ); } +} + +// 1. THE WIDGET CLASS +class NewAuditHistoryModal extends ConsumerStatefulWidget { + final String enquiryId; + + const NewAuditHistoryModal({super.key, required this.enquiryId}); + + @override + NewAuditHistoryModalState createState() => NewAuditHistoryModalState(); +} + +// 2. THE STATE CLASS +class NewAuditHistoryModalState extends ConsumerState { + late ApiService apiService; + bool isLoadingHistory = true; + List> getAuditHistoryData = []; + + @override + void initState() { + super.initState(); + apiService = ApiService(); + fetchAuditHistory(); + } + + Future fetchAuditHistory() async { + try { + final response = await apiService.fetchAuditHistory( + widget.enquiryId.toString(),'partner_enquiry' + ); + + if (response != null && response['status'] == "success") { + if (mounted) { + setState(() { + getAuditHistoryData = + List>.from(response['data']) + .where((e) => e['column_name']?.toString() == 'broker_name') + .toList(); + }); + } + } + } catch (e) { + debugPrint("Audit History Error: $e"); + } finally { + if (mounted) setState(() => isLoadingHistory = false); + } + } + + @override + Widget build(BuildContext context) { + return AlertDialog( + backgroundColor: Colors.white, + contentPadding: const EdgeInsets.all(16), + content: SizedBox( + width: MediaQuery.of(context).size.width * 0.55, + height: MediaQuery.of(context).size.height * 0.7, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + "Audit History", + style: GoogleFonts.poppins( + fontSize: 14, + color: const Color(0xFF50A398), + fontWeight: FontWeight.w500, + ), + ), + const Spacer(), + IconButton( + icon: const Icon(Icons.close, size: 18), + onPressed: () => Navigator.pop(context), + ), + ], + ), + const Divider(), + Expanded( + child: isLoadingHistory + ? const Center(child: CircularProgressIndicator()) + : getAuditHistoryData.isEmpty + ? const Center(child: Text("No Audit History Data Found")) + : ListView.builder( + itemCount: getAuditHistoryData.length, + itemBuilder: (context, index) { + return _buildTimelineItem( + data: getAuditHistoryData[index], + isLast: index == getAuditHistoryData.length - 1, + ); + }, + ), + ), + ], + ), + ), + ); + } + + Widget _buildTimelineItem({ + required Map data, + required bool isLast, + }) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + const CircleAvatar(radius: 5, backgroundColor: Color(0xFF2E7D6E)), + if (!isLast) + Container(width: 2, height: 60, color: Colors.grey.shade300), + ], + ), + const SizedBox(width: 12), + Expanded( + child: Padding( + padding: const EdgeInsets.only(bottom: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + DateFormat('dd-MM-yyyy').format(DateTime.parse(data['changed_on'])), + style: GoogleFonts.poppins(fontSize: 11), + ), + const SizedBox(height: 4), + Text(data['message'] ?? "-"), + // const SizedBox(height: 4), + // Text( + // "Changed by ${data['changed_by'] ?? '-'}", + // style: GoogleFonts.poppins(fontSize: 11), + // ), + ], + ), + ), + ), + ], + ); + } } \ No newline at end of file diff --git a/lib/presentation/widgets/custom_Stdate_EnDate_Filter.dart b/lib/presentation/widgets/custom_Stdate_EnDate_Filter.dart index 7c32c65..245840e 100644 --- a/lib/presentation/widgets/custom_Stdate_EnDate_Filter.dart +++ b/lib/presentation/widgets/custom_Stdate_EnDate_Filter.dart @@ -827,7 +827,7 @@ class _DateFilterRowState extends ConsumerState { ); } - Widget buildSelectInsurer(BuildContext context) { + Widget buildSelectInsurer_withoutsearch(BuildContext context) { // Ensure this list has data BEFORE building dropdown final List> insurerOptions = @@ -956,6 +956,152 @@ class _DateFilterRowState extends ConsumerState { ); } + Widget buildSelectInsurer(BuildContext context) { + // Ensure this list has data BEFORE building dropdown + final List> insurerOptions = + List>.from(filteredInsurerData); + + // Selected item logic + Map? selectedItem; + + if (widget.selectedInsurerVal != null && + widget.selectedInsurerVal.toString().isNotEmpty && + insurerOptions.isNotEmpty) { + try { + selectedItem = insurerOptions.firstWhere( + (e) => e['id'].toString() == widget.selectedInsurerVal.toString(), + ); + } catch (e) { + selectedItem = null; + } + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 35, + child: Container( + width: ResponsiveLayout.isMobile(context) + ? null + : MediaQuery.of(context).size.width * 0.14, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5.0), + border: Border.all(color: const Color(0xFFE2E8F0)), + ), + child: DropdownSearch>( + selectedItem: selectedItem, + + // FILTER LOGIC: This filters the list as the user types + items: (filter, infiniteScrollProps) { + if (filter.isEmpty) { + return insurerOptions; + } + return insurerOptions + .where((item) => item['short_name'] + .toString() + .toLowerCase() + .contains(filter.toLowerCase())) + .toList(); + }, + + itemAsString: (item) => item['short_name']?.toString() ?? '', + + compareFn: (item, selected) { + if (selected == null) return false; + return item['id'].toString() == selected['id'].toString(); + }, + + // FIELD UI (The collapsed state) + dropdownBuilder: (context, selectedItem) { + return Align( + alignment: Alignment.centerLeft, + child: Text( + selectedItem != null + ? selectedItem['short_name'].toString() + : '', + style: GoogleFonts.poppins( + fontSize: 11, + color: Colors.black, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ); + }, + + decoratorProps: DropDownDecoratorProps( + decoration: AppInputDecorations.dropdownDecoration( + label: "Select Insurer", + ).copyWith( + filled: true, + fillColor: Colors.white, + isDense: true, + contentPadding: const EdgeInsets.symmetric( + horizontal: 6, + vertical: 1, + ), + ), + ), + + // POPUP UI (The expanded state with search) + popupProps: PopupProps.menu( + showSearchBox: true, // Enabled searching + fit: FlexFit.loose, + constraints: const BoxConstraints(maxHeight: 300), + menuProps: const MenuProps(backgroundColor: Colors.white), + + // Customizing the search field appearance + searchFieldProps: TextFieldProps( + style: GoogleFonts.poppins(fontSize: 13), + decoration: InputDecoration( + hintText: "Search insurer...", + hintStyle: GoogleFonts.poppins(fontSize: 12), + contentPadding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8), + ), + ), + + itemBuilder: (context, item, isDisabled, isSelected) { + return Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 10, + ), + decoration: BoxDecoration( + color: isSelected ? Colors.blue.withOpacity(0.1) : Colors.transparent, + ), + child: Text( + item['short_name'].toString(), + style: GoogleFonts.inter( + fontSize: 13, + color: Colors.black, + ), + ), + ); + }, + ), + + // ON CHANGE + onChanged: (val) { + if (val == null) return; + + // Note: Ensure 'selectedInsurer' is defined in your state/class + selectedInsurer = val['id']; + + widget.onInsurerChanged?.call(val['id']); + + // Safe UI refresh + Future.microtask(() { + widget.onFilter(); + }); + }, + ), + ), + ), + ], + ); + } + static const _textStyle = TextStyle(