|
|
|
|
@ -1,5 +1,4 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
|
|
|
@ -11,25 +10,25 @@ import 'package:test_sa/extensions/int_extensions.dart';
|
|
|
|
|
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/helper_data_models/workorder/nurse_action_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/service_request/service_request.dart';
|
|
|
|
|
import 'package:test_sa/models/timer_model.dart';
|
|
|
|
|
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
|
|
|
|
|
import 'package:test_sa/providers/service_request_providers/first_action_provider.dart';
|
|
|
|
|
import 'package:test_sa/providers/work_order/reason_provider.dart';
|
|
|
|
|
import 'package:test_sa/service_request_latest/request_detail_provider.dart';
|
|
|
|
|
import 'package:test_sa/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart';
|
|
|
|
|
import 'package:test_sa/service_request_latest/views/forms/spare_part/spare_part_request.dart';
|
|
|
|
|
import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/e_signature/e_signature.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/timer/app_timer.dart';
|
|
|
|
|
import '../../../../controllers/providers/api/service_requests_provider.dart';
|
|
|
|
|
import '../../../../new_views/app_style/app_color.dart';
|
|
|
|
|
import '../../../../new_views/common_widgets/app_filled_button.dart';
|
|
|
|
|
import '../../../../new_views/common_widgets/app_text_form_field.dart';
|
|
|
|
|
|
|
|
|
|
class ServiceRequestBottomSheet {
|
|
|
|
|
static buildBottomSheetParentWithConsumer({required BuildContext context, required Widget childWidget}) {
|
|
|
|
|
static buildBottomSheetParent({required BuildContext context, required Widget childWidget}) {
|
|
|
|
|
return showModalBottomSheet(
|
|
|
|
|
context: context,
|
|
|
|
|
useSafeArea: true,
|
|
|
|
|
@ -42,9 +41,9 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future fixRemotelyBottomSheet({required BuildContext context}) {
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
childWidget: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
@ -56,60 +55,93 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
ADatePicker(
|
|
|
|
|
label: context.translation.date,
|
|
|
|
|
label: context.translation.startDate,
|
|
|
|
|
hideShadow: true,
|
|
|
|
|
// height: 60.toScreenHeight,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""),
|
|
|
|
|
date: requestDetailProvider.fixRemotelyHelperModel?.startDate,
|
|
|
|
|
formatDateWithTime: true,
|
|
|
|
|
onDatePicker: (selectedDate) {
|
|
|
|
|
if (selectedDate != null) {
|
|
|
|
|
showTimePicker(
|
|
|
|
|
context: context,
|
|
|
|
|
initialTime: TimeOfDay.now(),
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
//serviceRequestProvider.currentSelectedRequest?.date
|
|
|
|
|
if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) {
|
|
|
|
|
"Visit Date time must be greater then request date".showToast;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime.toIso8601String();
|
|
|
|
|
serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
showTimePicker(
|
|
|
|
|
context: context,
|
|
|
|
|
initialTime: TimeOfDay.now(),
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
//serviceRequestProvider.currentSelectedRequest?.date
|
|
|
|
|
// if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) {
|
|
|
|
|
// "Visit Date time must be greater then request date".showToast;
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.startDate = selectedDateTime;
|
|
|
|
|
requestDetailProvider.updateFixRemotelyHelperModel(requestDetailProvider.fixRemotelyHelperModel);
|
|
|
|
|
// serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
ADatePicker(
|
|
|
|
|
label: context.translation.endDate,
|
|
|
|
|
hideShadow: true,
|
|
|
|
|
// height: 60.toScreenHeight,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
date: requestDetailProvider.fixRemotelyHelperModel?.endDate,
|
|
|
|
|
formatDateWithTime: true,
|
|
|
|
|
onDatePicker: (selectedDate) {
|
|
|
|
|
showTimePicker(
|
|
|
|
|
context: context,
|
|
|
|
|
initialTime: TimeOfDay.now(),
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (requestDetailProvider.fixRemotelyHelperModel!.startDate!=null&&selectedDateTime.isBefore(requestDetailProvider.fixRemotelyHelperModel!.startDate!)) {
|
|
|
|
|
"End Date time must be greater then start date".showToast;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.endDate = selectedDateTime;
|
|
|
|
|
requestDetailProvider.updateFixRemotelyHelperModel(requestDetailProvider.fixRemotelyHelperModel);
|
|
|
|
|
// serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
SizedBox(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
|
// padding: EdgeInsets.symmetric(horizontal: 20.toScreenWidth, vertical: 10.toScreenHeight),
|
|
|
|
|
child: AppTimer(
|
|
|
|
|
label: context.translation.workingHours,
|
|
|
|
|
timer: TimerModel(),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
|
|
|
|
|
borderRadius: BorderRadius.circular(10),
|
|
|
|
|
// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
|
|
|
|
|
),
|
|
|
|
|
// enabled: serviceRequestProvider.currentSelectedRequest.date == null,
|
|
|
|
|
enabled: true,
|
|
|
|
|
onChange: (timer) async {
|
|
|
|
|
print('timer i got is ${timer.toString()}');
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
labelText: context.translation.workingHours,
|
|
|
|
|
textInputType: TextInputType.number,
|
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
|
showWithoutDecoration: true,
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
if(text.isNotEmpty){
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.workingHour = int.parse(text);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
if(text.isNotEmpty){
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.workingHour = int.parse(text);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
8.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
@ -120,10 +152,12 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.comment = text;
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.fixRemotelyHelperModel?.comment = text;
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
@ -151,7 +185,12 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
label: context.translation.fixed,
|
|
|
|
|
buttonColor: AppColor.green70,
|
|
|
|
|
loading: false,
|
|
|
|
|
onPressed: () {},
|
|
|
|
|
onPressed: () {
|
|
|
|
|
//TODO after confirm from backend call the api and reset the model.
|
|
|
|
|
// requestDetailProvider.engineerFixRemotely();
|
|
|
|
|
// requestDetailProvider.fixRemotelyHelperModel = FixRemotelyHelperModel();
|
|
|
|
|
print('model i got is ${requestDetailProvider.fixRemotelyHelperModel?.toJson()}');
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
@ -293,10 +332,10 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future initialVisitBottomSheet({required BuildContext context}) {
|
|
|
|
|
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
childWidget: Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
|
|
|
|
|
|
|
|
|
|
return Column(
|
|
|
|
|
children: [
|
|
|
|
|
const SizedBox().indicatorWidget(),
|
|
|
|
|
@ -310,7 +349,7 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
label: context.translation.visitDate,
|
|
|
|
|
hideShadow: true,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.visitDate ?? ""),
|
|
|
|
|
date: requestDetailProvider.needVisitHelperModel?.visitDate,
|
|
|
|
|
formatDateWithTime: true,
|
|
|
|
|
onDatePicker: (selectedDate) {
|
|
|
|
|
if (selectedDate != null) {
|
|
|
|
|
@ -327,82 +366,78 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
if (selectedDateTime.isBefore(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.date!))) {
|
|
|
|
|
"Visit Date time must be greater then request date".showToast;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.visitDate = selectedDateTime?.toIso8601String();
|
|
|
|
|
serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
requestDetailProvider.needVisitHelperModel?.visitDate = selectedDateTime;
|
|
|
|
|
requestDetailProvider.updateNeedVisitHelperModel(requestDetailProvider.needVisitHelperModel);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
if (serviceRequestProvider.currentSelectedRequest?.firstAction?.id == 404 && Provider.of<SettingProvider>(context, listen: false).assetGroup?.id == 1) ...[
|
|
|
|
|
8.height,
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
ADatePicker(
|
|
|
|
|
label: context.translation.startDate,
|
|
|
|
|
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""),
|
|
|
|
|
formatDateWithTime: true,
|
|
|
|
|
onDatePicker: (selectedDate) {
|
|
|
|
|
if (selectedDate != null) {
|
|
|
|
|
showTimePicker(
|
|
|
|
|
context: context,
|
|
|
|
|
initialTime: TimeOfDay.now(),
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
if (selectedDateTime != null) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime?.toIso8601String();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
).expanded,
|
|
|
|
|
8.width,
|
|
|
|
|
ADatePicker(
|
|
|
|
|
label: context.translation.endDate,
|
|
|
|
|
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.endDate ?? ""),
|
|
|
|
|
formatDateWithTime: true,
|
|
|
|
|
onDatePicker: (selectedDate) {
|
|
|
|
|
showTimePicker(
|
|
|
|
|
context: context,
|
|
|
|
|
initialTime: TimeOfDay.now(),
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.endDate = selectedDateTime?.toIso8601String();
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest!.endDate!)
|
|
|
|
|
.difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.startDate!))
|
|
|
|
|
.inSeconds ??
|
|
|
|
|
0) /
|
|
|
|
|
60) /
|
|
|
|
|
60)
|
|
|
|
|
.toStringAsFixed(2);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
).expanded,
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
// if (serviceRequestProvider.currentSelectedRequest?.firstAction?.id == 404 && Provider.of<SettingProvider>(context, listen: false).assetGroup?.id == 1) ...[
|
|
|
|
|
// 8.height,
|
|
|
|
|
// Row(
|
|
|
|
|
// children: [
|
|
|
|
|
// ADatePicker(
|
|
|
|
|
// label: context.translation.startDate,
|
|
|
|
|
// date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""),
|
|
|
|
|
// formatDateWithTime: true,
|
|
|
|
|
// onDatePicker: (selectedDate) {
|
|
|
|
|
// if (selectedDate != null) {
|
|
|
|
|
// showTimePicker(
|
|
|
|
|
// context: context,
|
|
|
|
|
// initialTime: TimeOfDay.now(),
|
|
|
|
|
// ).then((selectedTime) {
|
|
|
|
|
// // Handle the selected date and time here.
|
|
|
|
|
// if (selectedTime != null) {
|
|
|
|
|
// DateTime selectedDateTime = DateTime(
|
|
|
|
|
// selectedDate.year,
|
|
|
|
|
// selectedDate.month,
|
|
|
|
|
// selectedDate.day,
|
|
|
|
|
// selectedTime.hour,
|
|
|
|
|
// selectedTime.minute,
|
|
|
|
|
// );
|
|
|
|
|
// if (selectedDateTime != null) {
|
|
|
|
|
// serviceRequestProvider.currentSelectedRequest?.startDate = selectedDateTime?.toIso8601String();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// ).expanded,
|
|
|
|
|
// 8.width,
|
|
|
|
|
// ADatePicker(
|
|
|
|
|
// label: context.translation.endDate,
|
|
|
|
|
// date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.endDate ?? ""),
|
|
|
|
|
// formatDateWithTime: true,
|
|
|
|
|
// onDatePicker: (selectedDate) {
|
|
|
|
|
// showTimePicker(
|
|
|
|
|
// context: context,
|
|
|
|
|
// initialTime: TimeOfDay.now(),
|
|
|
|
|
// ).then((selectedTime) {
|
|
|
|
|
// // Handle the selected date and time here.
|
|
|
|
|
// if (selectedTime != null) {
|
|
|
|
|
// DateTime selectedDateTime = DateTime(
|
|
|
|
|
// selectedDate.year,
|
|
|
|
|
// selectedDate.month,
|
|
|
|
|
// selectedDate.day,
|
|
|
|
|
// selectedTime.hour,
|
|
|
|
|
// selectedTime.minute,
|
|
|
|
|
// );
|
|
|
|
|
// serviceRequestProvider.currentSelectedRequest?.endDate = selectedDateTime?.toIso8601String();
|
|
|
|
|
// serviceRequestProvider.currentSelectedRequest?.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest!.endDate!)
|
|
|
|
|
// .difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.startDate!))
|
|
|
|
|
// .inSeconds ??
|
|
|
|
|
// 0) /
|
|
|
|
|
// 60) /
|
|
|
|
|
// 60)
|
|
|
|
|
// .toStringAsFixed(2);
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// },
|
|
|
|
|
// ).expanded,
|
|
|
|
|
// ],
|
|
|
|
|
// )
|
|
|
|
|
// ],
|
|
|
|
|
8.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
labelText: context.translation.comments,
|
|
|
|
|
@ -412,23 +447,27 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
textInputType: TextInputType.multiline,
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.needVisitHelperModel?.comment = text;
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.needVisitHelperModel?.comment = text;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
AppFilledButton(
|
|
|
|
|
label: context.translation.save,
|
|
|
|
|
buttonColor: AppColor.primary10,
|
|
|
|
|
loading: serviceRequestProvider.isLoading ?? false,
|
|
|
|
|
loading: false,
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
// formKey.currentState?.save();
|
|
|
|
|
requestDetailProvider.needVisitHelperModel?.workOrderId= requestDetailProvider.currentWorkOrder!.data!.requestId;
|
|
|
|
|
print('payload to set initial visit ${requestDetailProvider.needVisitHelperModel?.toJson()}');
|
|
|
|
|
//TODO reset model and call api after confirm form backend...
|
|
|
|
|
await requestDetailProvider.engineerNeedVisit().whenComplete((){
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!);
|
|
|
|
|
requestDetailProvider.needVisitHelperModel = NeedVisitHelperModel();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.serviceRequest);
|
|
|
|
|
// Navigator.pop(context, true);
|
|
|
|
|
Navigator.of(context).push(MaterialPageRoute(builder: (_) => VerifyArrivalView()));
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
@ -588,9 +627,10 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future rejectRequestBottomSheet({required BuildContext context}) {
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
childWidget: Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
|
|
|
|
|
|
|
|
|
|
return Column(
|
|
|
|
|
children: [
|
|
|
|
|
const SizedBox().indicatorWidget(),
|
|
|
|
|
@ -599,17 +639,15 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
child: context.translation.rejectionReason.heading4(context).paddingOnly(top: 21),
|
|
|
|
|
),
|
|
|
|
|
15.height,
|
|
|
|
|
SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>(
|
|
|
|
|
SingleItemDropDownMenu<Lookup, ReasonProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
|
title: context.translation.reason,
|
|
|
|
|
initialValue: serviceRequestProvider.currentSelectedRequest?.firstAction,
|
|
|
|
|
//_serviceRequest.firstAction,
|
|
|
|
|
initialValue: requestDetailProvider.engineerRejectHelperModel?.rejectionReason,
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.firstAction = value;
|
|
|
|
|
if (serviceRequestProvider.currentSelectedRequest?.firstAction?.value != 2) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.visitDate = null;
|
|
|
|
|
if (value != null) {
|
|
|
|
|
requestDetailProvider.engineerRejectHelperModel?.rejectionReason = value;
|
|
|
|
|
requestDetailProvider.engineerRejectHelperModel?.rejectReasonId=value.id;
|
|
|
|
|
requestDetailProvider.updateEngineerRejectHelperModel(requestDetailProvider.engineerRejectHelperModel);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
@ -621,105 +659,34 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.engineerRejectHelperModel?.feedback = text;
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
requestDetailProvider.engineerRejectHelperModel?.feedback = text;
|
|
|
|
|
requestDetailProvider.updateEngineerRejectHelperModel(requestDetailProvider.engineerRejectHelperModel);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
Consumer<ServiceRequestsProvider>(
|
|
|
|
|
builder: (context, snapshot, _) => AppFilledButton(
|
|
|
|
|
label: context.translation.reject,
|
|
|
|
|
maxWidth: true,
|
|
|
|
|
buttonColor: Colors.white54,
|
|
|
|
|
textColor: AppColor.red30,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
loading: snapshot.isLoading ?? false,
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
AppFilledButton(
|
|
|
|
|
label: context.translation.reject,
|
|
|
|
|
maxWidth: true,
|
|
|
|
|
buttonColor: Colors.white54,
|
|
|
|
|
textColor: AppColor.red30,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
loading: requestDetailProvider.isLoading,
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
requestDetailProvider.engineerRejectWorkOrder();
|
|
|
|
|
|
|
|
|
|
//Todo implement backend logic..
|
|
|
|
|
// serviceRequestProvider.serviceRequest.device = asset;
|
|
|
|
|
// await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
Navigator.pop(context, true);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
//Todo implement backend logic..
|
|
|
|
|
// serviceRequestProvider.serviceRequest.device = asset;
|
|
|
|
|
// await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
Navigator.pop(context, true);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
|
return showModalBottomSheet(
|
|
|
|
|
context: context,
|
|
|
|
|
useSafeArea: true,
|
|
|
|
|
isScrollControlled: true,
|
|
|
|
|
backgroundColor: Colors.transparent,
|
|
|
|
|
builder: (context) => Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
return Form(
|
|
|
|
|
key: _formKey,
|
|
|
|
|
child: SingleChildScrollView(
|
|
|
|
|
child: Column(
|
|
|
|
|
children: [
|
|
|
|
|
const SizedBox().indicatorWidget(),
|
|
|
|
|
Align(
|
|
|
|
|
alignment: AlignmentDirectional.centerStart,
|
|
|
|
|
child: context.translation.rejectionReason.heading4(context).paddingOnly(top: 21),
|
|
|
|
|
),
|
|
|
|
|
15.height,
|
|
|
|
|
SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>(
|
|
|
|
|
context: context,
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
height: 56.toScreenHeight,
|
|
|
|
|
title: context.translation.reason,
|
|
|
|
|
initialValue: serviceRequestProvider.currentSelectedRequest?.firstAction,
|
|
|
|
|
//_serviceRequest.firstAction,
|
|
|
|
|
onSelect: (value) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.firstAction = value;
|
|
|
|
|
if (serviceRequestProvider.currentSelectedRequest?.firstAction?.value != 2) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.visitDate = null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
backgroundColor: AppColor.neutral100,
|
|
|
|
|
labelText: context.translation.comments,
|
|
|
|
|
textInputType: TextInputType.multiline,
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
labelStyle: AppTextStyles.textFieldLabelStyle,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
Consumer<ServiceRequestsProvider>(
|
|
|
|
|
builder: (context, snapshot, _) => AppFilledButton(
|
|
|
|
|
label: context.translation.reject,
|
|
|
|
|
maxWidth: true,
|
|
|
|
|
buttonColor: Colors.white54,
|
|
|
|
|
textColor: AppColor.red30,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
loading: snapshot.isLoading ?? false,
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
|
|
|
|
|
//Todo implement backend logic..
|
|
|
|
|
// serviceRequestProvider.serviceRequest.device = asset;
|
|
|
|
|
// await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.currentSelectedRequest);
|
|
|
|
|
Navigator.pop(context, true);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
).bottomSheetContainer(context);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future activityTypeBottomSheet({required BuildContext context}) {
|
|
|
|
|
@ -727,48 +694,72 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
{'heading': context.translation.sparePartRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.sparePartIcon},
|
|
|
|
|
{'heading': context.translation.maintenanceRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.maintenanceIcon},
|
|
|
|
|
];
|
|
|
|
|
Widget listItem({required BuildContext context, required String icon, required String heading, required String subHeading, required VoidCallback onTap}) {
|
|
|
|
|
return Card(
|
|
|
|
|
color: AppColor.neutral80,
|
|
|
|
|
shape: RoundedRectangleBorder(
|
|
|
|
|
borderRadius: BorderRadius.circular(14),
|
|
|
|
|
// Circular border radius
|
|
|
|
|
),
|
|
|
|
|
// color: Colors.white,
|
|
|
|
|
child: ListTile(
|
|
|
|
|
minVerticalPadding: 12.toScreenWidth,
|
|
|
|
|
horizontalTitleGap: 2.toScreenHeight,
|
|
|
|
|
onTap: onTap,
|
|
|
|
|
contentPadding: const EdgeInsets.all(8),
|
|
|
|
|
leading: SvgPicture.asset(icon),
|
|
|
|
|
title: Text(
|
|
|
|
|
heading,
|
|
|
|
|
style: AppTextStyles.heading6,
|
|
|
|
|
),
|
|
|
|
|
subtitle: Text(
|
|
|
|
|
subHeading,
|
|
|
|
|
style: AppTextStyles.bodyText2,
|
|
|
|
|
Widget customListItem({
|
|
|
|
|
required BuildContext context,
|
|
|
|
|
required String icon,
|
|
|
|
|
required String heading,
|
|
|
|
|
required String subHeading,
|
|
|
|
|
required VoidCallback onTap,
|
|
|
|
|
}) {
|
|
|
|
|
return GestureDetector(
|
|
|
|
|
onTap: onTap, // Handles the tap
|
|
|
|
|
child: Card(
|
|
|
|
|
shape: RoundedRectangleBorder(
|
|
|
|
|
borderRadius: BorderRadius.circular(14), // Circular border radius
|
|
|
|
|
),
|
|
|
|
|
color: AppColor.neutral80,
|
|
|
|
|
child: Row(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start, // Align items at the top
|
|
|
|
|
children: [
|
|
|
|
|
// Icon Section
|
|
|
|
|
icon
|
|
|
|
|
.toSvgAsset(
|
|
|
|
|
width: 26,
|
|
|
|
|
color: AppColor.neutral120,
|
|
|
|
|
height: 29,
|
|
|
|
|
)
|
|
|
|
|
.paddingOnly(top: 8),
|
|
|
|
|
14.width,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
Text(
|
|
|
|
|
heading,
|
|
|
|
|
style: AppTextStyles.heading6.copyWith(color: AppColor.neutral50),
|
|
|
|
|
),
|
|
|
|
|
7.height,
|
|
|
|
|
Text(
|
|
|
|
|
subHeading,
|
|
|
|
|
style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
).paddingOnly(end: 50),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
).paddingAll(12),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void onItemTap({required int index, required ServiceRequest serviceRequest, required BuildContext context}) {
|
|
|
|
|
void onItemTap({required int index, required BuildContext context}) {
|
|
|
|
|
switch (index) {
|
|
|
|
|
case 0:
|
|
|
|
|
Navigator.of(context).push(MaterialPageRoute(builder: (_) => const SparePartRequest()));
|
|
|
|
|
|
|
|
|
|
Navigator.pushReplacement(
|
|
|
|
|
context,
|
|
|
|
|
MaterialPageRoute(builder: (context) => const SparePartRequest()),
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
//push to specific screen...
|
|
|
|
|
// Navigator.push(
|
|
|
|
|
// context,
|
|
|
|
|
// MaterialPageRoute(builder: (context) => ActivitiesListView()),
|
|
|
|
|
// );
|
|
|
|
|
Navigator.push(
|
|
|
|
|
context,
|
|
|
|
|
MaterialPageRoute(builder: (context) => const MaintenanceRequestForm()),
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
@ -787,60 +778,22 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
itemCount: items.length,
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
final item = items[index];
|
|
|
|
|
return listItem(
|
|
|
|
|
return customListItem(
|
|
|
|
|
icon: item['icon']!,
|
|
|
|
|
heading: item['heading']!,
|
|
|
|
|
subHeading: item['subHeading']!,
|
|
|
|
|
context: context,
|
|
|
|
|
onTap: () {
|
|
|
|
|
onItemTap(serviceRequest: serviceRequestProvider.currentSelectedRequest!, index: index, context: context);
|
|
|
|
|
onItemTap(index: index, context: context);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return showModalBottomSheet(
|
|
|
|
|
context: context,
|
|
|
|
|
useSafeArea: true,
|
|
|
|
|
isScrollControlled: true,
|
|
|
|
|
backgroundColor: Colors.transparent,
|
|
|
|
|
builder: (context) => Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
const SizedBox().indicatorWidget(),
|
|
|
|
|
8.height,
|
|
|
|
|
Align(
|
|
|
|
|
alignment: AlignmentDirectional.centerStart,
|
|
|
|
|
child: context.translation.selectActivityType.bottomSheetHeadingTextStyle(context),
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
ListView.builder(
|
|
|
|
|
shrinkWrap: true,
|
|
|
|
|
padding: EdgeInsets.zero,
|
|
|
|
|
itemCount: items.length,
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
final item = items[index];
|
|
|
|
|
return listItem(
|
|
|
|
|
icon: item['icon']!,
|
|
|
|
|
heading: item['heading']!,
|
|
|
|
|
subHeading: item['subHeading']!,
|
|
|
|
|
context: context,
|
|
|
|
|
onTap: () {
|
|
|
|
|
onItemTap(serviceRequest: serviceRequestProvider.currentSelectedRequest!, index: index, context: context);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
).bottomSheetContainer(context);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future actionBottomSheet({required BuildContext context, required String title, String? button1Text, String? button2Text, VoidCallback? button1Tap, VoidCallback? button2Tap}) {
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
@ -862,7 +815,7 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
buttonColor: AppColor.white60,
|
|
|
|
|
textColor: AppColor.black10,
|
|
|
|
|
onPressed: button1Tap ??
|
|
|
|
|
() async {
|
|
|
|
|
() async {
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
// await snapshot.updateRequest(user: userProvider.user, request: serviceRequestProvider.serviceRequest);
|
|
|
|
|
// Navigator.pop(context, true);
|
|
|
|
|
@ -881,7 +834,6 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
);
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return showModalBottomSheet(
|
|
|
|
|
context: context,
|
|
|
|
|
useSafeArea: true,
|
|
|
|
|
@ -928,10 +880,10 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Future feedBackBottomSheet({required BuildContext context}) {
|
|
|
|
|
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
String feedback = '';
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
childWidget: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
@ -950,10 +902,10 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
|
|
|
|
|
alignLabelWithHint: true,
|
|
|
|
|
onChange: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
feedback = text;
|
|
|
|
|
},
|
|
|
|
|
onSaved: (text) {
|
|
|
|
|
serviceRequestProvider.currentSelectedRequest?.comments = text;
|
|
|
|
|
feedback = text;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
@ -961,7 +913,12 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
label: context.translation.fixed,
|
|
|
|
|
buttonColor: AppColor.green70,
|
|
|
|
|
loading: false,
|
|
|
|
|
onPressed: () {},
|
|
|
|
|
onPressed: () {
|
|
|
|
|
print('feedback i got is ${feedback}');
|
|
|
|
|
//TODO uncommit this after testing...
|
|
|
|
|
// requestDetailProvider.engineerMarkAsFixed(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, feedback:feedback);
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
@ -1020,9 +977,9 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
bool acknowledge = false;
|
|
|
|
|
Uint8List? newSignature;
|
|
|
|
|
String? nurseSignature;
|
|
|
|
|
return buildBottomSheetParentWithConsumer(
|
|
|
|
|
return buildBottomSheetParent(
|
|
|
|
|
context: context,
|
|
|
|
|
childWidget: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
|
|
|
|
|
childWidget: Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
|
|
|
|
|
return Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
@ -1038,15 +995,15 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
InkWell(
|
|
|
|
|
child: acknowledge
|
|
|
|
|
? const Icon(
|
|
|
|
|
Icons.check_box,
|
|
|
|
|
color: AppColor.primary10,
|
|
|
|
|
)
|
|
|
|
|
Icons.check_box,
|
|
|
|
|
color: AppColor.primary10,
|
|
|
|
|
)
|
|
|
|
|
: const Icon(
|
|
|
|
|
Icons.check_box_outline_blank,
|
|
|
|
|
color: AppColor.neutral120,
|
|
|
|
|
),
|
|
|
|
|
Icons.check_box_outline_blank,
|
|
|
|
|
color: AppColor.neutral120,
|
|
|
|
|
),
|
|
|
|
|
onTap: () {
|
|
|
|
|
acknowledge = !acknowledge;
|
|
|
|
|
acknowledge = !acknowledge;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
6.width,
|
|
|
|
|
@ -1079,12 +1036,11 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
showBorder: true,
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
if (newSignature != null && acknowledge) {
|
|
|
|
|
//TODO replace provider with new provider and also check workorder id is not correct.
|
|
|
|
|
Provider.of<RequestDetailProvider>(context, listen: false).nurseReject(
|
|
|
|
|
model: NurseActionModel(
|
|
|
|
|
workOrderId: int.parse(serviceRequestProvider.currentSelectedRequest!.id!),
|
|
|
|
|
signatureNurse: nurseSignature,
|
|
|
|
|
));
|
|
|
|
|
requestDetailProvider.nurseActionHelperModel=NurseActionHelperModel(
|
|
|
|
|
workOrderId: int.parse(requestDetailProvider.currentWorkOrder!.data!.workOrderNo!),
|
|
|
|
|
signatureNurse: nurseSignature,
|
|
|
|
|
);
|
|
|
|
|
requestDetailProvider.nurseReject();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
@ -1099,11 +1055,11 @@ class ServiceRequestBottomSheet {
|
|
|
|
|
onPressed: () async {
|
|
|
|
|
if (newSignature != null && acknowledge) {
|
|
|
|
|
//TODO replace provider with new provider and also check workorder id is not correct.
|
|
|
|
|
Provider.of<RequestDetailProvider>(context, listen: false).nurseConfirm(
|
|
|
|
|
model: NurseActionModel(
|
|
|
|
|
workOrderId: int.parse(serviceRequestProvider.currentSelectedRequest!.id!),
|
|
|
|
|
signatureNurse: nurseSignature,
|
|
|
|
|
));
|
|
|
|
|
requestDetailProvider.nurseActionHelperModel=NurseActionHelperModel(
|
|
|
|
|
workOrderId: int.parse(requestDetailProvider.currentWorkOrder!.data!.workOrderNo!),
|
|
|
|
|
signatureNurse: nurseSignature,
|
|
|
|
|
);
|
|
|
|
|
requestDetailProvider.nurseConfirm();
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|