work order

pull/2/head
nextwo 2 years ago
parent 6db92bc08d
commit 52eee5196f

@ -365,6 +365,28 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<int> createSubWorkOrder({
@required SearchWorkOrder workOrder,
}) async {
Response response;
try {
Map<String, dynamic> 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<CallRequestForWorkOrder> getCallRequestForWorkOrder({String callId}) async {

@ -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();

@ -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),
));

Loading…
Cancel
Save