|
|
|
|
@ -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<CreateSubWorkOrderPage> {
|
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
|
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<CreateSubWorkOrderPage> {
|
|
|
|
|
ServiceReportEquipmentStatusMenu(
|
|
|
|
|
report: _serviceReport,
|
|
|
|
|
onSelect: (status) {
|
|
|
|
|
_searchWorkOrders.equipmentStatus=status;
|
|
|
|
|
_subWorkOrders.equipmentStatus=status;
|
|
|
|
|
_serviceReport.equipmentStatus=status;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
@ -107,8 +117,10 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
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<CreateSubWorkOrderPage> {
|
|
|
|
|
initialValue: _serviceReportReason,
|
|
|
|
|
onSelect: (status) {
|
|
|
|
|
_serviceReportReason=status;
|
|
|
|
|
_searchWorkOrders.reason = status;
|
|
|
|
|
_subWorkOrders.reason = status;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
@ -144,30 +156,30 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
|
|
|
|
|
),
|
|
|
|
|
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<CreateSubWorkOrderPage> {
|
|
|
|
|
),
|
|
|
|
|
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<CreateSubWorkOrderPage> {
|
|
|
|
|
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<ServiceRequestsProvider>(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<ServiceRequestsProvider>(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),
|
|
|
|
|
));
|
|
|
|
|
|