From 910e01324fdef1d998e938bfb1bcf51a78d9ad35 Mon Sep 17 00:00:00 2001 From: MaximusAshraf <50173497+MaximusAshraf@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:05:24 +0200 Subject: [PATCH] bug fixing --- lib/controllers/api_routes/api_manager.dart | 43 +- .../api_routes/http_status_manger.dart | 2 +- lib/controllers/api_routes/urls.dart | 8 +- .../localization/localization.dart | 2 +- .../firebase_notification_manger.dart | 2 +- .../notification/notification_manger.dart | 2 +- .../providers/api/departments_provider.dart | 4 +- .../api/device_transfer_provider.dart | 14 +- .../providers/api/devices_provider.dart | 2 - .../providers/api/gas_refill_provider.dart | 12 +- .../providers/api/hospitals_provider.dart | 6 +- .../providers/api/notifications_provider.dart | 4 +- .../providers/api/parts_provider.dart | 7 +- ...reventive_maintenance_visits_provider.dart | 4 +- .../api/regular_visits_provider.dart | 8 +- .../api/service_requests_provider.dart | 63 +-- .../employee/assigned_to_provider.dart | 7 +- .../employee/engineers_provider.dart | 1 - .../gas_cylinder_size_provider.dart | 6 +- .../gas_cylinder_type_provider.dart | 6 +- .../gas_refill/gas_status_provider.dart | 6 +- .../gas_refill/gas_types_provider.dart | 6 +- .../pentry/pentry_status_provider.dart | 6 +- .../pentry/pentry_task_status_provider.dart | 6 +- .../pentry/pentry_visit_status_provider.dart | 6 +- .../service_report_defect_types_provider.dart | 6 +- .../service_report_last_calls_provider.dart | 8 +- .../service_report_priority_provider.dart | 7 +- .../service_report_reasons_provider.dart | 6 +- .../report/service_report_types_provider.dart | 6 +- .../report/service_types_provider.dart | 8 +- .../service_request_status_provider.dart | 6 +- .../service_request_through_provider.dart | 6 +- .../service_request_type_provider.dart | 6 +- .../providers/api/user_provider.dart | 6 +- lib/main.dart | 7 +- lib/models/device/device.dart | 77 ++-- lib/models/device/device_transfer.dart | 4 - lib/models/device/device_transfer_info.dart | 2 - lib/models/device/model.dart | 47 +++ lib/models/engineer.dart | 14 +- lib/models/hospital.dart | 18 + lib/models/lookup.dart | 14 +- lib/models/pantry/calibration_tools.dart | 2 +- lib/models/pantry/pentry.dart | 28 +- lib/models/pantry/pm_kit.dart | 4 +- lib/models/pantry/ppm_check_list.dart | 2 +- lib/models/part.dart | 20 +- lib/models/service_report.dart | 160 ++++--- .../service_request/service_request.dart | 10 +- lib/models/user.dart | 1 - lib/models/visits/visit.dart | 4 +- lib/models/visits/visits_group.dart | 1 - lib/views/app_style/colors.dart | 1 - .../update_device_transfer.dart | 1 - lib/views/pages/login.dart | 11 +- lib/views/pages/splash_screen.dart | 1 - .../user/gas_refill/gas_refill_details.dart | 1 - lib/views/pages/user/land_page.dart | 130 +++--- .../pages/user/requests/create_request.dart | 1 - .../report/create_service_report.dart | 396 ++++++++++-------- .../requests/report/edit_service_report.dart | 371 +++++++++------- .../pages/user/requests/request_details.dart | 110 ++--- .../pages/user/visits/pantry/edit_pentry.dart | 4 +- .../visits/update_visits_group_sheet.dart | 8 - .../pages/user/visits/visit_details.dart | 1 - lib/views/widgets/app_name_bar.dart | 2 +- lib/views/widgets/app_text_form_field.dart | 2 +- .../widgets/date_and_time/date_picker.dart | 3 +- .../date_and_time/from_to_date_bar.dart | 2 +- .../departments/department_button.dart | 4 +- .../widgets/departments/department_item.dart | 2 +- .../departments/single_department_picker.dart | 4 +- .../device_transfer_info_section.dart | 1 - .../device_trancfer/device_transfer_item.dart | 13 +- .../device_trancfer/device_transfer_list.dart | 8 +- .../widgets/e_signature/e_signature.dart | 6 +- .../auto_complete_devices_field.dart | 9 +- .../equipment/auto_complete_models_field.dart | 8 +- .../widgets/equipment/device_button.dart | 10 +- lib/views/widgets/equipment/device_item.dart | 8 +- .../equipment/single_device_picker.dart | 7 +- .../widgets/gas_refill/gas_refill_item.dart | 12 +- .../widgets/gas_refill/gas_refill_list.dart | 5 +- .../gas_refill_update_details_item.dart | 1 - .../hospital_auto_complete_field.dart | 7 +- .../widgets/hospitals/hospital_button.dart | 4 +- .../widgets/hospitals/hospital_item.dart | 2 +- .../hospitals/single_hospital_picker.dart | 4 +- .../widgets/loaders/loading_manager.dart | 2 +- .../notifications/notification_item.dart | 4 +- .../auto_complete_devices_field.dart | 2 +- .../widgets/pentry/pentry_info_form.dart | 49 ++- .../widgets/pentry/pentry_pm_kit_form.dart | 1 - .../search/service_request_search_bar.dart | 2 - .../widgets/search/visits_search_bar.dart | 1 - .../speech_to_text/speech_to_text.dart | 9 +- .../status/employee/single_type_menu.dart | 1 - .../status/gas_refill/gas_cylinder_type.dart | 1 - .../status/report/service_report_status.dart | 53 +-- .../widgets/status/report/service_status.dart | 4 +- .../service_request_status_mune.dart | 3 - .../service_request_through_mune.dart | 1 - .../service_request_types_mune.dart | 2 - .../widgets/status/single_status_menu.dart | 22 +- 105 files changed, 1089 insertions(+), 941 deletions(-) create mode 100644 lib/models/device/model.dart diff --git a/lib/controllers/api_routes/api_manager.dart b/lib/controllers/api_routes/api_manager.dart index ae4eae9c..41728339 100644 --- a/lib/controllers/api_routes/api_manager.dart +++ b/lib/controllers/api_routes/api_manager.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'package:flutter/cupertino.dart'; import 'package:fluttertoast/fluttertoast.dart'; @@ -19,9 +20,9 @@ class ApiManager { ) async{ Uri _url = Uri.parse(url); - print(_url); +// print(_url); http.Response response = await http.get(_url,headers: headers); - if(response.body is! List){ + if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); @@ -43,19 +44,19 @@ class ApiManager { headers.addAll(_headers); Uri _url = Uri.parse(url); - print(_url); - print(headers); - print(json.encode(body)); +// print(_url); +// print(headers); + log(json.encode(body)); var request = http.Request('POST', _url); request.body = json.encode(body); request.headers.addAll(headers); http.StreamedResponse _streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(_streamedResponse); - print(response.statusCode); - print(response.body); +// print(response.statusCode); +// log(response.body); - if(response.body is! List){ + if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); @@ -77,18 +78,18 @@ class ApiManager { headers.addAll(_headers); Uri _url = Uri.parse(url); - print(_url); - print(headers); - print(json.encode(body)); + // print(_url); + // print(headers); + // log(json.encode(body)); var request = http.Request('PUT', _url); request.body = json.encode(body); request.headers.addAll(headers); http.StreamedResponse streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(streamedResponse); - print(response.statusCode); - print(response.body); - if(response.body is! List){ + // print(response.statusCode); + // log(response.body); + if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); @@ -110,9 +111,9 @@ class ApiManager { headers.addAll(_headers); Uri _url = Uri.parse(url); - print(_url); - print(_headers); - print(json.encode(body)); + // print(_url); + // print(_headers); + // print(json.encode(body)); var request = http.MultipartRequest('POST', _url); request.fields.addAll(body); request.headers.addAll(_headers); @@ -122,12 +123,12 @@ class ApiManager { } //request.files.addAll(_files); - print(request.files); + // print(request.files); http.StreamedResponse streamedResponse = await request.send(); http.Response response = await http.Response.fromStream(streamedResponse); - print(response.statusCode); - print(response.body); - if(response.body is! List){ + // print(response.statusCode); + // log(response.body); + if(jsonDecode(response.body) is Map){ final message = jsonDecode(response.body)["message"]; if(message != null && message.toString().isNotEmpty){ Fluttertoast.showToast(msg: message ?? "",toastLength: Toast.LENGTH_LONG); diff --git a/lib/controllers/api_routes/http_status_manger.dart b/lib/controllers/api_routes/http_status_manger.dart index 012a9a23..0bfb2170 100644 --- a/lib/controllers/api_routes/http_status_manger.dart +++ b/lib/controllers/api_routes/http_status_manger.dart @@ -1,5 +1,5 @@ -import 'package:test_sa/models/subtitle.dart'; import 'package:meta/meta.dart'; +import 'package:test_sa/models/subtitle.dart'; class HttpStatusManger{ static String getStatusMessage({ diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 70dca275..d6607102 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -40,16 +40,16 @@ class URLs{ static get updateRequestDate => "$_baseUrl/handle/update/request"; // get // service report - static get createServiceReport => "$_baseUrl/handle/create/service/report"; // get - static get updateServiceReport => "$_baseUrl/handle/update/service/report"; // get + static get createServiceReport => "$_baseUrl/WorkOrder/AddWorkOrder"; // get + static get updateServiceReport => "$_baseUrl/WorkOrder/UpdateWorkOrder"; // get static get getServiceReport => "$_baseUrl/WorkOrder/GetWorkOrderById"; // get static get createDuplicatedReport => "$_baseUrl/handle/duplicate/request"; // get static get getServiceReportReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=522"; // get - static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=34"; // get + static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=501"; // get static get getServiceReportStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=521"; // get static get getServiceReportLastCalls => "$_baseUrl/Lookups/GetLookup?lookupEnum=520"; // get - static get getServiceTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=604"; // get + static get getAssetTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=28"; // get static get getPartNumber => "$_baseUrl/PartCatalog/GetPartAutoComplete"; // get static get getServiceReportPriority => "$_baseUrl/Lookups/GetLookup?lookupEnum=602"; // get static get getServiceReportDefectTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=601"; // get diff --git a/lib/controllers/localization/localization.dart b/lib/controllers/localization/localization.dart index fafc8aaf..a6e7fe82 100644 --- a/lib/controllers/localization/localization.dart +++ b/lib/controllers/localization/localization.dart @@ -1,8 +1,8 @@ import 'dart:convert'; -import 'package:test_sa/models/subtitle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:test_sa/models/subtitle.dart'; class AppLocalization { diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 19ef543e..153d28fa 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -1,9 +1,9 @@ import 'dart:convert'; -import 'package:test_sa/models/app_notification.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/models/app_notification.dart'; import 'notification_manger.dart'; diff --git a/lib/controllers/notification/notification_manger.dart b/lib/controllers/notification/notification_manger.dart index 8c0de712..a568d5d3 100644 --- a/lib/controllers/notification/notification_manger.dart +++ b/lib/controllers/notification/notification_manger.dart @@ -1,6 +1,6 @@ -import 'package:test_sa/views/app_style/colors.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:test_sa/views/app_style/colors.dart'; class NotificationManger{ // private constructor to avoid create object diff --git a/lib/controllers/providers/api/departments_provider.dart b/lib/controllers/providers/api/departments_provider.dart index 07b0a57b..27146791 100644 --- a/lib/controllers/providers/api/departments_provider.dart +++ b/lib/controllers/providers/api/departments_provider.dart @@ -1,10 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/department.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class DepartmentsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/device_transfer_provider.dart b/lib/controllers/providers/api/device_transfer_provider.dart index ff1b77f3..ce8920f5 100644 --- a/lib/controllers/providers/api/device_transfer_provider.dart +++ b/lib/controllers/providers/api/device_transfer_provider.dart @@ -1,22 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; -import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; -import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/hospital.dart'; -import 'package:test_sa/models/issue.dart'; -import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class DeviceTransferProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index e957cb17..781e7c45 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -116,7 +116,6 @@ class DevicesProvider extends ChangeNotifier{ } return page; } catch(error) { - print(error); return []; } @@ -144,7 +143,6 @@ class DevicesProvider extends ChangeNotifier{ } return page; } catch(error) { - print(error); return []; } diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index da3b6077..2f460a0a 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -1,17 +1,11 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; -import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/issue.dart'; -import 'package:test_sa/models/service_report.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class GasRefillProvider extends ChangeNotifier{ @@ -83,7 +77,6 @@ class GasRefillProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); isLoading = false; stateCode = -1; notifyListeners(); @@ -127,7 +120,6 @@ class GasRefillProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } diff --git a/lib/controllers/providers/api/hospitals_provider.dart b/lib/controllers/providers/api/hospitals_provider.dart index 7b19a6e1..bdcb9fa7 100644 --- a/lib/controllers/providers/api/hospitals_provider.dart +++ b/lib/controllers/providers/api/hospitals_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class HospitalsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/notifications_provider.dart b/lib/controllers/providers/api/notifications_provider.dart index 36abef10..0f216a0a 100644 --- a/lib/controllers/providers/api/notifications_provider.dart +++ b/lib/controllers/providers/api/notifications_provider.dart @@ -1,10 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/app_notification.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class NotificationsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/parts_provider.dart b/lib/controllers/providers/api/parts_provider.dart index 864adaeb..8603c860 100644 --- a/lib/controllers/providers/api/parts_provider.dart +++ b/lib/controllers/providers/api/parts_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class PartsProvider extends ChangeNotifier{ @@ -111,7 +111,6 @@ class PartsProvider extends ChangeNotifier{ } return _page; } catch(error) { - print(error); return []; } diff --git a/lib/controllers/providers/api/preventive_maintenance_visits_provider.dart b/lib/controllers/providers/api/preventive_maintenance_visits_provider.dart index 9d209fec..feb64cd4 100644 --- a/lib/controllers/providers/api/preventive_maintenance_visits_provider.dart +++ b/lib/controllers/providers/api/preventive_maintenance_visits_provider.dart @@ -1,13 +1,13 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/models/visits/visits_search.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class PreventiveMaintenanceVisitsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/regular_visits_provider.dart b/lib/controllers/providers/api/regular_visits_provider.dart index d9baaec1..39119490 100644 --- a/lib/controllers/providers/api/regular_visits_provider.dart +++ b/lib/controllers/providers/api/regular_visits_provider.dart @@ -1,5 +1,8 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; +import 'package:logger/logger.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/pantry/pentry.dart'; @@ -7,9 +10,6 @@ import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/models/visits/visits_search.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; -import 'package:logger/logger.dart'; class RegularVisitsProvider extends ChangeNotifier{ @@ -164,6 +164,7 @@ class RegularVisitsProvider extends ChangeNotifier{ Map body = pentry.toMap(visit.id); body["id"] = visit.id; body["assetId"] = visit.deviceId; + body["ppmScheduleId"] = visit.ppmScheduleId; // body["token"] = user.token; // body["vChecklists"]?.addAll({}); // body["vCalibrationTools"]?.addAll({"visitId": visit.id,}); @@ -183,7 +184,6 @@ class RegularVisitsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 67f7f5ab..36e20746 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -1,8 +1,10 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; -import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/issue.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_report.dart'; @@ -11,8 +13,6 @@ import 'package:test_sa/models/service_request/service_request_search.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; class ServiceRequestsProvider extends ChangeNotifier{ @@ -89,7 +89,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); isLoading = false; stateCode = -1; notifyListeners(); @@ -182,7 +181,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - print(error); return -1; } @@ -255,16 +253,20 @@ class ServiceRequestsProvider extends ChangeNotifier{ @required ServiceRequest request, }) async { Response response; - Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; - body["job_id"] = request.id; + try{ - response = await post( - Uri.parse( - host+URLs.createServiceReport), - body: body, + Map body = report.toMap(request); + // body["uid"] = user.id; + // body["token"] = user.token; + response = await ApiManager.instance.post( + URLs.createServiceReport, + body: body ); + // response = await post( + // Uri.parse( + // host+URLs.createServiceReport), + // body: body, + // ); stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { @@ -274,7 +276,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - return -1; } @@ -322,18 +323,25 @@ class ServiceRequestsProvider extends ChangeNotifier{ @required ServiceRequest request, }) async { Response response; - Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; - body["job_id"] = request.id; - body["report_id"] = request.reportID; + //Map body = report.toMap(request); + // body["uid"] = user.id; + // body["token"] = user.token; + // body["job_id"] = request.id; + // body["report_id"] = request.reportID; try{ - response = await post( - Uri.parse( - host+URLs.updateServiceReport), - body: body, + Map body = report.toMap(request); + // body["uid"] = user.id; + // body["token"] = user.token; + response = await ApiManager.instance.put( + URLs.updateServiceReport, + body: body ); - stateCode = response.statusCode; + // response = await post( + // Uri.parse( + // host+URLs.updateServiceReport), + // body: body, + // ); + // stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { reset(); @@ -342,7 +350,6 @@ class ServiceRequestsProvider extends ChangeNotifier{ return response.statusCode; } catch(error) { - return -1; } @@ -355,7 +362,7 @@ class ServiceRequestsProvider extends ChangeNotifier{ @required ServiceRequest request, }) async { Response response; - Map body = {}; + Map body = {}; body["uid"] = user.id; body["token"] = user.token; body["job_id"] = request.id; @@ -385,7 +392,7 @@ class ServiceRequestsProvider extends ChangeNotifier{ } Future getSingleServiceReport({ - @required String reportId, + @required int reportId, @required String host, @required User user, @required Subtitle subtitle, @@ -406,7 +413,7 @@ class ServiceRequestsProvider extends ChangeNotifier{ if (response.statusCode >= 200 && response.statusCode < 300){ // If the call to the server was successful, parse the JSON. return ServiceReport.fromJson( - json.decode(utf8.decode(response.bodyBytes)),reportId); + json.decode(response.body)["data"],reportId); }else{ throw(HttpStatusManger.getStatusMessage( status: response.statusCode, subtitle: subtitle)); diff --git a/lib/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart b/lib/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart index 757b13f9..f0ff7e05 100644 --- a/lib/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/employee/assigned_to_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class AssignedToProvider extends ChangeNotifier{ @@ -62,7 +62,6 @@ class AssignedToProvider extends ChangeNotifier{ notifyListeners(); return response.statusCode; } catch(error) { - print(error); _loading = false; _stateCode = -1; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/employee/engineers_provider.dart b/lib/controllers/providers/api/status_drop_down/employee/engineers_provider.dart index 67c10b26..af47a022 100644 --- a/lib/controllers/providers/api/status_drop_down/employee/engineers_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/employee/engineers_provider.dart @@ -62,7 +62,6 @@ class EngineersProvider extends ChangeNotifier{ notifyListeners(); return response.statusCode; } catch(error) { - print(error); _loading = false; _stateCode = -1; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart index ecf5a0c7..7952a2f6 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class GasCylinderSizesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart index 0d1a1e0a..370370c1 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class GasCylinderTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart index 6073c9fe..be389cdf 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class GasStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart index 3286ea00..63b0e0ed 100644 --- a/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class GasTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart index e5d769ac..335aae1d 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class PentryStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart index 689f357d..5690aa83 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class PentryTaskStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart index c616d746..f86f15b0 100644 --- a/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class PentryVisitStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart index 563ba8d8..775dd106 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceRequestDefectTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart index b76938fd..59fc821a 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceReportLastCallsProvider extends ChangeNotifier{ @@ -43,7 +43,7 @@ class ServiceReportLastCallsProvider extends ChangeNotifier{ /// return state code if request complete may be 200, 404 or 403 /// for more details check http state manager /// lib\controllers\http_status_manger\http_status_manger.dart - Future getCalls ({String host,User user,String serviceStatus}) async { + Future getCalls ({String host,User user,int serviceStatus}) async { if(_loading == true) return -2; _loading = true; diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart index a9c566e0..d25644c9 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceRequestPriorityProvider extends ChangeNotifier{ @@ -63,7 +63,6 @@ class ServiceRequestPriorityProvider extends ChangeNotifier{ notifyListeners(); return response.statusCode; } catch(error) { - print(error); _loading = false; _stateCode = -1; notifyListeners(); diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart index 7df11d8d..6a4808f2 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceReportReasonsProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart index f385c27e..084daf1c 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_types_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceReportTypesProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart index 9e25f2eb..48da78f4 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_types_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceStatusProvider extends ChangeNotifier{ @@ -50,7 +50,7 @@ class ServiceStatusProvider extends ChangeNotifier{ Response response; try{ response = await ApiManager.instance.get( - URLs.getServiceTypes, + URLs.getAssetTypes, ); _stateCode = response.statusCode; if(response.statusCode >= 200 && response.statusCode < 300) { diff --git a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_status_provider.dart b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_status_provider.dart index 4ead90e0..91b7d4ca 100644 --- a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_status_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_status_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceRequestStatusProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart index 592ec4dc..ec2e6720 100644 --- a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceRequestedThroughProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart index bcc01b4a..76e6c7c4 100644 --- a/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart @@ -1,12 +1,12 @@ import 'dart:convert'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class ServiceRequestTypeProvider extends ChangeNotifier{ diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index 55788923..565408d5 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -1,11 +1,10 @@ import 'dart:convert'; -import 'package:fluttertoast/fluttertoast.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/user.dart'; -import 'package:flutter/material.dart'; -import 'package:http/http.dart'; class UserProvider extends ChangeNotifier{ @@ -64,7 +63,6 @@ class UserProvider extends ChangeNotifier{ notifyListeners(); return response.statusCode; } catch(error) { - print(error); _loading = false; notifyListeners(); return -1; diff --git a/lib/main.dart b/lib/main.dart index f21c35b5..0e8e832a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; @@ -37,9 +40,7 @@ import 'package:test_sa/views/pages/user/visits/preventive_maintenance_visits_pa import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:provider/provider.dart'; + import 'controllers/providers/api/parts_provider.dart'; import 'controllers/providers/api/preventive_maintenance_visits_provider.dart'; import 'controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart'; diff --git a/lib/models/device/device.dart b/lib/models/device/device.dart index cf6eed07..5bcecd50 100644 --- a/lib/models/device/device.dart +++ b/lib/models/device/device.dart @@ -1,45 +1,44 @@ +import 'package:test_sa/models/hospital.dart'; +import 'package:test_sa/models/lookup.dart'; + +import 'model.dart'; + class Device{ int id; String serialNumber; String number; - String brand; - String model; - DateTime productionDate; - DateTime supplyDate; - DateTime installDate; - DateTime receivingDate; - DateTime operationDate; - DateTime warrantyDate; + // String brand; + // String model; + ModelDefinition modelDefinition; + Hospital hospital; + Device({ this.id, this.serialNumber, this.number, - this.brand, - this.model, - this.productionDate, - this.supplyDate, - this.installDate, - this.receivingDate, - this.operationDate, - this.warrantyDate, + this.hospital, + // this.brand, + // this.model, + this.modelDefinition, + }); + + + factory Device.fromJson(Map parsedJson){ + return Device( id: parsedJson["id"], serialNumber: parsedJson["assetSerialNo"], number: parsedJson["assetNumber"], - brand: parsedJson["modelDefinition"] == null ? "" : - parsedJson["modelDefinition"]["manufacturerName"], - model: parsedJson["modelDefinition"] == null ? "" : - parsedJson["modelDefinition"]["modelName"], - productionDate: getDateFromString(parsedJson["production_date"]), - supplyDate: getDateFromString(parsedJson["supply_date "]), - installDate: getDateFromString(parsedJson["install_date "]), - receivingDate: getDateFromString(parsedJson["receving_date "]), - operationDate: getDateFromString(parsedJson["operation_date "]), - warrantyDate: getDateFromString(parsedJson["warranty_date "]), + modelDefinition:ModelDefinition.fromJson(parsedJson["modelDefinition"]), + hospital:Hospital.fromJson(parsedJson["site"]), + // parsedJson["modelDefinition"] == null ? "" : + // parsedJson["modelDefinition"]["manufacturerName"], + // model: parsedJson["modelDefinition"] == null ? "" : + // parsedJson["modelDefinition"]["modelName"], ); } @@ -48,21 +47,19 @@ class Device{ id: device.id, serialNumber: device.serialNumber, number: device.number, - brand: device.brand, - model: device.model, - productionDate: device.productionDate, - supplyDate: device.supplyDate, - installDate: device.installDate, - receivingDate: device.receivingDate, - operationDate: device.operationDate, - warrantyDate: device.warrantyDate, + // brand: device.brand, + // model: device.model, ); } -} -DateTime getDateFromString(String unixDate){ - if(unixDate == null) - return null; - return DateTime.fromMillisecondsSinceEpoch( - int.parse(unixDate)); + Map toMap(Lookup assetType) { + return { + 'id': id, + 'assetSerialNo': serialNumber, + 'assetNumber': number, + 'modelDefinition': modelDefinition.toJson(), + 'site': hospital.toMap(), + 'AssetType':assetType.toMap(), + }; + } } \ No newline at end of file diff --git a/lib/models/device/device_transfer.dart b/lib/models/device/device_transfer.dart index d2e18572..d76728bf 100644 --- a/lib/models/device/device_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -1,4 +1,3 @@ -import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/device/device.dart'; @@ -42,9 +41,6 @@ class DeviceTransfer{ } factory DeviceTransfer.fromJson(Map parsedJson){ - print(parsedJson["id"],); - print(URLs.getFileUrl(parsedJson["senderAttachmentName"]),); - print(URLs.getFileUrl(parsedJson["receiverAttachmentName"]),); return DeviceTransfer( id: parsedJson["id"], title: parsedJson["transferCode"], diff --git a/lib/models/device/device_transfer_info.dart b/lib/models/device/device_transfer_info.dart index 4475b085..05e877f5 100644 --- a/lib/models/device/device_transfer_info.dart +++ b/lib/models/device/device_transfer_info.dart @@ -1,6 +1,4 @@ -import 'package:http/http.dart'; import 'package:test_sa/models/department.dart'; -import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/lookup.dart'; diff --git a/lib/models/device/model.dart b/lib/models/device/model.dart new file mode 100644 index 00000000..bd49b250 --- /dev/null +++ b/lib/models/device/model.dart @@ -0,0 +1,47 @@ +class ModelDefinition { + int id; + String assetName; + String modelDefCode; + String modelName; + String manufacturerName; + String supplierName; + String replacementDate; + int lifeSpan; + + ModelDefinition( + {this.id, + this.assetName, + this.modelDefCode, + this.modelName, + this.manufacturerName, + this.supplierName, + this.replacementDate, + this.lifeSpan,}); + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['assetName'] = assetName; + data['modelDefCode'] = modelDefCode; + data['modelName'] = modelName; + data['manufacturerName'] = manufacturerName; + data['supplierName'] = supplierName; + data['replacementDate'] = replacementDate; + data['lifeSpan'] = lifeSpan; + return data; + } + + factory ModelDefinition.fromJson(Map map) { + if(map == null) return null; + return ModelDefinition( + id: map['id'] as int, + assetName: map['assetName'] as String, + modelDefCode: map['modelDefCode'] as String, + modelName: map['modelName'] as String, + manufacturerName: map['manufacturerName'] as String, + supplierName: map['supplierName'] as String, + replacementDate: map['replacementDate'] as String, + lifeSpan: map['lifeSpan'] as int, + ); + } +} \ No newline at end of file diff --git a/lib/models/engineer.dart b/lib/models/engineer.dart index 74916e45..d8b15f07 100644 --- a/lib/models/engineer.dart +++ b/lib/models/engineer.dart @@ -7,10 +7,12 @@ class Engineer{ this.name, }); + + factory Engineer.fromJson(Map parsedJson){ return Engineer( - id: parsedJson["userId"], - name: parsedJson["userName"], + id: parsedJson["userId"] ?? parsedJson["id"], + name: parsedJson["userName"] ?? parsedJson["name"], ); } factory Engineer.fromEngineer(Engineer department){ @@ -28,4 +30,12 @@ class Engineer{ @override int get hashCode => id.hashCode; + + Map toMap() { + return { + 'id': id, + 'name': name, + }; + } + } \ No newline at end of file diff --git a/lib/models/hospital.dart b/lib/models/hospital.dart index 432b1748..71cde19d 100644 --- a/lib/models/hospital.dart +++ b/lib/models/hospital.dart @@ -1,16 +1,23 @@ class Hospital{ int id; + int customerCode; String name; + List buildings; Hospital({ this.id, + this.customerCode, this.name, + this.buildings, }); + factory Hospital.fromJson(Map parsedJson){ return Hospital( id: parsedJson["id"], name: parsedJson["custName"], + customerCode: parsedJson["customerCode"], + buildings: parsedJson["buildings"] ); } @@ -18,6 +25,17 @@ class Hospital{ return Hospital( id: hospital?.id, name: hospital?.name, + customerCode: hospital?.customerCode, + buildings:hospital?.buildings ); } + + Map toMap() { + return { + 'id': id, + 'customerCode': customerCode, + 'custName': name, + "buildings":buildings + }; + } } \ No newline at end of file diff --git a/lib/models/lookup.dart b/lib/models/lookup.dart index dd0ba990..3d803d0e 100644 --- a/lib/models/lookup.dart +++ b/lib/models/lookup.dart @@ -44,7 +44,7 @@ class Lookup{ return Lookup( name: parsedJson["name"], id: parsedJson["id"], - value: parsedJson["value"] ?? parsedJson["id"], + value: parsedJson["value"], ); } @@ -58,10 +58,10 @@ class Lookup{ // ); // } - factory Lookup.fromIntIdJson(Map parsedJson){ - return Lookup( - name: parsedJson["value"], - id: parsedJson["id"], - ); - } + // factory Lookup.fromIntIdJson(Map parsedJson){ + // return Lookup( + // name: parsedJson["value"], + // id: parsedJson["id"], + // ); + // } } \ No newline at end of file diff --git a/lib/models/pantry/calibration_tools.dart b/lib/models/pantry/calibration_tools.dart index 9e006eac..4207c99b 100644 --- a/lib/models/pantry/calibration_tools.dart +++ b/lib/models/pantry/calibration_tools.dart @@ -13,7 +13,7 @@ class CalibrationTool{ Map toMap(int visitId) { return { - "id":id, + "id":id ?? 0, "visitId": visitId, if(assetsNumber != null) 'assetId': (assetsNumber?.id).toString(), if(dataOfTesting != null) 'calibrationDateOfTesters': dataOfTesting.toIso8601String(), diff --git a/lib/models/pantry/pentry.dart b/lib/models/pantry/pentry.dart index e624f9e6..0f7e1cfa 100644 --- a/lib/models/pantry/pentry.dart +++ b/lib/models/pantry/pentry.dart @@ -2,9 +2,9 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; +import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/pantry/calibration_tools.dart'; -import 'package:test_sa/models/pantry/contact.dart'; import 'package:test_sa/models/pantry/pm_kit.dart'; import 'package:test_sa/models/pantry/ppm_check_list.dart'; import 'package:test_sa/models/timer_model.dart'; @@ -22,8 +22,10 @@ class Pentry{ List ppmCheckLists; List calibrationTools; List pmKits; - String signature; - Uint8List localSignature; + String signatureNurse; + String signatureEngineer; + Uint8List localNurseSignature; + Uint8List localEngineerSignature; Pentry({ this.travelingHours, @@ -38,8 +40,10 @@ class Pentry{ this.ppmCheckLists, this.calibrationTools, this.pmKits, - this.signature, - this.localSignature + this.signatureNurse, + this.signatureEngineer, + this.localNurseSignature, + this.localEngineerSignature }); bool validate(){ @@ -57,7 +61,7 @@ class Pentry{ Map toMap(int visitId) { Map map = {}; map["visitStatusId"] = ppmVisitStatus?.id.toString(); - if(status != null) map["visitStatusId"] = status?.id.toString(); + //if(status != null) map["visitStatusId"] = status?.id.toString(); if(travelingHours != null) map["travelingHours"] = travelingHours; //if(imageFile != null) map["file_attachement"] = base64Encode(imageFile.readAsBytesSync()); map["actualDate"] = actualVisitDate.toIso8601String(); @@ -85,7 +89,8 @@ class Pentry{ map["vChecklists"] = ppmCheckLists.map((e) => e.toMap(visitId)).toList(); map["vCalibrationTools"] = calibrationTools.map((e) => e.toMap(visitId)).toList(); map["vKits"] = pmKits.map((e) => e.toMap(visitId)).toList(); - map["signature"] = signature; + map["nurseSignature"] = signatureNurse; + map["engSignature"] = signatureEngineer; return map; } @@ -132,7 +137,8 @@ class Pentry{ ppmCheckLists: ppmCheckLists, calibrationTools: calibrationTools, pmKits: pmKits, - signature: map["signature"], + signatureNurse: URLs.getFileUrl(map["nurseSignature"]) , + signatureEngineer:URLs.getFileUrl(map["engSignature"]), ); } @@ -148,7 +154,8 @@ class Pentry{ List ppmCheckLists, List calibrationTools, List pmKits, - String signature + String signatureNurse, + String signatureEngineer, }) { return Pentry( ppmVisitStatus: ppmVisitStatus ?? this.ppmVisitStatus, @@ -162,7 +169,8 @@ class Pentry{ ppmCheckLists: ppmCheckLists ?? this.ppmCheckLists?.map((e) => e.copyWith())?.toList(), calibrationTools: calibrationTools ?? this.calibrationTools?.map((e) => e.copyWith())?.toList(), pmKits: pmKits ?? this.pmKits.map((e) => e.copyWith()).toList(), - signature: signature ?? this.signature + signatureNurse: signatureNurse ?? this.signatureNurse, + signatureEngineer: signatureEngineer ?? this.signatureEngineer ); } } \ No newline at end of file diff --git a/lib/models/pantry/pm_kit.dart b/lib/models/pantry/pm_kit.dart index ddb75a40..40bcf514 100644 --- a/lib/models/pantry/pm_kit.dart +++ b/lib/models/pantry/pm_kit.dart @@ -23,7 +23,7 @@ class PMKit{ Map toMap(int visitId) { return { - "id":id, + "id":id ?? 0, "visitId": visitId, if(itemCode != null) 'partCatalogItemId': (itemCode?.id).toString(), // if(itemName != null) 'itemName': itemName, @@ -38,7 +38,7 @@ class PMKit{ factory PMKit.fromMap(Map map) { return PMKit( id: map['id'], - //itemCode: Lookup.fromJson(map['itemCode']), + itemCode: Lookup(id:map['partCatalogItemId'],name:map["partNumber"]), itemName: map['itemName'] as String, preparationTimeFrame: map['preparationTimeFrame'] as String, kitFrequencyDemand: map['kitFrequencyDemand'] as String, diff --git a/lib/models/pantry/ppm_check_list.dart b/lib/models/pantry/ppm_check_list.dart index cbf750bc..3ed03dae 100644 --- a/lib/models/pantry/ppm_check_list.dart +++ b/lib/models/pantry/ppm_check_list.dart @@ -17,7 +17,7 @@ class PPMCheckList{ Map toMap(int visitId) { return { - 'id': id, + 'id': id ?? 0, "visitId": visitId, if(status != null) 'taskStatusId': status?.id.toString(), if(title != null) 'task': title, diff --git a/lib/models/part.dart b/lib/models/part.dart index 5589d9b0..298f4359 100644 --- a/lib/models/part.dart +++ b/lib/models/part.dart @@ -1,23 +1,37 @@ class Part{ int id; + int reportPartID; String code; String name; int quantity; Part({ this.id, + this.reportPartID, this.code, this.name, this.quantity = 1, }); - factory Part.fromJson(Map parsedJson){ + Map toJson(){ + return { + "id": reportPartID ?? 0, + "sparePart":{ + "id":id, + "partNo": code, + "partName":name + }, + "qty":quantity + }; + } + + factory Part.fromJson(Map parsedJson,{Map reportJson}){ return Part( id: parsedJson["id"], + reportPartID: reportJson != null ? reportJson["id"] : null, code: parsedJson["partNo"], name: parsedJson["partName"], - quantity: parsedJson["partQuantity"] == null - ? 1 : int.tryParse(parsedJson["partQuantity"].toString()) ?? 1, + quantity: reportJson != null ? (reportJson["qty"] ?? 1).toInt() : 1, ); } } \ No newline at end of file diff --git a/lib/models/service_report.dart b/lib/models/service_report.dart index 01b75bec..58eb2c98 100644 --- a/lib/models/service_report.dart +++ b/lib/models/service_report.dart @@ -1,21 +1,25 @@ -import 'dart:convert'; +import 'dart:typed_data'; +import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/device/device.dart'; -import 'package:test_sa/models/part.dart'; +import 'package:test_sa/models/engineer.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/part.dart'; +import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/timer_model.dart'; class ServiceReport { - String id; + int id; String operatingHours; DateTime visitDate; DateTime endDate; - Lookup serviceType; + Lookup assetType; Lookup callLastSituation; + Engineer engineer; Lookup status; Lookup type; Lookup reason; - String faultDescription; + int faultDescriptionId; String workPreformed; //String workHours; String travelingHours; @@ -27,18 +31,23 @@ class ServiceReport { String quantity; String jobSheetNumber; TimerModel timer; + String signatureNurse; + String signatureEngineer; + Uint8List localNurseSignature; + Uint8List localEngineerSignature; ServiceReport({ this.id, this.visitDate, this.endDate, - this.serviceType, + this.assetType, this.status, this.type, - this.faultDescription, + this.faultDescriptionId, //this.workHours, this.travelingHours, this.parts, + this.engineer, this.workPreformed, this.reason, this.operatingHours, @@ -50,53 +59,73 @@ class ServiceReport { this.invoiceNumber, this.quantity = "1", this.timer, + this.signatureNurse, + this.signatureEngineer, + this.localNurseSignature, + this.localEngineerSignature }); - Map toMap(){ - Map _map = {}; + Map toMap(ServiceRequest request){ + Map _map = {}; if(id != null) _map["id"] = id; - if(visitDate != null) _map["visit_date"] = (visitDate.millisecondsSinceEpoch ~/ 1000).toString(); - if(serviceType != null) _map["service_type"] = serviceType.id.toString(); - if(status != null) _map["status"] = status.toMap(); - if(type != null) _map["service_report_type"] = type.id.toString(); - if(faultDescription != null && faultDescription.isNotEmpty) _map["fault_description"] = faultDescription; + if(visitDate != null) _map["visitDate"] = visitDate.toIso8601String(); + //if(serviceType != null) _map["service_type"] = serviceType.id.toString(); + if(status != null) _map["status"] = status?.toMap(); + if(type != null) _map["typeOfWO"] = type?.toMap(); + if(assetType != null) _map["TypeOfWO"] = assetType?.toMap(); + //if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId; //if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours; if(timer != null){ - _map["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); - _map["end_time"] = ((timer.endAt ?? DateTime.now()).millisecondsSinceEpoch / 1000).toStringAsFixed(0); - _map["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); + _map["startofWorkTime"] = timer.startAt.toIso8601String(); + _map["endofWorkTime"] = (timer.endAt ?? DateTime.now()).toIso8601String(); + _map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); } if(travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours; - if(workPreformed != null && workPreformed.isNotEmpty) _map["work_performed"] = workPreformed; + // if(workPreformed != null && workPreformed.isNotEmpty){ + // _map["faultDescription"] = { + // //"id":faultDescriptionId ?? 0, + // "workPerformed":workPreformed + // }; + // } if(jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber; if(parts != null && parts.isNotEmpty){ - Map _partsMap = {}; - // parts.forEach((part) { - // if(part.id == null) - // _partsMap[part.id] = part.quantity; - // }); - _map["parts"] = json.encode(_partsMap); + _map["sparePartsWorkOrders"] = parts.map((e) => e.toJson()).toList(); + } + if(device != null && device.id != null){ + _map["callRequest"] = { + "id":request.id, + "asset":device?.toMap(assetType), + }; + _map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber; } - //if(device?.id != null && device.id != null) _map["eq_id"] = device.id; - if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; - if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); - if(reason != null) _map["reasons"] = reason.toMap(); - if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; - if(callLastSituation != null) _map["calllastSituation"] = callLastSituation.id.toString(); - if(image != null) _map["image"] = image; - if(invoiceCode != null) _map["invoice_no"] = invoiceCode; - if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; + _map["AssignedEmployee"] = engineer?.toMap(); + //if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; + //if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); + if(reason != null) _map["reason"] = reason.toMap(); + //if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; + if(callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap(); + //if(image != null) _map["image"] = image; + //if(invoiceCode != null) _map["invoice_no"] = invoiceCode; + //if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; + if(image != null){ + _map["attachmentsWorkOrder"]=[{ + "name":image + }]; + } + _map["nurseSignature"] = signatureNurse; + _map["engSignature"] = signatureEngineer; return _map; } bool validate(){ if(visitDate == null) return false; - if(serviceType == null) return false; + //if(serviceType == null) return false; if(status == null) return false; if(type == null) return false; + if(engineer == null) return false; if(callLastSituation == null) return false; - if(callLastSituation?.id == 12){ - if(invoiceCode != null || invoiceCode?.isEmpty == true) return false; + if(callLastSituation?.value == 12){ + // if(invoiceCode != null || invoiceCode?.isEmpty == true) return false; if(invoiceNumber != null || invoiceNumber?.isEmpty== true ) return false; } if(parts == null) return false; @@ -109,42 +138,49 @@ class ServiceReport { return true; } - factory ServiceReport.fromJson(Map parsedJson,String id){ + factory ServiceReport.fromJson(Map parsedJson,int id){ List _parts = []; - if(parsedJson["parts"] != null){ - if(parsedJson["parts"][0]["id"] != null){ - List partsList = parsedJson["parts"]; - _parts = partsList.map((e) => Part.fromJson(e)).toList(); + if(parsedJson["sparePartsWorkOrders"] != null){ + if(parsedJson["sparePartsWorkOrders"][0]["id"] != null){ + List partsList = parsedJson["sparePartsWorkOrders"]; + _parts = partsList.map((e) => Part.fromJson( + e["sparePart"],reportJson: e)).toList(); } } return ServiceReport( id: id, - serviceType: Lookup.fromJson(parsedJson["service_type"]), - callLastSituation: Lookup.fromJson(parsedJson["call_last_situtation"]), - reason: Lookup.fromJson(parsedJson["reasons"]), - status: Lookup.fromJson(parsedJson["service_report_status"]), - type: Lookup.fromJson(parsedJson["service_report_type"]), - faultDescription: parsedJson["fault_description"], - endDate:getDate(parsedJson["end_date"]), - invoiceCode: parsedJson["invoice_code"], - invoiceNumber: parsedJson["invoice_no"], - jobSheetNumber: parsedJson["job_sheet_no"], - operatingHours: parsedJson["operation_hours"], + assetType: Lookup.fromJson(parsedJson["assetType"]), + callLastSituation: Lookup.fromJson(parsedJson["calllastSituation"]), + reason: Lookup.fromJson(parsedJson["reason"]), + status: Lookup.fromJson(parsedJson["status"]), + type: Lookup.fromJson(parsedJson["typeOfWO"]), + //faultDescriptionId: parsedJson["fault_description"], + endDate:DateTime.tryParse(parsedJson["endofWorkTime"]), + //invoiceCode: parsedJson["invoice_code"], + //invoiceNumber: parsedJson["invoice_no"], + //jobSheetNumber: parsedJson["job_sheet_no"], + //operatingHours: parsedJson["workingHours"], + engineer: Engineer.fromJson(parsedJson["assignedEmployee"]), parts: _parts, - quantity: parsedJson["nid"], - travelingHours: parsedJson["traveling_hours"], - visitDate: getDate(parsedJson["visit_date"]), + //quantity: parsedJson["nid"], + //travelingHours: parsedJson["traveling_hours"], + visitDate: DateTime.tryParse(parsedJson["visitDate"]), //workHours: parsedJson["working_hours"], timer: TimerModel( - durationInSecond: (int.tryParse(parsedJson["working_hours"] ?? "") ?? 0) * 60 *60), - workPreformed: parsedJson["work_performed"], - device: parsedJson["eq_nid"] == null ? null : Device(id: parsedJson["eq_nid"],serialNumber: parsedJson["eq_serial"]) + startAt: DateTime.tryParse(parsedJson["startofWorkTime"]), + endAt: DateTime.tryParse(parsedJson["endofWorkTime"]), + durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 *60).toInt() + ), + //workPreformed: parsedJson["work_performed"], + device: Device.fromJson(parsedJson["callRequest"]["asset"]), + signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]) , + signatureEngineer:URLs.getFileUrl(parsedJson["engSignature"]), ); } - static getDate(String date){ - return date == null || date.isEmpty - ? null : DateTime.fromMillisecondsSinceEpoch(int.tryParse(date) * 1000); - } + // static getDate(String date){ + // return date == null || date.isEmpty + // ? null : DateTime.fromMillisecondsSinceEpoch(int.tryParse(date) * 1000); + // } } \ No newline at end of file diff --git a/lib/models/service_request/service_request.dart b/lib/models/service_request/service_request.dart index 23f178a8..eea5d244 100644 --- a/lib/models/service_request/service_request.dart +++ b/lib/models/service_request/service_request.dart @@ -1,8 +1,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/lookup.dart'; -import '../timer_model.dart'; - class ServiceRequest{ String id; String requestCode; @@ -29,12 +28,13 @@ class ServiceRequest{ String visitDate; DateTime nextVisitDate; String jobSheetNumber; - String reportID; + int reportID; String deviceNumber; Lookup priority; Lookup defectType; Lookup type; Lookup requestedThrough; + Device device; ServiceRequest({ this.id, @@ -68,6 +68,7 @@ class ServiceRequest{ this.deviceNumber, this.type, this.requestedThrough, + this.device, }); factory ServiceRequest.fromJson(Map parsedJson){ @@ -98,7 +99,7 @@ class ServiceRequest{ engineerName: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["name"], hospitalId: parsedJson["asset"]["site"]["id"], - reportID: parsedJson["workOrder"]["id"].toString(), + reportID: parsedJson["workOrder"]["workOrderId"], viewReport: parsedJson["workOrder"] != null, deviceModel: parsedJson["asset"]["modelDefinition"]["modelName"], engineerMobile: parsedJson["assignedEmployee"] == null ? null : @@ -108,6 +109,7 @@ class ServiceRequest{ visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first, nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""), workPerformed: parsedJson["workOrder"]["workPerformed"], + device: Device.fromJson(parsedJson["asset"]) ); } } \ No newline at end of file diff --git a/lib/models/user.dart b/lib/models/user.dart index 6aabf108..246ed717 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -99,7 +99,6 @@ class User{ } else { type = UsersTypes.engineer; } - print(parsedJson); return User( id: parsedJson["userID"], userName: parsedJson["username"], diff --git a/lib/models/visits/visit.dart b/lib/models/visits/visit.dart index 7554ecd4..10717be1 100644 --- a/lib/models/visits/visit.dart +++ b/lib/models/visits/visit.dart @@ -1,6 +1,5 @@ import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/pantry/pentry.dart'; -import 'package:test_sa/models/timer_model.dart'; class Visit{ int id; @@ -10,6 +9,7 @@ class Visit{ int hospitalId; String hospitalName; int deviceId; + int ppmScheduleId; String deviceSerialNumber; String deviceArabicName; String deviceEnglishName; @@ -24,6 +24,7 @@ class Visit{ Visit({ this.id, + this.ppmScheduleId, this.serialNumber, this.hospitalId, this.hospitalName, @@ -52,6 +53,7 @@ class Visit{ return Visit( id: parsedJson["id"], serialNumber: parsedJson["visitCode"], + ppmScheduleId: parsedJson["ppmScheduleId"], hospitalId: parsedJson["siteId"], deviceNumber: parsedJson["assetNumber"], hospitalName: parsedJson["siteName"], diff --git a/lib/models/visits/visits_group.dart b/lib/models/visits/visits_group.dart index 3f47b8cf..57f377ae 100644 --- a/lib/models/visits/visits_group.dart +++ b/lib/models/visits/visits_group.dart @@ -1,6 +1,5 @@ import 'package:test_sa/models/engineer.dart'; -import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/visits/visit.dart'; class VisitsGroup{ diff --git a/lib/views/app_style/colors.dart b/lib/views/app_style/colors.dart index 58f7d442..9a90cbc7 100644 --- a/lib/views/app_style/colors.dart +++ b/lib/views/app_style/colors.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/models/lookup.dart'; class AColors { AColors._(); static const Color white = Color(0xffffffff); diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 7604e2ce..d3e3e479 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -4,7 +4,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; diff --git a/lib/views/pages/login.dart b/lib/views/pages/login.dart index 35e0570c..2f8c48fb 100644 --- a/lib/views/pages/login.dart +++ b/lib/views/pages/login.dart @@ -1,24 +1,17 @@ -import 'package:test_sa/controllers/api_routes/urls.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/notification/notification_manger.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/controllers/validator/validator.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/register.dart'; import 'package:test_sa/views/pages/user/land_page.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_flat_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; - -import '../widgets/buttons/app_outlined_button.dart'; class Login extends StatefulWidget { static final String id = "/login"; @override diff --git a/lib/views/pages/splash_screen.dart b/lib/views/pages/splash_screen.dart index 9892b126..bd7a770f 100644 --- a/lib/views/pages/splash_screen.dart +++ b/lib/views/pages/splash_screen.dart @@ -27,7 +27,6 @@ class _SplashScreenState extends State { UserProvider _userProvider; _goToUserScreen(User user){ - print(user.toJson()); if(user.tokenLife != null && user.tokenLife.isAfter(DateTime.now())){ _userProvider.user = user; // Navigator.of(context).pushNamed(Login.id); diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index 8b053b6b..bed4999d 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -13,7 +13,6 @@ import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_create_details_item.dart'; import 'package:test_sa/views/widgets/gas_refill/gas_refill_update_details_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index 5bf91817..e5b612e9 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -24,14 +24,12 @@ import 'package:test_sa/views/pages/device_transfer/request_device_transfer.dart import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart'; import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; -import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; import 'package:test_sa/views/pages/user/requests/create_request.dart'; import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/dialogs/dialog.dart'; import 'package:test_sa/views/widgets/drawer/drawer_item.dart'; -import 'package:url_launcher/url_launcher.dart'; import '../../widgets/land_page/land_page_item.dart'; import 'profile_page.dart'; @@ -263,70 +261,70 @@ class _LandPageState extends State { ), ), ), - Align( - alignment: Alignment.bottomCenter, - child: Container( - padding: EdgeInsets.all(16), - color: AColors.primaryColor, - child: Row( - children: [ - AIconButton( - iconData: Icons.mail, - onPressed: (){ - launch("mailto:customerservice@Test SA.com"); - - }, - ), - Spacer(), - // Expanded( - // child: MaterialButton( - // splashColor: AColors.secondaryColor.withOpacity(.5), - // child: Row( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // Container( - // padding: EdgeInsets.all(12), - // decoration: BoxDecoration( - // borderRadius: BorderRadius.circular( - // 8 * AppStyle.getScaleFactor(context) - // ), - // color: AColors.onPrimaryColor - // ), - // child: Icon( - // Icons.phone_in_talk, - // color: AColors.primaryColor , - // size: 32, - // ), - // ), - // SizedBox( - // width: 12 * AppStyle.getScaleFactor(context), - // ), - // Text( - // "${_subtitle.hotLine}\n ", - // - // style: Theme.of(context).textTheme.headline6.copyWith( - // color: AColors.white, - // letterSpacing: 2.75, - // fontWeight: FontWeight.bold - // ), - // ), - // ], - // ), - // onPressed: (){ - // //launch("tel:15564"); - // }, - // ), - // ), - AIconButton( - iconData: Icons.notifications, - onPressed: (){ - Navigator.of(context).pushNamed(NotificationsPage.id); - }, - ), - ], - ), - ), - ), + // Align( + // alignment: Alignment.bottomCenter, + // child: Container( + // padding: EdgeInsets.all(16), + // color: AColors.primaryColor, + // child: Row( + // children: [ + // AIconButton( + // iconData: Icons.mail, + // onPressed: (){ + // launch("mailto:customerservice@Test SA.com"); + // + // }, + // ), + // Spacer(), + // // Expanded( + // // child: MaterialButton( + // // splashColor: AColors.secondaryColor.withOpacity(.5), + // // child: Row( + // // mainAxisAlignment: MainAxisAlignment.center, + // // children: [ + // // Container( + // // padding: EdgeInsets.all(12), + // // decoration: BoxDecoration( + // // borderRadius: BorderRadius.circular( + // // 8 * AppStyle.getScaleFactor(context) + // // ), + // // color: AColors.onPrimaryColor + // // ), + // // child: Icon( + // // Icons.phone_in_talk, + // // color: AColors.primaryColor , + // // size: 32, + // // ), + // // ), + // // SizedBox( + // // width: 12 * AppStyle.getScaleFactor(context), + // // ), + // // Text( + // // "${_subtitle.hotLine}\n ", + // // + // // style: Theme.of(context).textTheme.headline6.copyWith( + // // color: AColors.white, + // // letterSpacing: 2.75, + // // fontWeight: FontWeight.bold + // // ), + // // ), + // // ], + // // ), + // // onPressed: (){ + // // //launch("tel:15564"); + // // }, + // // ), + // // ), + // AIconButton( + // iconData: Icons.notifications, + // onPressed: (){ + // Navigator.of(context).pushNamed(NotificationsPage.id); + // }, + // ), + // ], + // ), + // ), + // ), ], ), ), diff --git a/lib/views/pages/user/requests/create_request.dart b/lib/views/pages/user/requests/create_request.dart index 715a1488..5fff68c1 100644 --- a/lib/views/pages/user/requests/create_request.dart +++ b/lib/views/pages/user/requests/create_request.dart @@ -8,7 +8,6 @@ import 'package:provider/provider.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_through_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/controllers/validator/validator.dart'; diff --git a/lib/views/pages/user/requests/report/create_service_report.dart b/lib/views/pages/user/requests/report/create_service_report.dart index 2d65c34b..8fe279c6 100644 --- a/lib/views/pages/user/requests/report/create_service_report.dart +++ b/lib/views/pages/user/requests/report/create_service_report.dart @@ -12,8 +12,6 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/servic import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/validator/validator.dart'; -import 'package:test_sa/models/device/device.dart'; -import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/part.dart'; import 'package:test_sa/models/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; @@ -24,15 +22,17 @@ import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; +import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/equipment/auto_complete_devices_field.dart'; import 'package:test_sa/views/widgets/images/mini_one_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; import 'package:test_sa/views/widgets/parts/part_item.dart'; -import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart'; +import 'package:test_sa/views/widgets/status/employee/engineers_mune.dart'; import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart'; import 'package:test_sa/views/widgets/status/report/service_report_reasons.dart'; import 'package:test_sa/views/widgets/status/report/service_report_status.dart'; +import 'package:test_sa/views/widgets/status/report/service_report_type.dart'; import 'package:test_sa/views/widgets/status/report/service_status.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; @@ -67,11 +67,8 @@ class _CreateServiceReportState extends State with TickerPr void initState() { _serviceReport = ServiceReport( visitDate: DateTime.now(), - type: const Lookup(id: 2), - device: Device( - id: widget.request.deviceId, - serialNumber: widget.request.deviceSerialNumber, - ), + //type: const Lookup(value: 2), + device: widget.request.device, parts: [] ); super.initState(); @@ -158,25 +155,25 @@ class _CreateServiceReportState extends State with TickerPr Row( children: [ // Report Status - // Expanded( - // child: Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // ASubTitle(_subtitle.reportType), - // _validate && _serviceReport.type == null ? - // ASubTitle(_subtitle.requiredWord,color: Colors.red,): - // const SizedBox.shrink(), - // const SizedBox(height: 4,), - // ServiceReportTypeMenu( - // initialValue: _serviceReport.type, - // onSelect: (status){ - // _serviceReport.type = status; - // }, - // ), - // ], - // ), - // ), - // const SizedBox(width: 8,), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle(_subtitle.reportType), + _validate && _serviceReport.type == null ? + ASubTitle(_subtitle.requiredWord,color: Colors.red,): + const SizedBox.shrink(), + const SizedBox(height: 4,), + ServiceReportTypeMenu( + initialValue: _serviceReport.type, + onSelect: (status){ + _serviceReport.type = status; + }, + ), + ], + ), + ), + const SizedBox(width: 8,), // visit date Expanded( child: Column( @@ -231,14 +228,14 @@ class _CreateServiceReportState extends State with TickerPr ), const SizedBox(height: 8,), ASubTitle(_subtitle.serviceType), - _validate && _serviceReport.serviceType == null ? + _validate && _serviceReport.assetType == null ? ASubTitle(_subtitle.requiredWord,color: Colors.red,): const SizedBox.shrink(), const SizedBox(height: 4,), - ServiceStatusMenu( - initialValue: _serviceReport.serviceType, + ServiceAssetTypeMenu( + initialValue: _serviceReport.assetType, onSelect: (status){ - _serviceReport.serviceType = status; + _serviceReport.assetType = status; }, ), const SizedBox(height: 8,), @@ -265,36 +262,53 @@ class _CreateServiceReportState extends State with TickerPr ), ), const SizedBox(width: 8,), - Provider.of(context).isLoading == null - ? const SizedBox.shrink(): + // Provider.of(context).isLoading == null + // ? const SizedBox.shrink(): // Call's last Situation - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - - ASubTitle(_subtitle.callLastSituation), - _validate && _serviceReport.callLastSituation == null ? - ASubTitle(_subtitle.requiredWord,color: Colors.red,): - const SizedBox.shrink(), - const SizedBox(height: 4,), - ServiceReportLastCallsMenu( - report: _serviceReport, - onSelect: (status){ - if(status?.id == 12 - || _serviceReport.callLastSituation?.id == 12){ - _serviceReport.callLastSituation = status; - setState(() {}); - } else { - _serviceReport.callLastSituation = status; - } - }, + Consumer( + builder: (_, provider, __) { + if(provider.isLoading == null) return const SizedBox.shrink(); + return Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle(_subtitle.callLastSituation), + _validate && _serviceReport.callLastSituation == null ? + ASubTitle(_subtitle.requiredWord,color: Colors.red,): + const SizedBox.shrink(), + const SizedBox(height: 4,), + ServiceReportLastCallsMenu( + report: _serviceReport, + onSelect: (status){ + if(status?.value == 12 + || _serviceReport.callLastSituation?.value == 12){ + _serviceReport.callLastSituation = status; + setState(() {}); + } else { + _serviceReport.callLastSituation = status; + } + }, + ), + ], ), - ], - ), + ); + }, ), ], ), + SizedBox(height: 8 * AppStyle.getScaleFactor(context),), + const ASubTitle("Assign Employee"), + const SizedBox(height: 8,), + _validate && _serviceReport.engineer == null ? + ASubTitle(_subtitle.requiredWord,color: Colors.red,): + const SizedBox.shrink(), + const SizedBox(height: 4,), + EngineersMenu( + initialValue: _serviceReport.engineer, + onSelect: (engineer){ + _serviceReport.engineer = engineer; + }, + ), const SizedBox(height: 8,), // invoice number & code _serviceReport.callLastSituation?.id != 12 ? const SizedBox.shrink(): @@ -346,65 +360,65 @@ class _CreateServiceReportState extends State with TickerPr ], ), - const SizedBox(height: 8,), - Row( - children: [ - ASubTitle(_subtitle.faultDescription), - Expanded( - child: SizedBox( - height: 32 * AppStyle.getScaleFactor(context), - child: SpeechToTextButton( - controller: _faultController, - mini: true, - ), - ), - ), - ], - ), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.faultDescription, - textAlign: TextAlign.center, - controller: _faultController, - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.multiline, - onSaved: (value){ - _serviceReport.faultDescription = value; - }, - ), - const SizedBox(height: 8,), - Row( - children: [ - ASubTitle(_subtitle.workPreformed), - Expanded( - child: SizedBox( - height: 32 * AppStyle.getScaleFactor(context), - child: SpeechToTextButton( - controller: _workPreformedController, - mini: true, - ), - ), - ), - ], - ), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.workPreformed, - textAlign: TextAlign.center, - controller: _workPreformedController, - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.multiline, - onSaved: (value){ - _serviceReport.workPreformed = value; - }, - ), - const SizedBox(height: 8,), + // const SizedBox(height: 8,), + // Row( + // children: [ + // ASubTitle(_subtitle.faultDescription), + // Expanded( + // child: SizedBox( + // height: 32 * AppStyle.getScaleFactor(context), + // child: SpeechToTextButton( + // controller: _faultController, + // mini: true, + // ), + // ), + // ), + // ], + // ), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.faultDescriptionId, + // textAlign: TextAlign.center, + // controller: _faultController, + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.hasValue(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.multiline, + // onSaved: (value){ + // _serviceReport.faultDescriptionId = value; + // }, + // ), + // const SizedBox(height: 8,), + // Row( + // children: [ + // ASubTitle(_subtitle.workPreformed), + // Expanded( + // child: SizedBox( + // height: 32 * AppStyle.getScaleFactor(context), + // child: SpeechToTextButton( + // controller: _workPreformedController, + // mini: true, + // ), + // ), + // ), + // ], + // ), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.workPreformed, + // textAlign: TextAlign.center, + // controller: _workPreformedController, + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.hasValue(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.multiline, + // onSaved: (value){ + // _serviceReport.workPreformed = value; + // }, + // ), + // const SizedBox(height: 8,), const SizedBox(height: 8,), Row( @@ -436,7 +450,7 @@ class _CreateServiceReportState extends State with TickerPr image: _image, onPick: (image){ _image =image; - _serviceReport.image = base64Encode(image.readAsBytesSync()); + _serviceReport.image = "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}"; }, ), ], @@ -454,12 +468,18 @@ class _CreateServiceReportState extends State with TickerPr children: [ ASubTitle(_subtitle.workingHours), const SizedBox(height: 8,), - AppTimer( - timer: _serviceReport.timer, - onChange: (timer) async{ - _serviceReport.timer = timer; - return true; - }, + Row( + children: [ + Expanded( + child: AppTimer( + timer: _serviceReport.timer, + onChange: (timer) async{ + _serviceReport.timer = timer; + return true; + }, + ), + ), + ], ), // ATextFormField( // initialValue: _serviceReport?.workHours, @@ -477,79 +497,102 @@ class _CreateServiceReportState extends State with TickerPr ], ), ), - const SizedBox(width: 8,), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.travelingHours), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.travelingHours, - textAlign: TextAlign.center, - hintText: "i.e 3, 3.5, 4", - style: Theme.of(context).textTheme.subtitle1, - // validator: (value) => - // Validator.isNumeric(value) - // ? null : _subtitle.requiredWord, - textInputType: TextInputType.number, - onSaved: (value){ - _serviceReport.travelingHours = value; - }, - ), - ], - ), - ), - ], - ), - const SizedBox(height: 8,), - // Operating Hours and Job Sheet Number - Row( - children: [ + // const SizedBox(width: 8,), // Expanded( // child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ - // ASubTitle(_subtitle.operatingHours), + // ASubTitle(_subtitle.travelingHours), // const SizedBox(height: 4,), // ATextFormField( - // initialValue: _serviceReport?.operatingHours, + // initialValue: _serviceReport?.travelingHours, // textAlign: TextAlign.center, // hintText: "i.e 3, 3.5, 4", // style: Theme.of(context).textTheme.subtitle1, - // validator: (value) => - // Validator.isNumeric(value) - // ? null : _subtitle.requiredWord, + // // validator: (value) => + // // Validator.isNumeric(value) + // // ? null : _subtitle.requiredWord, // textInputType: TextInputType.number, // onSaved: (value){ - // _serviceReport.operatingHours = value; + // _serviceReport.travelingHours = value; // }, // ), // ], // ), // ), - // const SizedBox(width: 8,), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.jobSheetNumber), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.jobSheetNumber, - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.subtitle1, - textInputType: TextInputType.name, - onSaved: (value){ - _serviceReport.jobSheetNumber = value; - }, - ), - ], - ), - ), ], ), const SizedBox(height: 8,), + // Operating Hours and Job Sheet Number + // Row( + // children: [ + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.operatingHours), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.operatingHours, + // textAlign: TextAlign.center, + // hintText: "i.e 3, 3.5, 4", + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.isNumeric(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.number, + // onSaved: (value){ + // _serviceReport.operatingHours = value; + // }, + // ), + // ], + // ), + // ), + // const SizedBox(width: 8,), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.jobSheetNumber), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.jobSheetNumber, + // textAlign: TextAlign.center, + // style: Theme.of(context).textTheme.subtitle1, + // textInputType: TextInputType.name, + // onSaved: (value){ + // _serviceReport.jobSheetNumber = value; + // }, + // ), + // ], + // ), + // ), + // ], + // ), + //const SizedBox(height: 8,), + const SizedBox(height: 8,), + const ASubTitle("Nurse Signature"), + ESignature( + oldSignature: _serviceReport.signatureNurse, + newSignature: _serviceReport.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + _serviceReport.localNurseSignature = signature; + _serviceReport.signatureNurse = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Engineer Signature"), + ESignature( + oldSignature: _serviceReport.signatureEngineer, + newSignature: _serviceReport.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + _serviceReport.localNurseSignature = signature; + _serviceReport.signatureEngineer = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + }, + ), + const SizedBox(height: 8,), // Part Number and Quantity Row( children: [ @@ -596,7 +639,6 @@ class _CreateServiceReportState extends State with TickerPr } ), ), - const SizedBox(height: 16,), ], diff --git a/lib/views/pages/user/requests/report/edit_service_report.dart b/lib/views/pages/user/requests/report/edit_service_report.dart index 4a7be338..bfc8f4f5 100644 --- a/lib/views/pages/user/requests/report/edit_service_report.dart +++ b/lib/views/pages/user/requests/report/edit_service_report.dart @@ -22,12 +22,13 @@ import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; +import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/equipment/auto_complete_devices_field.dart'; import 'package:test_sa/views/widgets/images/mini_one_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; import 'package:test_sa/views/widgets/parts/part_item.dart'; -import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart'; +import 'package:test_sa/views/widgets/status/employee/engineers_mune.dart'; import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart'; import 'package:test_sa/views/widgets/status/report/service_report_reasons.dart'; import 'package:test_sa/views/widgets/status/report/service_report_status.dart'; @@ -223,14 +224,28 @@ class _EditServiceReportState extends State with TickerProvid ), const SizedBox(height: 8,), ASubTitle(_subtitle.serviceType), - _validate && _serviceReport.serviceType == null ? + _validate && _serviceReport.assetType == null ? ASubTitle(_subtitle.requiredWord,color: Colors.red,): const SizedBox.shrink(), const SizedBox(height: 4,), - ServiceStatusMenu( - initialValue: _serviceReport.serviceType, + ServiceAssetTypeMenu( + initialValue: _serviceReport.assetType, onSelect: (status){ - _serviceReport.serviceType = status; + _serviceReport.assetType = status; + }, + ), + const SizedBox(height: 8,), + SizedBox(height: 8 * AppStyle.getScaleFactor(context),), + const ASubTitle("Assign Employee"), + const SizedBox(height: 8,), + _validate && _serviceReport.engineer == null ? + ASubTitle(_subtitle.requiredWord,color: Colors.red,): + const SizedBox.shrink(), + const SizedBox(height: 4,), + EngineersMenu( + initialValue: _serviceReport.engineer, + onSelect: (engineer){ + _serviceReport.engineer = engineer; }, ), const SizedBox(height: 8,), @@ -257,33 +272,34 @@ class _EditServiceReportState extends State with TickerProvid ), ), const SizedBox(width: 8,), - Provider.of(context).isLoading == null - ? const SizedBox.shrink(): - // Call's last Situation - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - - ASubTitle(_subtitle.callLastSituation), - _validate && _serviceReport.callLastSituation == null ? - ASubTitle(_subtitle.requiredWord,color: Colors.red,): - const SizedBox.shrink(), - const SizedBox(height: 4,), - ServiceReportLastCallsMenu( - report: _serviceReport, - onSelect: (status){ - if(status?.value == 12 - || _serviceReport.callLastSituation?.value == 12){ - _serviceReport.callLastSituation = status; - setState(() {}); - } else { - _serviceReport.callLastSituation = status; - } - }, + Consumer( + builder: (_, provider, __) { + if(provider.isLoading == null) return const SizedBox.shrink(); + return Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle(_subtitle.callLastSituation), + _validate && _serviceReport.callLastSituation == null ? + ASubTitle(_subtitle.requiredWord,color: Colors.red,): + const SizedBox.shrink(), + const SizedBox(height: 4,), + ServiceReportLastCallsMenu( + report: _serviceReport, + onSelect: (status){ + if(status?.value == 12 + || _serviceReport.callLastSituation?.value == 12){ + _serviceReport.callLastSituation = status; + setState(() {}); + } else { + _serviceReport.callLastSituation = status; + } + }, + ), + ], ), - ], - ), + ); + }, ), ], ), @@ -338,65 +354,65 @@ class _EditServiceReportState extends State with TickerProvid ], ), - const SizedBox(height: 8,), - Row( - children: [ - ASubTitle(_subtitle.faultDescription), - Expanded( - child: SizedBox( - height: 32 * AppStyle.getScaleFactor(context), - child: SpeechToTextButton( - controller: _faultController, - mini: true, - ), - ), - ), - ], - ), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.faultDescription, - textAlign: TextAlign.center, - controller: _faultController, - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.multiline, - onSaved: (value){ - _serviceReport.faultDescription = value; - }, - ), - const SizedBox(height: 8,), - Row( - children: [ - ASubTitle(_subtitle.workPreformed), - Expanded( - child: SizedBox( - height: 32 * AppStyle.getScaleFactor(context), - child: SpeechToTextButton( - controller: _workPreformedController, - mini: true, - ), - ), - ), - ], - ), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.workPreformed, - textAlign: TextAlign.center, - controller: _workPreformedController, - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.multiline, - onSaved: (value){ - _serviceReport.workPreformed = value; - }, - ), - const SizedBox(height: 8,), + // const SizedBox(height: 8,), + // Row( + // children: [ + // ASubTitle(_subtitle.faultDescription), + // Expanded( + // child: SizedBox( + // height: 32 * AppStyle.getScaleFactor(context), + // child: SpeechToTextButton( + // controller: _faultController, + // mini: true, + // ), + // ), + // ), + // ], + // ), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.faultDescriptionId, + // textAlign: TextAlign.center, + // controller: _faultController, + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.hasValue(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.multiline, + // onSaved: (value){ + // _serviceReport.faultDescriptionId = value; + // }, + // ), + // const SizedBox(height: 8,), + // Row( + // children: [ + // ASubTitle(_subtitle.workPreformed), + // Expanded( + // child: SizedBox( + // height: 32 * AppStyle.getScaleFactor(context), + // child: SpeechToTextButton( + // controller: _workPreformedController, + // mini: true, + // ), + // ), + // ), + // ], + // ), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.workPreformed, + // textAlign: TextAlign.center, + // controller: _workPreformedController, + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.hasValue(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.multiline, + // onSaved: (value){ + // _serviceReport.workPreformed = value; + // }, + // ), + // const SizedBox(height: 8,), const SizedBox(height: 8,), Row( @@ -446,12 +462,18 @@ class _EditServiceReportState extends State with TickerProvid children: [ ASubTitle(_subtitle.workingHours), const SizedBox(height: 8,), - AppTimer( - timer: _serviceReport.timer, - onChange: (timer) async{ - _serviceReport.timer = timer; - return true; - }, + Row( + children: [ + Expanded( + child: AppTimer( + timer: _serviceReport.timer, + onChange: (timer) async{ + _serviceReport.timer = timer; + return true; + }, + ), + ), + ], ), // ATextFormField( // initialValue: _serviceReport?.workHours, @@ -469,77 +491,100 @@ class _EditServiceReportState extends State with TickerProvid ], ), ), - const SizedBox(width: 8,), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.travelingHours), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.travelingHours, - textAlign: TextAlign.center, - hintText: "i.e 3, 3.5, 4", - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.number, - onSaved: (value){ - _serviceReport.travelingHours = value; - }, - ), - ], - ), - ), + // const SizedBox(width: 8,), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.travelingHours), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.travelingHours, + // textAlign: TextAlign.center, + // hintText: "i.e 3, 3.5, 4", + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.isNumeric(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.number, + // onSaved: (value){ + // _serviceReport.travelingHours = value; + // }, + // ), + // ], + // ), + // ), ], ), const SizedBox(height: 8,), // Operating Hours and Job Sheet Number - Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.operatingHours), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.operatingHours, - textAlign: TextAlign.center, - hintText: "i.e 3, 3.5, 4", - style: Theme.of(context).textTheme.subtitle1, - validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, - textInputType: TextInputType.number, - onSaved: (value){ - _serviceReport.operatingHours = value; - }, - ), - ], - ), - ), - const SizedBox(width: 8,), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ASubTitle(_subtitle.jobSheetNumber), - const SizedBox(height: 4,), - ATextFormField( - initialValue: _serviceReport?.jobSheetNumber, - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.subtitle1, - textInputType: TextInputType.name, - onSaved: (value){ - _serviceReport.jobSheetNumber = value; - }, - ), - ], - ), - ), - ], + // Row( + // children: [ + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.operatingHours), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.operatingHours, + // textAlign: TextAlign.center, + // hintText: "i.e 3, 3.5, 4", + // style: Theme.of(context).textTheme.subtitle1, + // validator: (value) => + // Validator.isNumeric(value) + // ? null : _subtitle.requiredWord, + // textInputType: TextInputType.number, + // onSaved: (value){ + // _serviceReport.operatingHours = value; + // }, + // ), + // ], + // ), + // ), + // const SizedBox(width: 8,), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ASubTitle(_subtitle.jobSheetNumber), + // const SizedBox(height: 4,), + // ATextFormField( + // initialValue: _serviceReport?.jobSheetNumber, + // textAlign: TextAlign.center, + // style: Theme.of(context).textTheme.subtitle1, + // textInputType: TextInputType.name, + // onSaved: (value){ + // _serviceReport.jobSheetNumber = value; + // }, + // ), + // ], + // ), + // ), + // ], + // ), + //const SizedBox(height: 8,), + const SizedBox(height: 8,), + const ASubTitle("Nurse Signature"), + ESignature( + oldSignature: _serviceReport.signatureNurse, + newSignature: _serviceReport.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + _serviceReport.localNurseSignature = signature; + _serviceReport.signatureNurse = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Engineer Signature"), + ESignature( + oldSignature: _serviceReport.signatureEngineer, + newSignature: _serviceReport.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + _serviceReport.localNurseSignature = signature; + _serviceReport.signatureEngineer = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + }, ), const SizedBox(height: 8,), // Part Number and Quantity diff --git a/lib/views/pages/user/requests/request_details.dart b/lib/views/pages/user/requests/request_details.dart index c052fb68..d45692d8 100644 --- a/lib/views/pages/user/requests/request_details.dart +++ b/lib/views/pages/user/requests/request_details.dart @@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -16,7 +15,6 @@ import 'package:test_sa/views/pages/user/requests/report/create_service_report.d import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/dialogs/dialog.dart'; import 'package:test_sa/views/widgets/images/images_list.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; @@ -25,7 +23,6 @@ import 'package:test_sa/views/widgets/requests/service_request_update_dialog.dar import 'package:test_sa/views/widgets/sound/sound_player.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; -import '../report_issues_page.dart'; import 'report/future_service_report.dart'; class RequestDetailsPage extends StatelessWidget { static final String id = "/call-details"; @@ -62,19 +59,20 @@ class RequestDetailsPage extends StatelessWidget { ), ), _userProvider.user.type == UsersTypes.normal_user ? - AIconButton( - iconData: Icons.warning_amber_rounded, - color: AColors.white, - buttonSize: 42, - backgroundColor: AColors.deepOrange, - onPressed: (){ - Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => ReportIssuesPage(serviceRequest: serviceRequest,) - ) - ); - }, - ) + // AIconButton( + // iconData: Icons.warning_amber_rounded, + // color: AColors.white, + // buttonSize: 42, + // backgroundColor: AColors.deepOrange, + // onPressed: (){ + // Navigator.of(context).push( + // MaterialPageRoute( + // builder: (_) => ReportIssuesPage(serviceRequest: serviceRequest,) + // ) + // ); + // }, + // ) + const SizedBox(width: 48,) : AIconButton( iconData: Icons.edit, color: AColors.white, @@ -247,44 +245,45 @@ class RequestDetailsPage extends StatelessWidget { ASoundPlayer( audio: serviceRequest.audio, ), - Center( - child: Padding( - padding: EdgeInsets.all(32), - child: AButton( - text: _subtitle.duplicateRequest, - onPressed: () async { - bool result = await showDialog( - context: context, - builder: (_) => AAlertDialog( - title: _subtitle.duplicateAlert, - content: _subtitle.duplicateAlertMessage, - ) - ); - if(result == true){ - showDialog( - context: context, - builder: (context){ - return Center(child: CircularProgressIndicator()); - } - ); - int status = await _serviceRequestsProvider.createDuplicatedReport( - host: _settingProvider.host, - user: _userProvider.user, - request: serviceRequest - ); - Navigator.of(context).pop(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle) - ) - ) - ); - } - }, - ), - ), - ) + // + // Center( + // child: Padding( + // padding: EdgeInsets.all(32), + // child: AButton( + // text: _subtitle.duplicateRequest, + // onPressed: () async { + // bool result = await showDialog( + // context: context, + // builder: (_) => AAlertDialog( + // title: _subtitle.duplicateAlert, + // content: _subtitle.duplicateAlertMessage, + // ) + // ); + // if(result == true){ + // showDialog( + // context: context, + // builder: (context){ + // return Center(child: CircularProgressIndicator()); + // } + // ); + // int status = await _serviceRequestsProvider.createDuplicatedReport( + // host: _settingProvider.host, + // user: _userProvider.user, + // request: serviceRequest + // ); + // Navigator.of(context).pop(); + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar( + // content: Text( + // HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle) + // ) + // ) + // ); + // } + // }, + // ), + // ), + // ) ], ), serviceRequest.viewReport ? @@ -307,7 +306,8 @@ class RequestDetailsPage extends StatelessWidget { title: _subtitle.jobSheetNumber, info: serviceRequest.jobSheetNumber, ), - _userProvider.user.type == UsersTypes.engineer ? + _userProvider.user.type == UsersTypes.engineer + && serviceRequest.reportID != null? Padding( padding: EdgeInsets.all(32), child: AButton( diff --git a/lib/views/pages/user/visits/pantry/edit_pentry.dart b/lib/views/pages/user/visits/pantry/edit_pentry.dart index 39971677..a758bb93 100644 --- a/lib/views/pages/user/visits/pantry/edit_pentry.dart +++ b/lib/views/pages/user/visits/pantry/edit_pentry.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -62,7 +61,8 @@ class _EditPentryState extends State with SingleTickerProviderStateM Fluttertoast.showToast( msg: _subtitle.requestCompleteSuccessfully, ); - // Navigator.of(context).pop(); + Navigator.of(context).pop(); + Navigator.of(context).pop(); }else{ // String errorMessage = HttpStatusManger.getStatusMessage( // status: status, subtitle: _subtitle); diff --git a/lib/views/pages/user/visits/update_visits_group_sheet.dart b/lib/views/pages/user/visits/update_visits_group_sheet.dart index ae8d66cb..40ebd651 100644 --- a/lib/views/pages/user/visits/update_visits_group_sheet.dart +++ b/lib/views/pages/user/visits/update_visits_group_sheet.dart @@ -1,20 +1,12 @@ -import 'dart:convert'; -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; -import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import 'package:test_sa/views/widgets/images/one_image_picker.dart'; -import 'package:test_sa/views/widgets/search/filter_item.dart'; import 'package:test_sa/views/widgets/status/employee/engineers_mune.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart'; class UpdateVisitsGroupSheet extends StatefulWidget { diff --git a/lib/views/pages/user/visits/visit_details.dart b/lib/views/pages/user/visits/visit_details.dart index ca876b77..cd400297 100644 --- a/lib/views/pages/user/visits/visit_details.dart +++ b/lib/views/pages/user/visits/visit_details.dart @@ -6,7 +6,6 @@ import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/user/visits/pantry/edit_pentry.dart'; -import 'package:test_sa/views/pages/user/visits/pantry/future_edit_pently.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/images/images_list.dart'; diff --git a/lib/views/widgets/app_name_bar.dart b/lib/views/widgets/app_name_bar.dart index 35a382a0..8aebd901 100644 --- a/lib/views/widgets/app_name_bar.dart +++ b/lib/views/widgets/app_name_bar.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class AppNameBar extends StatelessWidget { @override Widget build(BuildContext context) { diff --git a/lib/views/widgets/app_text_form_field.dart b/lib/views/widgets/app_text_form_field.dart index 407b351f..90885a27 100644 --- a/lib/views/widgets/app_text_form_field.dart +++ b/lib/views/widgets/app_text_form_field.dart @@ -1,6 +1,6 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class ATextFormField extends StatefulWidget { final Function(String) onSaved; final Function(String) validator; diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 70a4c82e..a3136342 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -1,6 +1,5 @@ -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:flutter/material.dart'; +import 'package:test_sa/views/app_style/sizing.dart'; class ADatePicker extends StatelessWidget { final DateTime date; diff --git a/lib/views/widgets/date_and_time/from_to_date_bar.dart b/lib/views/widgets/date_and_time/from_to_date_bar.dart index 422dcbf9..4ef79e81 100644 --- a/lib/views/widgets/date_and_time/from_to_date_bar.dart +++ b/lib/views/widgets/date_and_time/from_to_date_bar.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; import 'date_picker.dart'; class FromToDateBar extends StatefulWidget { diff --git a/lib/views/widgets/departments/department_button.dart b/lib/views/widgets/departments/department_button.dart index 811f0898..1f9668b2 100644 --- a/lib/views/widgets/departments/department_button.dart +++ b/lib/views/widgets/departments/department_button.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class DepartmentButton extends StatelessWidget { final Function(Department) onDepartmentPick; final Department department; diff --git a/lib/views/widgets/departments/department_item.dart b/lib/views/widgets/departments/department_item.dart index fd37b418..4ac240e9 100644 --- a/lib/views/widgets/departments/department_item.dart +++ b/lib/views/widgets/departments/department_item.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/models/department.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class DepartmentItem extends StatelessWidget { final Department department; final Function(Department) onPressed; diff --git a/lib/views/widgets/departments/single_department_picker.dart b/lib/views/widgets/departments/single_department_picker.dart index fb07b393..e5fb916b 100644 --- a/lib/views/widgets/departments/single_department_picker.dart +++ b/lib/views/widgets/departments/single_department_picker.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -6,8 +8,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/departments/department_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleDepartmentPicker extends StatefulWidget { diff --git a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart index 8360ba23..03e694c4 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_info_section.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_info_section.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index ea426523..4b2d78ce 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -1,21 +1,14 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/enums/user_types.dart'; -import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/user/requests/report/create_service_report.dart'; -import 'package:test_sa/views/pages/user/requests/report/future_service_report.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; class DeviceTransferItem extends StatelessWidget { final int index; final DeviceTransfer item; diff --git a/lib/views/widgets/device_trancfer/device_transfer_list.dart b/lib/views/widgets/device_trancfer/device_transfer_list.dart index ede0bc6d..18bee922 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,17 +1,11 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device_transfer.dart'; -import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; -import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart'; -import 'package:test_sa/views/widgets/gas_refill/gas_refill_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:test_sa/views/widgets/requests/service_request_item.dart'; -import 'package:flutter/material.dart'; class DeviceTransferList extends StatelessWidget { final List items; final bool nextPage; diff --git a/lib/views/widgets/e_signature/e_signature.dart b/lib/views/widgets/e_signature/e_signature.dart index 72f9d653..1136a0a3 100644 --- a/lib/views/widgets/e_signature/e_signature.dart +++ b/lib/views/widgets/e_signature/e_signature.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:signature/signature.dart'; @@ -11,7 +9,8 @@ class ESignature extends StatefulWidget { final String oldSignature; final Uint8List newSignature; final Function(Uint8List) onSaved; - const ESignature({Key key, this.oldSignature, this.onSaved, this.newSignature}) : super(key: key); + final Function(Uint8List) onChange; + const ESignature({Key key, this.oldSignature, this.onSaved,this.onChange, this.newSignature}) : super(key: key); @override State createState() => _ESignatureState(); @@ -104,6 +103,7 @@ class _ESignatureState extends State { const Spacer(), IconButton(onPressed: () async { signature = await _controller.toPngBytes(); + widget.onChange(signature); setState(() {}); }, icon: const Icon(Icons.check)), ], diff --git a/lib/views/widgets/equipment/auto_complete_devices_field.dart b/lib/views/widgets/equipment/auto_complete_devices_field.dart index 95952765..c11315f9 100644 --- a/lib/views/widgets/equipment/auto_complete_devices_field.dart +++ b/lib/views/widgets/equipment/auto_complete_devices_field.dart @@ -1,13 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_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/models/device/device.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:provider/provider.dart'; class AutoCompleteDeviceField extends StatefulWidget { final Device initialValue; final int hospitalId; @@ -81,7 +80,7 @@ class _AutoCompleteDeviceFieldState extends State { itemBuilder: (context, device) { return ListTile( title: Text(device.serialNumber), - subtitle: Text(device.model+"/"+device.brand), + subtitle: Text("${device.modelDefinition.modelName}/${device.modelDefinition.manufacturerName}"), ); }, onSuggestionSelected: (device) { diff --git a/lib/views/widgets/equipment/auto_complete_models_field.dart b/lib/views/widgets/equipment/auto_complete_models_field.dart index 1c40a544..7f776b91 100644 --- a/lib/views/widgets/equipment/auto_complete_models_field.dart +++ b/lib/views/widgets/equipment/auto_complete_models_field.dart @@ -1,14 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_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/models/device/device.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:provider/provider.dart'; class AutoCompleteModelField extends StatefulWidget { final Lookup initialValue; final Function(Lookup) onPick; diff --git a/lib/views/widgets/equipment/device_button.dart b/lib/views/widgets/equipment/device_button.dart index 78617fc2..80c7194a 100644 --- a/lib/views/widgets/equipment/device_button.dart +++ b/lib/views/widgets/equipment/device_button.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class DeviceButton extends StatelessWidget { final Function(Device) onDevicePick; final Device device; @@ -56,18 +56,18 @@ class DeviceButton extends StatelessWidget { ): Expanded( child: ListTile( - title: Text("${_subtitle.sn} : " + device.serialNumber, + title: Text("${_subtitle.sn} : ${device.serialNumber}", style: Theme.of(context).textTheme.subtitle1, ), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Divider(color: Theme.of(context).textTheme.subtitle1.color,), - Text("${_subtitle.brand} : " + device.brand, + Text("${_subtitle.brand} : ${device.modelDefinition.manufacturerName}", style: Theme.of(context).textTheme.subtitle2, ), Divider(color: Theme.of(context).textTheme.subtitle1.color,), - Text("${_subtitle.model} : " + device.model, + Text("${_subtitle.model} : ${device.modelDefinition.modelName}", style: Theme.of(context).textTheme.subtitle2, ), ], diff --git a/lib/views/widgets/equipment/device_item.dart b/lib/views/widgets/equipment/device_item.dart index aaa3112d..0ead41ef 100644 --- a/lib/views/widgets/equipment/device_item.dart +++ b/lib/views/widgets/equipment/device_item.dart @@ -1,9 +1,9 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/device/device.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class DeviceItem extends StatelessWidget { final Device device; final Function(Device) onPressed; @@ -28,7 +28,7 @@ class DeviceItem extends StatelessWidget { onPressed(device); }, child: ListTile( - title: Text("${_subtitle.sn} : " + device.serialNumber, + title: Text("${_subtitle.sn} : ${device.serialNumber}", style: Theme.of(context).textTheme.headline6.copyWith( color: AColors.white ), @@ -38,13 +38,13 @@ class DeviceItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Divider(color: Theme.of(context).scaffoldBackgroundColor,), - Text("${_subtitle.brand} : " + device.brand, + Text("${_subtitle.brand} : ${device.modelDefinition.manufacturerName}", style: Theme.of(context).textTheme.subtitle1.copyWith( color: AColors.white ), ), Divider(color: Theme.of(context).scaffoldBackgroundColor,), - Text("${_subtitle.model} : " + device.model, + Text("${_subtitle.model} : ${device.modelDefinition.modelName}", style: Theme.of(context).textTheme.subtitle1.copyWith( color: AColors.white ), diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 031ab2c1..bf697540 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -7,10 +10,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/equipment/device_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:test_sa/views/widgets/qr/scan_qr.dart'; -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleDevicePicker extends StatefulWidget { diff --git a/lib/views/widgets/gas_refill/gas_refill_item.dart b/lib/views/widgets/gas_refill/gas_refill_item.dart index e6ab7477..47af778b 100644 --- a/lib/views/widgets/gas_refill/gas_refill_item.dart +++ b/lib/views/widgets/gas_refill/gas_refill_item.dart @@ -1,20 +1,14 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; -import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/user.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/user/requests/report/create_service_report.dart'; -import 'package:test_sa/views/pages/user/requests/report/future_service_report.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; class GasRefillItem extends StatelessWidget { final int index; final GasRefillModel item; diff --git a/lib/views/widgets/gas_refill/gas_refill_list.dart b/lib/views/widgets/gas_refill/gas_refill_list.dart index b54c2ee9..e25797d2 100644 --- a/lib/views/widgets/gas_refill/gas_refill_list.dart +++ b/lib/views/widgets/gas_refill/gas_refill_list.dart @@ -1,14 +1,11 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/gas_refill/gas_refill_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; import 'package:test_sa/views/widgets/gas_refill/gas_refill_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:test_sa/views/widgets/requests/service_request_item.dart'; -import 'package:flutter/material.dart'; class GasRefillList extends StatelessWidget { final List items; final bool nextPage; diff --git a/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart b/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart index dc41e11d..aa9804cb 100644 --- a/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart +++ b/lib/views/widgets/gas_refill/gas_refill_update_details_item.dart @@ -3,7 +3,6 @@ import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/validator/validator.dart'; import 'package:test_sa/models/gas_refill/gas_refill_details.dart'; import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; diff --git a/lib/views/widgets/hospitals/hospital_auto_complete_field.dart b/lib/views/widgets/hospitals/hospital_auto_complete_field.dart index 68444be0..8091303c 100644 --- a/lib/views/widgets/hospitals/hospital_auto_complete_field.dart +++ b/lib/views/widgets/hospitals/hospital_auto_complete_field.dart @@ -1,3 +1,6 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -5,10 +8,6 @@ import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/hospitals/hospital_item.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:provider/provider.dart'; class HospitalAutoCompleteField extends StatefulWidget { final String initialValue; final Function(Hospital) onSearch; diff --git a/lib/views/widgets/hospitals/hospital_button.dart b/lib/views/widgets/hospitals/hospital_button.dart index 81c7d9e9..3d1f4bc0 100644 --- a/lib/views/widgets/hospitals/hospital_button.dart +++ b/lib/views/widgets/hospitals/hospital_button.dart @@ -1,11 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/hospitals/single_hospital_picker.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class HospitalButton extends StatelessWidget { final Function(Hospital) onHospitalPick; final Hospital hospital; diff --git a/lib/views/widgets/hospitals/hospital_item.dart b/lib/views/widgets/hospitals/hospital_item.dart index 523dace6..3ee5b699 100644 --- a/lib/views/widgets/hospitals/hospital_item.dart +++ b/lib/views/widgets/hospitals/hospital_item.dart @@ -1,7 +1,7 @@ +import 'package:flutter/material.dart'; import 'package:test_sa/models/hospital.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/material.dart'; class HospitalItem extends StatelessWidget { final Hospital hospital; final Function(Hospital) onPressed; diff --git a/lib/views/widgets/hospitals/single_hospital_picker.dart b/lib/views/widgets/hospitals/single_hospital_picker.dart index f2ee3c74..27ca0861 100644 --- a/lib/views/widgets/hospitals/single_hospital_picker.dart +++ b/lib/views/widgets/hospitals/single_hospital_picker.dart @@ -1,3 +1,5 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -6,8 +8,6 @@ import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_item.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import '../app_text_form_field.dart'; class SingleHospitalPicker extends StatefulWidget { diff --git a/lib/views/widgets/loaders/loading_manager.dart b/lib/views/widgets/loaders/loading_manager.dart index b0002ae1..d2a5273d 100644 --- a/lib/views/widgets/loaders/loading_manager.dart +++ b/lib/views/widgets/loaders/loading_manager.dart @@ -48,7 +48,7 @@ class _LoadingManagerState extends State { Subtitle subtitle = AppLocalization.of(context).subtitle; Widget placeHolder; // to load data if load not start - if(widget.isLoading == false && widget.stateCode == null){ + if(widget.isLoading != true && widget.stateCode == null){ WidgetsBinding.instance.addPostFrameCallback((timeStamp) { widget.onRefresh(); }); diff --git a/lib/views/widgets/notifications/notification_item.dart b/lib/views/widgets/notifications/notification_item.dart index e29cc3c4..f505b5d3 100644 --- a/lib/views/widgets/notifications/notification_item.dart +++ b/lib/views/widgets/notifications/notification_item.dart @@ -1,8 +1,8 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:test_sa/models/app_notification.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; class NotificationItem extends StatelessWidget { final AppNotification notification; final Function(AppNotification) onPressed; diff --git a/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart index e516bb3c..bf18fd66 100644 --- a/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart +++ b/lib/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart @@ -81,7 +81,7 @@ class _AutoCompleteDeviceNumberFieldState extends State { }, ), const SizedBox(height: 8,), - const ASubTitle("Status"), - // if(widget.enableValidate && widget.model.status == null) - // ASubTitle(subtitle.requiredWord,color: Colors.red,), - const SizedBox(height: 4,), - PentryStatusMenu( - initialValue: widget.model.status, - onSelect: (status){ - widget.model.status = status; - }, - ), + // const ASubTitle("Status"), + // // if(widget.enableValidate && widget.model.status == null) + // // ASubTitle(subtitle.requiredWord,color: Colors.red,), + // const SizedBox(height: 4,), + // PentryStatusMenu( + // initialValue: widget.model.status, + // onSelect: (status){ + // widget.model.status = status; + // }, + // ), const SizedBox(height: 8,), const ASubTitle("Actual Visit Date"), if(widget.enableValidate && widget.model.actualVisitDate == null) @@ -125,17 +124,25 @@ class _PentryInfoFormState extends State { }, ), const SizedBox(height: 8,), - const ASubTitle("Signature"), + const ASubTitle("Nurse Signature"), + ESignature( + oldSignature: widget.model.signatureNurse, + newSignature: widget.model.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + widget.model.localNurseSignature = signature; + widget.model.signatureNurse = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + }, + ), + const SizedBox(height: 8,), + const ASubTitle("Engineer Signature"), ESignature( - oldSignature: widget.model.signature, - newSignature: widget.model.localSignature, - onSaved: (signature){ - widget.model.localSignature = signature; - if(signature == null || signature.isEmpty) { - widget.model.signature = null; - return; - } - widget.model.signature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; + oldSignature: widget.model.signatureEngineer, + newSignature: widget.model.localNurseSignature, + onChange: (signature){ + if(signature == null || signature.isEmpty) {return;} + widget.model.localNurseSignature = signature; + widget.model.signatureEngineer = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; }, ), const SizedBox(height: 8,), diff --git a/lib/views/widgets/pentry/pentry_pm_kit_form.dart b/lib/views/widgets/pentry/pentry_pm_kit_form.dart index e0345597..c9194466 100644 --- a/lib/views/widgets/pentry/pentry_pm_kit_form.dart +++ b/lib/views/widgets/pentry/pentry_pm_kit_form.dart @@ -3,7 +3,6 @@ import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/pantry/pm_kit.dart'; import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; diff --git a/lib/views/widgets/search/service_request_search_bar.dart b/lib/views/widgets/search/service_request_search_bar.dart index 5bb981bd..a3f8b96d 100644 --- a/lib/views/widgets/search/service_request_search_bar.dart +++ b/lib/views/widgets/search/service_request_search_bar.dart @@ -9,11 +9,9 @@ import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field.dart'; import 'package:test_sa/views/widgets/status/service_request/service_request_status_mune.dart'; -import 'package:test_sa/views/widgets/status/service_request/service_request_types_mune.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import '../app_text_form_field.dart'; -import 'filter_item.dart'; class ServiceRequestsSearchDialog extends StatefulWidget { final ServiceRequestSearch initialSearchValue; final bool expandedSearch; diff --git a/lib/views/widgets/search/visits_search_bar.dart b/lib/views/widgets/search/visits_search_bar.dart index b745fce2..77172dbb 100644 --- a/lib/views/widgets/search/visits_search_bar.dart +++ b/lib/views/widgets/search/visits_search_bar.dart @@ -15,7 +15,6 @@ import 'package:test_sa/views/widgets/status/pentry/pentry_visit_status_mune.dar import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import '../app_text_form_field.dart'; -import 'filter_item.dart'; class VisitsSearchDialog extends StatefulWidget { final VisitsSearch initialSearchValue; final bool expandedSearch; diff --git a/lib/views/widgets/speech_to_text/speech_to_text.dart b/lib/views/widgets/speech_to_text/speech_to_text.dart index 03e2eda1..59cabf8a 100644 --- a/lib/views/widgets/speech_to_text/speech_to_text.dart +++ b/lib/views/widgets/speech_to_text/speech_to_text.dart @@ -1,15 +1,12 @@ -import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button2.dart'; -import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_to_text.dart'; - -import '../app_text_form_field.dart'; +import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/views/widgets/buttons/app_icon_button2.dart'; +import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; class SpeechToTextButton extends StatefulWidget { final TextEditingController controller; diff --git a/lib/views/widgets/status/employee/single_type_menu.dart b/lib/views/widgets/status/employee/single_type_menu.dart index 4ee21b7d..ccb46c0a 100644 --- a/lib/views/widgets/status/employee/single_type_menu.dart +++ b/lib/views/widgets/status/employee/single_type_menu.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:test_sa/models/engineer.dart'; -import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; class SingleEngineerMenu extends StatefulWidget { diff --git a/lib/views/widgets/status/gas_refill/gas_cylinder_type.dart b/lib/views/widgets/status/gas_refill/gas_cylinder_type.dart index 7402e3a7..9b2c264d 100644 --- a/lib/views/widgets/status/gas_refill/gas_cylinder_type.dart +++ b/lib/views/widgets/status/gas_refill/gas_cylinder_type.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_type_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; diff --git a/lib/views/widgets/status/report/service_report_status.dart b/lib/views/widgets/status/report/service_report_status.dart index c0f0633e..12adf5d3 100644 --- a/lib/views/widgets/status/report/service_report_status.dart +++ b/lib/views/widgets/status/report/service_report_status.dart @@ -24,43 +24,46 @@ class _ServiceReportStatusMenuState extends State { bool firstTime = true; @override Widget build(BuildContext context) { - SettingProvider _settingProvider = Provider.of(context); - UserProvider _userProvider = Provider.of(context); - ServiceReportStatusProvider _menuProvider = Provider.of(context); - ServiceReportLastCallsProvider _callsLastSituationsProvider = Provider.of(context,listen: false); + SettingProvider settingProvider = Provider.of(context); + UserProvider userProvider = Provider.of(context); + ServiceReportStatusProvider menuProvider = Provider.of(context); + ServiceReportLastCallsProvider callsLastSituationsProvider = Provider.of(context); if(firstTime){ - _callsLastSituationsProvider.reset(); + callsLastSituationsProvider.reset(); firstTime = false; } return LoadingManager( - isLoading: _menuProvider.isLoading == true, - isFailedLoading: _menuProvider.statuses == null, - stateCode: _menuProvider.stateCode, + isLoading: menuProvider.isLoading == true || callsLastSituationsProvider.isLoading == true, + isFailedLoading: menuProvider.statuses == null || callsLastSituationsProvider.calls == null, + stateCode: menuProvider.stateCode == null || callsLastSituationsProvider.stateCode == null ? null: + max(menuProvider.stateCode ?? 0,callsLastSituationsProvider.stateCode ?? 0), onRefresh: () async { - if(_menuProvider.stateCode == null){ - _menuProvider.reset(); - await _menuProvider.getTypes( - user: _userProvider.user, - host: _settingProvider.host + await callsLastSituationsProvider.getCalls( + user: userProvider.user, + host: settingProvider.host, + serviceStatus: widget.report.status?.id + ); + if(menuProvider.stateCode == null){ + menuProvider.reset(); + await menuProvider.getTypes( + user: userProvider.user, + host: settingProvider.host ); + setState(() {}); } - _callsLastSituationsProvider.getCalls( - user: _userProvider.user, - host: _settingProvider.host, - serviceStatus: widget.report.status?.id.toString() - ); }, child: SingleStatusMenu( - statuses: _menuProvider.statuses, + statuses: menuProvider.statuses, initialStatus: widget.report.status, onSelect: (status){ - // _callsLastSituationsProvider.getCalls( - // user: _userProvider.user, - // host: _settingProvider.host, - // serviceStatus: status.id.toString() - // ); - //widget.report.callLastSituation = null; + widget.report.callLastSituation = null; + callsLastSituationsProvider.getCalls( + user: userProvider.user, + host: settingProvider.host, + serviceStatus: status.id + ); + widget.onSelect(status); }, ) diff --git a/lib/views/widgets/status/report/service_status.dart b/lib/views/widgets/status/report/service_status.dart index 37eb554e..3c4eb794 100644 --- a/lib/views/widgets/status/report/service_status.dart +++ b/lib/views/widgets/status/report/service_status.dart @@ -6,11 +6,11 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/single_status_menu.dart'; -class ServiceStatusMenu extends StatelessWidget { +class ServiceAssetTypeMenu extends StatelessWidget { final Function(Lookup) onSelect; final Lookup initialValue; - const ServiceStatusMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); + const ServiceAssetTypeMenu({Key key, this.onSelect, this.initialValue}) : super(key: key); @override Widget build(BuildContext context) { SettingProvider _settingProvider = Provider.of(context); diff --git a/lib/views/widgets/status/service_request/service_request_status_mune.dart b/lib/views/widgets/status/service_request/service_request_status_mune.dart index b856f6c6..8ac8d1c5 100644 --- a/lib/views/widgets/status/service_request/service_request_status_mune.dart +++ b/lib/views/widgets/status/service_request/service_request_status_mune.dart @@ -1,9 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_status_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_type_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/models/lookup.dart'; diff --git a/lib/views/widgets/status/service_request/service_request_through_mune.dart b/lib/views/widgets/status/service_request/service_request_through_mune.dart index 4612250a..81a1c5b0 100644 --- a/lib/views/widgets/status/service_request/service_request_through_mune.dart +++ b/lib/views/widgets/status/service_request/service_request_through_mune.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; diff --git a/lib/views/widgets/status/service_request/service_request_types_mune.dart b/lib/views/widgets/status/service_request/service_request_types_mune.dart index 223a5725..1cba8f6a 100644 --- a/lib/views/widgets/status/service_request/service_request_types_mune.dart +++ b/lib/views/widgets/status/service_request/service_request_types_mune.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_through_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_type_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; diff --git a/lib/views/widgets/status/single_status_menu.dart b/lib/views/widgets/status/single_status_menu.dart index fdf2b78d..bfe4de6d 100644 --- a/lib/views/widgets/status/single_status_menu.dart +++ b/lib/views/widgets/status/single_status_menu.dart @@ -23,12 +23,19 @@ class _SingleStatusMenuState extends State { @override void didUpdateWidget(covariant SingleStatusMenu oldWidget) { - if(widget.initialStatus != null && widget.initialStatus.value != null){ - _selectedStatus = widget.statuses?.firstWhere( + if(widget.initialStatus != null ){ + final result = widget.statuses?.where( (element) { return element == widget.initialStatus; }); - widget.onSelect(_selectedStatus); + if(result.isNotEmpty) { + _selectedStatus =result.first; + }else{ + _selectedStatus =null; + } + if(widget.initialStatus.id != _selectedStatus.id) { + widget.onSelect(_selectedStatus); + } } else { _selectedStatus = null; } @@ -37,12 +44,15 @@ class _SingleStatusMenuState extends State { @override void initState() { - if(widget.initialStatus != null && widget.initialStatus.value != null){ - _selectedStatus = widget.statuses?.firstWhere( + if(widget.initialStatus != null){ + final result = widget.statuses?.where( (element) { return element == widget.initialStatus; }); - widget.onSelect(_selectedStatus); + if(result.isNotEmpty) _selectedStatus = result.first; + if(widget.initialStatus.id != _selectedStatus.id) { + widget.onSelect(_selectedStatus); + } } super.initState();