diff --git a/lib/modules/cx_module/chat/chat_api_client.dart b/lib/modules/cx_module/chat/chat_api_client.dart index 8466a596..c01e5d05 100644 --- a/lib/modules/cx_module/chat/chat_api_client.dart +++ b/lib/modules/cx_module/chat/chat_api_client.dart @@ -66,7 +66,8 @@ class ChatApiClient { } Future loadParticipants(int moduleId, int referenceId, String? assigneeEmployeeNumber) async { - Response response = await ApiClient().getJsonForResponse("${URLs.chatHubUrlApi}/chat/context/$moduleId/$referenceId?assigneeEmployeeNumber=$assigneeEmployeeNumber", token: chatLoginResponse!.token); + Response response = + await ApiClient().getJsonForResponse("${URLs.chatHubUrlApi}/chat/context/$moduleId/$referenceId?assigneeEmployeeNumber=$assigneeEmployeeNumber", token: chatLoginResponse!.token); if (!kReleaseMode) { // logger.i("login-res: " + response.body); @@ -93,18 +94,18 @@ class ChatApiClient { Response response = await ApiClient().postJsonForResponse( "${URLs.chatHubUrlApi}/UserChatHistory/GetUserChatHistory/$myId/$otherId/0", {"moduleCode": moduleId.toString(), "referenceId": referenceId.toString()}, token: chatLoginResponse!.token); - // try { - if (response.statusCode == 200) { - List data = jsonDecode(response.body); - return data.map((elemet) => SingleUserChatModel.fromJson(elemet)).toList(); + try { + if (response.statusCode == 200) { + List data = jsonDecode(response.body); + return data.map((elemet) => SingleUserChatModel.fromJson(elemet)).toList(); - // return UserChatHistoryModel.fromJson(jsonDecode(response.body)); - } else { + // return UserChatHistoryModel.fromJson(jsonDecode(response.body)); + } else { + return []; + } + } catch (ex) { return []; } - // } catch (ex) { - // return []; - // } } /* Future sendTextMessage(String message, int conversationId) async { diff --git a/lib/modules/cx_module/chat/chat_page.dart b/lib/modules/cx_module/chat/chat_page.dart index 84f85c75..8a22fd1b 100644 --- a/lib/modules/cx_module/chat/chat_page.dart +++ b/lib/modules/cx_module/chat/chat_page.dart @@ -34,10 +34,12 @@ enum ChatState { idle, voiceRecordingStarted, voiceRecordingCompleted } class ChatPage extends StatefulWidget { int moduleId; int requestId; + String assigneeEmployeeNumber; + String myEmployeeID; String title; bool readOnly; - ChatPage({Key? key, required this.moduleId, required this.requestId, this.title = "Chat", this.readOnly = false}) : super(key: key); + ChatPage({Key? key, required this.moduleId, required this.requestId, this.title = "Chat", this.readOnly = false, this.assigneeEmployeeNumber = "", this.myEmployeeID = ""}) : super(key: key); @override _ChatPageState createState() { @@ -72,6 +74,18 @@ class _ChatPageState extends State { } void loadChatHistory() { + // // String assigneeEmployeeNumber = Provider.of(context, listen: false).currentWorkOrder?.data?.assignedEmployee?.employeeId ?? ""; + // // String myEmployeeId = context.userProvider.user!.username!; + // // + // + // receiver = context.userProvider.isNurse ? widget.assigneeEmployeeNumber : widget.myEmployeeID; + // + // Provider.of(context, listen: false).connectToHub(widget.moduleId, widget.requestId, widget.myEmployeeID, widget.assigneeEmployeeNumber); + // + // receiver = context.userProvider.isNurse + // ? assigneeEmployeeNumber + // :myEmployeeId; + String assigneeEmployeeNumber = Provider.of(context, listen: false).currentWorkOrder?.data?.assignedEmployee?.employeeId ?? ""; String myEmployeeId = context.userProvider.user!.username!; diff --git a/lib/modules/cx_module/chat/chat_widget.dart b/lib/modules/cx_module/chat/chat_widget.dart new file mode 100644 index 00000000..b9bc111b --- /dev/null +++ b/lib/modules/cx_module/chat/chat_widget.dart @@ -0,0 +1,73 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; + +import 'chat_page.dart'; +import 'chat_provider.dart'; + +class ChatWidget extends StatefulWidget { + int moduleId; + int requestId; + String assigneeEmployeeNumber; + String myEmployeeID; + bool isReadOnly; + String title; + + ChatWidget({Key? key, this.isReadOnly = false, this.title = "Chat", required this.moduleId, required this.requestId, required this.assigneeEmployeeNumber, required this.myEmployeeID}) + : super(key: key); + + @override + _ChatWidgetState createState() { + return _ChatWidgetState(); + } +} + +class _ChatWidgetState extends State { + @override + void initState() { + super.initState(); + Provider.of(context, listen: false).reset(); + getChatToken(); + } + + void getChatToken() { + ChatProvider cProvider = Provider.of(context, listen: false); + if (cProvider.chatLoginResponse != null && cProvider.referenceID == widget.requestId) return; + // String assigneeEmployeeNumber = Provider.of(context, listen: false).currentWorkOrder?.data?.assignedEmployee?.employeeId ?? ""; + String myEmployeeId = widget.myEmployeeID; + + String receiver = context.userProvider.isNurse ? widget.assigneeEmployeeNumber : widget.myEmployeeID; + + cProvider.getUserAutoLoginTokenSilent(widget.moduleId, widget.requestId, widget.title, myEmployeeId, receiver); + } + + @override + void dispose() { + super.dispose(); + } + + @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, + myEmployeeID: widget.myEmployeeID, + ))); + }, + ).toShimmer(context: context, isShow: requestProvider.chatLoginTokenLoading, radius: 30, height: 30, width: 30); + }); + ; + } +} diff --git a/lib/modules/cx_module/chat/helper/chat_file_picker.dart b/lib/modules/cx_module/chat/helper/chat_file_picker.dart index 9d928521..1070e3db 100644 --- a/lib/modules/cx_module/chat/helper/chat_file_picker.dart +++ b/lib/modules/cx_module/chat/helper/chat_file_picker.dart @@ -48,7 +48,7 @@ class ChatFilePicker extends StatelessWidget { if (pickedFile != null) { CroppedFile? croppedFile = await ImageCropper().cropImage( sourcePath: pickedFile.path, - aspectRatio: CropAspectRatio(ratioX: 1, ratioY: 1), + // aspectRatio: CropAspectRatio(ratioX: 1, ratioY: 1), uiSettings: [ AndroidUiSettings( toolbarTitle: 'ATOMS', diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index e5964bc5..16aac3d5 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -11,6 +11,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.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/app_filled_button.dart'; import 'package:test_sa/views/pages/user/gas_refill/update_gas_refill_request.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; @@ -55,7 +56,17 @@ class _GasRefillDetailsPageState extends State { gasRefillProvider = Provider.of(context); return Scaffold( - appBar: DefaultAppBar(title: context.translation.gasRefillDetails), + appBar: DefaultAppBar( + title: context.translation.gasRefillDetails, + // actions: [ + // if (context.userProvider.isEngineer || context.userProvider.isNurse) ...[ + // if (context.userProvider.isEngineer) + // ChatWidget(moduleId: 4, requestId: 1, assigneeEmployeeNumber: "123456", myEmployeeID: "1234") + // else + // ChatWidget(moduleId: 4, requestId: 1, assigneeEmployeeNumber: "123456", myEmployeeID: "123456") + // ] + // ], + ), key: _scaffoldKey, body: FutureBuilder( future: gasRefillProvider.getGasRefillObjectById(widget.model.id!),