timer picker added, and code improvements
parent
bcb54f6279
commit
62dd395a73
@ -1,241 +1,241 @@
|
|||||||
import 'package:flutter/material.dart';
|
// import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
// import 'package:provider/provider.dart';
|
||||||
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
|
||||||
import 'package:test_sa/extensions/context_extension.dart';
|
// import 'package:test_sa/extensions/context_extension.dart';
|
||||||
import 'package:test_sa/extensions/int_extensions.dart';
|
// import 'package:test_sa/extensions/int_extensions.dart';
|
||||||
import 'package:test_sa/extensions/string_extensions.dart';
|
// import 'package:test_sa/extensions/string_extensions.dart';
|
||||||
import 'package:test_sa/extensions/text_extensions.dart';
|
// import 'package:test_sa/extensions/text_extensions.dart';
|
||||||
import 'package:test_sa/extensions/widget_extensions.dart';
|
// import 'package:test_sa/extensions/widget_extensions.dart';
|
||||||
import 'package:test_sa/models/device/asset.dart';
|
// import 'package:test_sa/models/device/asset.dart';
|
||||||
import 'package:test_sa/models/service_request/service_request.dart';
|
// import 'package:test_sa/models/service_request/service_request.dart';
|
||||||
|
//
|
||||||
import '../../../../controllers/providers/api/service_requests_provider.dart';
|
// import '../../../../controllers/providers/api/service_requests_provider.dart';
|
||||||
import '../../../../models/lookup.dart';
|
// import '../../../../models/lookup.dart';
|
||||||
import '../../../../new_views/app_style/app_color.dart';
|
// import '../../../../new_views/app_style/app_color.dart';
|
||||||
import '../../../../new_views/common_widgets/app_filled_button.dart';
|
// import '../../../../new_views/common_widgets/app_filled_button.dart';
|
||||||
import '../../../../new_views/common_widgets/app_text_form_field.dart';
|
// import '../../../../new_views/common_widgets/app_text_form_field.dart';
|
||||||
import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
|
// import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
|
||||||
import '../../../../providers/service_request_providers/first_action_provider.dart';
|
// import '../../../../providers/service_request_providers/first_action_provider.dart';
|
||||||
import '../../../widgets/date_and_time/date_picker.dart';
|
// import '../../../widgets/date_and_time/date_picker.dart';
|
||||||
|
//
|
||||||
class FirstActionBottomSheet extends StatefulWidget {
|
// class FirstActionBottomSheet extends StatefulWidget {
|
||||||
final ServiceRequest request;
|
// final ServiceRequest request;
|
||||||
|
// todo @delete
|
||||||
const FirstActionBottomSheet({Key? key, required this.request}) : super(key: key);
|
// const FirstActionBottomSheet({Key? key, required this.request}) : super(key: key);
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
State<FirstActionBottomSheet> createState() => _FirstActionBottomSheetState();
|
// State<FirstActionBottomSheet> createState() => _FirstActionBottomSheetState();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> {
|
// class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> {
|
||||||
late ServiceRequest _serviceRequest;
|
// late ServiceRequest _serviceRequest;
|
||||||
Asset? asset;
|
// Asset? asset;
|
||||||
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
||||||
|
//
|
||||||
Lookup? firstAction;
|
// Lookup? firstAction;
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
void initState() {
|
// void initState() {
|
||||||
super.initState();
|
// super.initState();
|
||||||
_serviceRequest = widget.request;
|
// _serviceRequest = widget.request;
|
||||||
firstAction = _serviceRequest.firstAction;
|
// firstAction = _serviceRequest.firstAction;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
final userProvider = Provider.of<UserProvider>(context, listen: false);
|
// final userProvider = Provider.of<UserProvider>(context, listen: false);
|
||||||
return Wrap(
|
// return Wrap(
|
||||||
children: [
|
// children: [
|
||||||
Container(
|
// Container(
|
||||||
clipBehavior: Clip.antiAlias,
|
// clipBehavior: Clip.antiAlias,
|
||||||
margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
|
// margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
|
||||||
decoration: BoxDecoration(
|
// decoration: BoxDecoration(
|
||||||
color: Theme.of(context).scaffoldBackgroundColor,
|
// color: Theme.of(context).scaffoldBackgroundColor,
|
||||||
borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)),
|
// borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)),
|
||||||
),
|
// ),
|
||||||
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
|
// padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
|
||||||
child: Form(
|
// child: Form(
|
||||||
key: _formKey,
|
// key: _formKey,
|
||||||
child: SingleChildScrollView(
|
// child: SingleChildScrollView(
|
||||||
child: Column(
|
// child: Column(
|
||||||
children: [
|
// children: [
|
||||||
Container(
|
// Container(
|
||||||
width: 40.toScreenWidth,
|
// width: 40.toScreenWidth,
|
||||||
height: 5.toScreenHeight,
|
// height: 5.toScreenHeight,
|
||||||
decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)),
|
// decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)),
|
||||||
),
|
// ),
|
||||||
Align(
|
// Align(
|
||||||
alignment: AlignmentDirectional.centerStart,
|
// alignment: AlignmentDirectional.centerStart,
|
||||||
child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16),
|
// child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16),
|
||||||
),
|
// ),
|
||||||
SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>(
|
// SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>(
|
||||||
context: context,
|
// context: context,
|
||||||
title: context.translation.firstActionStatus,
|
// title: context.translation.firstActionStatus,
|
||||||
initialValue: firstAction, //_serviceRequest.firstAction,
|
// initialValue: firstAction, //_serviceRequest.firstAction,
|
||||||
onSelect: (value) {
|
// onSelect: (value) {
|
||||||
setState(() {
|
// setState(() {
|
||||||
//_serviceRequest.firstAction = value;
|
// //_serviceRequest.firstAction = value;
|
||||||
firstAction = value;
|
// firstAction = value;
|
||||||
if (firstAction?.value != 2) {
|
// if (firstAction?.value != 2) {
|
||||||
_serviceRequest.visitDate = null;
|
// _serviceRequest.visitDate = null;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
if (firstAction?.value == 2) ...[
|
// if (firstAction?.value == 2) ...[
|
||||||
8.height,
|
// 8.height,
|
||||||
ADatePicker(
|
// ADatePicker(
|
||||||
label: context.translation.visitDate,
|
// label: context.translation.visitDate,
|
||||||
date: DateTime.tryParse(_serviceRequest.visitDate ?? ""),
|
// date: DateTime.tryParse(_serviceRequest.visitDate ?? ""),
|
||||||
formatDateWithTime: true,
|
// formatDateWithTime: true,
|
||||||
onDatePicker: (selectedDate) {
|
// onDatePicker: (selectedDate) {
|
||||||
showTimePicker(
|
// showTimePicker(
|
||||||
context: context,
|
// context: context,
|
||||||
initialTime: TimeOfDay.now(),
|
// initialTime: TimeOfDay.now(),
|
||||||
).then((selectedTime) {
|
// ).then((selectedTime) {
|
||||||
// Handle the selected date and time here.
|
// // Handle the selected date and time here.
|
||||||
if (selectedTime != null) {
|
// if (selectedTime != null) {
|
||||||
DateTime selectedDateTime = DateTime(
|
// DateTime selectedDateTime = DateTime(
|
||||||
selectedDate.year,
|
// selectedDate.year,
|
||||||
selectedDate.month,
|
// selectedDate.month,
|
||||||
selectedDate.day,
|
// selectedDate.day,
|
||||||
selectedTime.hour,
|
// selectedTime.hour,
|
||||||
selectedTime.minute,
|
// selectedTime.minute,
|
||||||
);
|
// );
|
||||||
if (selectedDateTime.isBefore(DateTime.parse(_serviceRequest.date!))) {
|
// if (selectedDateTime.isBefore(DateTime.parse(_serviceRequest.date!))) {
|
||||||
"Visit Date time must be greater then request date".showToast;
|
// "Visit Date time must be greater then request date".showToast;
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
setState(() {
|
// setState(() {
|
||||||
_serviceRequest.visitDate = selectedDateTime.toIso8601String();
|
// _serviceRequest.visitDate = selectedDateTime.toIso8601String();
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
|
//
|
||||||
if (firstAction?.id == 404 && Provider.of<SettingProvider>(context, listen: false).assetGroup!.id == 1) ...[
|
// if (firstAction?.id == 404 && Provider.of<SettingProvider>(context, listen: false).assetGroup!.id == 1) ...[
|
||||||
8.height,
|
// 8.height,
|
||||||
Row(
|
// Row(
|
||||||
children: [
|
// children: [
|
||||||
ADatePicker(
|
// ADatePicker(
|
||||||
label: context.translation.startDate,
|
// label: context.translation.startDate,
|
||||||
date: DateTime.tryParse(_serviceRequest.startDate ?? ""),
|
// date: DateTime.tryParse(_serviceRequest.startDate ?? ""),
|
||||||
formatDateWithTime: true,
|
// formatDateWithTime: true,
|
||||||
onDatePicker: (selectedDate) {
|
// onDatePicker: (selectedDate) {
|
||||||
showTimePicker(
|
// showTimePicker(
|
||||||
context: context,
|
// context: context,
|
||||||
initialTime: TimeOfDay.now(),
|
// initialTime: TimeOfDay.now(),
|
||||||
).then((selectedTime) {
|
// ).then((selectedTime) {
|
||||||
// Handle the selected date and time here.
|
// // Handle the selected date and time here.
|
||||||
if (selectedTime != null) {
|
// if (selectedTime != null) {
|
||||||
DateTime selectedDateTime = DateTime(
|
// DateTime selectedDateTime = DateTime(
|
||||||
selectedDate.year,
|
// selectedDate.year,
|
||||||
selectedDate.month,
|
// selectedDate.month,
|
||||||
selectedDate.day,
|
// selectedDate.day,
|
||||||
selectedTime.hour,
|
// selectedTime.hour,
|
||||||
selectedTime.minute,
|
// selectedTime.minute,
|
||||||
);
|
// );
|
||||||
setState(() {
|
// setState(() {
|
||||||
_serviceRequest.startDate = selectedDateTime.toIso8601String();
|
// _serviceRequest.startDate = selectedDateTime.toIso8601String();
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
).expanded,
|
// ).expanded,
|
||||||
8.width,
|
// 8.width,
|
||||||
ADatePicker(
|
// ADatePicker(
|
||||||
label: context.translation.endDate,
|
// label: context.translation.endDate,
|
||||||
date: DateTime.tryParse(_serviceRequest.endDate ?? ""),
|
// date: DateTime.tryParse(_serviceRequest.endDate ?? ""),
|
||||||
formatDateWithTime: true,
|
// formatDateWithTime: true,
|
||||||
onDatePicker: (selectedDate) {
|
// onDatePicker: (selectedDate) {
|
||||||
showTimePicker(
|
// showTimePicker(
|
||||||
context: context,
|
// context: context,
|
||||||
initialTime: TimeOfDay.now(),
|
// initialTime: TimeOfDay.now(),
|
||||||
).then((selectedTime) {
|
// ).then((selectedTime) {
|
||||||
// Handle the selected date and time here.
|
// // Handle the selected date and time here.
|
||||||
if (selectedTime != null) {
|
// if (selectedTime != null) {
|
||||||
DateTime selectedDateTime = DateTime(
|
// DateTime selectedDateTime = DateTime(
|
||||||
selectedDate.year,
|
// selectedDate.year,
|
||||||
selectedDate.month,
|
// selectedDate.month,
|
||||||
selectedDate.day,
|
// selectedDate.day,
|
||||||
selectedTime.hour,
|
// selectedTime.hour,
|
||||||
selectedTime.minute,
|
// selectedTime.minute,
|
||||||
);
|
// );
|
||||||
setState(() {
|
// setState(() {
|
||||||
_serviceRequest.endDate = selectedDateTime.toIso8601String();
|
// _serviceRequest.endDate = selectedDateTime.toIso8601String();
|
||||||
_serviceRequest.workingHours =
|
// _serviceRequest.workingHours =
|
||||||
(((DateTime.parse(_serviceRequest.endDate!).difference(DateTime.parse(_serviceRequest.startDate!)).inSeconds ?? 0) / 60) / 60).toStringAsFixed(2);
|
// (((DateTime.parse(_serviceRequest.endDate!).difference(DateTime.parse(_serviceRequest.startDate!)).inSeconds ?? 0) / 60) / 60).toStringAsFixed(2);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
).expanded,
|
// ).expanded,
|
||||||
],
|
// ],
|
||||||
)
|
// )
|
||||||
],
|
// ],
|
||||||
|
//
|
||||||
/// Loan availability not required
|
// /// Loan availability not required
|
||||||
// 8.height,
|
// // 8.height,
|
||||||
// SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
|
// // SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
|
||||||
// context: context,
|
// // context: context,
|
||||||
// title: context.translation.loanAvailability,
|
// // title: context.translation.loanAvailability,
|
||||||
// initialValue: _serviceRequest.loanAvailability,
|
// // initialValue: _serviceRequest.loanAvailability,
|
||||||
// onSelect: (status) {
|
// // onSelect: (status) {
|
||||||
// setState(() {
|
// // setState(() {
|
||||||
// _serviceRequest.loanAvailability = status;
|
// // _serviceRequest.loanAvailability = status;
|
||||||
// if (_serviceRequest.loanAvailability.value != 1) {
|
// // if (_serviceRequest.loanAvailability.value != 1) {
|
||||||
// asset = null;
|
// // asset = null;
|
||||||
// }
|
// // }
|
||||||
// });
|
// // });
|
||||||
// },
|
// // },
|
||||||
// ),
|
// // ),
|
||||||
// if (_serviceRequest?.loanAvailability?.value == 1) 8.height,
|
// // if (_serviceRequest?.loanAvailability?.value == 1) 8.height,
|
||||||
// if (_serviceRequest?.loanAvailability?.value == 1)
|
// // if (_serviceRequest?.loanAvailability?.value == 1)
|
||||||
// PickAsset(
|
// // PickAsset(
|
||||||
// device: asset ?? _serviceRequest.device,
|
// // device: asset ?? _serviceRequest.device,
|
||||||
// onPickAsset: (asset) {
|
// // onPickAsset: (asset) {
|
||||||
// setState(() {
|
// // setState(() {
|
||||||
// this.asset = asset;
|
// // this.asset = asset;
|
||||||
// });
|
// // });
|
||||||
// },
|
// // },
|
||||||
// ),
|
// // ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTextFormField(
|
// AppTextFormField(
|
||||||
labelText: context.translation.comments,
|
// labelText: context.translation.comments,
|
||||||
textInputType: TextInputType.multiline,
|
// textInputType: TextInputType.multiline,
|
||||||
alignLabelWithHint: true,
|
// alignLabelWithHint: true,
|
||||||
onChange: (text) {
|
// onChange: (text) {
|
||||||
_serviceRequest.comments = text;
|
// _serviceRequest.comments = text;
|
||||||
},
|
// },
|
||||||
onSaved: (text) {
|
// onSaved: (text) {
|
||||||
_serviceRequest.comments = text;
|
// _serviceRequest.comments = text;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
16.height,
|
// 16.height,
|
||||||
Consumer<ServiceRequestsProvider>(
|
// Consumer<ServiceRequestsProvider>(
|
||||||
builder: (context, snapshot, _) => AppFilledButton(
|
// builder: (context, snapshot, _) => AppFilledButton(
|
||||||
label: context.translation.save,
|
// label: context.translation.save,
|
||||||
loading: snapshot.isLoading ?? false,
|
// loading: snapshot.isLoading ?? false,
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
_formKey.currentState!.save();
|
// _formKey.currentState!.save();
|
||||||
_serviceRequest.device = asset;
|
// _serviceRequest.device = asset;
|
||||||
_serviceRequest.firstAction = firstAction;
|
// _serviceRequest.firstAction = firstAction;
|
||||||
await snapshot.updateRequest(user: userProvider.user!, request: _serviceRequest);
|
// await snapshot.updateRequest(user: userProvider.user!, request: _serviceRequest);
|
||||||
Navigator.pop(context, true);
|
// Navigator.pop(context, true);
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
16.height,
|
// 16.height,
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
)
|
// )
|
||||||
],
|
// ],
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@ -1,398 +1,398 @@
|
|||||||
import 'dart:convert';
|
// import 'dart:convert';
|
||||||
import 'dart:io';
|
// import 'dart:io';
|
||||||
|
//
|
||||||
import 'package:flutter/material.dart';
|
// import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
// import 'package:provider/provider.dart';
|
||||||
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
||||||
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart';
|
// import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart';
|
||||||
import 'package:test_sa/controllers/providers/api/user_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/controllers/providers/settings/setting_provider.dart';
|
||||||
import 'package:test_sa/extensions/context_extension.dart';
|
// import 'package:test_sa/extensions/context_extension.dart';
|
||||||
import 'package:test_sa/extensions/int_extensions.dart';
|
// import 'package:test_sa/extensions/int_extensions.dart';
|
||||||
import 'package:test_sa/extensions/text_extensions.dart';
|
// import 'package:test_sa/extensions/text_extensions.dart';
|
||||||
import 'package:test_sa/extensions/widget_extensions.dart';
|
// import 'package:test_sa/extensions/widget_extensions.dart';
|
||||||
import 'package:test_sa/models/device/asset.dart';
|
// import 'package:test_sa/models/device/asset.dart';
|
||||||
import 'package:test_sa/models/service_request/service_report.dart';
|
// import 'package:test_sa/models/service_request/service_report.dart';
|
||||||
import 'package:test_sa/models/service_request/service_request.dart';
|
// import 'package:test_sa/models/service_request/service_request.dart';
|
||||||
import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart';
|
// import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart';
|
||||||
import 'package:test_sa/views/pages/user/requests/work_order/part_no_button.dart';
|
// import 'package:test_sa/views/pages/user/requests/work_order/part_no_button.dart';
|
||||||
import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
|
// import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
|
||||||
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
// import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
||||||
import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart';
|
// import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart';
|
||||||
|
//
|
||||||
import '../../../../../attachment.dart';
|
// import '../../../../../attachment.dart';
|
||||||
import '../../../../../models/lookup.dart';
|
// import '../../../../../models/lookup.dart';
|
||||||
import '../../../../../models/service_request/spare_parts.dart';
|
// import '../../../../../models/service_request/spare_parts.dart';
|
||||||
import '../../../../../models/service_request/wo_call_request.dart';
|
// import '../../../../../models/service_request/wo_call_request.dart';
|
||||||
import '../../../../../new_views/common_widgets/app_filled_button.dart';
|
// import '../../../../../new_views/common_widgets/app_filled_button.dart';
|
||||||
import '../../../../../new_views/common_widgets/app_text_form_field.dart';
|
// import '../../../../../new_views/common_widgets/app_text_form_field.dart';
|
||||||
import '../../../../../new_views/common_widgets/default_app_bar.dart';
|
// import '../../../../../new_views/common_widgets/default_app_bar.dart';
|
||||||
import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
|
// import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
|
||||||
import '../../../../../providers/service_request_providers/equipment_status_provider.dart';
|
// import '../../../../../providers/service_request_providers/equipment_status_provider.dart';
|
||||||
import '../../../../../providers/work_order/reason_provider.dart';
|
// import '../../../../../providers/work_order/reason_provider.dart';
|
||||||
import '../../../../../providers/work_order/service_type_provider.dart';
|
// import '../../../../../providers/work_order/service_type_provider.dart';
|
||||||
import '../../../../widgets/date_and_time/date_picker.dart';
|
// import '../../../../widgets/date_and_time/date_picker.dart';
|
||||||
import '../../../../widgets/e_signature/e_signature.dart';
|
// import '../../../../widgets/e_signature/e_signature.dart';
|
||||||
import '../../../../widgets/images/multi_image_picker.dart';
|
// import '../../../../widgets/images/multi_image_picker.dart';
|
||||||
import '../../../../widgets/status/report/service_report_assistant_employee_menu.dart';
|
// import '../../../../widgets/status/report/service_report_assistant_employee_menu.dart';
|
||||||
import '../../../../widgets/status/report/service_report_fault_description.dart';
|
// import '../../../../widgets/status/report/service_report_fault_description.dart';
|
||||||
import '../../../../widgets/status/report/service_report_repair_location.dart';
|
// import '../../../../widgets/status/report/service_report_repair_location.dart';
|
||||||
import '../../../../widgets/timer/app_timer.dart';
|
// import '../../../../widgets/timer/app_timer.dart';
|
||||||
|
//
|
||||||
class EditServiceReport extends StatefulWidget {
|
// class EditServiceReport extends StatefulWidget {
|
||||||
static const String id = "/edit-service-report";
|
// static const String id = "/edit-service-report";
|
||||||
final ServiceRequest request;
|
// final ServiceRequest request;
|
||||||
final ServiceReport report;
|
// final ServiceReport report;
|
||||||
|
//
|
||||||
const EditServiceReport({Key? key, required this.request, required this.report}) : super(key: key);
|
// const EditServiceReport({Key? key, required this.request, required this.report}) : super(key: key);
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
_EditServiceReportState createState() => _EditServiceReportState();
|
// _EditServiceReportState createState() => _EditServiceReportState();
|
||||||
}
|
// }
|
||||||
|
// // todo @delete
|
||||||
class _EditServiceReportState extends State<EditServiceReport> with TickerProviderStateMixin {
|
// class _EditServiceReportState extends State<EditServiceReport> with TickerProviderStateMixin {
|
||||||
late UserProvider _userProvider;
|
// late UserProvider _userProvider;
|
||||||
late SettingProvider _settingProvider;
|
// late SettingProvider _settingProvider;
|
||||||
late ServiceRequestsProvider _serviceRequestsProvider;
|
// late ServiceRequestsProvider _serviceRequestsProvider;
|
||||||
List<SparePart> _spareParts = [];
|
// List<SparePart> _spareParts = [];
|
||||||
late ServiceReport _serviceReport;
|
// late ServiceReport _serviceReport;
|
||||||
bool _isLoading = false;
|
// bool _isLoading = false;
|
||||||
List<File> _files = [];
|
// List<File> _files = [];
|
||||||
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
||||||
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
// final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
final TextEditingController _faultController = TextEditingController();
|
// final TextEditingController _faultController = TextEditingController();
|
||||||
final TextEditingController _workPreformedController = TextEditingController();
|
// final TextEditingController _workPreformedController = TextEditingController();
|
||||||
final TextEditingController _partQtyController = TextEditingController();
|
// final TextEditingController _partQtyController = TextEditingController();
|
||||||
late ServiceStatusProvider _assetTypeProvider;
|
// late ServiceStatusProvider _assetTypeProvider;
|
||||||
late CallRequest _callRequestForWorkOrder;
|
// late CallRequest _callRequestForWorkOrder;
|
||||||
|
//
|
||||||
Asset? loanAvailabilityAsset;
|
// Asset? loanAvailabilityAsset;
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
void initState() {
|
// void initState() {
|
||||||
_serviceReport = widget.report;
|
// _serviceReport = widget.report;
|
||||||
_files = widget.report.attachmentsWorkOrder?.map((e) => File(e.name!)).toList() ?? [];
|
// _files = widget.report.attachmentsWorkOrder?.map((e) => File(e.name!)).toList() ?? [];
|
||||||
_spareParts = _serviceReport.sparePartsWorkOrders?.map((e) => e.sparePart!).toList() ?? [];
|
// _spareParts = _serviceReport.sparePartsWorkOrders?.map((e) => e.sparePart!).toList() ?? [];
|
||||||
super.initState();
|
// super.initState();
|
||||||
if (context.mounted) {
|
// if (context.mounted) {
|
||||||
Provider.of<ReasonProvider>(context, listen: false).reset();
|
// Provider.of<ReasonProvider>(context, listen: false).reset();
|
||||||
Provider.of<ReasonProvider>(context, listen: false).serviceRequestId = _serviceReport.callRequest!.id.toString();
|
// Provider.of<ReasonProvider>(context, listen: false).serviceRequestId = _serviceReport.callRequest!.id.toString();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
void getRequestForWorkOrder() async {
|
// void getRequestForWorkOrder() async {
|
||||||
_isLoading = true;
|
// _isLoading = true;
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
_callRequestForWorkOrder = (await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id!))!;
|
// _callRequestForWorkOrder = (await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id!))!;
|
||||||
_serviceReport.assignedEmployee = _callRequestForWorkOrder.assignedEmployee;
|
// _serviceReport.assignedEmployee = _callRequestForWorkOrder.assignedEmployee;
|
||||||
await _assetTypeProvider.getTypes();
|
// await _assetTypeProvider.getTypes();
|
||||||
_isLoading = false;
|
// _isLoading = false;
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
void dispose() {
|
// void dispose() {
|
||||||
_faultController.dispose();
|
// _faultController.dispose();
|
||||||
_workPreformedController.dispose();
|
// _workPreformedController.dispose();
|
||||||
_partQtyController.dispose();
|
// _partQtyController.dispose();
|
||||||
super.dispose();
|
// super.dispose();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
_userProvider = Provider.of<UserProvider>(context);
|
// _userProvider = Provider.of<UserProvider>(context);
|
||||||
_settingProvider = Provider.of<SettingProvider>(context);
|
// _settingProvider = Provider.of<SettingProvider>(context);
|
||||||
_serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
// _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
||||||
_assetTypeProvider = Provider.of<ServiceStatusProvider>(context);
|
// _assetTypeProvider = Provider.of<ServiceStatusProvider>(context);
|
||||||
_serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere((element) => element.value == _callRequestForWorkOrder.assetType, orElse: null);
|
// _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere((element) => element.value == _callRequestForWorkOrder.assetType, orElse: null);
|
||||||
return Scaffold(
|
// return Scaffold(
|
||||||
key: _scaffoldKey,
|
// key: _scaffoldKey,
|
||||||
appBar: DefaultAppBar(title: context.translation.updateWorkOrder),
|
// appBar: DefaultAppBar(title: context.translation.updateWorkOrder),
|
||||||
body: SafeArea(
|
// body: SafeArea(
|
||||||
child: LoadingManager(
|
// child: LoadingManager(
|
||||||
isLoading: _isLoading,
|
// isLoading: _isLoading,
|
||||||
isFailedLoading: false,
|
// isFailedLoading: false,
|
||||||
stateCode: 200,
|
// stateCode: 200,
|
||||||
onRefresh: () async {},
|
// onRefresh: () async {},
|
||||||
child: Form(
|
// child: Form(
|
||||||
key: _formKey,
|
// key: _formKey,
|
||||||
child: Column(
|
// child: Column(
|
||||||
children: [
|
// children: [
|
||||||
SingleChildScrollView(
|
// SingleChildScrollView(
|
||||||
child: Column(
|
// child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
// crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
// children: [
|
||||||
Card(
|
// Card(
|
||||||
child: Column(
|
// child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
// crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: [
|
// children: [
|
||||||
widget.request.hospitalName!.heading5(context),
|
// widget.request.hospitalName!.heading5(context),
|
||||||
8.height,
|
// 8.height,
|
||||||
"${context.translation.assetNo}: ${widget.request.deviceNumber}".bodyText(context),
|
// "${context.translation.assetNo}: ${widget.request.deviceNumber}".bodyText(context),
|
||||||
"${context.translation.callId}: ${widget.request.requestCode}".bodyText(context),
|
// "${context.translation.callId}: ${widget.request.requestCode}".bodyText(context),
|
||||||
],
|
// ],
|
||||||
).paddingAll(16),
|
// ).paddingAll(16),
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
ADatePicker(
|
// ADatePicker(
|
||||||
label: context.translation.returnToService,
|
// label: context.translation.returnToService,
|
||||||
date: DateTime.tryParse(_serviceReport.visitDate ?? ""),
|
// date: DateTime.tryParse(_serviceReport.visitDate ?? ""),
|
||||||
formatDateWithTime: true,
|
// formatDateWithTime: true,
|
||||||
onDatePicker: (selectedDate) {
|
// onDatePicker: (selectedDate) {
|
||||||
showTimePicker(
|
// showTimePicker(
|
||||||
context: context,
|
// context: context,
|
||||||
initialTime: TimeOfDay.now(),
|
// initialTime: TimeOfDay.now(),
|
||||||
).then((selectedTime) {
|
// ).then((selectedTime) {
|
||||||
if (selectedTime != null) {
|
// if (selectedTime != null) {
|
||||||
DateTime selectedDateTime = DateTime(
|
// DateTime selectedDateTime = DateTime(
|
||||||
selectedDate.year,
|
// selectedDate.year,
|
||||||
selectedDate.month,
|
// selectedDate.month,
|
||||||
selectedDate.day,
|
// selectedDate.day,
|
||||||
selectedTime.hour,
|
// selectedTime.hour,
|
||||||
selectedTime.minute,
|
// selectedTime.minute,
|
||||||
);
|
// );
|
||||||
setState(() {
|
// setState(() {
|
||||||
_serviceReport.visitDate = selectedDateTime.toIso8601String();
|
// _serviceReport.visitDate = selectedDateTime.toIso8601String();
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTimer(
|
// AppTimer(
|
||||||
label: context.translation.workingHours,
|
// label: context.translation.workingHours,
|
||||||
timer: _serviceReport.timer,
|
// timer: _serviceReport.timer,
|
||||||
enabled: _serviceReport.endofWorkTime == null,
|
// enabled: _serviceReport.endofWorkTime == null,
|
||||||
onChange: (timer) async {
|
// onChange: (timer) async {
|
||||||
_serviceReport.timer = timer;
|
// _serviceReport.timer = timer;
|
||||||
return true;
|
// return true;
|
||||||
},
|
// },
|
||||||
onPick: (value) {},
|
// onPick: (value) {},
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
LoadingManager(
|
// LoadingManager(
|
||||||
isLoading: _assetTypeProvider.isLoading,
|
// isLoading: _assetTypeProvider.isLoading,
|
||||||
isFailedLoading: _assetTypeProvider.statuses == null,
|
// isFailedLoading: _assetTypeProvider.statuses == null,
|
||||||
stateCode: _assetTypeProvider.stateCode,
|
// stateCode: _assetTypeProvider.stateCode,
|
||||||
onRefresh: () async {
|
// onRefresh: () async {
|
||||||
_assetTypeProvider.reset();
|
// _assetTypeProvider.reset();
|
||||||
await _assetTypeProvider.getTypes();
|
// await _assetTypeProvider.getTypes();
|
||||||
_serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere(
|
// _serviceReport.assetType = _assetTypeProvider.statuses?.firstWhere(
|
||||||
(element) => element.value == _serviceReport.callRequest?.assetType,
|
// (element) => element.value == _serviceReport.callRequest?.assetType,
|
||||||
orElse: null,
|
// orElse: null,
|
||||||
);
|
// );
|
||||||
},
|
// },
|
||||||
child: AppTextFormField(
|
// child: AppTextFormField(
|
||||||
labelText: context.translation.assetType,
|
// labelText: context.translation.assetType,
|
||||||
initialValue: _serviceReport.assetType?.name,
|
// initialValue: _serviceReport.assetType?.name,
|
||||||
textAlign: TextAlign.center,
|
// textAlign: TextAlign.center,
|
||||||
enable: false,
|
// enable: false,
|
||||||
style: Theme.of(context).textTheme.titleMedium,
|
// style: Theme.of(context).textTheme.titleMedium,
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
SingleItemDropDownMenu<Lookup, EquipmentStatusProvider>(
|
// SingleItemDropDownMenu<Lookup, EquipmentStatusProvider>(
|
||||||
context: context,
|
// context: context,
|
||||||
title: context.translation.equipmentStatus,
|
// title: context.translation.equipmentStatus,
|
||||||
initialValue: _serviceReport.equipmentStatus,
|
// initialValue: _serviceReport.equipmentStatus,
|
||||||
onSelect: (value) {
|
// onSelect: (value) {
|
||||||
_serviceReport.equipmentStatus = value;
|
// _serviceReport.equipmentStatus = value;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
SingleItemDropDownMenu<Lookup, ReasonProvider>(
|
// SingleItemDropDownMenu<Lookup, ReasonProvider>(
|
||||||
context: context,
|
// context: context,
|
||||||
title: context.translation.reason,
|
// title: context.translation.reason,
|
||||||
initialValue: _serviceReport.reason,
|
// initialValue: _serviceReport.reason,
|
||||||
onSelect: (value) {
|
// onSelect: (value) {
|
||||||
if (value != null) {
|
// if (value != null) {
|
||||||
_serviceReport.reason = value;
|
// _serviceReport.reason = value;
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
SingleItemDropDownMenu<Lookup, ServiceTypeProvider>(
|
// SingleItemDropDownMenu<Lookup, ServiceTypeProvider>(
|
||||||
context: context,
|
// context: context,
|
||||||
title: context.translation.serviceType,
|
// title: context.translation.serviceType,
|
||||||
initialValue: _serviceReport.serviceType,
|
// initialValue: _serviceReport.serviceType,
|
||||||
onSelect: (value) {
|
// onSelect: (value) {
|
||||||
_serviceReport.serviceType = value;
|
// _serviceReport.serviceType = value;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
ServiceReportLastCallsMenu(
|
// ServiceReportLastCallsMenu(
|
||||||
report: _serviceReport,
|
// report: _serviceReport,
|
||||||
title: context.translation.callLastSituation,
|
// title: context.translation.callLastSituation,
|
||||||
parentId: widget.request.id,
|
// parentId: widget.request.id,
|
||||||
onSelect: (status) {
|
// onSelect: (status) {
|
||||||
_serviceReport.calllastSituation = status;
|
// _serviceReport.calllastSituation = status;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
ServiceReportFaultDescription(
|
// ServiceReportFaultDescription(
|
||||||
requestId: widget.request.id,
|
// requestId: widget.request.id,
|
||||||
initialValue: _serviceReport.faultDescription,
|
// initialValue: _serviceReport.faultDescription,
|
||||||
onSelect: (status) {
|
// onSelect: (status) {
|
||||||
_serviceReport.faultDescription = status;
|
// _serviceReport.faultDescription = status;
|
||||||
_workPreformedController.text = _serviceReport.faultDescription?.workPerformed ?? "";
|
// _workPreformedController.text = _serviceReport.faultDescription?.workPerformed ?? "";
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTextFormField(
|
// AppTextFormField(
|
||||||
labelText: context.translation.solution,
|
// labelText: context.translation.solution,
|
||||||
initialValue: _serviceReport.faultDescription?.workPerformed,
|
// initialValue: _serviceReport.faultDescription?.workPerformed,
|
||||||
textAlign: TextAlign.center,
|
// textAlign: TextAlign.center,
|
||||||
enable: false,
|
// enable: false,
|
||||||
controller: _workPreformedController,
|
// controller: _workPreformedController,
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
|
// SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
|
||||||
context: context,
|
// context: context,
|
||||||
title: context.translation.loanAvailability,
|
// title: context.translation.loanAvailability,
|
||||||
initialValue: _serviceReport.loanAvailablity,
|
// initialValue: _serviceReport.loanAvailablity,
|
||||||
onSelect: (status) {
|
// onSelect: (status) {
|
||||||
if (status != null) {
|
// if (status != null) {
|
||||||
setState(() {
|
// setState(() {
|
||||||
_serviceReport.loanAvailablity = status;
|
// _serviceReport.loanAvailablity = status;
|
||||||
if (_serviceReport.loanAvailablity?.value != 1) {
|
// if (_serviceReport.loanAvailablity?.value != 1) {
|
||||||
loanAvailabilityAsset = null;
|
// loanAvailabilityAsset = null;
|
||||||
_serviceReport.assetLoan = null;
|
// _serviceReport.assetLoan = null;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
if (_serviceReport.loanAvailablity?.value == 1) 8.height,
|
// if (_serviceReport.loanAvailablity?.value == 1) 8.height,
|
||||||
if (_serviceReport.loanAvailablity?.value == 1)
|
// if (_serviceReport.loanAvailablity?.value == 1)
|
||||||
PickAsset(
|
// PickAsset(
|
||||||
device: loanAvailabilityAsset, // ?? _serviceReport.device,
|
// device: loanAvailabilityAsset, // ?? _serviceReport.device,
|
||||||
onPickAsset: (asset) {
|
// onPickAsset: (asset) {
|
||||||
_serviceReport.assetLoan = AssetInfo.fromJson(asset.toJson());
|
// _serviceReport.assetLoan = AssetInfo.fromJson(asset.toJson());
|
||||||
setState(() {
|
// setState(() {
|
||||||
loanAvailabilityAsset = asset;
|
// loanAvailabilityAsset = asset;
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
if (_serviceReport.assetLoan != null && loanAvailabilityAsset == null)
|
// if (_serviceReport.assetLoan != null && loanAvailabilityAsset == null)
|
||||||
Card(child: "${context.translation.assetNumber}: ${_serviceReport.assetLoan?.assetNumber}".bodyText(context).paddingAll(16)),
|
// Card(child: "${context.translation.assetNumber}: ${_serviceReport.assetLoan?.assetNumber}".bodyText(context).paddingAll(16)),
|
||||||
8.height,
|
// 8.height,
|
||||||
ServiceReportAssistantEmployeeMenu(
|
// ServiceReportAssistantEmployeeMenu(
|
||||||
title: context.translation.assignAssistant,
|
// title: context.translation.assignAssistant,
|
||||||
assetId: _serviceReport.callRequest!.asset!.id!,
|
// assetId: _serviceReport.callRequest!.asset!.id!,
|
||||||
initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null,
|
// initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null,
|
||||||
onSelect: (employee) {
|
// onSelect: (employee) {
|
||||||
if (employee == null) {
|
// if (employee == null) {
|
||||||
_serviceReport.assistantEmployees = [];
|
// _serviceReport.assistantEmployees = [];
|
||||||
} else {
|
// } else {
|
||||||
_serviceReport.assistantEmployees = [employee.copyWith(id: 0)];
|
// _serviceReport.assistantEmployees = [employee.copyWith(id: 0)];
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTextFormField(
|
// AppTextFormField(
|
||||||
labelText: context.translation.travelingExpense,
|
// labelText: context.translation.travelingExpense,
|
||||||
initialValue: _serviceReport.travelingExpenses?.toString(),
|
// initialValue: _serviceReport.travelingExpenses?.toString(),
|
||||||
textInputType: TextInputType.number,
|
// textInputType: TextInputType.number,
|
||||||
onSaved: (value) {
|
// onSaved: (value) {
|
||||||
_serviceReport.travelingExpenses = double.tryParse(value) ?? 0.0;
|
// _serviceReport.travelingExpenses = double.tryParse(value) ?? 0.0;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTextFormField(
|
// AppTextFormField(
|
||||||
labelText: context.translation.travelingHours,
|
// labelText: context.translation.travelingHours,
|
||||||
initialValue: _serviceReport.travelingHours?.toString(),
|
// initialValue: _serviceReport.travelingHours?.toString(),
|
||||||
textInputType: TextInputType.number,
|
// textInputType: TextInputType.number,
|
||||||
onSaved: (value) {
|
// onSaved: (value) {
|
||||||
_serviceReport.travelingHours = double.tryParse(value) ?? 0.0;
|
// _serviceReport.travelingHours = double.tryParse(value) ?? 0.0;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
AppTextFormField(
|
// AppTextFormField(
|
||||||
initialValue: _serviceReport.comment,
|
// initialValue: _serviceReport.comment,
|
||||||
labelText: context.translation.technicalComment,
|
// labelText: context.translation.technicalComment,
|
||||||
alignLabelWithHint: true,
|
// alignLabelWithHint: true,
|
||||||
textInputType: TextInputType.multiline,
|
// textInputType: TextInputType.multiline,
|
||||||
onSaved: (value) {
|
// onSaved: (value) {
|
||||||
_serviceReport.comment = value;
|
// _serviceReport.comment = value;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
ServiceReportRepairLocation(
|
// ServiceReportRepairLocation(
|
||||||
label: context.translation.repairLocation,
|
// label: context.translation.repairLocation,
|
||||||
initialValue: _serviceReport.repairLocation,
|
// initialValue: _serviceReport.repairLocation,
|
||||||
onSelect: (status) {
|
// onSelect: (status) {
|
||||||
_serviceReport.repairLocation = status;
|
// _serviceReport.repairLocation = status;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
PartNoButton(
|
// PartNoButton(
|
||||||
controller: _partQtyController,
|
// controller: _partQtyController,
|
||||||
spareParts: _spareParts,
|
// spareParts: _spareParts,
|
||||||
initialList: _serviceReport.sparePartsWorkOrders,
|
// initialList: _serviceReport.sparePartsWorkOrders,
|
||||||
onChange: (parts) {
|
// onChange: (parts) {
|
||||||
_serviceReport.sparePartsWorkOrders = parts;
|
// _serviceReport.sparePartsWorkOrders = parts;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
MultiFilesPicker(label: context.translation.attachImage, files: _files),
|
// MultiFilesPicker(label: context.translation.attachImage, files: _files),
|
||||||
8.height,
|
// 8.height,
|
||||||
ESignature(
|
// ESignature(
|
||||||
title: context.translation.engSign,
|
// title: context.translation.engSign,
|
||||||
oldSignature: _serviceReport.engSignature,
|
// oldSignature: _serviceReport.engSignature,
|
||||||
newSignature: _serviceReport.localEngSignature,
|
// newSignature: _serviceReport.localEngSignature,
|
||||||
onSaved: (signature) {
|
// onSaved: (signature) {
|
||||||
if (signature == null || signature.isEmpty) {
|
// if (signature == null || signature.isEmpty) {
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
_serviceReport.localEngSignature = signature;
|
// _serviceReport.localEngSignature = signature;
|
||||||
_serviceReport.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
|
// _serviceReport.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
8.height,
|
// 8.height,
|
||||||
ESignature(
|
// ESignature(
|
||||||
title: context.translation.nurseSignature,
|
// title: context.translation.nurseSignature,
|
||||||
oldSignature: _serviceReport.nurseSignature,
|
// oldSignature: _serviceReport.nurseSignature,
|
||||||
newSignature: _serviceReport.localNurseSignature,
|
// newSignature: _serviceReport.localNurseSignature,
|
||||||
onSaved: (signature) {
|
// onSaved: (signature) {
|
||||||
if (signature == null || signature.isEmpty) {
|
// if (signature == null || signature.isEmpty) {
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
_serviceReport.localNurseSignature = signature;
|
// _serviceReport.localNurseSignature = signature;
|
||||||
_serviceReport.nurseSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
|
// _serviceReport.nurseSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
24.height,
|
// 24.height,
|
||||||
],
|
// ],
|
||||||
),
|
// ),
|
||||||
).expanded,
|
// ).expanded,
|
||||||
AppFilledButton(
|
// AppFilledButton(
|
||||||
label: context.translation.updateRequest,
|
// label: context.translation.updateRequest,
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
if ((!_formKey.currentState!.validate()) || (!(await _serviceReport.validate(context)))) {
|
// if ((!_formKey.currentState!.validate()) || (!(await _serviceReport.validate(context)))) {
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
_formKey.currentState!.save();
|
// _formKey.currentState!.save();
|
||||||
_serviceReport.attachmentsWorkOrder ??= [];
|
// _serviceReport.attachmentsWorkOrder ??= [];
|
||||||
if (_files.isEmpty) _serviceReport.attachmentsWorkOrder = [];
|
// if (_files.isEmpty) _serviceReport.attachmentsWorkOrder = [];
|
||||||
try {
|
// try {
|
||||||
for (var file in _files) {
|
// for (var file in _files) {
|
||||||
_serviceReport.attachmentsWorkOrder!.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
// _serviceReport.attachmentsWorkOrder!.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
||||||
}
|
// }
|
||||||
} catch (error) {
|
// } catch (error) {
|
||||||
print(error);
|
// print(error);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
await _serviceRequestsProvider.updateServiceReport(context, report: _serviceReport);
|
// await _serviceRequestsProvider.updateServiceReport(context, report: _serviceReport);
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
],
|
// ],
|
||||||
).paddingAll(16),
|
// ).paddingAll(16),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
@ -1,45 +1,45 @@
|
|||||||
import 'package:flutter/material.dart';
|
// import 'package:flutter/material.dart';
|
||||||
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
||||||
import 'package:test_sa/models/service_request/search_work_order.dart';
|
// import 'package:test_sa/models/service_request/search_work_order.dart';
|
||||||
import 'package:test_sa/models/service_request/service_report.dart';
|
// import 'package:test_sa/models/service_request/service_report.dart';
|
||||||
import 'package:test_sa/models/service_request/service_request.dart';
|
// import 'package:test_sa/models/service_request/service_request.dart';
|
||||||
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
|
// import 'package:test_sa/views/widgets/loaders/app_loading.dart';
|
||||||
import 'package:test_sa/views/widgets/loaders/failed_loading.dart';
|
// import 'package:test_sa/views/widgets/loaders/failed_loading.dart';
|
||||||
|
//
|
||||||
import 'edit_service_report.dart';
|
// import 'edit_service_report.dart';
|
||||||
|
// todo @delete
|
||||||
class UpdateServiceReport extends StatefulWidget {
|
// class UpdateServiceReport extends StatefulWidget {
|
||||||
final ServiceRequest request;
|
// final ServiceRequest request;
|
||||||
final SearchWorkOrder workOrder;
|
// final SearchWorkOrder workOrder;
|
||||||
|
//
|
||||||
const UpdateServiceReport({Key? key, required this.request, required this.workOrder}) : super(key: key);
|
// const UpdateServiceReport({Key? key, required this.request, required this.workOrder}) : super(key: key);
|
||||||
|
//
|
||||||
@override
|
// @override
|
||||||
_UpdateServiceReportState createState() => _UpdateServiceReportState();
|
// _UpdateServiceReportState createState() => _UpdateServiceReportState();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
class _UpdateServiceReportState extends State<UpdateServiceReport> {
|
// class _UpdateServiceReportState extends State<UpdateServiceReport> {
|
||||||
@override
|
// @override
|
||||||
Widget build(BuildContext context) {
|
// Widget build(BuildContext context) {
|
||||||
ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id!.toInt());
|
// ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id!.toInt());
|
||||||
return Scaffold(
|
// return Scaffold(
|
||||||
body: FutureBuilder<ServiceReport>(
|
// body: FutureBuilder<ServiceReport>(
|
||||||
future: ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id!.toInt()),
|
// future: ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id!.toInt()),
|
||||||
builder: (BuildContext context, AsyncSnapshot<ServiceReport> snapshot) {
|
// builder: (BuildContext context, AsyncSnapshot<ServiceReport> snapshot) {
|
||||||
if (snapshot.hasError) {
|
// if (snapshot.hasError) {
|
||||||
return FailedLoading(
|
// return FailedLoading(
|
||||||
message: snapshot.error.toString(),
|
// message: snapshot.error.toString(),
|
||||||
onReload: () {
|
// onReload: () {
|
||||||
setState(() {});
|
// setState(() {});
|
||||||
},
|
// },
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
if (snapshot.connectionState == ConnectionState.done) {
|
// if (snapshot.connectionState == ConnectionState.done) {
|
||||||
return EditServiceReport(report: snapshot.data as ServiceReport, request: widget.request);
|
// return EditServiceReport(report: snapshot.data as ServiceReport, request: widget.request);
|
||||||
}
|
// }
|
||||||
return const Center(child: ALoading());
|
// return const Center(child: ALoading());
|
||||||
},
|
// },
|
||||||
),
|
// ),
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|||||||
Loading…
Reference in New Issue