unread messages api added.

design_3.0_loan_module
Sikander Saleem 17 hours ago
parent 5dee736d28
commit 4fdd04b106

@ -18,6 +18,7 @@ class URLs {
static const String chatHubUrlApi = "$chatHubUrl/api"; // new V2 apis
static const String chatHubUrlChat = "$chatHubUrl/hubs/chat"; // new V2 apis
static const String resetMessageCount = "$chatHubUrlApi/userChatHistory/AckMessages"; // new V2 apis
static const String unreadMessages = "$chatHubUrlApi/userChatHistory/unread-messages"; // new V2 apis
static const String chatApiKey = "f53a98286f82798d588f67a7f0db19f7aebc839e"; // new V2 apis
static String _host = host1;

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart';
@ -10,6 +11,7 @@ import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/helper/utils.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/pages/user/notifications/notifications_page.dart';
import 'package:test_sa/views/pages/user/notifications/unread_chat_list.dart';
import 'package:test_sa/views/widgets/dialogs/confirm_dialog.dart';
import '../../controllers/providers/api/user_provider.dart';
@ -127,6 +129,12 @@ class AppBarWidget extends StatelessWidget {
);
}),
16.width,
if (context.settingProvider.isUserFlowMedical) ...[
Icon(Icons.mark_unread_chat_alt_outlined, color: context.isDark ? AppColor.neutral30 : AppColor.neutral20, size: 30).paddingOnly(top: 6, end: 0).onPress(() {
Navigator.of(context).push(CupertinoPageRoute(builder: (_) => UnReadChatList()));
}),
8.width,
],
Stack(
alignment: Alignment.topRight,
children: [

@ -48,6 +48,7 @@ import 'package:test_sa/modules/cx_module/chat/model/chat_login_response_model.d
import 'package:uuid/uuid.dart';
import 'package:flutter/material.dart' as Material;
import 'api_client.dart';
import 'chat_api_client.dart';
import 'model/chat_attachment_model.dart';
import 'model/chat_participant_model.dart';
@ -454,6 +455,19 @@ class ChatProvider with ChangeNotifier, DiagnosticableTreeMixin {
return result;
}
Future<List> getUnReadMessages(String employeeId) async {
Response response = await ApiClient().getJsonForResponse(
"${URLs.unreadMessages}?retrieveAll=true",
headers: {'x-api-key': URLs.chatApiKey, 'x-employee-number': employeeId},
);
if (response.statusCode == 200) {
List data = jsonDecode(response.body)["response"];
return data.map((elemet) => ChatAttachment.fromJson(elemet)).toList();
} else {
return [];
}
}
// void updateUserChatStatus(List<Object?>? args) {
// dynamic items = args!.toList();
// for (var cItem in items[0]) {
@ -616,7 +630,6 @@ class ChatProvider with ChangeNotifier, DiagnosticableTreeMixin {
}
}
Future<void> onAckSeenAsync(List<Object?>? parameters) async {
try {
if (parameters == null || parameters.isEmpty) {

@ -0,0 +1,153 @@
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 'package:test_sa/modules/cx_module/chat/chat_provider.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import '../../../widgets/loaders/no_data_found.dart';
class UnReadChatList extends StatelessWidget {
UnReadChatList({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const DefaultAppBar(title: "Unread Messages"),
body: FutureBuilder<List>(
future: Provider.of<ChatProvider>(context, listen: false).getUnReadMessages(context.userProvider.user!.employeeId ?? context.userProvider.user!.username!),
builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) return const CircularProgressIndicator(color: AppColor.primary10).center;
if (snapshot.data == null) return const NoDataFound().center;
return SizedBox();
// List<LoanAttachmentModel> allAttachments = snapshot.data!.loanAttachments!;
//
// return Column(
// children: [
// ListView(
// padding: const EdgeInsets.all(16),
// children: [
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Row(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// StatusLabel(
// label: snapshot.data!.loanStatusName!,
// textColor: AppColor.getRequestStatusTextColorByName(context, snapshot.data!.loanStatusName!),
// backgroundColor: AppColor.getRequestStatusColorByName(context, snapshot.data!.loanStatusName!),
// ),
// 1.width.expanded,
// Text(
// snapshot.data!.createdDate?.toServiceRequestCardFormat ?? "-",
// textAlign: TextAlign.end,
// style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
// ),
// ],
// ),
// 12.height,
// ...requesterDetails(context, snapshot.data!),
// const Divider().defaultStyle(context),
// ...requestDetails(context, snapshot.data!),
// const Divider().defaultStyle(context),
// ...assetDetails(context, snapshot.data!),
// const Divider().defaultStyle(context),
// ...installationDetails(context, snapshot.data!),
// const Divider().defaultStyle(context),
// ...doctorDetails(context, snapshot.data!),
// const Divider().defaultStyle(context),
// ...vendorDetails(context, snapshot.data!),
// if (allAttachments.isNotEmpty) ...[
// const Divider().defaultStyle(context),
// Text(
// "Attachments".addTranslation,
// style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
// ),
// FilesList(images: allAttachments.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []),
// ],
// ],
// ).toShadowContainer(context, padding: 12),
// ],
// ).expanded,
// // @todo ask backend to add loanTypeValue, so we can show or hide the buttons
// if (snapshot.data?.loanTypeName == "Standard" &&
// context.userProvider.isEngineer &&
// (snapshot.data?.loanStatusValue == 4 || snapshot.data?.loanStatusValue == 5 || snapshot.data?.loanStatusValue == 8))
// FooterActionButton.footerContainer(
// context: context,
// child: AppFilledButton(
// onPressed: () async {
// if (snapshot.data?.loanStatusValue == 4) {
// String comment = "";
// context.showBottomSheet(
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisSize: MainAxisSize.min,
// children: [
// 'Estimated Date: ${snapshot.data?.installationEDD?.toAssetDetailsFormat ?? "-"}'.bodyText(context),
// 16.height,
// AppTextFormField(
// labelText: context.translation.comments,
// showSpeechToText: true,
// textInputType: TextInputType.multiline,
// labelStyle: AppTextStyles.textFieldLabelStyle,
// showWithoutDecoration: true,
// backgroundColor: context.isDarkNotListen ? AppColor.neutral20 : AppColor.neutral100,
// alignLabelWithHint: true,
// onChange: (text) {
// comment = text;
// },
// ),
// 16.height,
// AppFilledButton(
// onPressed: () async {
// Utils.showLoading(context);
// LoanProvider loanProvider = Provider.of<LoanProvider>(context, listen: false);
// bool isSuccess = await loanProvider.loanWorkflowAction({
// "userId": context.userProvider.user!.userID,
// "isFromMobile": true,
// "commentsFromMobile": comment,
// 'loanId': snapshot.data?.id,
// 'loanStatusId': snapshot.data?.loanStatusValue,
// });
// Utils.hideLoading(context);
// if (isSuccess) {
// Navigator.pop(context, true);
// setState(() {});
// }
// },
// label: "Delivered"),
// ],
// ),
// title: "EDD & Comments",
// showCancelButton: true);
// return;
// }
// if (snapshot.data?.loanStatusValue == 5) {
// bool isSuccess = await Navigator.push(context, MaterialPageRoute(builder: (context) => InstallationFormView(loanData: snapshot.data))) ?? false;
// if (isSuccess) {
// setState(() {});
// }
// return;
// }
// bool isSuccess = await Navigator.push(context, MaterialPageRoute(builder: (context) => PullOutDetailsPage(loanData: snapshot.data))) ?? false;
// if (isSuccess) {
// setState(() {});
// }
// },
// label: snapshot.data?.loanStatusValue == 4
// ? "Delivered"
// : snapshot.data?.loanStatusValue == 5
// ? 'Installation Report'
// : 'PullOut Report',
// ),
// )
// ],
// );
}));
}
}
Loading…
Cancel
Save