New Work Order [In Progress]

main_design2.0
zaid_daoud 2 years ago
parent e407b00630
commit 43b2f18a1a

@ -309,82 +309,40 @@ class ServiceRequestsProvider extends ChangeNotifier {
} }
} }
Future<int> createServiceReport({@required ServiceReport report, @required ServiceRequest request}) async { Future<int> createServiceReport(BuildContext context, {@required ServiceReport report, @required User user, @required ServiceRequest request}) async {
Response response; Response response;
try { try {
// Map<String, dynamic> body = { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
// "id": 0, final body = report.toJson();
// "parentWOId": null, final callRequest = CallRequest(id: num.tryParse(request?.id ?? "")).toJson();
// "workOrderNo": "", final contactPerson = [
// "workOrderYear": null, {
// "workOrderSequennce": null, "id": 0,
// "callRequest": { // "employeeCode": "",
// "id": request.id, "name": user.userName,
// }, "telephone": user.phoneNumber,
// "assetType": report.assetType?.toJson(), // "job": "",
// "assignedEmployee": {"id": report.engineer?.id, "name": report.engineer?.name ?? ""}, "email": user.email,
// "visitDate": report.returnToService?.toIso8601String() ?? "", // "land": "",
// // "assistantEmployees": [ "contactUserId": user.userID,
// // {"id": report.engineer.id, "name": report.engineer.name}, }
// // ], ];
// "supplier": null, body.update("contactPersonWorkOrders", (value) => contactPerson, ifAbsent: () => contactPerson);
// "vendorTicketNumber": null, body.update("callRequest", (value) => callRequest, ifAbsent: () => callRequest);
// "contactPersonWorkOrders": [ response = await ApiManager.instance.post(URLs.createServiceReport, body: body);
// {
// "id": 0,
// // "employeeCode": "",
// "name": user.userName,
// "telephone": user.phoneNumber,
// // "job": "",
// "email": user.email,
// // "land": "",
// "contactUserId": user.userID,
// }
// ],
// "calllastSituation": report.callLastSituation?.toJson(),
// "currentSituation": null,
// "repairLocation": report.repairLocation?.toJson(),
// "reason": report.reason?.toJson(),
// "startofWorkTime": report.timer?.startAt?.toIso8601String() ?? "",
// "endofWorkTime": report.timer?.endAt?.toIso8601String() ?? "",
// "workingHours": report?.workingHours,
// "travelingHours": report.travelingHours,
// "travelingExpenses": report.travelingExpense ?? 0,
// if (report.faultDescription != null) "faultDescription": report.faultDescription.toJson(),
// "sparePartsWorkOrders": report.parts
// ?.map(
// (p) => {
// "id": p.reportPartID ?? 0,
// "sparePart": {"id": p.id, "partNo": p.partNo, "partName": p.partName},
// "qty": p.quantity
// },
// )
// ?.toList(),
// "reviewComment": "",
// "comment": report.comment,
// "attachmentsWorkOrder": request.devicePhotos?.map((e) => {"name": e})?.toList(),
// "equipmentStatus": report.equipmentStatus?.toJson(),
// "suppEngineerWorkOrders": null,
// "engSignature": report.signatureEngineer,
// "nurseSignature": report.signatureNurse,
// "woParentDto": null,
// };
// body["uid"] = user.id;
// body["token"] = user.token;
response = await ApiManager.instance.post(URLs.createServiceReport, body: {});
// response = await post(
// Uri.parse(
// host+URLs.createServiceReport),
// body: body,
// );
stateCode = response.statusCode; stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
Fluttertoast.showToast(msg: context.translation.successfulRequestMessage);
Navigator.of(context).pop();
} else {
Fluttertoast.showToast(msg: "${context.translation.failedToCompleteRequest}: ${json.decode(response.body)['message']}");
} }
Navigator.pop(context);
return response.statusCode; return response.statusCode;
} catch (error) { } catch (error) {
Navigator.pop(context);
print(error); print(error);
return -1; return -1;
} }

@ -228,7 +228,7 @@ class ServiceReport {
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
map['id'] = id; map['id'] = id ?? 0;
map['parentWOId'] = parentWOId; map['parentWOId'] = parentWOId;
map['workOrderNo'] = workOrderNo; map['workOrderNo'] = workOrderNo;
map['workOrderYear'] = workOrderYear; map['workOrderYear'] = workOrderYear;
@ -301,4 +301,8 @@ class ServiceReport {
} }
return map; return map;
} }
Future<bool> validate() async {
return true;
}
} }

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

Loading…
Cancel
Save