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;
try {
// Map<String, dynamic> body = {
// "id": 0,
// "parentWOId": null,
// "workOrderNo": "",
// "workOrderYear": null,
// "workOrderSequennce": null,
// "callRequest": {
// "id": request.id,
// },
// "assetType": report.assetType?.toJson(),
// "assignedEmployee": {"id": report.engineer?.id, "name": report.engineer?.name ?? ""},
// "visitDate": report.returnToService?.toIso8601String() ?? "",
// // "assistantEmployees": [
// // {"id": report.engineer.id, "name": report.engineer.name},
// // ],
// "supplier": null,
// "vendorTicketNumber": null,
// "contactPersonWorkOrders": [
// {
// "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,
// );
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
final body = report.toJson();
final callRequest = CallRequest(id: num.tryParse(request?.id ?? "")).toJson();
final contactPerson = [
{
"id": 0,
// "employeeCode": "",
"name": user.userName,
"telephone": user.phoneNumber,
// "job": "",
"email": user.email,
// "land": "",
"contactUserId": user.userID,
}
];
body.update("contactPersonWorkOrders", (value) => contactPerson, ifAbsent: () => contactPerson);
body.update("callRequest", (value) => callRequest, ifAbsent: () => callRequest);
response = await ApiManager.instance.post(URLs.createServiceReport, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
reset();
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;
} catch (error) {
Navigator.pop(context);
print(error);
return -1;
}

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

@ -3,7 +3,6 @@ import 'dart:developer';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/attachment.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/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 '../../../../../models/lookup.dart';
import '../../../../../models/service_request/spare_parts.dart';
@ -182,6 +180,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
assetId: _serviceReport.callRequest?.asset?.id,
initialValue: (_serviceReport.assistantEmployees?.isNotEmpty ?? false) ? _serviceReport.assistantEmployees?.first : null,
onSelect: (employee) {
log(employee.toJson().toString());
_serviceReport.assistantEmployees = [employee];
},
),
@ -192,7 +191,6 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
staticData: _spareParts,
initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null,
onSelect: (part) {
log(part.toJson().toString());
_serviceReport.sparePartsWorkOrders.clear();
_serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(sparePart: part));
setState(() {});
@ -214,12 +212,12 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
oldSignature: _serviceReport.engSignature,
newSignature: _serviceReport.localEngSignature,
onSaved: (signature) {
if (signature == null || signature.isEmpty) {
setState(() {});
return;
}
// if (signature == null || signature.isEmpty) {
// setState(() {});
// return;
// }
_serviceReport.localEngSignature = signature;
_serviceReport.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
_serviceReport.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
},
),
24.height,
@ -229,37 +227,18 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
AppFilledButton(
label: context.translation.submitRequest,
onPressed: () async {
// if (!_formKey.currentState.validate()) {
// setState(() {});
// return;
// }
// if (!(await _serviceReport.validate())) {
// setState(() {});
// return;
// }
if ((!_formKey.currentState.validate()) || (!(await _serviceReport.validate()))) {
setState(() {});
return;
}
_formKey.currentState.save();
_isLoading = true;
setState(() {});
_serviceReport.attachmentsWorkOrder ??= [];
if (_files.isEmpty) _serviceReport.attachmentsWorkOrder = [];
for (var file in _files) {
_serviceReport.attachmentsWorkOrder.add(Attachment(name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"));
}
int status = await _serviceRequestsProvider.createServiceReport(report: _serviceReport, request: widget.request);
_isLoading = false;
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),
));
}
final user = Provider.of<UserProvider>(context, listen: false).user;
await _serviceRequestsProvider.createServiceReport(context, report: _serviceReport, request: widget.request, user: user);
},
),
],

Loading…
Cancel
Save