diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index d62ee9f5..d0dd0caf 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -365,6 +365,28 @@ class ServiceRequestsProvider extends ChangeNotifier { } } + Future createSubWorkOrder({ + @required SearchWorkOrder workOrder, + }) async { + Response response; + try { + Map body= workOrder.toJson(); + response = await ApiManager.instance.post(URLs.createServiceReport, body: body); + print(response.body); + + + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + reset(); + notifyListeners(); + } + return response.statusCode; + } catch (error) { + print(error); + return -1; + } + } + CallRequestForWorkOrder callRequestForWorkOrder; Future getCallRequestForWorkOrder({String callId}) async { diff --git a/lib/models/service_request/search_work_order.dart b/lib/models/service_request/search_work_order.dart index 2cdd3edd..e2961414 100644 --- a/lib/models/service_request/search_work_order.dart +++ b/lib/models/service_request/search_work_order.dart @@ -250,7 +250,7 @@ class SearchWorkOrder { map['reviewComment'] = reviewComment; map['comment'] = comment; if (attachmentsWorkOrder != null) { - map['attachmentsWorkOrder'] = attachmentsWorkOrder.map((v) => v.toJson()).toList(); + map['attachmentsWorkOrder'] = attachmentsWorkOrder.map((v) => {"name": v.name})?.toList(); } if (equipmentStatus != null) { map['equipmentStatus'] = equipmentStatus.toMap(); 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 9871ed31..ea5e6701 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -1,8 +1,11 @@ + +import 'dart:convert'; +import 'dart:io'; + 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/extensions/widget_extensions.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/search_work_order.dart'; @@ -20,7 +23,6 @@ import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_button.dart'; import '../../widgets/date_and_time/date_picker.dart'; import '../../widgets/images/mini_one_image_picker.dart'; -import '../../widgets/status/report/fault_desc_menu.dart'; import '../../widgets/status/report/service_report_equipment_status.dart'; import '../../widgets/status/report/service_report_fault_description.dart'; import '../../widgets/status/report/service_report_reasons.dart'; @@ -37,9 +39,17 @@ class CreateSubWorkOrderPage extends StatefulWidget { class _CreateSubWorkOrderPageState extends State { final GlobalKey _formKey = GlobalKey(); - SearchWorkOrder _searchWorkOrders =SearchWorkOrder(); + SearchWorkOrder _subWorkOrders =SearchWorkOrder(); Lookup _serviceReportReason=Lookup(); ServiceReport _serviceReport; + File _image; + bool _isLoading = false; + + @override + void initState() { + + super.initState(); + } @override Widget build(BuildContext context) { final Subtitle subtitle = AppLocalization.of(context).subtitle; @@ -89,7 +99,7 @@ class _CreateSubWorkOrderPageState extends State { ServiceReportEquipmentStatusMenu( report: _serviceReport, onSelect: (status) { - _searchWorkOrders.equipmentStatus=status; + _subWorkOrders.equipmentStatus=status; _serviceReport.equipmentStatus=status; }, ), @@ -107,8 +117,10 @@ class _CreateSubWorkOrderPageState extends State { children: [ Expanded( child: ADatePicker( + date: DateTime.tryParse(_subWorkOrders.visitDate??""), from: DateTime(1950), onDatePicker: (date) { + _subWorkOrders.visitDate=date?.toIso8601String(); setState(() {}); }, ), @@ -129,7 +141,7 @@ class _CreateSubWorkOrderPageState extends State { initialValue: _serviceReportReason, onSelect: (status) { _serviceReportReason=status; - _searchWorkOrders.reason = status; + _subWorkOrders.reason = status; }, ), ], @@ -144,30 +156,30 @@ class _CreateSubWorkOrderPageState extends State { ), ServiceReportFaultDescription( requestId: widget.workOrder.id.toString(), - initialValue: FaultDescription(id: _searchWorkOrders?.faultDescription?.id, defectName: _searchWorkOrders?.faultDescription?.defectName, workPerformed: _searchWorkOrders?.faultDescription?.workPerformed, estimatedTime: _searchWorkOrders?.faultDescription?.estimatedTime), + initialValue: FaultDescription(id: _subWorkOrders?.faultDescription?.id, defectName: _subWorkOrders?.faultDescription?.defectName, workPerformed: _subWorkOrders?.faultDescription?.workPerformed, estimatedTime: _subWorkOrders?.faultDescription?.estimatedTime), onSelect: (status) { - _searchWorkOrders.faultDescription=status; + _subWorkOrders.faultDescription=status; }, ), ], ), const SizedBox(height: 8), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle("Solution"), - const SizedBox( - height: 4, - ), - ATextFormField( - labelText: "Add some text", - textInputType: TextInputType.multiline, - onSaved: (value) { - - }, - ), - ], - ), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle("Solution"), + // const SizedBox( + // height: 4, + // ), + // ATextFormField( + // labelText: "Add some text", + // textInputType: TextInputType.multiline, + // onSaved: (value) { + // + // }, + // ), + // ], + // ), const SizedBox(height: 8), InkWell( onTap: () { @@ -222,11 +234,10 @@ class _CreateSubWorkOrderPageState extends State { ), const SizedBox(height: 8), AMiniOneImagePicker( - //error: _validate && _serviceReport.image == null, - //image: _image, + image: _image, onPick: (image) { - //_image = image; - // _serviceReport.image = "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}"; + _image = image; + _subWorkOrders.attachmentsWorkOrder.add(AttachmentsWorkOrder(name: "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}")); }, ), const SizedBox(height: 50), @@ -243,32 +254,21 @@ class _CreateSubWorkOrderPageState extends State { child: AButton( text: subtitle.create, onPressed: () async { - _searchWorkOrders.parentWOId=widget.workOrder.id; - // validate = true; - // if (!_formKey.currentState.validate()) { - // setState(() {}); - // return; - // } - // if (!_serviceReport.validate()) return; - _formKey.currentState.save(); - - // _isLoading = true; + _subWorkOrders.parentWOId=widget.workOrder.id; + _isLoading = true; setState(() {}); - - int status = await Provider.of(context).createServiceReport( - // user: _userProvider.user, - // host: _settingProvider.host, - // report: _serviceReport, - // request: widget.request, - ); - // _isLoading = false; + if (_formKey.currentState?.validate() ?? false) {} + _formKey.currentState?.save(); + final serviceRequestsProvider = Provider.of(context, listen: false); + final status = await serviceRequestsProvider.createSubWorkOrder(workOrder: _subWorkOrders); + _isLoading = false; setState(() {}); - if (status >= 200 && status < 300) { + 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); + String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: subtitle); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(errorMessage), ));