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

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

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

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

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

@ -1,9 +1,5 @@
import 'package:flutter/material.dart'; 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/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/search_work_order.dart';
import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/models/service_request/service_request.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'; import 'edit_service_report.dart';
class FutureServiceReport extends StatefulWidget { class UpdateServiceReport extends StatefulWidget {
final ServiceRequest request; final ServiceRequest request;
final SearchWorkOrder workOrder; 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 @override
_FutureServiceReportState createState() => _FutureServiceReportState(); _UpdateServiceReportState createState() => _UpdateServiceReportState();
} }
class _FutureServiceReportState extends State<FutureServiceReport> { class _UpdateServiceReportState extends State<UpdateServiceReport> {
UserProvider _userProvider;
SettingProvider _settingProvider;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context); ServiceRequestsProvider().getSingleServiceReport(context, reportId: widget.workOrder.id);
_settingProvider = Provider.of<SettingProvider>(context);
ServiceRequestsProvider().getSingleServiceReport(reportId: widget.workOrder.id, user: _userProvider.user, host: _settingProvider.host, subtitle: context.translation);
return Scaffold( return Scaffold(
body: FutureBuilder<ServiceReport>( 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) { builder: (BuildContext context, AsyncSnapshot<ServiceReport> snapshot) {
if (snapshot.hasError) { if (snapshot.hasError) {
return FailedLoading( return FailedLoading(
@ -45,10 +35,7 @@ class _FutureServiceReportState extends State<FutureServiceReport> {
); );
} }
if (snapshot.connectionState == ConnectionState.done) { if (snapshot.connectionState == ConnectionState.done) {
return EditServiceReport( return EditServiceReport(report: snapshot.data, request: widget.request);
report: snapshot.data,
request: widget.request,
);
} }
return const Center(child: ALoading()); return const Center(child: ALoading());
}, },

@ -14,7 +14,7 @@ import '../../../../../controllers/providers/api/user_provider.dart';
import '../../../../../models/enums/user_types.dart'; import '../../../../../models/enums/user_types.dart';
import '../../../../../models/service_request/search_work_order.dart'; import '../../../../../models/service_request/search_work_order.dart';
import '../../../../widgets/requests/request_status.dart'; import '../../../../widgets/requests/request_status.dart';
import 'future_service_report.dart'; import 'update_service_report.dart';
class WorkOrderDetailsPage extends StatelessWidget { class WorkOrderDetailsPage extends StatelessWidget {
static const String id = "/work_order_details_page"; static const String id = "/work_order_details_page";
@ -79,7 +79,7 @@ class WorkOrderDetailsPage extends StatelessWidget {
AppFilledButton( AppFilledButton(
onPressed: () { onPressed: () {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute(builder: (_) => FutureServiceReport(request: serviceRequest, workOrder: workOrder)), MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)),
); );
}, },
label: context.translation.updateRequest, 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/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.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/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/pages/user/requests/work_order/work_order_details_page.dart';
import 'package:test_sa/views/widgets/requests/request_status.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) if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
"edit".toSvgAsset(height: 48, width: 48).onPress(() { "edit".toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push( 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/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.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 { class ESignature extends StatefulWidget {
final String oldSignature; final String oldSignature;
final Uint8List newSignature; final Uint8List newSignature;
@ -35,7 +38,7 @@ class _ESignatureState extends State<ESignature> {
if (widget.newSignature != null) { if (widget.newSignature != null) {
signature = widget.newSignature; signature = widget.newSignature;
} else if (widget.oldSignature != null || signature != null) { } else if (widget.oldSignature != null || signature != null) {
signature = widget.oldSignature.codeUnits; signature = Uint8List.fromList(widget.oldSignature.codeUnits);
} }
super.initState(); super.initState();
} }
@ -50,12 +53,13 @@ class _ESignatureState extends State<ESignature> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
children: [ children: [
// if (widget.oldSignature != null || signature != null) if (widget.oldSignature != null || signature != null)
// Container( Container(
// width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
// padding: const EdgeInsets.only(bottom: 8), padding: const EdgeInsets.only(bottom: 8),
// height: 90 * AppStyle.getScaleFactor(context), height: 90 * AppStyle.getScaleFactor(context),
// child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature)), child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature),
),
FormField<String>(onSaved: (_) async { FormField<String>(onSaved: (_) async {
widget.onSaved(signature); widget.onSaved(signature);
}, builder: (FormFieldState<String> state) { }, builder: (FormFieldState<String> state) {

Loading…
Cancel
Save