Update Work Order Screen DONE

main_design2.0
zaid_daoud 2 years ago
parent c3d6643ead
commit daa427bac2

@ -461,42 +461,28 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<int> updateServiceReport({
@required ServiceReport report,
String host,
User user,
ServiceRequest request,
}) async {
Future<int> updateServiceReport(BuildContext context, {@required ServiceReport report}) async {
Response response;
//Map<String,dynamic> body = report.toMap(request);
// body["uid"] = user.id;
// body["token"] = user.token;
// body["job_id"] = request.id;
// body["report_id"] = request.reportID;
// try {
report.callRequest = CallRequest(id: report.callRequest.id);
Map<String, dynamic> body = report.toJson();
/// todo [zaid] : don't forget to add [request] data to [body]
// Map<String, dynamic> body = report.toMap(request);
// body["uid"] = user.id;
// body["token"] = user.token;
response = await ApiManager.instance.put(URLs.updateServiceReport, body: body);
// response = await post(
// Uri.parse(
// host+URLs.updateServiceReport),
// body: body,
// );
// stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
reset();
notifyListeners();
try {
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
response = await ApiManager.instance.put(URLs.updateServiceReport, body: body);
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}");
}
Navigator.of(context).pop();
return response.statusCode;
} catch (e) {
print(e);
Navigator.of(context).pop();
return -1;
}
return response.statusCode;
// } catch (error) {
// print(error);
// return -1;
// }
}
Future<int> updateWorkOrderDetails({@required SearchWorkOrder workOrder}) async {
@ -560,28 +546,20 @@ class ServiceRequestsProvider extends ChangeNotifier {
}
}
Future<ServiceReport> getSingleServiceReport({
@required int reportId,
@required String host,
@required User user,
@required AppLocalizations subtitle,
}) async {
Future<ServiceReport> getSingleServiceReport(BuildContext context, {@required int reportId}) async {
Response response;
try {
response = await ApiManager.instance.get(
URLs.getServiceReport + "?workOrderId=$reportId",
);
response = await ApiManager.instance.get(URLs.getServiceReport + "?workOrderId=$reportId");
} catch (error) {
throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
throw (context.translation.failedToCompleteRequest);
}
// If the call to the server was successful, parse the JSON.
if (response.statusCode >= 200 && response.statusCode < 300) {
// If the call to the server was successful, parse the JSON.
/// todo [zaid]: check [reportId] below
return ServiceReport.fromJson(json.decode(response.body)["data"] /*, reportId*/);
return ServiceReport.fromJson(json.decode(response.body)["data"]);
} else {
throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
throw (("${context.translation.failedToCompleteRequest} ${jsonDecode(response.body)["message"]}"));
}
}

@ -295,5 +295,6 @@
"assistantEmployee" : "موظف مساعد",
"assignAssistant" : "تعيين مساعد",
"partNo" : "الجزء رقم",
"engSign" : "توقيع المهندس"
"engSign" : "توقيع المهندس",
"updateWorkOrder" : "تعديل طلب العمل"
}

@ -299,5 +299,6 @@
"assistantEmployee" : "Assistant Employee",
"assignAssistant" : "Assign Assistant",
"partNo" : "Part No.",
"engSign" : "Engineer Signature"
"engSign" : "Engineer Signature",
"updateWorkOrder" : "Update Work Order"
}

@ -140,7 +140,7 @@ class _UpdateServiceRequestPageState extends State<UpdateServiceRequestPage> {
],
),
).expanded,
AppFilledButton(onPressed: _submit, label: context.translation.submitRequest),
AppFilledButton(onPressed: _submit, label: context.translation.updateRequest),
],
),
).paddingOnly(start: 16, end: 16, bottom: 24, top: 16),

