Merge remote-tracking branch 'origin/design_3.0_sdk_upgrade' into design_3.0_sdk_upgrade

# Conflicts:
#	lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
design_3.0_latest
WaseemAbbasi22 11 months ago
commit ec66c6fd17

@ -0,0 +1,331 @@
PODS:
- audioplayers_darwin (0.0.1):
- Flutter
- device_calendar (0.0.1):
- Flutter
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.9)
- DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.9)
- DKPhotoGallery (0.0.19):
- DKPhotoGallery/Core (= 0.0.19)
- DKPhotoGallery/Model (= 0.0.19)
- DKPhotoGallery/Preview (= 0.0.19)
- DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Firebase/CoreOnly (11.2.0):
- FirebaseCore (= 11.2.0)
- Firebase/Messaging (11.2.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 11.2.0)
- firebase_core (3.6.0):
- Firebase/CoreOnly (= 11.2.0)
- Flutter
- firebase_messaging (15.1.3):
- Firebase/Messaging (= 11.2.0)
- firebase_core
- Flutter
- FirebaseCore (11.2.0):
- FirebaseCoreInternal (~> 11.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Logger (~> 8.0)
- FirebaseCoreInternal (11.4.2):
- "GoogleUtilities/NSData+zlib (~> 8.0)"
- FirebaseInstallations (11.4.0):
- FirebaseCore (~> 11.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- PromisesObjC (~> 2.4)
- FirebaseMessaging (11.2.0):
- FirebaseCore (~> 11.0)
- FirebaseInstallations (~> 11.0)
- GoogleDataTransport (~> 10.0)
- GoogleUtilities/AppDelegateSwizzler (~> 8.0)
- GoogleUtilities/Environment (~> 8.0)
- GoogleUtilities/Reachability (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- nanopb (~> 3.30910.0)
- Flutter (1.0.0)
- flutter_keyboard_visibility (0.0.1):
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_sound (9.6.0):
- Flutter
- flutter_sound_core (= 9.6.0)
- flutter_sound_core (9.6.0)
- flutter_timezone (0.0.1):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
- FMDB (2.7.12):
- FMDB/standard (= 2.7.12)
- FMDB/Core (2.7.12)
- FMDB/standard (2.7.12):
- FMDB/Core
- GoogleDataTransport (10.1.0):
- nanopb (~> 3.30910.0)
- PromisesObjC (~> 2.4)
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Privacy
- GoogleUtilities/Environment (8.0.2):
- GoogleUtilities/Privacy
- GoogleUtilities/Logger (8.0.2):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- GoogleUtilities/Network (8.0.2):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Privacy
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (8.0.2)":
- GoogleUtilities/Privacy
- GoogleUtilities/Privacy (8.0.2)
- GoogleUtilities/Reachability (8.0.2):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GoogleUtilities/UserDefaults (8.0.2):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- image_cropper (0.0.4):
- Flutter
- TOCropViewController (~> 2.7.4)
- image_picker_ios (0.0.1):
- Flutter
- local_auth_darwin (0.0.1):
- Flutter
- FlutterMacOS
- MTBBarcodeScanner (5.0.11)
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- open_file_ios (0.0.1):
- Flutter
- package_info (0.0.1):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- pointer_interceptor_ios (0.0.1):
- Flutter
- PromisesObjC (2.4.0)
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- record_mp3_plus (1.0.0):
- Flutter
- rive_common (0.0.1):
- Flutter
- SDWebImage (5.19.7):
- SDWebImage/Core (= 5.19.7)
- SDWebImage/Core (5.19.7)
- share (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- speech_to_text (0.0.1):
- Flutter
- FlutterMacOS
- Try
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- SwiftyGif (5.4.5)
- Toast (4.1.1)
- TOCropViewController (2.7.4)
- Try (2.1.1)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
- device_calendar (from `.symlinks/plugins/device_calendar/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
- Flutter (from `Flutter`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_sound (from `.symlinks/plugins/flutter_sound/ios`)
- flutter_timezone (from `.symlinks/plugins/flutter_timezone/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- FMDB
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
- open_file_ios (from `.symlinks/plugins/open_file_ios/ios`)
- package_info (from `.symlinks/plugins/package_info/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`)
- qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`)
- record_mp3_plus (from `.symlinks/plugins/record_mp3_plus/ios`)
- rive_common (from `.symlinks/plugins/rive_common/ios`)
- share (from `.symlinks/plugins/share/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- speech_to_text (from `.symlinks/plugins/speech_to_text/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseCore
- FirebaseCoreInternal
- FirebaseInstallations
- FirebaseMessaging
- flutter_sound_core
- FMDB
- GoogleDataTransport
- GoogleUtilities
- MTBBarcodeScanner
- nanopb
- PromisesObjC
- SDWebImage
- SwiftyGif
- Toast
- TOCropViewController
- Try
EXTERNAL SOURCES:
audioplayers_darwin:
:path: ".symlinks/plugins/audioplayers_darwin/ios"
device_calendar:
:path: ".symlinks/plugins/device_calendar/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
Flutter:
:path: Flutter
flutter_keyboard_visibility:
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_sound:
:path: ".symlinks/plugins/flutter_sound/ios"
flutter_timezone:
:path: ".symlinks/plugins/flutter_timezone/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
image_cropper:
:path: ".symlinks/plugins/image_cropper/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
local_auth_darwin:
:path: ".symlinks/plugins/local_auth_darwin/darwin"
open_file_ios:
:path: ".symlinks/plugins/open_file_ios/ios"
package_info:
:path: ".symlinks/plugins/package_info/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
pointer_interceptor_ios:
:path: ".symlinks/plugins/pointer_interceptor_ios/ios"
qr_code_scanner:
:path: ".symlinks/plugins/qr_code_scanner/ios"
record_mp3_plus:
:path: ".symlinks/plugins/record_mp3_plus/ios"
rive_common:
:path: ".symlinks/plugins/rive_common/ios"
share:
:path: ".symlinks/plugins/share/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
speech_to_text:
:path: ".symlinks/plugins/speech_to_text/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
device_calendar: 9cb33f88a02e19652ec7b8b122ca778f751b1f7b
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c
firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af
firebase_messaging: 15d114e1a41fc31e4fbabcd48d765a19eec94a38
FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da
FirebaseCoreInternal: 35731192cab10797b88411be84940d2beb33a238
FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414
FirebaseMessaging: c9ec7b90c399c7a6100297e9d16f8a27fc7f7152
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_sound: dde9a913063b65a27ba8fdc2039036b99b136c79
flutter_sound_core: 0c6eb9d5268adc70ff159b3d65fd3d98a82d3a27
flutter_timezone: ffb07bdad3c6276af8dada0f11978d8a1f8a20bb
fluttertoast: 723e187574b149e68e63ca4d39b837586b903cfa
FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
open_file_ios: 461db5853723763573e140de3193656f91990d9e
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
pointer_interceptor_ios: 508241697ff0947f853c061945a8b822463947c1
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
record_mp3_plus: be7806da5b5ff9694f8069f401120853c89f3398
rive_common: cbbac3192af00d7341f19dae2f26298e9e37d99e
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
speech_to_text: 627d3fd2194770b51abb324ba45c2d39398f24a8
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
Try: 5ef669ae832617b3cee58cb2c6f99fb767a4ff96
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
PODFILE CHECKSUM: d8654c27146ad2b7c852fbdd93ef1a3785d9310b
COCOAPODS: 1.12.0

@ -112,7 +112,7 @@ class FirebaseNotificationManger {
static initialized(BuildContext context) async {
//TOD0 add platform check here also
if (!(await isGoogleServicesAvailable())) {
var initialNotification = await h_push.Push.getInitialNotification();
if (initialNotification != null) {

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/dashboard_latest/widgets/app_bar_widget.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';

@ -18,7 +18,7 @@ class AppBottomNavigationBar extends StatelessWidget {
Widget build(BuildContext context) {
bool isEngineer = (Provider.of<UserProvider>(context, listen: false).user?.type) == UsersTypes.engineer;
return Container(
height: 84.toScreenHeight,
// height: 84.toScreenHeight,
decoration: BoxDecoration(
color: AppColor.background(context),
boxShadow: [boxShadowR14],
@ -47,7 +47,7 @@ class AppBottomNavigationBar extends StatelessWidget {
icon: iconName
.toSvgAsset(
width: showLabel ? 26 : 38,
height: showLabel ? 26 : 38,
height: showLabel ? 26 : 38,
color: showLabel || (showLabel && selectedIndex != 2)
? selectedIndex == index
? Theme.of(context).bottomNavigationBarTheme.selectedItemColor

@ -133,7 +133,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
ADatePicker(
label: context.translation.from,
from: DateTime(2000),
date: search!.startDate!,
date: search!.startDate,
onDatePicker: (date) {
setState(() {
search!.startDate = date;
@ -144,7 +144,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
ADatePicker(
label: context.translation.to,
from: DateTime(2000),
date: search!.endDate!,
date: search!.endDate,
onDatePicker: (date) {
setState(() {
search!.endDate = date;

@ -49,7 +49,7 @@ class RequestPaginatedListview extends StatelessWidget {
bool isPPMs = request.transactionNo == 4;
if (isServiceRequest) {
return ServiceRequestItemView(requestData: request);
return ServiceRequestItemView(requestData: request,refreshData: false,);
} else if (isGasRefill) {
return GasRefillItemView(requestData: request);
} else if (isPPMs) {

@ -1,7 +1,6 @@
//service request item page
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
@ -10,7 +9,6 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart';
import 'package:test_sa/service_request_latest/views/service_request_detail_main_view.dart';
@ -21,8 +19,9 @@ class ServiceRequestItemView extends StatelessWidget {
final Data? requestData;
final RequestsDetails? requestDetails;
final bool showShadow;
final bool refreshData;
const ServiceRequestItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key);
const ServiceRequestItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true, this.refreshData = true}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -77,9 +76,11 @@ class ServiceRequestItemView extends StatelessWidget {
],
),
],
).toShadowContainer(context, withShadow: showShadow).onPress(() async{
).toShadowContainer(context, withShadow: showShadow).onPress(() async {
await Navigator.of(context).push(MaterialPageRoute(builder: (_) => ServiceRequestDetailMain(requestId: requestData!.id!)));
Provider.of<DashBoardProvider>(context, listen: false).refreshDashboard(userType: Provider.of<SettingProvider>(context, listen: false).user!.type!, context: context);
if (refreshData) {
Provider.of<DashBoardProvider>(context, listen: false).refreshDashboard(userType: Provider.of<SettingProvider>(context, listen: false).user!.type!, context: context);
}
});
}
if (requestDetails != null) {

@ -66,7 +66,6 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
bool _isArrivalLoading = false;
bool _isVerifyArrivalBottomSheetOpen = false;
bool get isVerifyArrivalBottomSheetOpen => _isVerifyArrivalBottomSheetOpen;
set isVerifyArrivalBottomSheetOpen(bool value) {
@ -123,7 +122,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
void updateNeedVisitHelperModel(NeedVisitHelperModel? value) {
needVisitHelperModel = value;
log ("value:${value!.visitDate.toString()}");
log("value:${value!.visitDate.toString()}");
notifyListeners();
}
@ -381,7 +380,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
notifyListeners();
notifyListeners();
}
isLoading = false;
notifyListeners();
@ -440,7 +439,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
}
//engineer Confirm Arrive......
Future<int> engineerConfirmArrival({required int workOrderId, required int verificationTypeId, String ?photoInfo, String ?otp, String? assetNo, String? workOrderCreatedById}) async {
Future<int> engineerConfirmArrival({required int workOrderId, required int verificationTypeId, String? photoInfo, String? otp, String? assetNo, String? workOrderCreatedById}) async {
Response response;
try {
//"workOrderCreatedById": "string"
@ -566,15 +565,13 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
//Nurse confirm arrival
Future<int?> nurseConfirmEngineerArrival({required int workOrderId}) async {
try {
Map<String,dynamic> body = {
"workOrderId": workOrderId
};
Map<String, dynamic> body = {"workOrderId": workOrderId};
isLoading = true;
notifyListeners();
final response = await ApiManager.instance.post(URLs.nurseConfirmEngineerArrivalUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
}
isLoading = false;
notifyListeners();
@ -585,18 +582,17 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
notifyListeners();
return -1;
}
}//Nurse confirm arrival
} //Nurse confirm arrival
Future<int?> nurseRejectEngineerArrival({required int workOrderId}) async {
try {
Map<String,dynamic> body = {
"workOrderId": workOrderId
};
Map<String, dynamic> body = {"workOrderId": workOrderId};
isLoading = true;
notifyListeners();
final response = await ApiManager.instance.post(URLs.nurseRejectEngineerArrivedUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
}
isLoading = false;
notifyListeners();
@ -610,25 +606,25 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
}
//Nurse confirm close
Future<CommonResponseModel> nurseConfirm() async {
Future<WorkOrderDetail?> nurseConfirm() async {
try {
isLoading = true;
notifyListeners();
final response = await ApiManager.instance.post(URLs.nurseConfirmUrl, body: nurseActionHelperModel!.toJson());
stateCode = response.statusCode;
CommonResponseModel commonResponseModel = CommonResponseModel();
WorkOrderDetail? workOrderDetail;
if (response.statusCode >= 200 && response.statusCode < 300) {
// commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
workOrderDetail = WorkOrderDetail.fromJson(json.decode(response.body));
}
isLoading = false;
notifyListeners();
return commonResponseModel;
return workOrderDetail;
} catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
return null;
}
}

@ -38,7 +38,7 @@ class FooterActionButton {
{required WorkOrderNextStepEnum workOrderNextStepStatus, List<Activities> activities = const [], required BuildContext context, required UserProvider userProvider}) {
ServiceRequestDetailProvider requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
bool showMarkAsFixedButton = activities.isEmpty ? true : activities.every((object) => object.activityStatus!.name!.toLowerCase() == "completed");
bool showMarkAsFixedButton = activities.isEmpty ? true : activities.any((object) => object.activityStatus!.name!.toLowerCase() == "fixed");
if (userProvider.user?.type == UsersTypes.engineer) {
switch (workOrderNextStepStatus) {
case WorkOrderNextStepEnum.onlyView:

@ -15,6 +15,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/models/new_models/work_order_detail_model.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';
@ -1020,15 +1021,14 @@ class ServiceRequestBottomSheet {
buttonColor: AppColor.green70,
onPressed: () async {
if (newSignature != null) {
requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel(
workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!,
signatureNurse: nurseSignature,
);
requestDetailProvider.nurseConfirm();
if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, signatureNurse: nurseSignature);
WorkOrderDetail? data = await requestDetailProvider.nurseConfirm();
if (data != null) {
if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
requestDetailProvider.updateCurrentWorkOrder(data);
}
Navigator.pop(context);
}
Navigator.pop(context);
} else {
context.translation.signaturesAreRequired.showToast;
}

@ -50,7 +50,7 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
@override
void initState() {
super.initState();
assignValues();
}
Future<void> getFaultDescription({required int? assetId}) async {
@ -64,7 +64,7 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
void assignValues() {
// ServiceRequestDetailProvider requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
_requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
// _requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
WorkOrderData currentWorkOrderData = _requestDetailProvider!.currentWorkOrder!.data!;
_requestDetailProvider!.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
workOrderId: currentWorkOrderData.requestId,
@ -104,6 +104,7 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
_equipmentStatusProvider!.getDate();
});
_reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString();
assignValues();
}
return Scaffold(

@ -103,7 +103,7 @@ class _ESignatureState extends State<ESignature> {
height: 135.toScreenHeight,
width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.only(bottom: 8),
child: signature != null ? Image.memory(signature!) : ImageLoader(boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)??''),
child: signature != null ? Image.memory(signature!) : ImageLoader(showDefaultIcon: true,boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)??''),
)
: AbsorbPointer(
absorbing: !_editable,

@ -8,8 +8,9 @@ class ImageLoader extends StatelessWidget {
final Alignment? alignment;
final double? width;
final double? height;
final bool showDefaultIcon;
const ImageLoader({Key? key, required this.url, this.boxFit, this.color, this.alignment, this.width, this.height}) : super(key: key);
const ImageLoader({Key? key, required this.url, this.boxFit, this.color, this.alignment, this.width, this.height, this.showDefaultIcon = false}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -20,7 +21,7 @@ class ImageLoader extends StatelessWidget {
width: width,
height: height,
placeholder: (context, url) => const Center(child: CircularProgressIndicator()),
errorWidget: (context, url, error) => const Icon(Icons.broken_image_rounded),
errorWidget: (context, url, error) => Icon(showDefaultIcon ? Icons.image_outlined : Icons.broken_image_rounded),
);
}
}

@ -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.0+12
version: 1.3.0+13
environment:
sdk: ">=3.5.0 <4.0.0"

Loading…
Cancel
Save