|
|
|
@ -3,7 +3,6 @@ import 'dart:developer';
|
|
|
|
import 'dart:io';
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:fluttertoast/fluttertoast.dart';
|
|
|
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:test_sa/attachment.dart';
|
|
|
|
import 'package:test_sa/attachment.dart';
|
|
|
|
import 'package:test_sa/controllers/providers/api/parts_provider.dart';
|
|
|
|
import 'package:test_sa/controllers/providers/api/parts_provider.dart';
|
|
|
|
@ -24,7 +23,6 @@ import 'package:test_sa/views/widgets/e_signature/e_signature.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 '../../../../../controllers/api_routes/http_status_manger.dart';
|
|
|
|
|
|
|
|
import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart';
|
|
|
|
import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart';
|
|
|
|
import '../../../../../models/lookup.dart';
|
|
|
|
import '../../../../../models/lookup.dart';
|
|
|
|
import '../../../../../models/service_request/spare_parts.dart';
|
|
|
|
import '../../../../../models/service_request/spare_parts.dart';
|
|
|
|
@ -182,6 +180,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
|
|
|
|
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) {
|
|
|
|
|
|
|
|
log(employee.toJson().toString());
|
|
|
|
_serviceReport.assistantEmployees = [employee];
|
|
|
|
_serviceReport.assistantEmployees = [employee];
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
@ -192,7 +191,6 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
|
|
|
|
staticData: _spareParts,
|
|
|
|
staticData: _spareParts,
|
|
|
|
initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null,
|
|
|
|
initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null,
|
|
|
|
onSelect: (part) {
|
|
|
|
onSelect: (part) {
|
|
|
|
log(part.toJson().toString());
|
|
|
|
|
|
|
|
_serviceReport.sparePartsWorkOrders.clear();
|
|
|
|
_serviceReport.sparePartsWorkOrders.clear();
|
|
|
|
_serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(sparePart: part));
|
|
|
|
_serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(sparePart: part));
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
@ -214,12 +212,12 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
|
|
|
|
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 = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
|
|
|
|
_serviceReport.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
24.height,
|
|
|
|
24.height,
|
|
|
|
@ -229,37 +227,18 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
|
|
|
|
AppFilledButton(
|
|
|
|
AppFilledButton(
|
|
|
|
label: context.translation.submitRequest,
|
|
|
|
label: context.translation.submitRequest,
|
|
|
|
onPressed: () async {
|
|
|
|
onPressed: () async {
|
|
|
|
// if (!_formKey.currentState.validate()) {
|
|
|
|
if ((!_formKey.currentState.validate()) || (!(await _serviceReport.validate()))) {
|
|
|
|
// setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
// return;
|
|
|
|
return;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// if (!(await _serviceReport.validate())) {
|
|
|
|
|
|
|
|
// setState(() {});
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
_formKey.currentState.save();
|
|
|
|
_formKey.currentState.save();
|
|
|
|
|
|
|
|
|
|
|
|
_isLoading = true;
|
|
|
|
|
|
|
|
setState(() {});
|
|
|
|
|
|
|
|
_serviceReport.attachmentsWorkOrder ??= [];
|
|
|
|
_serviceReport.attachmentsWorkOrder ??= [];
|
|
|
|
|
|
|
|
if (_files.isEmpty) _serviceReport.attachmentsWorkOrder = [];
|
|
|
|
for (var file in _files) {
|
|
|
|
for (var file in _files) {
|
|
|
|
_serviceReport.attachmentsWorkOrder.add(Attachment(name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
|
|
|
_serviceReport.attachmentsWorkOrder.add(Attachment(name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int status = await _serviceRequestsProvider.createServiceReport(report: _serviceReport, request: widget.request);
|
|
|
|
final user = Provider.of<UserProvider>(context, listen: false).user;
|
|
|
|
_isLoading = false;
|
|
|
|
await _serviceRequestsProvider.createServiceReport(context, report: _serviceReport, request: widget.request, user: user);
|
|
|
|
setState(() {});
|
|
|
|
|
|
|
|
if (status >= 200 && status < 300) {
|
|
|
|
|
|
|
|
Fluttertoast.showToast(
|
|
|
|
|
|
|
|
msg: context.translation.successfulRequestMessage,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation);
|
|
|
|
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
|
|
|
|
|
|
|
content: Text(errorMessage),
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|