diff --git a/assets/images/calendar_icon.svg b/assets/images/calendar_icon.svg
new file mode 100644
index 00000000..84ad9758
--- /dev/null
+++ b/assets/images/calendar_icon.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/list_icon.svg b/assets/images/list_icon.svg
new file mode 100644
index 00000000..7c97c23f
--- /dev/null
+++ b/assets/images/list_icon.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/qr_code_icon.svg b/assets/qr_code_icon.svg
new file mode 100644
index 00000000..508afa6d
--- /dev/null
+++ b/assets/qr_code_icon.svg
@@ -0,0 +1,12 @@
+
diff --git a/lib/app_strings/app_asset.dart b/lib/app_strings/app_asset.dart
index 139e8185..242f0170 100644
--- a/lib/app_strings/app_asset.dart
+++ b/lib/app_strings/app_asset.dart
@@ -3,7 +3,10 @@ class AppAsset {
static String askOtpIcon = 'ask_otp_icon';
static String askRequesterIcon = 'ask_requester_icon';
static String scanQrIcon = 'scan_qr_icon';
+ static String calendarIcon = 'calendar_icon';
+ static String listIcon = 'list_icon';
static String takeDevicePhotoIcon = 'take_device_photo_icon';
+ static String getQrCodeIcon = 'qr_code_icon';
static String maintenanceIcon = 'maintenance_icon';
static String retiredAssetIcon = 'assets/images/retired_asset_icon.svg';
static String sparePartIcon = 'spare_part_icon';
diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart
index 33c1fd6b..3c4041b3 100644
--- a/lib/dashboard_latest/dashboard_provider.dart
+++ b/lib/dashboard_latest/dashboard_provider.dart
@@ -14,6 +14,14 @@ class DashBoardProvider extends ChangeNotifier {
bool isAllCountLoading = false;
bool isLoading = false;
bool _isDetailLoading = false;
+ bool _isShowDashBoardCalendar = false;
+
+ bool get isShowDashBoardCalendar => _isShowDashBoardCalendar;
+
+ set isShowDashBoardCalendar(bool value) {
+ _isShowDashBoardCalendar = value;
+ notifyListeners();
+ }
int _status = 0;
diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart
index b3c1b634..e46c844a 100644
--- a/lib/dashboard_latest/widgets/request_category_fragment.dart
+++ b/lib/dashboard_latest/widgets/request_category_fragment.dart
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+import 'package:test_sa/app_strings/app_asset.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/dashboard_latest/widgets/request_category_list.dart';
@@ -19,11 +20,31 @@ class RequestCategoryFragment extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer(builder: (context, dashboardProvider, child) {
+ bool isNurse = (Provider.of(context, listen: false).user?.type) == UsersTypes.normal_user;
return Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [
- context.translation.allWorkOrder.heading4(context).paddingOnly(start: 16, end: 16),
- 12.height,
- const WeeklyCalendarFragment(),
- 12.height,
+ !isNurse
+ ? Column(
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ context.translation.allWorkOrder.heading4(context),
+ GestureDetector(
+ onTap: () {
+ dashboardProvider.isShowDashBoardCalendar = !dashboardProvider.isShowDashBoardCalendar;
+ },
+ child: dashboardProvider.isShowDashBoardCalendar ? AppAsset.listIcon.toSvgAsset() : AppAsset.calendarIcon.toSvgAsset())
+ ],
+ ),
+ dashboardProvider.isShowDashBoardCalendar
+ ? Padding(
+ padding: EdgeInsets.only(top: 12.toScreenHeight),
+ child: const WeeklyCalendarFragment(),
+ )
+ : const SizedBox(),
+ ],
+ ).paddingOnly(start: 16, end: 16)
+ : context.translation.allWorkOrder.heading4(context).paddingOnly(start: 16, end: 16),
getTabs(
requestsProvider: dashboardProvider,
context: context,
@@ -46,7 +67,7 @@ class RequestCategoryFragment extends StatelessWidget {
}
Widget getTabs({required BuildContext context, required DashBoardProvider requestsProvider, required UsersTypes? userType}) {
- List tabs = CategoryTabs.getTabs(userType: userType??UsersTypes.normal_user, context: context);
+ List tabs = CategoryTabs.getTabs(userType: userType ?? UsersTypes.normal_user, context: context);
return SizedBox(
height: 44 + 16,
child: ListView.separated(
@@ -62,7 +83,7 @@ class RequestCategoryFragment extends StatelessWidget {
onPressed: () async {
requestsProvider.currentListIndex = index;
requestsProvider.resetRequestDataList();
- requestsProvider.getRequestDetail(usersType: userType??UsersTypes.normal_user, showLoader: true, status: tabs[index].tag);
+ requestsProvider.getRequestDetail(usersType: userType ?? UsersTypes.normal_user, showLoader: true, status: tabs[index].tag);
},
);
},
diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb
index c2d09006..2ab3354f 100644
--- a/lib/l10n/app_ar.arb
+++ b/lib/l10n/app_ar.arb
@@ -483,6 +483,7 @@
"createSubWorkOrder" : "إنشاء أمر عمل فرعي",
"mrNumber" : "MR Number",
"vendorEng" : "المهندس المزود",
+ "qrCode": "رمز الاستجابة السريعة",
"vendorName" : "اسم المزود",
"reset" : "اعادة تعيين",
"solution" : "الحل",
@@ -497,5 +498,9 @@
"assetScan" : "مسح الجهاز",
"pickManually" : "اختر يدويا",
"searchAsset" : "ابحث عن جهاز",
+ "doYouWantToSetReminder": "هل تريد تعيين تذكير؟",
+ "youCanSetTheReminderInAlarmToRemindYouBeforeVisit": "يمكنك تعيين التذكير في المنبه لتذكيرك قبل الزيارة. الرجاء اختيار الوقت أدناه",
+ "setReminder": "تعيين التذكير",
+ "provideQrCodeToEngineer": "قدم رمز الاستجابة السريعة أدناه للمهندس للتحقق من وصوله",
"callResponse": "استجابة الاتصال"
}
\ No newline at end of file
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index 397d1ebc..4f0ab30d 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -486,6 +486,8 @@
"technicalComment" : "Technical Comment",
"recentActivities" : "Recent Activities",
"activities" : "Activities",
+ "provideQrCodeToEngineer": "Provide the below QR Code to Engineer to verify his arrival",
+ "qrCode": "QR Code",
"createNewActivity" : "Create New Activity",
"selectActivityType" : "Select Activity Type",
"sparePartRequest" : "Spare Part Request",
@@ -500,5 +502,8 @@
"lastPmDate" : "Last PM Date",
"assetScan" : "Asset Scan",
"pickManually" : "Pick Manually",
+ "doYouWantToSetReminder": "Do you want to set reminder?",
+ "youCanSetTheReminderInAlarmToRemindYouBeforeVisit": "You can set the reminder in alarm to remind you before visit. Please select the time below",
+ "setReminder": "Set Reminder",
"searchAsset" : "Search Asset"
}
\ No newline at end of file
diff --git a/lib/new_views/app_style/app_color.dart b/lib/new_views/app_style/app_color.dart
index fb4a8f9b..4cea6dae 100644
--- a/lib/new_views/app_style/app_color.dart
+++ b/lib/new_views/app_style/app_color.dart
@@ -32,6 +32,7 @@ class AppColor {
static const Color neutral140 = Color(0xffE6E6E6);
static const Color neutral150 = Color(0xffA1A1A1);
static const Color neutral160 = Color(0xffE5E5E5);
+ static const Color neutral170 = Color(0xff6E6E6E);
//background
static const Color backgroundLight = Color(0xfff7f9fb);
diff --git a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
index 0754f2bf..c8c4458a 100644
--- a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
+++ b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
@@ -14,6 +14,7 @@ import 'package:test_sa/models/helper_data_models/maintenance_request/activity_m
import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart';
import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart';
import 'package:test_sa/models/lookup.dart';
+import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart';
import 'package:test_sa/service_request_latest/service_request_detail_provider.dart';
@@ -280,19 +281,21 @@ class ServiceRequestBottomSheet {
buttonColor: AppColor.primary10,
loading: false,
onPressed: () async {
- if (requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived) {
- requestDetailProvider.updateNeedVisitHelperModel(NeedVisitHelperModel(
- workOrderId: requestDetailProvider.needVisitHelperModel?.workOrderId,
- visitDate: requestDetailProvider.needVisitHelperModel?.visitDate,
- comment: requestDetailProvider.needVisitHelperModel?.comment,
- ));
- requestDetailProvider.engineerUpdateNeedVisit();
- } else {
- requestDetailProvider.needVisitHelperModel?.workOrderId = requestDetailProvider.currentWorkOrder!.data!.requestId;
- requestDetailProvider.engineerNeedVisit();
- requestDetailProvider.needVisitHelperModel = NeedVisitHelperModel();
- }
+ // if (requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived) {
+ // requestDetailProvider.updateNeedVisitHelperModel(NeedVisitHelperModel(
+ // workOrderId: requestDetailProvider.needVisitHelperModel?.workOrderId,
+ // visitDate: requestDetailProvider.needVisitHelperModel?.visitDate,
+ // comment: requestDetailProvider.needVisitHelperModel?.comment,
+ // ));
+ // requestDetailProvider.engineerUpdateNeedVisit();
+ // } else {
+ // requestDetailProvider.needVisitHelperModel?.workOrderId = requestDetailProvider.currentWorkOrder!.data!.requestId;
+ // requestDetailProvider.engineerNeedVisit();
+ // requestDetailProvider.needVisitHelperModel = NeedVisitHelperModel();
+ // }
Navigator.pop(context);
+ initialVisitReminderBottomSheet(context: context);
+ //
},
),
16.height,
@@ -301,6 +304,205 @@ class ServiceRequestBottomSheet {
}));
}
+ static Future initialVisitReminderBottomSheet({required BuildContext context}) {
+ String selectedReminderTime = '10 minutes before';
+
+ Widget reminderTimeWidget({required BuildContext context}) {
+ List reminderTimeList = ['5 minutes before', '10 minutes before', '15 minutes before'];
+
+ return StatefulBuilder(
+ builder: (context, setState) {
+ return Wrap(
+ direction: Axis.vertical,
+ runSpacing: 8,
+ spacing: 8,
+ children: [
+ for (var element in reminderTimeList)
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ SizedBox(
+ width: 24,
+ height: 24,
+ child: Radio(
+ value: element,
+ activeColor: Colors.red,
+ fillColor: MaterialStateColor.resolveWith((states) {
+ if (states.contains(MaterialState.selected)) return AppColor.primary10;
+ return AppColor.neutral130;
+ }),
+ groupValue: selectedReminderTime,
+ onChanged: (String? value) {
+ setState(() {
+ selectedReminderTime = value!;
+ });
+ },
+ ),
+ ),
+ 8.width,
+ Text(element, style: AppTextStyles.bodyText.copyWith(color: AppColor.neutral120)),
+ ],
+ )
+ ],
+ );
+ },
+ );
+ }
+
+ return buildBottomSheetParent(
+ context: context,
+ childWidget: Consumer(
+ builder: (context, requestDetailProvider, child) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const SizedBox().indicatorWidget().center,
+ 8.height,
+ Align(
+ alignment: AlignmentDirectional.centerStart,
+ child: context.translation.doYouWantToSetReminder.bottomSheetHeadingTextStyle(context),
+ ),
+ 8.height,
+ Align(
+ alignment: AlignmentDirectional.centerStart,
+ child: context.translation.youCanSetTheReminderInAlarmToRemindYouBeforeVisit.bodyText2(context),
+ ),
+ 12.height,
+ reminderTimeWidget(context: context),
+ 30.height,
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Expanded(
+ child: AppFilledButton(
+ label: context.translation.cancel,
+ buttonColor: AppColor.white60,
+ textColor: AppColor.black10,
+ loading: false,
+ onPressed: () async {
+ if (requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived) {
+ requestDetailProvider.updateNeedVisitHelperModel(
+ NeedVisitHelperModel(
+ workOrderId: requestDetailProvider.needVisitHelperModel?.workOrderId,
+ visitDate: requestDetailProvider.needVisitHelperModel?.visitDate,
+ comment: requestDetailProvider.needVisitHelperModel?.comment,
+ ),
+ );
+ requestDetailProvider.engineerUpdateNeedVisit();
+ } else {
+ requestDetailProvider.needVisitHelperModel?.workOrderId = requestDetailProvider.currentWorkOrder!.data!.requestId;
+ requestDetailProvider.engineerNeedVisit();
+ requestDetailProvider.needVisitHelperModel = NeedVisitHelperModel();
+ }
+ Navigator.pop(context);
+ },
+ ),
+ ),
+ 12.width,
+ Expanded(
+ child: AppFilledButton(
+ label: context.translation.setReminder,
+ buttonColor: AppColor.primary10,
+ loading: false,
+ onPressed: () async {
+ if (requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived) {
+ requestDetailProvider.updateNeedVisitHelperModel(
+ NeedVisitHelperModel(
+ workOrderId: requestDetailProvider.needVisitHelperModel?.workOrderId,
+ visitDate: requestDetailProvider.needVisitHelperModel?.visitDate,
+ comment: requestDetailProvider.needVisitHelperModel?.comment,
+ ),
+ );
+ requestDetailProvider.engineerUpdateNeedVisit();
+ } else {
+ requestDetailProvider.needVisitHelperModel?.workOrderId = requestDetailProvider.currentWorkOrder!.data!.requestId;
+ requestDetailProvider.engineerNeedVisit();
+ requestDetailProvider.needVisitHelperModel = NeedVisitHelperModel();
+ }
+ Navigator.pop(context);
+ },
+ ),
+ ),
+ ],
+ ),
+ 16.height,
+ ],
+ );
+ },
+ ),
+ );
+ }
+static Future getQRCodeBottomSheet({required BuildContext context}) async{
+ showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
+ ServiceRequestDetailProvider requestDetailProvider = Provider.of(context,listen:false);
+ String? base64String = await requestDetailProvider.getQrCode(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId ?? 0);
+ Navigator.pop(context);
+ if (base64String != null) {
+ // You have the base64 string, now you can display it
+ Uint8List bytes = base64Decode(base64String);
+
+ return buildBottomSheetParent(
+ context: context,
+ childWidget: Consumer(
+ builder: (context, requestDetailProvider, child) {
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const SizedBox().indicatorWidget().center,
+ 8.height,
+ Align(
+ alignment: AlignmentDirectional.centerStart,
+ child: context.translation.qrCode.bottomSheetHeadingTextStyle(context),
+ ),
+ 8.height,
+ Align(
+ alignment: AlignmentDirectional.centerStart,
+ child: context.translation.provideQrCodeToEngineer.bodyText2(context),
+ ),
+ 12.height,
+ Center(
+ child: Image.memory(
+ bytes, // Displaying the QR code from base64
+ fit: BoxFit.contain, // Ensure the image fits well in the dialog
+ errorBuilder: (context, error, stackTrace) {
+ return const Icon(Icons.error, color: Colors.red);
+ },
+ ),
+ ),
+
+ 16.height,
+ ],
+ );
+ },
+ ),
+ );
+
+ showDialog(
+ context: context,
+ builder: (BuildContext context) {
+ return AlertDialog(
+ backgroundColor: Colors.white,
+ title:context.translation.scanQr.heading6(context).center,
+ content: Image.memory(
+ bytes, // Displaying the QR code from base64
+ fit: BoxFit.contain, // Ensure the image fits well in the dialog
+ errorBuilder: (context, error, stackTrace) {
+ return const Icon(Icons.error, color: Colors.red);
+ },
+ ),
+
+ );
+ },
+ );
+ } else {
+ print('Failed to get the QR code');
+ }
+
+
+
+ }
+
+
static Future rejectRequestBottomSheet({required BuildContext context}) {
return buildBottomSheetParent(
context: context,
diff --git a/lib/service_request_latest/views/components/weekly_calendar_fragment.dart b/lib/service_request_latest/views/components/weekly_calendar_fragment.dart
index 4ed24ef7..b84fecf2 100644
--- a/lib/service_request_latest/views/components/weekly_calendar_fragment.dart
+++ b/lib/service_request_latest/views/components/weekly_calendar_fragment.dart
@@ -2,45 +2,57 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
-import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
-import 'package:test_sa/new_views/app_style/app_text_style.dart';
-import 'package:test_sa/views/app_style/sizing.dart';
-class WeeklyCalendarFragment extends StatelessWidget {
+class WeeklyCalendarFragment extends StatefulWidget {
const WeeklyCalendarFragment({Key? key}) : super(key: key);
+ @override
+ State createState() => _WeeklyCalendarFragmentState();
+}
+
+class _WeeklyCalendarFragmentState extends State {
+ DateTime? selectedDate = DateTime.now(); // Initially select today's date
+
@override
Widget build(BuildContext context) {
- // Generate the list of dates for the current week (3 days before and 3 days after today)
List weekDates = getWeekDates();
return Consumer(
builder: (context, snapshot, _) => GridView.builder(
- padding: const EdgeInsets.only(left: 16, right: 16),
+ padding: EdgeInsets.zero,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 7,
- childAspectRatio: 70 / 60,
- crossAxisSpacing: 2,
- mainAxisSpacing: 12,
+ childAspectRatio: 60 / 80,
+ crossAxisSpacing: 4,
+ mainAxisSpacing: 4,
),
- itemCount: weekDates.length, // Now we have 7 items
+ itemCount: weekDates.length,
itemBuilder: (context, index) {
- DateTime date = weekDates[index];
- String formattedDate = DateFormat('EEE\ndd').format(date); // EEE: Day name, dd: Day number
+ DateTime currentDate = weekDates[index];
+ String formattedDay = DateFormat('EEE').format(currentDate);
+ String formattedDate = DateFormat('dd MMM').format(currentDate);
+
+ // Check if the current date is selected
+ bool isSelected = selectedDate != null && selectedDate!.day == currentDate.day && selectedDate!.month == currentDate.month && selectedDate!.year == currentDate.year;
return listItem(
- formattedDate, // Pass the formatted date
- snapshot.dashboardCount?.data?.countOpen ?? 0, // Adjust as needed
- context,
- snapshot.isAllCountLoading,
- index,
- AppColor.primary10,
+ formattedDate: formattedDate,
+ formattedDay: formattedDay,
+ context: context,
+ isLoading: snapshot.isAllCountLoading,
+ currentDate: currentDate,
+ isSelected: isSelected,
+ onSelect: () {
+ setState(() {
+ selectedDate = currentDate; // Update selected date on tap
+ });
+ },
);
},
),
@@ -59,13 +71,17 @@ class WeeklyCalendarFragment extends StatelessWidget {
return weekDates;
}
- Widget listItem(String formattedDate, int value, BuildContext context, bool isLoading, int index, Color iconColor) {
+ Widget listItem({
+ required String formattedDate,
+ required String formattedDay,
+ required BuildContext context,
+ required DateTime currentDate,
+ required bool isLoading,
+ required bool isSelected, // To check if this item is selected
+ required VoidCallback onSelect, // Callback for tap
+ }) {
return GestureDetector(
- onTap: isLoading
- ? null
- : () {
- // Action on tapping the date (if required)
- },
+ onTap: isLoading ? null : onSelect,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
@@ -74,13 +90,43 @@ class WeeklyCalendarFragment extends StatelessWidget {
Column(
children: [
Container(
- color: Colors.red,
- child: Text(
- formattedDate,
- style: AppTextStyles.tinyFont2,
+ padding: EdgeInsets.symmetric(horizontal: 7.toScreenWidth, vertical: 14.toScreenHeight),
+ width: double.infinity,
+ decoration: ShapeDecoration(
+ color: AppColor.background(context),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(14),
+ side: isSelected
+ ? const BorderSide(color: AppColor.primary10, width: 2) // Blue border if selected
+ : BorderSide.none,
+ ),
+ shadows: [
+ BoxShadow(
+ color: Colors.black.withOpacity(0.03),
+ blurRadius: 5,
+ offset: const Offset(0, 0),
+ spreadRadius: 0,
+ ),
+ ],
+ ),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Text(
+ formattedDay,
+ style: AppTextStyles.tinyFont2.copyWith(
+ color: isSelected ? AppColor.black20 : AppColor.neutral170, // Blue text if selected
+ ),
+ ),
+ Text(
+ formattedDate,
+ style: AppTextStyles.tinyFont2.copyWith(
+ color: isSelected ? AppColor.black20 : AppColor.neutral170, // Blue text if selected
+ ),
+ ),
+ ],
),
),
- // Any other widgets you want to display (e.g. counts, icons)
],
),
],
diff --git a/lib/service_request_latest/views/service_request_detail_main_view.dart b/lib/service_request_latest/views/service_request_detail_main_view.dart
index 26569c98..cb9bb107 100644
--- a/lib/service_request_latest/views/service_request_detail_main_view.dart
+++ b/lib/service_request_latest/views/service_request_detail_main_view.dart
@@ -1,12 +1,17 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
+import 'package:test_sa/app_strings/app_asset.dart';
+import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
+import 'package:test_sa/models/enums/user_types.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 'package:test_sa/service_request_latest/service_request_detail_provider.dart';
+import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
+import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart';
import 'package:test_sa/service_request_latest/views/components/history_log_view.dart';
import 'components/service_request_detail_view.dart';
@@ -46,6 +51,7 @@ class _ServiceRequestDetailMainState extends State {
@override
Widget build(BuildContext context) {
+ bool isNurse = (Provider.of(context, listen: false).user?.type) == UsersTypes.normal_user;
return WillPopScope(
onWillPop: () async {
// Implement custom back button handling logic here
@@ -64,7 +70,15 @@ class _ServiceRequestDetailMainState extends State {
Navigator.pop(context);
},
actions: [
- IconButton(
+ isNurse? IconButton(
+ icon: 'qr'.toSvgAsset(
+ height: 24,
+ width: 24,
+ ),
+ onPressed: () {
+ ServiceRequestBottomSheet.getQRCodeBottomSheet(context: context);
+ },
+ ):IconButton(
icon: const Icon(Icons.home),
onPressed: () {
stopTimer();