diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 6d04a2a4..edbf0bd9 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -469,8 +469,6 @@ "-framework", "\"nanopb\"", "-framework", - "\"qr_code_scanner\"", - "-framework", "\"speech_to_text\"", "-framework", "\"sqflite\"", @@ -689,8 +687,6 @@ "-framework", "\"nanopb\"", "-framework", - "\"qr_code_scanner\"", - "-framework", "\"speech_to_text\"", "-framework", "\"sqflite\"", @@ -795,8 +791,6 @@ "-framework", "\"nanopb\"", "-framework", - "\"qr_code_scanner\"", - "-framework", "\"speech_to_text\"", "-framework", "\"sqflite\"", diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index c869f0dc..a143a94a 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -1,15 +1,13 @@ class URLs { URLs._(); - static const String appReleaseBuildNumber = "28"; + static const String appReleaseBuildNumber = "31"; // static const host1 = "https://atomsm.hmg.com"; // production url // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url static const host1 = "https://atomsmuat.hmg.com"; // local UAT url - // static const host1 = "http://10.201.111.125:9495"; // temporary Server UAT url - - // static String _baseUrl = "$_host/mobile"; + // static final String _baseUrl = "$_host/mobile"; // host local UAT static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/mobile"; // host local UAT and for internal audit dev // static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM @@ -66,8 +64,10 @@ class URLs { //service request new flow urls. static get nurseDashboardCountUrl => '$_baseUrl/ServiceRequest/GetDashboardNurseCount'; + static get qaAuditorCount => '$_baseUrl/ServiceRequest/GetDashboardQAAuditorCount'; static get nurseDashboardDetailsUrl => '$_baseUrl/ServiceRequest/GetDashboardNurseDetails'; + static get qaAuditorDetails => '$_baseUrl/ServiceRequest/GetDashboardQAAuditorDetails'; static get nurseRejectUrl => '$_baseUrl/ServiceRequest/NurseReject'; diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index c01d9965..bc011827 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -110,12 +110,13 @@ class FirebaseNotificationManger { serviceClass = CMDetailPage(requestId: int.parse(messageData["requestNumber"].toString())); break; case "7": - serviceClass = DeviceTransferDetails(model: DeviceTransfer(id: int.parse(messageData["requestNumber"].toString()))); + serviceClass = DeviceTransferDetails(model: DeviceTransfer(id: int.parse(messageData["requestNumber"].toString())), moduleId: 3); break; case "9": serviceClass = GasRefillDetailsPage( priority: messageData["priority"], date: messageData["createdOn"], + moduleId: 2, model: GasRefillModel(id: int.parse(messageData["requestNumber"].toString())), ); break; diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index c09cb621..8853589a 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -106,7 +106,9 @@ class DashBoardProvider extends ChangeNotifier { isAllCountLoading = true; notifyListeners(); String url = ''; - if (usersType == UsersTypes.engineer || usersType == UsersTypes.assessor || usersType == UsersTypes.assessorTl) { + if (usersType == UsersTypes.qualityUser) { + url = URLs.qaAuditorCount; + } else if (usersType == UsersTypes.engineer || usersType == UsersTypes.assessor || usersType == UsersTypes.assessorTl) { url = URLs.engineerDashboardCountUrl; } else { url = URLs.nurseDashboardCountUrl; @@ -241,7 +243,10 @@ class DashBoardProvider extends ChangeNotifier { Response response; String url = ''; - if (usersType == UsersTypes.engineer || usersType == UsersTypes.assessor || usersType == UsersTypes.assessorTl) { + + if (usersType == UsersTypes.qualityUser) { + url = URLs.qaAuditorDetails; + } else if (usersType == UsersTypes.engineer || usersType == UsersTypes.assessor || usersType == UsersTypes.assessorTl) { //need to check pagination for not assigned task @waseem. //these checks are to call different apis for dashboard for engineer... diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index c8620eaf..67b7d465 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -38,6 +38,7 @@ class DeviceTransfer { this.senderEngSignature, this.senderAttachments, this.receiverAssignedEmployeeId, + this.receiverAssignedEmployeeNumber, this.receiverMachineStatusId, this.senderMachineStatusValue, this.receiverComment, @@ -74,6 +75,7 @@ class DeviceTransfer { this.receiverMachineStatusValue, this.receiverMachineStatusName, this.senderAssignedEmployeeName, + this.senderAssignedEmployeeNumber, this.senderBuildingName, this.senderDepartmentName, this.senderEngSignatureUrl, @@ -144,6 +146,7 @@ class DeviceTransfer { }); } receiverAssignedEmployeeId = json['receiverAssignedEmployeeId']; + receiverAssignedEmployeeNumber = json['receiverAssignedEmployeeNumber']; receiverMachineStatusId = json['receiverMachineStatusId']; receiverMachineStatusValue = json['receiverMachineStatusValue']; receiverComment = json['receiverComment']; @@ -220,6 +223,7 @@ class DeviceTransfer { receiverEngSignatureUrl = json['receiverEngSignatureUrl']; receiverMachineStatusName = json['receiverMachineStatusName']; senderAssignedEmployeeName = json['senderAssignedEmployeeName']; + senderAssignedEmployeeNumber = json['senderAssignedEmployeeNumber']; senderBuildingName = json['senderBuildingName']; senderDepartmentName = json['senderDepartmentName']; senderEngSignatureUrl = json['senderEngSignatureUrl']; @@ -270,6 +274,7 @@ class DeviceTransfer { List? attachments; List? assetTransferAttachments; String? receiverAssignedEmployeeId; + String? receiverAssignedEmployeeNumber; num? receiverMachineStatusId; int? receiverMachineStatusValue; String? receiverComment; @@ -290,6 +295,7 @@ class DeviceTransfer { String? senderFloorName; String? senderDepartmentName; String? senderAssignedEmployeeName; + String? senderAssignedEmployeeNumber; String? senderMachineStatusName; String? senderEngSignatureUrl; String? receiverAssignedEmployeeName; @@ -345,6 +351,7 @@ class DeviceTransfer { String? senderEngSignature, List? senderAttachments, String? receiverAssignedEmployeeId, + String? receiverAssignedEmployeeNumber, num? receiverMachineStatusId, String? receiverComment, String? receiverStartDate, @@ -364,6 +371,7 @@ class DeviceTransfer { String? senderFloorName, String? senderDepartmentName, String? senderAssignedEmployeeName, + String? senderAssignedEmployeeNumber, String? senderMachineStatusName, String? senderEngSignatureUrl, String? receiverAssignedEmployeeName, @@ -420,6 +428,7 @@ class DeviceTransfer { senderEngSignature: senderEngSignature ?? this.senderEngSignature, senderAttachments: senderAttachments ?? this.senderAttachments, receiverAssignedEmployeeId: receiverAssignedEmployeeId ?? this.receiverAssignedEmployeeId, + receiverAssignedEmployeeNumber: receiverAssignedEmployeeNumber ?? this.receiverAssignedEmployeeNumber, receiverMachineStatusId: receiverMachineStatusId ?? this.receiverMachineStatusId, receiverComment: receiverComment ?? this.receiverComment, receiverStartDate: receiverStartDate ?? this.receiverStartDate, @@ -439,6 +448,7 @@ class DeviceTransfer { senderFloorName: senderFloorName ?? this.senderFloorName, senderDepartmentName: senderDepartmentName ?? this.senderDepartmentName, senderAssignedEmployeeName: senderAssignedEmployeeName ?? this.senderAssignedEmployeeName, + senderAssignedEmployeeNumber: senderAssignedEmployeeNumber ?? this.senderAssignedEmployeeNumber, senderMachineStatusName: senderMachineStatusName ?? this.senderMachineStatusName, senderMachineStatusValue: senderMachineStatusValue ?? this.senderMachineStatusValue, senderEngSignatureUrl: senderEngSignatureUrl ?? this.senderEngSignatureUrl, @@ -503,6 +513,7 @@ class DeviceTransfer { map['senderAttachments'] = senderAttachments!.map((v) => v.toJson()).toList(); } map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId; + map['receiverAssignedEmployeeNumber'] = receiverAssignedEmployeeNumber; map['receiverMachineStatusId'] = receiverMachineStatusId; map['receiverComment'] = receiverComment; map['receiverStartDate'] = receiverStartDate; @@ -524,6 +535,7 @@ class DeviceTransfer { map["senderFloorName"] = senderFloorName; map["senderDepartmentName"] = senderDepartmentName; map["senderAssignedEmployeeName"] = senderAssignedEmployeeName; + map["senderAssignedEmployeeNumber"] = senderAssignedEmployeeNumber; map["senderMachineStatusName"] = senderMachineStatusName; map["senderEngSignatureUrl"] = senderEngSignatureUrl; map["receiverAssignedEmployeeName"] = receiverAssignedEmployeeName; @@ -631,6 +643,7 @@ class DeviceTransfer { map['assetTransferReceiverTimers'] = receiverVisitTimers!.map((v) => v.toJson()).toList(); } map['receiverAssignedEmployeeId'] = receiverAssignedEmployeeId; + map['receiverAssignedEmployeeNumber'] = receiverAssignedEmployeeNumber; map['receiverMachineStatusId'] = receiverMachineStatusId; map['receiverComment'] = receiverComment; map['receiverStartDate'] = receiverStartDate; @@ -674,6 +687,7 @@ class DeviceTransfer { senderEngSignature = assetTransfer.senderEngSignature; senderAttachments = assetTransfer.senderAttachments; receiverAssignedEmployeeId = assetTransfer.receiverAssignedEmployeeId; + receiverAssignedEmployeeNumber = assetTransfer.receiverAssignedEmployeeNumber; receiverMachineStatusId = assetTransfer.receiverMachineStatusId; receiverComment = assetTransfer.receiverComment; receiverStartDate = assetTransfer.receiverStartDate; @@ -693,6 +707,7 @@ class DeviceTransfer { senderFloorName = assetTransfer.senderFloorName; senderDepartmentName = assetTransfer.senderDepartmentName; senderAssignedEmployeeName = assetTransfer.senderAssignedEmployeeName; + senderAssignedEmployeeNumber = assetTransfer.senderAssignedEmployeeNumber; senderMachineStatusName = assetTransfer.senderMachineStatusName; senderEngSignatureUrl = assetTransfer.senderEngSignatureUrl; receiverAssignedEmployeeName = assetTransfer.receiverAssignedEmployeeName; diff --git a/lib/models/new_models/gas_refill_model.dart b/lib/models/new_models/gas_refill_model.dart index e9e873f3..a50373df 100644 --- a/lib/models/new_models/gas_refill_model.dart +++ b/lib/models/new_models/gas_refill_model.dart @@ -523,3 +523,55 @@ class GasRefillContactPerson { }; } } +class AssignedEmployee { + String? id; + String? name; + String? email; + String? employeeId; + int? languageId; + String? extensionNo; + String? phoneNumber; + String? positionName; + String? position; + bool? isActive; + + AssignedEmployee( + {this.id, + this.name, + this.email, + this.employeeId, + this.languageId, + this.extensionNo, + this.phoneNumber, + this.positionName, + this.position, + this.isActive}); + + AssignedEmployee.fromJson(Map json) { + id = json['id']; + name = json['name']; + email = json['email']; + employeeId = json['employeeId']; + languageId = json['languageId']; + extensionNo = json['extensionNo']; + phoneNumber = json['phoneNumber']; + positionName = json['positionName']; + position = json['position']; + isActive = json['isActive']; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['name'] = this.name; + data['email'] = this.email; + data['employeeId'] = this.employeeId; + data['languageId'] = this.languageId; + data['extensionNo'] = this.extensionNo; + data['phoneNumber'] = this.phoneNumber; + data['positionName'] = this.positionName; + data['position'] = this.position; + data['isActive'] = this.isActive; + return data; + } +} diff --git a/lib/modules/cx_module/chat/chat_widget.dart b/lib/modules/cx_module/chat/chat_widget.dart index a137245e..4d28bd1b 100644 --- a/lib/modules/cx_module/chat/chat_widget.dart +++ b/lib/modules/cx_module/chat/chat_widget.dart @@ -73,25 +73,26 @@ class _ChatWidgetState extends State { @override Widget build(BuildContext context) { - return Consumer(builder: (pContext, requestProvider, _) { - return IconButton( - icon: const Icon(Icons.chat_bubble), - onPressed: () { - Navigator.push( - context, - CupertinoPageRoute( - builder: (context) => ChatPage( - moduleId: widget.moduleId, - requestId: widget.requestId, - title: widget.title, - readOnly: widget.isReadOnly, - assigneeEmployeeNumber: widget.assigneeEmployeeNumber, - contactEmployeeINumber: widget.contactEmployeeINumber, - myLoginUserID: widget.myLoginUserID, - ))); - }, - ).toShimmer(context: context, isShow: requestProvider.chatLoginTokenLoading, radius: 30, height: 30, width: 30); - }); - ; + return widget.isShow + ? Consumer(builder: (pContext, requestProvider, _) { + return IconButton( + icon: const Icon(Icons.chat_bubble), + onPressed: () { + Navigator.push( + context, + CupertinoPageRoute( + builder: (context) => ChatPage( + moduleId: widget.moduleId, + requestId: widget.requestId, + title: widget.title, + readOnly: widget.isReadOnly, + assigneeEmployeeNumber: widget.assigneeEmployeeNumber, + contactEmployeeINumber: widget.contactEmployeeINumber, + myLoginUserID: widget.myLoginUserID, + ))); + }, + ).toShimmer(context: context, isShow: requestProvider.chatLoginTokenLoading, radius: 30, height: 30, width: 30); + }) + : const SizedBox(); } } diff --git a/lib/modules/cx_module/chat/helper/chat_file_viewer.dart b/lib/modules/cx_module/chat/helper/chat_file_viewer.dart index fbd53eec..04fba4a1 100644 --- a/lib/modules/cx_module/chat/helper/chat_file_viewer.dart +++ b/lib/modules/cx_module/chat/helper/chat_file_viewer.dart @@ -127,8 +127,9 @@ class ChatFileViewer extends StatelessWidget { Future downloadFile() async { try { + // print("downloadUrl:$downloadUrl"); return await ChatApiClient() - .downloadFileWithHttp(downloadUrl, fileName: fileTypeResponse.fileName, fileTypeDescription: fileTypeResponse.fileTypeDescription, fileSource: fileTypeResponse.fileTypeId!); + .downloadFileWithHttp(downloadUrl, fileName: fileTypeResponse.fileName, fileTypeDescription: fileTypeResponse.fileTypeDescription ?? "", fileSource: fileTypeResponse.fileTypeId!); } catch (ex) { print("downloadFile:$ex"); return null; diff --git a/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart b/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart index 83ddb00c..638b7189 100644 --- a/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart +++ b/lib/modules/internal_audit_module/pages/equipment_internal_audit/create_equipment_internal_audit_form.dart @@ -42,6 +42,8 @@ class _CreateEquipmentInternalAuditFormState extends State _scaffoldKey = GlobalKey(); FocusNode auditCheckListNode = FocusNode(); + int noFindingValue = 4; + @override void initState() { super.initState(); @@ -78,7 +80,6 @@ class _CreateEquipmentInternalAuditFormState extends State( context: context, showAsBottomSheet: true, @@ -89,6 +90,15 @@ class _CreateEquipmentInternalAuditFormState extends State element.value == noFindingValue); + } catch (ex) {} + if (noFindingElement != null) { + value!.removeWhere((element) => element.value != noFindingElement!.value); + } + } _equipmentinternalAuditModel.findings = value ?? []; }, ), @@ -137,9 +147,9 @@ class _CreateEquipmentInternalAuditFormState extends State const AppLazyLoading()); _equipmentinternalAuditModel.auditorId = context.userProvider.user?.userID; - bool status = await internalAuditProvider.addEquipmentInternalAudit(context: context, request: _equipmentinternalAuditModel); + bool status = await internalAuditProvider.addEquipmentInternalAudit(context: context, request: _equipmentinternalAuditModel); Navigator.pop(context); - if(status){ + if (status) { Navigator.pop(context); } } diff --git a/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart b/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart index 84999bcb..796a401d 100644 --- a/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart +++ b/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart @@ -19,6 +19,7 @@ import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; class EquipmentInternalAuditDetailPage extends StatefulWidget { static const String id = "/details-internal-audit"; @@ -51,12 +52,10 @@ class _EquipmentInternalAuditDetailPageState extends State getAuditData() async { model = await _internalAuditProvider.getEquipmentInternalAuditById(widget.auditId); allAttachments.clear(); - allAttachments = [ + allAttachments = [ ...(model?.attachments ?? []), ...(model?.engineerData?.attachments ?? []), ]; - - } @override @@ -82,12 +81,43 @@ class _EquipmentInternalAuditDetailPageState extends State createState() => _DeviceTransferDetailsState(); @@ -131,6 +134,7 @@ class _DeviceTransferDetailsState extends State { ] else ...[ // sender card _buildCard( + _model!, isSender: true, site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", dept: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", @@ -150,6 +154,7 @@ class _DeviceTransferDetailsState extends State { 8.height, // receiver card _buildCard( + _model!, isSender: false, site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", dept: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", @@ -215,7 +220,17 @@ class _DeviceTransferDetailsState extends State { ], ), ], - ), + ).expanded, + if (context.userProvider.isEngineer || context.userProvider.isNurse) + ChatWidget( + moduleId: widget.moduleId, + isShow: _model!.senderMachineStatusValue! != 4, + isReadOnly: _model!.senderMachineStatusValue! != 1, + requestId: widget.model.id!.toInt(), + assigneeEmployeeNumber: _model!.senderAssignedEmployeeNumber, + myLoginUserID: context.userProvider.user!.username!, + contactEmployeeINumber: _model!.assetTransferContactPersons!.first.employeeNumber, + ), if ((_userProvider!.user?.type == UsersTypes.engineer)) if (isCurrentEngineerEligibleForEdit && isCurrentRequestEditAble) "edit".toSvgAsset(height: 40, width: 40).onPress(() async { @@ -248,7 +263,8 @@ class _DeviceTransferDetailsState extends State { ).toShadowContainer(context); } - _buildCard({required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel, String? assignTo}) { + _buildCard(DeviceTransfer _deviceTransfer, + {required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel, String? assignTo}) { bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID; bool isCurrentRequestClosed = isSender ? ((_model?.senderMachineStatusValue == 3)) : ((_model?.receiverMachineStatusValue == 3)); @@ -265,7 +281,17 @@ class _DeviceTransferDetailsState extends State { if (statusLabel != null) 8.height, isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context), ], - ), + ).expanded, + if (context.userProvider.isEngineer || context.userProvider.isNurse) + ChatWidget( + moduleId: widget.moduleId, + isShow: (isSender ? _deviceTransfer.senderMachineStatusValue! : _deviceTransfer.receiverMachineStatusValue!) != 0, + isReadOnly: (isSender ? _deviceTransfer.senderMachineStatusValue! : _deviceTransfer.receiverMachineStatusValue) != 1, + requestId: widget.model.id!.toInt(), + assigneeEmployeeNumber: isSender ? _deviceTransfer.senderAssignedEmployeeNumber! : _deviceTransfer.receiverAssignedEmployeeNumber!, + myLoginUserID: context.userProvider.user!.username!, + contactEmployeeINumber: _deviceTransfer.assetTransferContactPersons!.first.employeeNumber, + ), if ((_userProvider!.user?.type == UsersTypes.engineer)) if (isCurrentEngineerEligibleForEdit && !isCurrentRequestClosed) @@ -273,7 +299,7 @@ class _DeviceTransferDetailsState extends State { // ? (!(_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) // : (!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false))) // - "edit".toSvgAsset(height: 48, width: 48).onPress(() async { + "edit".toSvgAsset(height: 48, width: 48).onPress(() async { bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model!, isSender: isSender)))) as bool; if (isReload ?? false) { setState(() {}); diff --git a/lib/modules/tm_module/gas_refill/gas_refill_details.dart b/lib/modules/tm_module/gas_refill/gas_refill_details.dart index a6e60491..00ac17aa 100644 --- a/lib/modules/tm_module/gas_refill/gas_refill_details.dart +++ b/lib/modules/tm_module/gas_refill/gas_refill_details.dart @@ -28,8 +28,9 @@ import 'update_gas_refill_request.dart'; class GasRefillDetailsPage extends StatefulWidget { GasRefillModel model; String? priority, date; + final int moduleId; - GasRefillDetailsPage({Key? key, this.priority, this.date, required this.model}) : super(key: key); + GasRefillDetailsPage({Key? key, this.priority, this.date, required this.model, required this.moduleId}) : super(key: key); @override State createState() => _GasRefillDetailsPageState(); @@ -59,21 +60,22 @@ class _GasRefillDetailsPageState extends State { appBar: DefaultAppBar( title: context.translation.gasRefillDetails, actions: [ - // if (context.userProvider.isEngineer || context.userProvider.isNurse) - // Selector( - // selector: (_, myModel) => myModel.gasRefillModel, // Selects only the userName - // builder: (_, _gasRefillModel, __) { - // if (_gasRefillModel == null) return const SizedBox(); - // return ChatWidget( - // moduleId: 2, - // isShow: _gasRefillModel.status!.value! == 1, - // // isReadOnly: _gasRefillModel.status!.value! == 1, - // requestId: widget.model.id!.toInt(), - // assigneeEmployeeNumber: _gasRefillModel.assignedEmployee!.name!, - // myLoginUserID: context.userProvider.user!.username!, - // contactEmployeeINumber: _gasRefillModel.gasRefillContactPerson!.first.employeeCode!, - // ); - // }) + if (context.userProvider.isEngineer || context.userProvider.isNurse) + Selector( + selector: (_, myModel) => myModel.gasRefillModel, // Selects only the userName + builder: (_, _gasRefillModel, __) { + if (_gasRefillModel == null) return const SizedBox(); + + return ChatWidget( + moduleId: widget.moduleId, + isShow: _gasRefillModel.status!.value! != 0, + isReadOnly: _gasRefillModel.status!.value! != 1, + requestId: widget.model.id!.toInt(), + assigneeEmployeeNumber: _gasRefillModel.assignedEmployee?.employeeId!, + myLoginUserID: context.userProvider.user!.username!, + contactEmployeeINumber: _gasRefillModel.gasRefillContactPerson!.first.employeeCode!, + ); + }) ], ), key: _scaffoldKey, diff --git a/lib/modules/tm_module/tasks/task_request_detail_view.dart b/lib/modules/tm_module/tasks/task_request_detail_view.dart index e5b5bdb5..91a75fc7 100644 --- a/lib/modules/tm_module/tasks/task_request_detail_view.dart +++ b/lib/modules/tm_module/tasks/task_request_detail_view.dart @@ -11,6 +11,7 @@ import 'package:test_sa/models/all_requests_and_count_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; +import 'package:test_sa/modules/cx_module/chat/chat_widget.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/working_time_tile.dart'; import 'package:test_sa/providers/task_request_provider/task_request_provider.dart'; @@ -29,8 +30,9 @@ class TaskRequestDetailsView extends StatefulWidget { static const String id = "/task-request-detail"; final int taskId; final RequestsDetails? requestDetails; + final int moduleId; - const TaskRequestDetailsView({Key? key, required this.taskId, this.requestDetails}) : super(key: key); + const TaskRequestDetailsView({Key? key, required this.taskId, this.requestDetails, required this.moduleId}) : super(key: key); @override _TaskRequestDetailsViewState createState() { @@ -65,7 +67,27 @@ class _TaskRequestDetailsViewState extends State { Widget build(BuildContext context) { userProvider ??= Provider.of(context, listen: false); return Scaffold( - appBar: DefaultAppBar(title: context.translation.taskRequest), + appBar: DefaultAppBar( + title: context.translation.taskRequest, + actions: [ + if (context.userProvider.isEngineer || context.userProvider.isNurse) + Selector( + selector: (_, myModel) => myModel.taskRequestModel, // Selects only the userName + builder: (_, _taskReqModel, __) { + if (_taskReqModel == null) return const SizedBox(); + + return ChatWidget( + moduleId: widget.moduleId, + isShow: _taskReqModel.taskJobStatus!.value! != 1, + isReadOnly: _taskReqModel.taskJobStatus!.value! != 2, + requestId: widget.taskId.toInt(), + assigneeEmployeeNumber: _taskReqModel.assignedEngineer?.employeeId!, + myLoginUserID: context.userProvider.user!.username!, + contactEmployeeINumber: _taskReqModel.taskJobContactPersons!.first.user?.employeeId, + ); + }) + ], + ), body: Consumer(builder: (context, taskProvider, child) { TaskData? taskModel = taskProvider.taskRequestModel; return taskProvider.isLoading diff --git a/lib/modules/tm_module/tasks/task_request_item_view.dart b/lib/modules/tm_module/tasks/task_request_item_view.dart index 3cc6bd05..2c164df3 100644 --- a/lib/modules/tm_module/tasks/task_request_item_view.dart +++ b/lib/modules/tm_module/tasks/task_request_item_view.dart @@ -68,7 +68,8 @@ class TaskRequestItemView extends StatelessWidget { Navigator.of(context).push(MaterialPageRoute( builder: (_) => TaskRequestDetailsView( taskId: requestData!.id!, - requestDetails: RequestsDetails(nameOfType: requestData?.nameOfType, status: requestData?.statusName, priority: requestData?.priorityName, date: requestData?.transactionDate), + moduleId: requestData!.transactionNo!, + requestDetails: RequestsDetails(nameOfType: requestData?.nameOfType, status: requestData?.statusName, priority: requestData?.priorityName, date: requestData?.transactionDate, ), ))); }); } @@ -122,6 +123,7 @@ class TaskRequestItemView extends StatelessWidget { Navigator.of(context).push(MaterialPageRoute( builder: (_) => TaskRequestDetailsView( taskId: requestDetails!.id!, + moduleId: requestDetails!.transactionType!, requestDetails: requestDetails, ))); }); diff --git a/lib/new_views/pages/land_page/requests/device_item_view.dart b/lib/new_views/pages/land_page/requests/device_item_view.dart index 008ce1e8..dfb12d40 100644 --- a/lib/new_views/pages/land_page/requests/device_item_view.dart +++ b/lib/new_views/pages/land_page/requests/device_item_view.dart @@ -77,7 +77,7 @@ class DeviceItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestData!.id!)))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestData!.id!), moduleId: requestData!.transactionNo!))); }); } @@ -138,7 +138,11 @@ class DeviceItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestDetails!.id!)))); + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => DeviceTransferDetails( + model: DeviceTransfer(id: requestDetails!.id!), + moduleId: requestDetails!.transactionType!, + ))); }); } diff --git a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart index 1143487a..bd6ac0a7 100644 --- a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart +++ b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart @@ -74,6 +74,7 @@ class GasRefillItemView extends StatelessWidget { builder: (_) => GasRefillDetailsPage( priority: requestData!.priorityName, date: requestData!.transactionDate!, + moduleId: requestData!.transactionNo!, model: GasRefillModel(id: requestData!.id), ), ), @@ -135,6 +136,7 @@ class GasRefillItemView extends StatelessWidget { builder: (_) => GasRefillDetailsPage( priority: requestDetails!.priority!, date: requestDetails!.date, + moduleId: requestDetails!.transactionType!, model: GasRefillModel(id: requestDetails!.id), ), ), diff --git a/lib/providers/task_request_provider/task_request_provider.dart b/lib/providers/task_request_provider/task_request_provider.dart index e3d38a4b..1a517d73 100644 --- a/lib/providers/task_request_provider/task_request_provider.dart +++ b/lib/providers/task_request_provider/task_request_provider.dart @@ -77,6 +77,7 @@ class TaskRequestProvider extends ChangeNotifier { Future getTaskById({required int id, bool? showLoading = true}) async { try { isLoading = showLoading ?? true; + taskRequestModel = null; notifyListeners(); final response = await ApiManager.instance.get(URLs.getTaskByIdUrl + "?taskJobId=$id"); stateCode = response.statusCode; @@ -129,7 +130,6 @@ class TaskRequestProvider extends ChangeNotifier { isLoading = false; notifyListeners(); if (stateCode == 200) { - return true; } return false; diff --git a/pubspec.yaml b/pubspec.yaml index 35ecdeaa..a7edc369 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.3.11+30 +version: 1.4.0+31 environment: sdk: ">=3.5.0 <4.0.0"