diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index aa711bab..d6fbf643 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -459,4 +459,6 @@ class URLs { static get updateDemoRequestByAssessor => "$_baseUrl/DemoRequest/UpdateDemoRequestByAssessor"; static get updateDemoPeriodByRequester => "$_baseUrl/DemoRequest/UpdateDemoPeriodByRequester"; + //4104 attachment type lookup + } diff --git a/lib/modules/demo_module/create_demo_request_page.dart b/lib/modules/demo_module/create_demo_request_page.dart index 5a7b2211..a6b2e2ad 100644 --- a/lib/modules/demo_module/create_demo_request_page.dart +++ b/lib/modules/demo_module/create_demo_request_page.dart @@ -17,6 +17,8 @@ import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/new_models/building.dart'; +import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/task_request/task_type_model.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; @@ -43,6 +45,7 @@ import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart'; +import '../../models/new_models/department.dart'; import 'demo_detail_view_page.dart'; import 'models/demo_form_model.dart'; @@ -169,23 +172,100 @@ class _CreateDemoRequestPageState extends State with Tick }, ), 8.height, - SingleItemDropDownMenu( + SingleItemDropDownMenu( context: context, - title: context.translation.department, + title: context.translation.building, + initialValue: _demoFormModel.building, showShadow: false, + showAsBottomSheet: true, validator: (value) { - if (value == null) return "Please select a department"; + if (value == null) return "Please select a building"; return null; }, + backgroundColor: AppColor.fieldBgColor(context), + enabled: _demoFormModel.site?.buildings?.isNotEmpty ?? false, + staticData: _demoFormModel.site?.buildings ?? [], + onSelect: (value) { + _demoFormModel.building = value; + _demoFormModel.floor = null; + _demoFormModel.department = null; + setState(() {}); + }, + ), + 8.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.floor, + showShadow: false, + showAsBottomSheet: true, + initialValue: _demoFormModel.floor, + backgroundColor: AppColor.fieldBgColor(context), + enabled: _demoFormModel.building?.floors?.isNotEmpty ?? false, + staticData: _demoFormModel.building?.floors ?? [], + validator: (value) { + if (value == null) return "Please select a floor"; + return null; + }, + onSelect: (value) { + _demoFormModel.floor = value; + _demoFormModel.department = null; + setState(() {}); + }, + ), + 8.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.department, + showShadow: false, showAsBottomSheet: true, initialValue: _demoFormModel.department, - requestById: context.userProvider.user?.clientId, backgroundColor: AppColor.fieldBgColor(context), + enabled: _demoFormModel.floor?.departments?.isNotEmpty ?? false, + validator: (value) { + if (value == null) return "Please select a department"; + return null; + }, + staticData: _demoFormModel.floor?.departments ?? [], onSelect: (value) { _demoFormModel.department = value; + _demoFormModel.room = null; setState(() {}); }, ), + // SingleItemDropDownMenu( + // context: context, + // title: context.translation.site, + // initialValue: _demoFormModel.site, + // showShadow: false, + // validator: (value) { + // if (value == null) return "Please select a site"; + // return null; + // }, + // backgroundColor: AppColor.fieldBgColor(context), + // showAsBottomSheet: true, + // onSelect: (value) { + // _demoFormModel.site = value; + // setState(() {}); + // }, + // ), + // 8.height, + // SingleItemDropDownMenu( + // context: context, + // title: context.translation.department, + // showShadow: false, + // validator: (value) { + // if (value == null) return "Please select a department"; + // return null; + // }, + // showAsBottomSheet: true, + // initialValue: _demoFormModel.department, + // requestById: context.userProvider.user?.clientId, + // backgroundColor: AppColor.fieldBgColor(context), + // onSelect: (value) { + // _demoFormModel.department = value; + // setState(() {}); + // }, + // ), ]; } @@ -410,10 +490,6 @@ class _CreateDemoRequestPageState extends State with Tick controller: vendorPhoneController, enable: false, labelText: "Contact Number", - validator: (value) { - if ((value ?? "").isEmpty) return "Mandatory"; - return null; - }, style: Theme.of(context).textTheme.titleMedium, backgroundColor: AppColor.fieldBgColor(context), labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), @@ -429,13 +505,6 @@ class _CreateDemoRequestPageState extends State with Tick labelText: "Email", controller: vendorEmailController, enable: false, - validator: (value) { - if ((value ?? "").isEmpty) { - return "Mandatory"; - } else { - return Validator.isEmail(value!) ? null : context.translation.emailValidateMessage; - } - }, style: Theme.of(context).textTheme.titleMedium, backgroundColor: AppColor.fieldBgColor(context), labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), @@ -456,7 +525,8 @@ class _CreateDemoRequestPageState extends State with Tick _demoFormModel.demoAttachment = []; for (var item in attachments) { String fileName = CMRequestUtils.isLocalUrl(item.name ?? '') ? ("${item.name ?? ''.split("/").last}|${base64Encode(File(item.name ?? '').readAsBytesSync())}") : item.name ?? ''; - _demoFormModel.demoAttachment?.add(DemoAttachments(id: 0, attachmentName: fileName, demoRequestId: 0)); + //Todo need to change from static attachmentTypeId... + _demoFormModel.demoAttachment?.add(DemoAttachments(id: 0, attachmentName: fileName, demoRequestId: 0,attachmentTypeId: 5)); } Utils.showLoading(context); DemoProvider demoProvider = Provider.of(context, listen: false); diff --git a/lib/modules/demo_module/models/demo_form_model.dart b/lib/modules/demo_module/models/demo_form_model.dart index 73911bc2..54b131da 100644 --- a/lib/modules/demo_module/models/demo_form_model.dart +++ b/lib/modules/demo_module/models/demo_form_model.dart @@ -1,10 +1,15 @@ import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/new_models/building.dart'; +import 'package:test_sa/models/new_models/floor.dart'; +import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/modules/demo_module/models/demo_attachment_model.dart'; import 'package:test_sa/modules/loan_module/models/medical_department_model.dart'; +import '../../../models/new_models/department.dart'; + class DemoFormModel { String? docName; int? id; @@ -20,9 +25,12 @@ class DemoFormModel { String? vendorNumber; String? vendorEmail; Site? site; + Building? building; // Now nullable + Floor? floor; // Now nullable + Department? department; // Now nullable + Rooms? room; SuppEngineerWorkOrders? supEngineer; SupplierDetails? vendor; - MedicalDepartmentModel? department; List? demoAttachment; DemoFormModel({ @@ -51,8 +59,8 @@ class DemoFormModel { "id": 0, 'siteId': site?.id, 'departmentId': department?.id, - "buildingId": 0, - "floorId": 0, + "buildingId": building?.id, + "floorId": floor?.id, "assetName": assetName, "isSubmit": true, "doctorName": docName, diff --git a/lib/modules/demo_module/provider/demo_provider.dart b/lib/modules/demo_module/provider/demo_provider.dart index 6703b1be..601fbd33 100644 --- a/lib/modules/demo_module/provider/demo_provider.dart +++ b/lib/modules/demo_module/provider/demo_provider.dart @@ -12,7 +12,8 @@ class DemoProvider extends ChangeNotifier { try { Response response = await ApiManager.instance.post(URLs.addDemoRequest, body: body, showToast: false); if (response.statusCode >= 200 && response.statusCode < 300) { - String message = (jsonDecode(response.body)["data"] ?? "") + " " + (jsonDecode(response.body)["message"] ?? ""); + // String message = (jsonDecode(response.body)["data"] ?? "") + " " + (jsonDecode(response.body)["message"] ?? ""); + String message = (jsonDecode(response.body)["message"] ?? ""); Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG); return true; } diff --git a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart index 35253c86..c96053b5 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart @@ -113,6 +113,7 @@ class _AllRequestsFilterPageState extends State { 'Asset Delivery': 13, }; } + ///TODO need add accessor filter as well. final statuses = { "All WO": 0, diff --git a/lib/new_views/pages/land_page/my_request/my_requests_page.dart b/lib/new_views/pages/land_page/my_request/my_requests_page.dart index e28dca9c..56d94f20 100644 --- a/lib/new_views/pages/land_page/my_request/my_requests_page.dart +++ b/lib/new_views/pages/land_page/my_request/my_requests_page.dart @@ -79,6 +79,8 @@ class _MyRequestsPageState extends State { if (context.userProvider.isAssessor) { requestsList = [ Request(null, context.translation.allWorkOrder), + Request(15, 'Demo Request'), + // Request(9, 'TRAF'), ]; }