From 7044cc8ff023252a7c6d78316664949d49168c84 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Tue, 30 May 2023 14:56:31 +0300 Subject: [PATCH] Enhancements --- .../api/service_requests_provider.dart | 45 +++++++++++-------- lib/models/user.dart | 2 +- .../pages/user/requests/create_request.dart | 29 +++++++----- 3 files changed, 46 insertions(+), 30 deletions(-) diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 6f853e06..bde8b2cf 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -134,7 +134,7 @@ class ServiceRequestsProvider extends ChangeNotifier { var body = { "id": 0, "calNo": "", - "callCreatedBy": {"id": user.id, "name": user.userName}, + "callCreatedBy": {"id": user.id, "name": user.userName ?? ""}, "assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId], "requestedDate": DateTime.now().toIso8601String(), "requestedTime": DateTime.now().toIso8601String(), @@ -150,7 +150,7 @@ class ServiceRequestsProvider extends ChangeNotifier { "callSiteContactPerson": [ { "id": 0, - "employeeCode": user.email, + // "employeeCode": user.email, "name": user.userName, "telephone": user.phoneNumber, // "job": "", @@ -215,12 +215,15 @@ class ServiceRequestsProvider extends ChangeNotifier { @required ServiceRequest request, DateTime date, }) async { - String callNo = await getServiceRequestCallNoById(requestId: request.id) ?? ""; + Map serviceRequest = await getServiceRequestById(requestId: request.id) ?? ""; + final List callSiteContacts = (serviceRequest['callSiteContactPerson'] as List); + final Map callSiteContactPerson = callSiteContacts.isEmpty ? {} : callSiteContacts[0]; + print(callSiteContactPerson); Response response; var body = { "id": request.id, - "callNo": callNo, - "callCreatedBy": {"id": user.id, "name": user.userName}, + "callNo": serviceRequest['callNo'], + "callCreatedBy": serviceRequest['callCreatedBy'], "requestedDate": date?.toIso8601String() ?? "", "requestedTime": date?.toIso8601String() ?? "", "priority": request.priority?.toMap(), @@ -232,13 +235,13 @@ class ServiceRequestsProvider extends ChangeNotifier { "attachmentsCallRequest": request.devicePhotos?.map((e) => {"name": e})?.toList(), "callSiteContactPerson": [ { - "id": 0, - "employeeCode": user.email, - "name": user.userName, - "telephone": user.phoneNumber, - // "job": "", - "email": user.email, - // "land": "", + "id": callSiteContactPerson['id'] ?? 0, + "employeeCode": callSiteContactPerson['employeeCode'], + "name": callSiteContactPerson['name'] ?? user.userName, + "telephone": callSiteContactPerson['telephone'] ?? user.phoneNumber, + "job": callSiteContactPerson['job'], + "email": callSiteContactPerson['email'] ?? user.email, + "land": callSiteContactPerson['land'], "contactUserId": user.id, }, ], @@ -249,8 +252,8 @@ class ServiceRequestsProvider extends ChangeNotifier { "firstAction": request.firstAction?.toMap(), "loanAvailablity": request.loanAvailability?.toMap(), "comments": request.comment, - "firstActionDate": null, - "visitDate": null, + "firstActionDate": serviceRequest['firstActionDate'], + "visitDate": date?.toIso8601String() ?? "", "callReview": null, "reviewComment": null, }; @@ -419,7 +422,7 @@ class ServiceRequestsProvider extends ChangeNotifier { } } - Future getServiceRequestCallNoById({@required String requestId}) async { + Future> getServiceRequestById({@required String requestId}) async { Response response; try { response = await ApiManager.instance.get( @@ -427,16 +430,20 @@ class ServiceRequestsProvider extends ChangeNotifier { ); } catch (error) { print(error); - return ""; + return {}; } // If the call to the server was successful, parse the JSON. if (response.statusCode >= 200 && response.statusCode < 300) { // If the call to the server was successful, parse the JSON. - print(json.decode(response.body)["data"]); - return json.decode(response.body)["data"]["callNo"] as String; + return { + "callNo": json.decode(response.body)["data"]["callNo"], + "callCreatedBy": json.decode(response.body)["data"]["callCreatedBy"], + "callSiteContactPerson": json.decode(response.body)["data"]["callSiteContactPerson"], + "firstActionDate": json.decode(response.body)["data"]["firstActionDate"], + }; } else { - return ""; + return {}; } } } diff --git a/lib/models/user.dart b/lib/models/user.dart index 89b031a5..7cfcb713 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -79,7 +79,7 @@ class User { switch (userRoles.first.name) { case "Engineer": return UsersTypes.engineer; - case "Nurse": + case "Hospital": return UsersTypes.normal_user; default: return null; diff --git a/lib/views/pages/user/requests/create_request.dart b/lib/views/pages/user/requests/create_request.dart index c6135982..fb676de4 100644 --- a/lib/views/pages/user/requests/create_request.dart +++ b/lib/views/pages/user/requests/create_request.dart @@ -68,6 +68,8 @@ class CreateRequestPageState extends State { _serviceRequest = widget.serviceRequest; _device = _serviceRequest.device; _deviceImages.addAll(_serviceRequest.devicePhotos.map((e) => File(e)).toList()); + } else { + _serviceRequest = ServiceRequest(); } super.initState(); } @@ -197,7 +199,7 @@ class CreateRequestPageState extends State { height: 4, ), ServiceRequestedThroughMenu( - initialValue: const Lookup(name: "App", value: 3), + initialValue: const Lookup(name: "App", value: 375), onSelect: (status) { _serviceRequest.requestedThrough = status; }, @@ -211,7 +213,19 @@ class CreateRequestPageState extends State { ServiceRequestedFirstAction( initialValue: _serviceRequest.firstAction, onSelect: (status) { + _dateTime = null; _serviceRequest.firstAction = status; + _serviceRequestsProvider.notifyListeners(); + }, + ), + if (_serviceRequest.firstAction != null) 12.height, + if (_serviceRequest.firstAction != null) + ADatePicker( + date: _dateTime, + from: DateTime.now(), + onDatePicker: (date) { + _dateTime = date; + setState(() {}); }, ), if (widget.serviceRequest != null) 12.height, @@ -232,15 +246,6 @@ class CreateRequestPageState extends State { images: _deviceImages, ), 12.height, - ADatePicker( - date: _dateTime, - from: DateTime.now(), - onDatePicker: (date) { - _dateTime = date; - setState(() {}); - }, - ), - 12.height, SpeechToTextButton(controller: _maintenanceController), 12.height, ATextFormField( @@ -283,6 +288,10 @@ class CreateRequestPageState extends State { Fluttertoast.showToast(msg: _subtitle.pickDevice); return; } + if (_serviceRequest.firstAction != null && _dateTime == null) { + Fluttertoast.showToast(msg: _subtitle.noDateFound); + return; + } _formKey.currentState.save(); _serviceRequest.deviceId = _device?.id; _isLoading = true;