From 0ffc0f650f3fe95bf2c8cefbb2dd5098e0c5a68c Mon Sep 17 00:00:00 2001 From: waseemabbasi22 Date: Wed, 19 Nov 2025 15:44:26 +0300 Subject: [PATCH] improvements --- lib/controllers/api_routes/urls.dart | 4 ++ lib/main.dart | 2 + .../loan_module/models/loan_form_model.dart | 8 +--- .../models/medical_department_model.dart | 35 +++++++++++++++ .../pages/create_loan_request_view.dart | 44 ++++++------------- .../provider/medical_department_provider.dart | 32 ++++++++++++++ 6 files changed, 88 insertions(+), 37 deletions(-) create mode 100644 lib/modules/loan_module/models/medical_department_model.dart create mode 100644 lib/modules/loan_module/provider/medical_department_provider.dart diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 5dd108cc..2667ce97 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -328,4 +328,8 @@ class URLs { static get convertDetailToComplete => '$_baseUrl/AssetInventory/ConvertDetailToComplete'; static get getClassification => '$_baseUrl/AssetInventory/Classification'; + + //Loan Module... + //getDepartmentBasedOnSite + static get getMedDepartmentBasedOnSite => '$_baseUrl/TRAFDataSource/GetDepartmentBasedOnSite'; } diff --git a/lib/main.dart b/lib/main.dart index 3483f2e0..d30ccea8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -31,6 +31,7 @@ import 'package:test_sa/modules/cm_module/views/nurse/create_new_request_view.da import 'package:test_sa/modules/loan_module/pages/create_loan_request_view.dart'; import 'package:test_sa/modules/loan_module/provider/loan_period_provider.dart'; import 'package:test_sa/modules/loan_module/provider/loan_provider.dart'; +import 'package:test_sa/modules/loan_module/provider/medical_department_provider.dart'; import 'package:test_sa/modules/tm_module/tasks_wo/create_task_view.dart'; import 'package:test_sa/new_views/app_style/app_themes.dart'; import 'package:test_sa/new_views/pages/help_center_page.dart'; @@ -288,6 +289,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => AssetInventoryProvider()), ChangeNotifierProvider(create: (_) => LoanProvider()), ChangeNotifierProvider(create: (_) => LoanPeriodProvider()), + ChangeNotifierProvider(create: (_) => MedicalDepartmentProvider()), ], child: GestureDetector( onTap: () { diff --git a/lib/modules/loan_module/models/loan_form_model.dart b/lib/modules/loan_module/models/loan_form_model.dart index 3f1cc940..03b4c169 100644 --- a/lib/modules/loan_module/models/loan_form_model.dart +++ b/lib/modules/loan_module/models/loan_form_model.dart @@ -3,6 +3,7 @@ import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/site.dart'; +import 'package:test_sa/modules/loan_module/models/medical_department_model.dart'; class LoanFormModel { String? docName; @@ -18,9 +19,7 @@ class LoanFormModel { String? vendorNumber; String? vendorEmail; Site? site; - Building? building; - Lookup? department; - Floor? floor; + MedicalDepartmentModel? department; List? loanAttachment; LoanFormModel({ @@ -38,8 +37,6 @@ class LoanFormModel { this.vendorEmail, this.loanAttachment, this.site, - this.building, - this.floor, this.department, }); @@ -58,7 +55,6 @@ class LoanFormModel { "vendorNumber": vendorNumber, "vendorEmail": vendorEmail, 'site' : site?.toJson(), - 'building' : building?.toJson(), "loanAttachment": loanAttachment != null ? loanAttachment!.map((v) => v.toJson()).toList() : [], }; } diff --git a/lib/modules/loan_module/models/medical_department_model.dart b/lib/modules/loan_module/models/medical_department_model.dart new file mode 100644 index 00000000..08a6b200 --- /dev/null +++ b/lib/modules/loan_module/models/medical_department_model.dart @@ -0,0 +1,35 @@ +import 'package:test_sa/models/base.dart'; + +class MedicalDepartmentModel extends Base { + MedicalDepartmentModel({ + this.departmentName, this.departmentCode, this.ntCode, this.costCenterNumber, this.costCenterName, this.name, this.id, this.createdBy, this.createdDate, this.modifiedBy, this.modifiedDate + }) : super(identifier: id?.toString() ?? '', name: departmentName); // Handle potential null id + + MedicalDepartmentModel.fromJson(Map json) { + departmentName = json['departmentName'] ?? json['name']; + departmentCode = json['departmentCode']; + ntCode = json['ntCode']; + costCenterNumber = json['costCenterNumber']; + costCenterName = json['costCenterName']; + name = json['name']; + id = json['id']; + createdBy = json['createdBy']; + createdDate = json['createdDate']; + modifiedBy = json['modifiedBy']; + modifiedDate = json['modifiedDate']; + } + + num? id; // Now nullable + String? departmentName; // Now nullable + String? departmentCode; // Now nullable + String? ntCode; + String? costCenterNumber; + String? costCenterName; + String? name; + String? createdBy; + String? createdDate; + String? modifiedBy; + String? modifiedDate; + + +} diff --git a/lib/modules/loan_module/pages/create_loan_request_view.dart b/lib/modules/loan_module/pages/create_loan_request_view.dart index f4a7a31d..2989f238 100644 --- a/lib/modules/loan_module/pages/create_loan_request_view.dart +++ b/lib/modules/loan_module/pages/create_loan_request_view.dart @@ -25,8 +25,10 @@ import 'package:test_sa/models/service_request/pending_service_request_model.dar import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/loan_module/models/loan_form_model.dart'; +import 'package:test_sa/modules/loan_module/models/medical_department_model.dart'; import 'package:test_sa/modules/loan_module/provider/loan_period_provider.dart'; import 'package:test_sa/modules/loan_module/provider/loan_provider.dart'; +import 'package:test_sa/modules/loan_module/provider/medical_department_provider.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; @@ -191,46 +193,26 @@ class _CreateLoanRequestViewState extends State with Tick showAsBottomSheet: true, onSelect: (value) { _loanFormModel.site = value; - _loanFormModel.building = null; setState(() {}); }, ), - // 8.height, - // SingleItemDropDownMenu( + 8.height, + //TODO need to check where to get all departments.. + // MultipleItemDropDownMenu( // context: context, - // title: context.translation.building, - // initialValue: _loanFormModel.building, - // showShadow: false, // showAsBottomSheet: true, - // backgroundColor: AppColor.fieldBgColor(context), - // enabled: _loanFormModel.site?.buildings?.isNotEmpty ?? false, - // staticData: _loanFormModel.site?.buildings ?? [], - // onSelect: (value) { - // _loanFormModel.building = value; - // _loanFormModel.floor = null; - // _loanFormModel.department = null; - // setState(() {}); - // }, - // ), - // 8.height, - // SingleItemDropDownMenu( - // context: context, - // title: context.translation.floor, + // backgroundColor: AppColor.neutral100, // showShadow: false, - // showAsBottomSheet: true, - // initialValue: _loanFormModel.floor, - // backgroundColor: AppColor.fieldBgColor(context), - // enabled: _loanFormModel.building?.floors?.isNotEmpty ?? false, - // staticData: _loanFormModel.building?.floors ?? [], + // showCancel: true, + // requestById: context.userProvider.user?.clientId, + // title: "Please specify departments and relations", + // initialValue: departments, // onSelect: (value) { - // _loanFormModel.floor = value; - // _loanFormModel.department = null; - // setState(() {}); + // departments = value ?? []; + // trafRequest?.trafDepartments = departments.map((element) => Departments(id: 0, trafId: 0, departmentId: element.id!.toInt())).toList(); // }, // ), - 8.height, - //TODO need to check where to get all departments.. - SingleItemDropDownMenu( + SingleItemDropDownMenu( context: context, title: context.translation.department, showShadow: false, diff --git a/lib/modules/loan_module/provider/medical_department_provider.dart b/lib/modules/loan_module/provider/medical_department_provider.dart new file mode 100644 index 00000000..e0163718 --- /dev/null +++ b/lib/modules/loan_module/provider/medical_department_provider.dart @@ -0,0 +1,32 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:test_sa/controllers/api_routes/api_manager.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/modules/loan_module/models/medical_department_model.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; + +class MedicalDepartmentProvider extends LoadingListNotifier { + @override + Future getData({int? id}) async { + if (loading == true) return -2; + loading = true; + notifyListeners(); + try { + Response response = await ApiManager.instance.get(URLs.getMedDepartmentBasedOnSite + "?customerId=$id"); + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + List categoriesListJson = json.decode(response.body)["data"]; + items = categoriesListJson.map((item) => MedicalDepartmentModel.fromJson(item)).toList(); + } + loading = false; + notifyListeners(); + return response.statusCode; + } catch (error) { + loading = false; + stateCode = -1; + notifyListeners(); + return -1; + } + } +} \ No newline at end of file