request confirmation improvements.

design_3.0_latest
Sikander Saleem 11 months ago
parent 38e481848d
commit e878881e5a

@ -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';

@ -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;

@ -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';
@ -306,8 +307,6 @@ class ServiceRequestBottomSheet {
initialVisitReminderBottomSheet(context: context);
}
//
},
),
@ -1017,15 +1016,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),
);
}
}

Loading…
Cancel
Save