|
|
|
|
@ -1,16 +1,12 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
|
|
|
import 'package:fluttertoast/fluttertoast.dart';
|
|
|
|
|
import 'package:http/http.dart';
|
|
|
|
|
import 'package:test_sa/controllers/api_routes/api_manager.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/extensions/context_extension.dart';
|
|
|
|
|
import 'package:test_sa/extensions/string_extensions.dart';
|
|
|
|
|
import 'package:test_sa/models/issue.dart';
|
|
|
|
|
import 'package:test_sa/models/lookup.dart';
|
|
|
|
|
import 'package:test_sa/models/service_request/pending_service_request_model.dart';
|
|
|
|
|
import 'package:test_sa/models/service_request/service_report.dart';
|
|
|
|
|
@ -30,7 +26,6 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
// number of items call in each request
|
|
|
|
|
final pageItemNumber = 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//reset provider data
|
|
|
|
|
void reset() {
|
|
|
|
|
workOrders = [];
|
|
|
|
|
@ -42,16 +37,8 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
// state code of current request to defied error message
|
|
|
|
|
// like 400 customer request failed
|
|
|
|
|
// 500 service not available
|
|
|
|
|
int stateCode;
|
|
|
|
|
bool _isDetialLoading=false;
|
|
|
|
|
bool _ackhnowledge = false;
|
|
|
|
|
|
|
|
|
|
bool get ackhnowledge => _ackhnowledge;
|
|
|
|
|
|
|
|
|
|
set ackhnowledge(bool value) {
|
|
|
|
|
_ackhnowledge = value;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
int? stateCode;
|
|
|
|
|
bool _isDetialLoading = false;
|
|
|
|
|
|
|
|
|
|
bool get isDetialLoading => _isDetialLoading;
|
|
|
|
|
|
|
|
|
|
@ -59,32 +46,23 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
_isDetialLoading = value;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
} // true if there is next page in product list and false if not
|
|
|
|
|
|
|
|
|
|
bool nextPage = true;
|
|
|
|
|
TimeOfDay _selectedTime ;
|
|
|
|
|
TimeOfDay? _selectedTime;
|
|
|
|
|
|
|
|
|
|
TimeOfDay get selectedTime => _selectedTime;
|
|
|
|
|
TimeOfDay? get selectedTime => _selectedTime;
|
|
|
|
|
|
|
|
|
|
set selectedTime(TimeOfDay value) {
|
|
|
|
|
set selectedTime(TimeOfDay? value) {
|
|
|
|
|
_selectedTime = value;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
} // list of user requests
|
|
|
|
|
List<ServiceRequest> serviceRequests;
|
|
|
|
|
List<SearchWorkOrder> workOrders = [];
|
|
|
|
|
SearchWorkOrder _formWorkOrder=SearchWorkOrder();
|
|
|
|
|
|
|
|
|
|
SearchWorkOrder get formWorkOrder => _formWorkOrder;
|
|
|
|
|
|
|
|
|
|
set formWorkOrder(SearchWorkOrder value) {
|
|
|
|
|
_formWorkOrder = value;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<ServiceRequest>? serviceRequests;
|
|
|
|
|
List<SearchWorkOrder> workOrders = [];
|
|
|
|
|
List<SparePartsWorkOrders> _sparePartList = [];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SparePartsWorkOrders _initialSelectedSparePart = SparePartsWorkOrders();
|
|
|
|
|
ServiceRequest _currentSelectedRequest;
|
|
|
|
|
ServiceRequest? _currentSelectedRequest;
|
|
|
|
|
int _selectedListIndex = 0;
|
|
|
|
|
|
|
|
|
|
int get selectedListIndex => _selectedListIndex;
|
|
|
|
|
@ -94,19 +72,17 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ServiceRequest get currentSelectedRequest => _currentSelectedRequest;
|
|
|
|
|
ServiceRequest? get currentSelectedRequest => _currentSelectedRequest;
|
|
|
|
|
|
|
|
|
|
set currentSelectedRequest(ServiceRequest value) {
|
|
|
|
|
set currentSelectedRequest(ServiceRequest? value) {
|
|
|
|
|
_currentSelectedRequest = value;
|
|
|
|
|
print('notify listner for current selected request Called...');
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// when requests in-process _loading = true
|
|
|
|
|
// done _loading = true
|
|
|
|
|
// failed _loading = false
|
|
|
|
|
bool isLoading;
|
|
|
|
|
bool isLoading = false;
|
|
|
|
|
|
|
|
|
|
ServiceRequestSearch search = ServiceRequestSearch();
|
|
|
|
|
|
|
|
|
|
@ -115,7 +91,7 @@ class ServiceRequestsProvider 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<int> getRequests({@required int hospitalId}) async {
|
|
|
|
|
Future<int> getRequests({required int hospitalId}) async {
|
|
|
|
|
if (isLoading == true) return -2;
|
|
|
|
|
isLoading = true;
|
|
|
|
|
if (serviceRequests?.isEmpty ?? false) notifyListeners();
|
|
|
|
|
@ -137,7 +113,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
List requestsListJson = json.decode(response.body)["data"];
|
|
|
|
|
List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList();
|
|
|
|
|
serviceRequests ??= [];
|
|
|
|
|
serviceRequests.addAll(serviceRequestsPage);
|
|
|
|
|
serviceRequests!.addAll(serviceRequestsPage);
|
|
|
|
|
notifyListeners();
|
|
|
|
|
if (serviceRequestsPage.length == pageItemNumber) {
|
|
|
|
|
nextPage = true;
|
|
|
|
|
@ -156,46 +132,46 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<ServiceRequest> getSingleServiceRequest({
|
|
|
|
|
@required String requestId,
|
|
|
|
|
@required String host,
|
|
|
|
|
@required User user,
|
|
|
|
|
@required AppLocalizations subtitle,
|
|
|
|
|
}) async {
|
|
|
|
|
String userData = '';
|
|
|
|
|
if (user != null) {
|
|
|
|
|
userData += "&uid=" + user.id;
|
|
|
|
|
userData += "&token=" + user.token;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await get(Uri.parse(
|
|
|
|
|
host +
|
|
|
|
|
URLs.getSingleServiceRequest +
|
|
|
|
|
'?call_nid=$requestId'
|
|
|
|
|
'$userData',
|
|
|
|
|
));
|
|
|
|
|
} catch (error) {
|
|
|
|
|
throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
|
|
|
|
|
List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList();
|
|
|
|
|
return _requests[0];
|
|
|
|
|
} else {
|
|
|
|
|
throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Future<ServiceRequest> getSingleServiceRequest({
|
|
|
|
|
// required String requestId,
|
|
|
|
|
// required String host,
|
|
|
|
|
// required User user,
|
|
|
|
|
// required AppLocalizations subtitle,
|
|
|
|
|
// }) async {
|
|
|
|
|
// String userData = '';
|
|
|
|
|
// if (user != null) {
|
|
|
|
|
// userData += "&uid=" + user!.id!;
|
|
|
|
|
// userData += "&token=" + user!.token!;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// Response response;
|
|
|
|
|
// try {
|
|
|
|
|
// response = await get(Uri.parse(
|
|
|
|
|
// host +
|
|
|
|
|
// URLs.getSingleServiceRequest +
|
|
|
|
|
// '?call_nid=$requestId'
|
|
|
|
|
// '$userData',
|
|
|
|
|
// ));
|
|
|
|
|
// } catch (error) {
|
|
|
|
|
// throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 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.
|
|
|
|
|
// List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
|
|
|
|
|
// List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList();
|
|
|
|
|
// return _requests[0];
|
|
|
|
|
// } else {
|
|
|
|
|
// throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Future<void> createRequest({
|
|
|
|
|
@required BuildContext context,
|
|
|
|
|
@required String host,
|
|
|
|
|
@required User user,
|
|
|
|
|
@required ServiceRequest serviceRequest,
|
|
|
|
|
required BuildContext context,
|
|
|
|
|
required String host,
|
|
|
|
|
required User user,
|
|
|
|
|
required ServiceRequest serviceRequest,
|
|
|
|
|
}) async {
|
|
|
|
|
var body = {
|
|
|
|
|
"id": 0,
|
|
|
|
|
@ -206,7 +182,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
"requestedTime": DateTime.now().toIso8601String(),
|
|
|
|
|
"client": user.clientId,
|
|
|
|
|
"callComments": serviceRequest.callComments,
|
|
|
|
|
if (serviceRequest.devicePhotos.isNotEmpty) "attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name": e}).toList(),
|
|
|
|
|
if (serviceRequest.devicePhotos?.isNotEmpty ?? false) "attachmentsCallRequest": serviceRequest.devicePhotos!.map((e) => {"name": e}).toList(),
|
|
|
|
|
"priority": serviceRequest.priority?.toJson(),
|
|
|
|
|
"defectType": serviceRequest.defectType?.toJson(),
|
|
|
|
|
"typeofRequest": serviceRequest.type?.toJson(),
|
|
|
|
|
@ -247,7 +223,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
if (serviceRequests != null) {
|
|
|
|
|
var data = json.decode(utf8.decode(response.bodyBytes));
|
|
|
|
|
if (data is List) {
|
|
|
|
|
serviceRequests.insert(0, ServiceRequest.fromJson(data[0]));
|
|
|
|
|
serviceRequests!.insert(0, ServiceRequest.fromJson(data[0]));
|
|
|
|
|
} else {
|
|
|
|
|
if (data["data"] != null && data["data"] == true) {
|
|
|
|
|
// serviceRequests.insert(0, ServiceRequest.fromJson(data[0]));
|
|
|
|
|
@ -267,33 +243,33 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> createIssueReport({
|
|
|
|
|
@required String host,
|
|
|
|
|
@required User user,
|
|
|
|
|
@required Issue issue,
|
|
|
|
|
}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
Map<String, String> body = issue.toMap();
|
|
|
|
|
body["uid"] = user.id;
|
|
|
|
|
body["token"] = user.token;
|
|
|
|
|
try {
|
|
|
|
|
response = await post(
|
|
|
|
|
Uri.parse(host + URLs.createReport),
|
|
|
|
|
body: body,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
stateCode = response.statusCode;
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {}
|
|
|
|
|
return response.statusCode;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<PendingAssetServiceRequest> checkAssetPendingRequest(int assetId) async {
|
|
|
|
|
// Future<int> createIssueReport({
|
|
|
|
|
// required String host,
|
|
|
|
|
// required User user,
|
|
|
|
|
// required Issue issue,
|
|
|
|
|
// }) async {
|
|
|
|
|
// Response response;
|
|
|
|
|
// Map<String, String> body = issue.toMap();
|
|
|
|
|
// body["uid"] = user.id;
|
|
|
|
|
// body["token"] = user.token;
|
|
|
|
|
// try {
|
|
|
|
|
// response = await post(
|
|
|
|
|
// Uri.parse(host + URLs.createReport),
|
|
|
|
|
// body: body,
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// stateCode = response.statusCode;
|
|
|
|
|
// if (response.statusCode >= 200 && response.statusCode < 300) {}
|
|
|
|
|
// return response.statusCode;
|
|
|
|
|
// } catch (error) {
|
|
|
|
|
// return -1;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Future<PendingAssetServiceRequest?> checkAssetPendingRequest(int assetId) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await await ApiManager.instance.get(URLs.CheckIfAssetHasAnotherServiceRequest + "?assetId=$assetId");
|
|
|
|
|
response = await ApiManager.instance.get(URLs.CheckIfAssetHasAnotherServiceRequest + "?assetId=$assetId");
|
|
|
|
|
stateCode = response.statusCode;
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {}
|
|
|
|
|
return PendingAssetServiceRequest.fromJson(json.decode(response.body)["data"]);
|
|
|
|
|
@ -303,16 +279,16 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> updateRequest({@required User user, @required ServiceRequest request}) async {
|
|
|
|
|
Future<int> updateRequest({required User user, required ServiceRequest request}) async {
|
|
|
|
|
isLoading = true;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
Map<String, dynamic> serviceRequest = await getServiceRequestById(requestId: request.id) ?? "";
|
|
|
|
|
Map<String, dynamic> serviceRequest = await getServiceRequestById(requestId: request.id!);
|
|
|
|
|
final List callSiteContacts = (serviceRequest['callSiteContactPerson'] as List);
|
|
|
|
|
final Map<String, dynamic> callSiteContactPerson = callSiteContacts.isEmpty ? {} : callSiteContacts[0];
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
if ((request.audio ?? "").isNotEmpty) {
|
|
|
|
|
request.audio = request.audio.substring(request.audio.indexOf("=") + 1, request.audio.length);
|
|
|
|
|
request.audio = request.audio!.substring(request.audio!.indexOf("=") + 1, request.audio!.length);
|
|
|
|
|
}
|
|
|
|
|
} catch (ex) {}
|
|
|
|
|
|
|
|
|
|
@ -328,7 +304,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
"requestedThrough": request.requestedThrough?.toJson(),
|
|
|
|
|
"voiceNote": request.audio,
|
|
|
|
|
"assets": request.deviceId == null ? [] : [request.deviceId],
|
|
|
|
|
"attachmentsCallRequest": (request.devicePhotos?.isNotEmpty ?? false) ? request.devicePhotos?.map((e) => {"name": e.getFileName})?.toList() : [],
|
|
|
|
|
"attachmentsCallRequest": (request.devicePhotos?.isNotEmpty ?? false) ? request.devicePhotos?.map((e) => {"name": e.getFileName}).toList() : [],
|
|
|
|
|
"assignedEmployee": {
|
|
|
|
|
"id": request.engineerId,
|
|
|
|
|
"name": request.engineerName,
|
|
|
|
|
@ -350,10 +326,10 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
"status": request.statusId == null
|
|
|
|
|
? null
|
|
|
|
|
: {
|
|
|
|
|
"id": request.statusId,
|
|
|
|
|
"name": request.statusLabel,
|
|
|
|
|
"value": request.statusValue,
|
|
|
|
|
},
|
|
|
|
|
"id": request.statusId,
|
|
|
|
|
"name": request.statusLabel,
|
|
|
|
|
"value": request.statusValue,
|
|
|
|
|
},
|
|
|
|
|
"callLastSituation": null,
|
|
|
|
|
"firstAction": request.firstAction?.toJson(),
|
|
|
|
|
"loanAvailablity": request.loanAvailability?.toJson(),
|
|
|
|
|
@ -387,12 +363,12 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> createServiceReport(BuildContext context, {@required ServiceReport report, @required User user, @required ServiceRequest request}) async {
|
|
|
|
|
Future<int> createServiceReport(BuildContext context, {required ServiceReport report, required User user, required ServiceRequest request}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
|
|
|
final body = report.toJson();
|
|
|
|
|
final callRequest = CallRequest(id: num.tryParse(request?.id ?? "")).toJson();
|
|
|
|
|
final callRequest = CallRequest(id: num.tryParse(request.id ?? "")).toJson();
|
|
|
|
|
final contactPerson = [
|
|
|
|
|
{
|
|
|
|
|
"id": 0,
|
|
|
|
|
@ -426,7 +402,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> createSubWorkOrder({@required SearchWorkOrder workOrder, bool makeSuppPersonsEmpty = false}) async {
|
|
|
|
|
Future<int> createSubWorkOrder({required SearchWorkOrder workOrder, bool makeSuppPersonsEmpty = false}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
if (makeSuppPersonsEmpty) workOrder.supplier?.suppPersons = [];
|
|
|
|
|
@ -444,19 +420,17 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CallRequest callRequestForWorkOrder;
|
|
|
|
|
CallRequest? callRequestForWorkOrder;
|
|
|
|
|
|
|
|
|
|
Future<CallRequest> getCallRequestForWorkOrder({String callId}) async {
|
|
|
|
|
Future<CallRequest?> getCallRequestForWorkOrder({required String callId}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await ApiManager.instance.get(
|
|
|
|
|
URLs.getCallRequestForWorkOrder + "?callId=$callId",
|
|
|
|
|
);
|
|
|
|
|
response = await ApiManager.instance.get(URLs.getCallRequestForWorkOrder + "?callId=$callId");
|
|
|
|
|
stateCode = response.statusCode;
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
|
|
|
// client's request was successfully received
|
|
|
|
|
Map<String, dynamic> listJson = json.decode(response.body)["data"];
|
|
|
|
|
log(listJson?.toString());
|
|
|
|
|
// log(listJson?.toString());
|
|
|
|
|
callRequestForWorkOrder = CallRequest.fromJson(listJson);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -468,13 +442,13 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<List<SearchWorkOrder>> searchWorkOrders({@required String callId}) async {
|
|
|
|
|
Future<List<SearchWorkOrder>> searchWorkOrders({required String callId}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
var body = {
|
|
|
|
|
"pageSize": pageItemNumber,
|
|
|
|
|
"pageNumber": ((workOrders?.length ?? 0) ~/ pageItemNumber) + 1,
|
|
|
|
|
"pageNumber": ((workOrders.length ?? 0) ~/ pageItemNumber) + 1,
|
|
|
|
|
"callId": callId,
|
|
|
|
|
};
|
|
|
|
|
response = await ApiManager.instance.post(URLs.searchWorkOrders, body: body);
|
|
|
|
|
@ -495,7 +469,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<ServiceReport> getSubWorkOrderDetails({@required String parentId}) async {
|
|
|
|
|
Future<ServiceReport?> getSubWorkOrderDetails({required String parentId}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await ApiManager.instance.get(URLs.getSubWorkerInfoAccordingToPreviousStep + "?parentId=$parentId");
|
|
|
|
|
@ -512,38 +486,38 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> createDuplicatedReport({
|
|
|
|
|
@required String host,
|
|
|
|
|
@required User user,
|
|
|
|
|
@required ServiceRequest request,
|
|
|
|
|
}) async {
|
|
|
|
|
// Future<int> createDuplicatedReport({
|
|
|
|
|
// required String host,
|
|
|
|
|
// required User user,
|
|
|
|
|
// required ServiceRequest request,
|
|
|
|
|
// }) async {
|
|
|
|
|
// Response response;
|
|
|
|
|
// String userData = '';
|
|
|
|
|
// if (user != null) {
|
|
|
|
|
// userData += "&uid=" + user.id;
|
|
|
|
|
// userData += "&token=" + user.token;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// try {
|
|
|
|
|
// response = await get(
|
|
|
|
|
// Uri.parse(host + URLs.createDuplicatedReport + "?nid=${request.id}" + userData),
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// stateCode = response.statusCode;
|
|
|
|
|
//
|
|
|
|
|
// if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
|
|
|
// reset();
|
|
|
|
|
// notifyListeners();
|
|
|
|
|
// }
|
|
|
|
|
// return response.statusCode;
|
|
|
|
|
// } catch (error) {
|
|
|
|
|
// return -1;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Future<int> updateServiceReport(BuildContext context, {required ServiceReport report}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
String userData = '';
|
|
|
|
|
if (user != null) {
|
|
|
|
|
userData += "&uid=" + user.id;
|
|
|
|
|
userData += "&token=" + user.token;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
response = await get(
|
|
|
|
|
Uri.parse(host + URLs.createDuplicatedReport + "?nid=${request.id}" + userData),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
stateCode = response.statusCode;
|
|
|
|
|
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
|
|
|
reset();
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
return response.statusCode;
|
|
|
|
|
} catch (error) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> updateServiceReport(BuildContext context, {@required ServiceReport report}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
report.callRequest = CallRequest(id: report.callRequest.id);
|
|
|
|
|
report.callRequest = CallRequest(id: report.callRequest!.id!);
|
|
|
|
|
Map<String, dynamic> body = report.toJson();
|
|
|
|
|
try {
|
|
|
|
|
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
|
|
|
@ -554,7 +528,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
Fluttertoast.showToast(msg: context.translation.successfulRequestMessage);
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
} else {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.failedToCompleteRequest}");
|
|
|
|
|
Fluttertoast.showToast(msg: context.translation.failedToCompleteRequest);
|
|
|
|
|
}
|
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
|
return response.statusCode;
|
|
|
|
|
@ -565,7 +539,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> updateWorkOrderDetails({@required SearchWorkOrder workOrder}) async {
|
|
|
|
|
Future<int> updateWorkOrderDetails({required SearchWorkOrder workOrder}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
//Map<String,dynamic> body = report.toMap(request);
|
|
|
|
|
// body["uid"] = user.id;
|
|
|
|
|
@ -594,20 +568,15 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int> updateServiceReportTimer({
|
|
|
|
|
@required String host,
|
|
|
|
|
@required User user,
|
|
|
|
|
@required TimerModel timer,
|
|
|
|
|
@required ServiceRequest request,
|
|
|
|
|
}) async {
|
|
|
|
|
Future<int> updateServiceReportTimer({required String host, required User user, required TimerModel timer, required ServiceRequest request}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
Map<String, dynamic> body = {};
|
|
|
|
|
body["uid"] = user.id;
|
|
|
|
|
body["token"] = user.token;
|
|
|
|
|
body["job_id"] = request.id;
|
|
|
|
|
body["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
|
|
|
|
|
body["end_time"] = (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
|
|
|
|
|
body["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
|
|
|
|
|
body["start_time"] = (timer.startAt!.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
|
|
|
|
|
body["end_time"] = (timer.endAt!.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
|
|
|
|
|
body["working_hours"] = (timer.durationInSecond! / 60 / 60).toStringAsFixed(5);
|
|
|
|
|
body["report_id"] = request.reportID;
|
|
|
|
|
try {
|
|
|
|
|
response = await post(
|
|
|
|
|
@ -626,7 +595,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<ServiceReport> getSingleServiceReport(BuildContext context, {@required int reportId}) async {
|
|
|
|
|
Future<ServiceReport> getSingleServiceReport(BuildContext context, {required int reportId}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await ApiManager.instance.get(URLs.getServiceReport + "?workOrderId=$reportId");
|
|
|
|
|
@ -643,29 +612,27 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<ServiceRequest> getServiceRequestObjectById({@required String requestId}) async {
|
|
|
|
|
Future<ServiceRequest?> getServiceRequestObjectById({required String requestId}) async {
|
|
|
|
|
try {
|
|
|
|
|
isDetialLoading = true;
|
|
|
|
|
Response response = await ApiManager.instance.get(URLs.getServiceRequestById + "?callRequestId=$requestId");
|
|
|
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
|
|
|
isDetialLoading=false;
|
|
|
|
|
isDetialLoading = false;
|
|
|
|
|
return ServiceRequest.fromJson(json.decode(response.body)["data"]);
|
|
|
|
|
} else {
|
|
|
|
|
isDetialLoading=false;
|
|
|
|
|
isDetialLoading = false;
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
isDetialLoading=false;
|
|
|
|
|
isDetialLoading = false;
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<Map<String, dynamic>> getServiceRequestById({@required String requestId}) async {
|
|
|
|
|
Future<Map<String, dynamic>> getServiceRequestById({required String requestId}) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
response = await ApiManager.instance.get(
|
|
|
|
|
URLs.getServiceRequestById + "?callRequestId=$requestId",
|
|
|
|
|
);
|
|
|
|
|
response = await ApiManager.instance.get(URLs.getServiceRequestById + "?callRequestId=$requestId");
|
|
|
|
|
} catch (error) {
|
|
|
|
|
print(error);
|
|
|
|
|
return {};
|
|
|
|
|
@ -686,29 +653,26 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<List<SearchWorkOrder>> searchForWorkOrders(
|
|
|
|
|
SearchWorkOrder search,
|
|
|
|
|
String callerId,
|
|
|
|
|
Lookup dateOperator,
|
|
|
|
|
String site,
|
|
|
|
|
) async {
|
|
|
|
|
SearchWorkOrder search,
|
|
|
|
|
String callerId,
|
|
|
|
|
Lookup dateOperator,
|
|
|
|
|
String site,
|
|
|
|
|
) async {
|
|
|
|
|
Response response;
|
|
|
|
|
try {
|
|
|
|
|
var body = {
|
|
|
|
|
"pageSize": pageItemNumber,
|
|
|
|
|
"pageNumber": ((workOrders?.length ?? 0) ~/ pageItemNumber) + 1,
|
|
|
|
|
if (callerId?.isNotEmpty ?? false) "callId": callerId,
|
|
|
|
|
"pageNumber": ((workOrders.length ?? 0) ~/ pageItemNumber) + 1,
|
|
|
|
|
if (callerId.isNotEmpty ?? false) "callId": callerId,
|
|
|
|
|
if (search.assetType != null) "assetSerialNo": search.assetType?.name,
|
|
|
|
|
if (search.workOrderNo != null) "workOrderNo": search.workOrderNo,
|
|
|
|
|
if (search.id != null) "workOrderNo": search.id?.toString(),
|
|
|
|
|
if (search.calllastSituation != null) "callslastSituationWO": search.calllastSituation.toJson(),
|
|
|
|
|
if (search.assignedEmployee != null)
|
|
|
|
|
"assignedEmployees": [
|
|
|
|
|
search.assignedEmployee.id,
|
|
|
|
|
],
|
|
|
|
|
if (search.id != null) "workOrderNo": search.id.toString(),
|
|
|
|
|
if (search.calllastSituation != null) "callslastSituationWO": search.calllastSituation!.toJson(),
|
|
|
|
|
if (search.assignedEmployee != null) "assignedEmployees": [search.assignedEmployee!.id],
|
|
|
|
|
// "statusWO": [],
|
|
|
|
|
if (site?.isNotEmpty ?? false) "site": site,
|
|
|
|
|
if (search.visitDate != null && dateOperator != null) "visitDateSymbol": dateOperator?.toJson(),
|
|
|
|
|
if (search.visitDate != null && dateOperator != null) "visitDateFrom": search.visitDate,
|
|
|
|
|
if (site.isNotEmpty ?? false) "site": site,
|
|
|
|
|
if (search.visitDate != null) "visitDateSymbol": dateOperator.toJson(),
|
|
|
|
|
if (search.visitDate != null) "visitDateFrom": search.visitDate,
|
|
|
|
|
};
|
|
|
|
|
print(body);
|
|
|
|
|
response = await ApiManager.instance.post(URLs.searchWorkOrders, body: body);
|
|
|
|
|
@ -731,11 +695,11 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<SuppEngineerWorkOrders> addSupplierEngineer(SupplierEngineer supplierEngineer) async {
|
|
|
|
|
Future<SuppEngineerWorkOrders?> addSupplierEngineer(SupplierEngineer supplierEngineer) async {
|
|
|
|
|
isLoading = true;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
Response response;
|
|
|
|
|
SuppEngineerWorkOrders res;
|
|
|
|
|
SuppEngineerWorkOrders? res;
|
|
|
|
|
try {
|
|
|
|
|
response = await ApiManager.instance.post(URLs.addSupplierEngineer, body: supplierEngineer.toJson());
|
|
|
|
|
stateCode = response.statusCode;
|
|
|
|
|
@ -758,6 +722,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
|
|
|
|
|
_initialSelectedSparePart = value;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<SparePartsWorkOrders> get sparePartList => _sparePartList;
|
|
|
|
|
|
|
|
|
|
set sparePartList(List<SparePartsWorkOrders> value) {
|
|
|
|
|
|