@ -208,6 +208,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
),
8.height,
MultiFilesPicker(label: context.translation.attachImage, files: _files),
8.height,
ESignature(
title: context.translation.engSign,
oldSignature: _serviceReport.engSignature,

@ -1,9 +1,5 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/models/service_request/service_request.dart';
@ -12,29 +8,23 @@ import 'package:test_sa/views/widgets/loaders/failed_loading.dart';
import 'edit_service_report.dart';
class FutureServiceReport extends StatefulWidget {
class UpdateServiceReport extends StatefulWidget {
final ServiceRequest request;
final SearchWorkOrder workOrder;
const FutureServiceReport({Key key, this.request, this.workOrder}) : super(key: key);
const UpdateServiceReport({Key key, this.request, this.workOrder}) : super(key: key);
@override
_FutureServiceReportState createState() => _FutureServiceReportState();
_UpdateServiceReportState createState() => _UpdateServiceReportState();
}
class _FutureServiceReportState extends State<FutureServiceReport> {
UserProvider _userProvider;
SettingProvider _settingProvider;
class _UpdateServiceReportState extends State<UpdateServiceReport> {
@override
Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
ServiceRequestsProvider().getSingleServiceReport(reportId: widget.workOrder.id, user: _userProvider.user, host: _settingProvider.host, subtitle: context.translation);
ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id);
return Scaffold(
body: FutureBuilder<ServiceReport>(
future: ServiceRequestsProvider().getSingleServiceReport(reportId: widget.workOrder.id, user: _userProvider.user, host: _settingProvider.host, subtitle: context.translation),
future: ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id),
builder: (BuildContext context, AsyncSnapshot<ServiceReport> snapshot) {
if (snapshot.hasError) {
return FailedLoading(
@ -45,10 +35,7 @@ class _FutureServiceReportState extends State<FutureServiceReport> {
);
}
if (snapshot.connectionState == ConnectionState.done) {
return EditServiceReport(
report: snapshot.data,
request: widget.request,
);
return EditServiceReport(report: snapshot.data, request: widget.request);
}
return const Center(child: ALoading());
},

@ -14,7 +14,7 @@ import '../../../../../controllers/providers/api/user_provider.dart';
import '../../../../../models/enums/user_types.dart';
import '../../../../../models/service_request/search_work_order.dart';
import '../../../../widgets/requests/request_status.dart';
import 'future_service_report.dart';
import 'update_service_report.dart';
class WorkOrderDetailsPage extends StatelessWidget {
static const String id = "/work_order_details_page";
@ -79,7 +79,7 @@ class WorkOrderDetailsPage extends StatelessWidget {
AppFilledButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => FutureServiceReport(request: serviceRequest, workOrder: workOrder)),
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)),
);
},
label: context.translation.updateRequest,

@ -14,7 +14,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/future_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
@ -86,7 +86,7 @@ class WorkOrderListPage extends StatelessWidget {
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
"edit".toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => FutureServiceReport(request: serviceRequest, workOrder: workOrders[index])),
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],

@ -6,6 +6,9 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../app_style/sizing.dart';
import '../loaders/image_loader.dart';
class ESignature extends StatefulWidget {
final String oldSignature;
final Uint8List newSignature;
@ -35,7 +38,7 @@ class _ESignatureState extends State<ESignature> {
if (widget.newSignature != null) {
signature = widget.newSignature;
} else if (widget.oldSignature != null || signature != null) {
signature = widget.oldSignature.codeUnits;
signature = Uint8List.fromList(widget.oldSignature.codeUnits);
}
super.initState();
}
@ -50,12 +53,13 @@ class _ESignatureState extends State<ESignature> {
Widget build(BuildContext context) {
return Column(
children: [
// if (widget.oldSignature != null || signature != null)
// Container(
// width: MediaQuery.of(context).size.width,
// padding: const EdgeInsets.only(bottom: 8),
// height: 90 * AppStyle.getScaleFactor(context),
// child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature)),
if (widget.oldSignature != null || signature != null)
Container(
width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.only(bottom: 8),
height: 90 * AppStyle.getScaleFactor(context),
child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature),
),
FormField<String>(onSaved: (_) async {
widget.onSaved(signature);
}, builder: (FormFieldState<String> state) {

Loading…
Cancel
Save