From e2a21040871f9d874213b3a4b8df3a7e832b7624 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Mon, 19 Jun 2023 09:52:12 +0300 Subject: [PATCH] Preparing the functionality [Still doesn't work] --- .../api/service_requests_provider.dart | 6 +-- .../create_sub_workorder_page.dart | 46 +++++++++++++++++-- .../spare_parts_details_bottom_sheet.dart | 33 ++++++++++++- .../work_order_details_bottom_sheet.dart | 35 +++++++++++++- 4 files changed, 111 insertions(+), 9 deletions(-) diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 3334332..755ffff 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -445,10 +445,10 @@ class ServiceRequestsProvider extends ChangeNotifier { } Future updateServiceReport({ - @required String host, - @required User user, @required ServiceReport report, - @required ServiceRequest request, + String host, + User user, + ServiceRequest request, }) async { Response response; //Map body = report.toMap(request); diff --git a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart index a0a8889..203852b 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -1,17 +1,27 @@ import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/pages/sub_workorder/spare_parts_details_bottom_sheet.dart'; import 'package:test_sa/views/pages/sub_workorder/work_order_details_bottom_sheet.dart'; +import '../../../controllers/api_routes/http_status_manger.dart'; import '../../../controllers/localization/localization.dart'; import '../../../models/subtitle.dart'; import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_button.dart'; -class CreateSubWorkOrderPage extends StatelessWidget { +class CreateSubWorkOrderPage extends StatefulWidget { static const id = "/CreateSubWorkOrder"; const CreateSubWorkOrderPage({Key key}) : super(key: key); + @override + State createState() => _CreateSubWorkOrderPageState(); +} + +class _CreateSubWorkOrderPageState extends State { + final GlobalKey _formKey = GlobalKey(); @override Widget build(BuildContext context) { final Subtitle subtitle = AppLocalization.of(context).subtitle; @@ -111,8 +121,38 @@ class CreateSubWorkOrderPage extends StatelessWidget { floatingActionButton: Padding( padding: const EdgeInsets.all(16.0), child: AButton( - text: subtitle.update, - onPressed: () {}, + text: subtitle.create, + onPressed: () async { + // validate = true; + // if (!_formKey.currentState.validate()) { + // setState(() {}); + // return; + // } + // if (!_serviceReport.validate()) return; + _formKey.currentState.save(); + + // _isLoading = true; + setState(() {}); + + int status = await Provider.of(context).createServiceReport( + // user: _userProvider.user, + // host: _settingProvider.host, + // report: _serviceReport, + // request: widget.request, + ); + // _isLoading = false; + setState(() {}); + if (status >= 200 && status < 300) { + Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully); + Navigator.of(context).pop(); + Navigator.of(context).pop(); + } else { + String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle); + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text(errorMessage), + )); + } + }, ), ), ); diff --git a/lib/views/pages/sub_workorder/spare_parts_details_bottom_sheet.dart b/lib/views/pages/sub_workorder/spare_parts_details_bottom_sheet.dart index 0af019b..a1a7887 100644 --- a/lib/views/pages/sub_workorder/spare_parts_details_bottom_sheet.dart +++ b/lib/views/pages/sub_workorder/spare_parts_details_bottom_sheet.dart @@ -1,7 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/views/app_style/colors.dart'; +import '../../../controllers/api_routes/http_status_manger.dart'; import '../../../controllers/localization/localization.dart'; +import '../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../models/service_report.dart'; import '../../../models/subtitle.dart'; import '../../widgets/app_text_form_field.dart'; import '../../widgets/buttons/app_button.dart'; @@ -118,7 +123,33 @@ class _SparePartsBottomSheetState extends State { ), AButton( text: subtitle.update, - onPressed: () {}, + onPressed: () async { + // _validate = true; + if (!_formKey.currentState.validate()) { + setState(() {}); + return; + } + // if (!_serviceReport.validate()) { + // setState(() {}); + // return; + // } + _formKey.currentState.save(); + + // _isLoading = true; + setState(() {}); + + int status = await Provider.of(context).updateServiceReport(report: ServiceReport()); + // _isLoading = false; + setState(() {}); + if (status >= 200 && status < 300) { + Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully); + Navigator.of(context).pop(); + // Navigator.of(context).pop(); + } else { + String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); + } + }, ), ], ), diff --git a/lib/views/pages/sub_workorder/work_order_details_bottom_sheet.dart b/lib/views/pages/sub_workorder/work_order_details_bottom_sheet.dart index 718f434..1efa95b 100644 --- a/lib/views/pages/sub_workorder/work_order_details_bottom_sheet.dart +++ b/lib/views/pages/sub_workorder/work_order_details_bottom_sheet.dart @@ -1,11 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/status/report/service_report_maintenance_situation.dart'; import 'package:test_sa/views/widgets/status/report/service_report_repair_location.dart'; +import '../../../controllers/api_routes/http_status_manger.dart'; import '../../../controllers/localization/localization.dart'; +import '../../../models/service_report.dart'; import '../../app_style/sizing.dart'; import '../../widgets/date_and_time/time_picker.dart'; import '../../widgets/status/report/service_report_all_users.dart'; @@ -117,7 +122,7 @@ class _WorkOrderDetailsBottomSheetState extends State Validator.isNumeric(value) ? null : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value) { @@ -169,7 +174,33 @@ class _WorkOrderDetailsBottomSheetState extends State(context).updateServiceReport(report: ServiceReport()); + // _isLoading = false; + setState(() {}); + if (status >= 200 && status < 300) { + Fluttertoast.showToast(msg: subtitle.requestCompleteSuccessfully); + Navigator.of(context).pop(); + // Navigator.of(context).pop(); + } else { + String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: subtitle); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); + } + }, ), ], ),