request confirmation improvements.

design_3.0_latest
Sikander Saleem 1 year ago
parent 38e481848d
commit e878881e5a

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; 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/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart';

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

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

@ -38,7 +38,7 @@ class FooterActionButton {
{required WorkOrderNextStepEnum workOrderNextStepStatus, List<Activities> activities = const [], required BuildContext context, required UserProvider userProvider}) { {required WorkOrderNextStepEnum workOrderNextStepStatus, List<Activities> activities = const [], required BuildContext context, required UserProvider userProvider}) {
ServiceRequestDetailProvider requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false); 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) { if (userProvider.user?.type == UsersTypes.engineer) {
switch (workOrderNextStepStatus) { switch (workOrderNextStepStatus) {
case WorkOrderNextStepEnum.onlyView: 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/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/helper_data_models/workorder/work_order_helper_models.dart';
import 'package:test_sa/models/lookup.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/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.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/providers/service_request_providers/reject_reason_provider.dart';
@ -306,8 +307,6 @@ class ServiceRequestBottomSheet {
initialVisitReminderBottomSheet(context: context); initialVisitReminderBottomSheet(context: context);
} }
// //
}, },
), ),
@ -1017,15 +1016,14 @@ class ServiceRequestBottomSheet {
buttonColor: AppColor.green70, buttonColor: AppColor.green70,
onPressed: () async { onPressed: () async {
if (newSignature != null) { if (newSignature != null) {
requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel( requestDetailProvider.nurseActionHelperModel = NurseActionHelperModel(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, signatureNurse: nurseSignature);
workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, WorkOrderDetail? data = await requestDetailProvider.nurseConfirm();
signatureNurse: nurseSignature, if (data != null) {
); if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) {
requestDetailProvider.nurseConfirm(); requestDetailProvider.updateCurrentWorkOrder(data);
if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) { }
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); Navigator.pop(context);
} }
Navigator.pop(context);
} else { } else {
context.translation.signaturesAreRequired.showToast; context.translation.signaturesAreRequired.showToast;
} }

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

@ -103,7 +103,7 @@ class _ESignatureState extends State<ESignature> {
height: 135.toScreenHeight, height: 135.toScreenHeight,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.only(bottom: 8), 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( : AbsorbPointer(
absorbing: !_editable, absorbing: !_editable,

@ -8,8 +8,9 @@ class ImageLoader extends StatelessWidget {
final Alignment? alignment; final Alignment? alignment;
final double? width; final double? width;
final double? height; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -20,7 +21,7 @@ class ImageLoader extends StatelessWidget {
width: width, width: width,
height: height, height: height,
placeholder: (context, url) => const Center(child: CircularProgressIndicator()), 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