Enhancements

merge-requests/24/head
zaid_daoud 3 years ago
parent a33e4f4b7d
commit e25dc22bd0

@ -11,7 +11,7 @@ import 'package:test_sa/models/visits/visits_search.dart';
class PreventiveMaintenanceVisitsProvider extends ChangeNotifier { class PreventiveMaintenanceVisitsProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 50; final pageItemNumber = 10;
//reset provider data //reset provider data
void reset() { void reset() {

@ -14,13 +14,12 @@ import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
class ServiceRequestsProvider extends ChangeNotifier{ class ServiceRequestsProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 50; final pageItemNumber = 10;
//reset provider data //reset provider data
void reset(){ void reset() {
serviceRequests = null; serviceRequests = null;
nextPage = true; nextPage = true;
stateCode = null; stateCode = null;
@ -49,20 +48,19 @@ class ServiceRequestsProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getRequests ({ Future<int> getRequests({
@required String host, @required String host,
@required User user, @required User user,
@required int hospitalId, @required int hospitalId,
}) async { }) async {
if(isLoading == true) if (isLoading == true) return -2;
return -2;
isLoading = true; isLoading = true;
if(serviceRequests == null) notifyListeners(); if (serviceRequests == null) notifyListeners();
Response response; Response response;
try{ try {
Map<String,dynamic> body = {}; Map<String, dynamic> body = {};
body.addAll(search.toMap()); body.addAll(search.toMap());
body["pageNumber"] = (serviceRequests?.length ?? 0) ~/pageItemNumber + 1; body["pageNumber"] = (serviceRequests?.length ?? 0) ~/ pageItemNumber + 1;
body["pageSize"] = pageItemNumber; body["pageSize"] = pageItemNumber;
response = await ApiManager.instance.post( response = await ApiManager.instance.post(
@ -71,30 +69,27 @@ class ServiceRequestsProvider extends ChangeNotifier{
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
List requestsListJson = json.decode(response.body)["data"]; List requestsListJson = json.decode(response.body)["data"];
List<ServiceRequest> serviceRequestsPage = requestsListJson.map( List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList();
(request) => ServiceRequest.fromJson(request)).toList();
serviceRequests ??= []; serviceRequests ??= [];
serviceRequests.addAll(serviceRequestsPage); serviceRequests.addAll(serviceRequestsPage);
if(serviceRequestsPage.length == pageItemNumber){ if (serviceRequestsPage.length == pageItemNumber) {
nextPage = true; nextPage = true;
}else{ } else {
nextPage = false; nextPage = false;
} }
} }
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
isLoading = false; isLoading = false;
stateCode = -1; stateCode = -1;
notifyListeners(); notifyListeners();
return -1; return -1;
} }
} }
Future<ServiceRequest> getSingleServiceRequest({ Future<ServiceRequest> getSingleServiceRequest({
@ -104,115 +99,93 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required Subtitle subtitle, @required Subtitle subtitle,
}) async { }) async {
String userData = ''; String userData = '';
if(user != null){ if (user != null) {
userData += "&uid="+user.id; userData += "&uid=" + user.id;
userData += "&token="+user.token; userData += "&token=" + user.token;
} }
Response response; Response response;
try{ try {
response = await get( response = await get(Uri.parse(
Uri.parse( host +
host+URLs.getSingleServiceRequest URLs.getSingleServiceRequest +
+'?call_nid=$requestId' '?call_nid=$requestId'
'$userData',) '$userData',
); ));
}catch(error){ } catch (error) {
throw(HttpStatusManger.getStatusMessage( throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
status: -1, subtitle: subtitle));
} }
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
if (response.statusCode >= 200 && response.statusCode < 300){ if (response.statusCode >= 200 && response.statusCode < 300) {
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList(); List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList();
return _requests[0]; return _requests[0];
}else{ } else {
throw(HttpStatusManger.getStatusMessage( throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
status: response.statusCode, subtitle: subtitle));
} }
} }
Future<int> createRequest ({ Future<int> createRequest({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceRequest serviceRequest, @required ServiceRequest serviceRequest,
}) async { }) async {
var body = { var body = {
"callCreatedBy": { "callCreatedBy": {"id": user.id, "name": user.userName},
"id":user.id, "assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"name":user.userName
},
"assets":serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"requestedDate": DateTime.now().toIso8601String(), "requestedDate": DateTime.now().toIso8601String(),
"requestedTime": DateTime.now().toIso8601String(), "requestedTime": DateTime.now().toIso8601String(),
"client": user.hospital?.id ?? '', "client": user.hospital?.id ?? '',
"callComments": serviceRequest.maintenanceIssue, "callComments": serviceRequest.maintenanceIssue,
"attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name":e}).toList(), "attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name": e}).toList(),
"priority": serviceRequest.priority.toMap(), "priority": serviceRequest.priority.toMap(),
"defectType": serviceRequest.defectType.toMap(), "defectType": serviceRequest.defectType.toMap(),
"typeofRequest":serviceRequest.type.toMap(), "typeofRequest": serviceRequest.type.toMap(),
"requestedThrough":serviceRequest.type.toMap(), "requestedThrough": serviceRequest.type.toMap(),
}; };
if(serviceRequest.audio != null){ if (serviceRequest.audio != null) {
body["voiceNote"] = serviceRequest.audio; body["voiceNote"] = serviceRequest.audio;
} }
Response response; Response response;
try{ try {
response = await ApiManager.instance.post( response = await ApiManager.instance.post(URLs.createRequest, body: body);
URLs.createRequest,
body: body
);
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
if(serviceRequests != null) if (serviceRequests != null) serviceRequests.insert(0, ServiceRequest.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
serviceRequests.insert(
0,
ServiceRequest.fromJson(
json.decode(utf8.decode(response.bodyBytes))[0]
)
);
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createIssueReport ({ Future<int> createIssueReport({
@required String host, @required String host,
@required User user, @required User user,
@required Issue issue, @required Issue issue,
}) async { }) async {
Response response; Response response;
Map<String,String> body = issue.toMap(); Map<String, String> body = issue.toMap();
body["uid"] = user.id; body["uid"] = user.id;
body["token"] = user.token; body["token"] = user.token;
try{ try {
response = await post( response = await post(
Uri.parse(host+URLs.createReport), Uri.parse(host + URLs.createReport),
body: body, body: body,
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {}
}
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateDate ({ Future<int> updateDate({
@required String host, @required String host,
@required User user, @required User user,
@required String newDate, @required String newDate,
@ -220,49 +193,43 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
Map<String,String> body = {}; Map<String, String> body = {};
body["uid"] = user.id; body["uid"] = user.id;
body["token"] = user.token; body["token"] = user.token;
body["nid"] = request.id; body["nid"] = request.id;
if(newDate != null) body["date"] = newDate; if (newDate != null) body["date"] = newDate;
if(employee != null) body["ass_emp"] = employee.id.toString(); if (employee != null) body["ass_emp"] = employee.id.toString();
try{ try {
response = await post( response = await post(
Uri.parse( Uri.parse(
//host+ //host+
URLs.updateRequestDate URLs.updateRequestDate),
),
body: body, body: body,
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
request.engineerName = employee.name; request.engineerName = employee.name;
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createServiceReport ({ Future<int> createServiceReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceReport report, @required ServiceReport report,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
try {
try{ Map<String, dynamic> body = report.toMap(request);
Map<String,dynamic> body = report.toMap(request);
// body["uid"] = user.id; // body["uid"] = user.id;
// body["token"] = user.token; // body["token"] = user.token;
response = await ApiManager.instance.post( response = await ApiManager.instance.post(URLs.createServiceReport, body: body);
URLs.createServiceReport, print(response.body);
body: body
);
// response = await post( // response = await post(
// Uri.parse( // Uri.parse(
// host+URLs.createServiceReport), // host+URLs.createServiceReport),
@ -270,54 +237,46 @@ class ServiceRequestsProvider extends ChangeNotifier{
// ); // );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createDuplicatedReport ({ Future<int> createDuplicatedReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
String userData = ''; String userData = '';
if(user != null){ if (user != null) {
userData += "&uid="+user.id; userData += "&uid=" + user.id;
userData += "&token="+user.token; userData += "&token=" + user.token;
} }
try{ try {
response = await get( response = await get(
Uri.parse( Uri.parse(host + URLs.createDuplicatedReport + "?nid=${request.id}" + userData),
host+URLs.createDuplicatedReport
+"?nid=${request.id}"
+userData),
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateServiceReport ({ Future<int> updateServiceReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceReport report, @required ServiceReport report,
@ -329,14 +288,11 @@ class ServiceRequestsProvider extends ChangeNotifier{
// body["token"] = user.token; // body["token"] = user.token;
// body["job_id"] = request.id; // body["job_id"] = request.id;
// body["report_id"] = request.reportID; // body["report_id"] = request.reportID;
try{ try {
Map<String,dynamic> body = report.toMap(request); Map<String, dynamic> body = report.toMap(request);
// body["uid"] = user.id; // body["uid"] = user.id;
// body["token"] = user.token; // body["token"] = user.token;
response = await ApiManager.instance.put( response = await ApiManager.instance.put(URLs.updateServiceReport, body: body);
URLs.updateServiceReport,
body: body
);
// response = await post( // response = await post(
// Uri.parse( // Uri.parse(
// host+URLs.updateServiceReport), // host+URLs.updateServiceReport),
@ -344,52 +300,46 @@ class ServiceRequestsProvider extends ChangeNotifier{
// ); // );
// stateCode = response.statusCode; // stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateServiceReportTimer ({ Future<int> updateServiceReportTimer({
@required String host, @required String host,
@required User user, @required User user,
@required TimerModel timer, @required TimerModel timer,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
Map<String,dynamic> body = {}; Map<String, dynamic> body = {};
body["uid"] = user.id; body["uid"] = user.id;
body["token"] = user.token; body["token"] = user.token;
body["job_id"] = request.id; body["job_id"] = request.id;
body["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); body["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
body["end_time"] = (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); body["end_time"] = (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
body["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); body["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
body["report_id"] = request.reportID; body["report_id"] = request.reportID;
try{ try {
response = await post( response = await post(
Uri.parse( Uri.parse(host + URLs.updateServiceReport),
host+URLs.updateServiceReport),
body: body, body: body,
); );
//stateCode = response.statusCode; //stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// reset(); // reset();
// notifyListeners(); // notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<ServiceReport> getSingleServiceReport({ Future<ServiceReport> getSingleServiceReport({
@ -398,29 +348,21 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required User user, @required User user,
@required Subtitle subtitle, @required Subtitle subtitle,
}) async { }) async {
Response response; Response response;
try{ try {
response = await ApiManager.instance.get( response = await ApiManager.instance.get(
URLs.getServiceReport + "?workOrderId=$reportId", URLs.getServiceReport + "?workOrderId=$reportId",
); );
} catch (error) {
}catch(error){ throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
throw(HttpStatusManger.getStatusMessage(
status: -1, subtitle: subtitle));
} }
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
if (response.statusCode >= 200 && response.statusCode < 300){ if (response.statusCode >= 200 && response.statusCode < 300) {
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
return ServiceReport.fromJson( return ServiceReport.fromJson(json.decode(response.body)["data"], reportId);
json.decode(response.body)["data"],reportId); } else {
}else{ throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
throw(HttpStatusManger.getStatusMessage(
status: response.statusCode, subtitle: subtitle));
} }
} }
} }

@ -36,99 +36,133 @@ class ServiceReport {
Uint8List localNurseSignature; Uint8List localNurseSignature;
Uint8List localEngineerSignature; Uint8List localEngineerSignature;
ServiceReport({ ServiceReport(
this.id, {this.id,
this.visitDate, this.visitDate,
this.endDate, this.endDate,
this.assetType, this.assetType,
this.status, this.status,
this.type, this.type,
this.faultDescriptionId, this.faultDescriptionId,
//this.workHours, //this.workHours,
this.travelingHours, this.travelingHours,
this.parts, this.parts,
this.engineer, this.engineer,
this.workPreformed, this.workPreformed,
this.reason, this.reason,
this.operatingHours, this.operatingHours,
this.callLastSituation, this.callLastSituation,
this.jobSheetNumber, this.jobSheetNumber,
this.image, this.image,
this.device, this.device,
this.invoiceCode, this.invoiceCode,
this.invoiceNumber, this.invoiceNumber,
this.quantity = "1", this.quantity = "1",
this.timer, this.timer,
this.signatureNurse, this.signatureNurse,
this.signatureEngineer, this.signatureEngineer,
this.localNurseSignature, this.localNurseSignature,
this.localEngineerSignature this.localEngineerSignature});
});
Map<String,dynamic> toMap(ServiceRequest request){ Map<String, dynamic> toMap(ServiceRequest request) {
Map<String,dynamic> _map = {}; Map<String, dynamic> _map = {};
if(id != null) _map["id"] = id; if (id != null) _map["id"] = id;
if(visitDate != null) _map["visitDate"] = visitDate.toIso8601String(); if (visitDate != null) _map["visitDate"] = visitDate.toIso8601String();
//if(serviceType != null) _map["service_type"] = serviceType.id.toString(); //if(serviceType != null) _map["service_type"] = serviceType.id.toString();
if(status != null) _map["status"] = status?.toMap(); if (status != null) _map["status"] = status?.toMap();
if(type != null) _map["typeOfWO"] = type?.toMap(); if (type != null) _map["typeOfWO"] = type?.toMap();
if(assetType != null) _map["TypeOfWO"] = assetType?.toMap(); if (assetType != null) _map["TypeOfWO"] = assetType?.toMap();
//if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId; //if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId;
//if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours; //if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours;
if(timer != null){ if (timer != null) {
_map["startofWorkTime"] = timer.startAt.toIso8601String(); _map["startofWorkTime"] = timer.startAt.toIso8601String();
_map["endofWorkTime"] = (timer.endAt ?? DateTime.now()).toIso8601String(); _map["endofWorkTime"] = (timer.endAt ?? DateTime.now()).toIso8601String();
_map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); _map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
} }
if(travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours; if (travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours;
// if(workPreformed != null && workPreformed.isNotEmpty){ // if(workPreformed != null && workPreformed.isNotEmpty){
// _map["faultDescription"] = { // _map["faultDescription"] = {
// //"id":faultDescriptionId ?? 0, // //"id":faultDescriptionId ?? 0,
// "workPerformed":workPreformed // "workPerformed":workPreformed
// }; // };
// } // }
if(jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber; if (jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber;
if(parts != null && parts.isNotEmpty){ if (parts != null && parts.isNotEmpty) {
_map["sparePartsWorkOrders"] = parts.map((e) => e.toJson()).toList(); _map["sparePartsWorkOrders"] = parts.map((e) => e.toJson()).toList();
} }
if(device != null && device.id != null){ if (device != null && device.id != null) {
_map["callRequest"] = { _map["callRequest"] = {
"id":request.id, "id": request.id,
"asset":device?.toMap(assetType), "asset": device?.toMap(assetType),
}; };
_map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber; _map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber;
} }
_map["AssignedEmployee"] = engineer?.toMap(); _map["AssignedEmployee"] = engineer?.toMap();
//if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; //if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity;
//if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); //if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString();
if(reason != null) _map["reason"] = reason.toMap(); if (reason != null) _map["reason"] = reason.toMap();
//if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; //if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours;
if(callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap(); if (callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap();
//if(image != null) _map["image"] = image; //if(image != null) _map["image"] = image;
//if(invoiceCode != null) _map["invoice_no"] = invoiceCode; //if(invoiceCode != null) _map["invoice_no"] = invoiceCode;
//if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; //if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber;
if(image != null){ if (image != null) {
_map["attachmentsWorkOrder"]=[{ _map["attachmentsWorkOrder"] = [
"name":image {"name": image}
}]; ];
} }
_map["nurseSignature"] = signatureNurse; _map["nurseSignature"] = signatureNurse;
_map["engSignature"] = signatureEngineer; _map["engSignature"] = signatureEngineer;
// ///TODO : zaid
// _map["supplier"] = {
// "id": 0,
// "suppliername": "string",
// "name": "string",
// "website": "string",
// "email": "string",
// "code": "string",
// "suppNo": 0,
// "suppStatusId": 0,
// "cityId": 0,
// "person": "string",
// "comment": "string",
// "zipcode": 0,
// "contact": "string",
// "telephones": [
// {"id": 0, "supplierId": 0, "telephone": "string"}
// ],
// "faxes": [
// {"id": 0, "supplierId": 0, "fax": "string"}
// ],
// "addresses": [
// {"id": 0, "supplierId": 0, "address": "string"}
// ],
// "attachments": [
// {"id": 0, "supplierId": 0, "attachmentName": "string", "attachmentURL": "string"}
// ],
// "suppPersons": [
// {"id": 0, "supplierId": 0, "personName": "string", "personRoleId": 0, "contact": "string", "externalEngCode": "string", "email": "string"}
// ],
// "suppTCodes": [
// {"id": 0, "supplierId": 0, "codeTypeId": 0, "codeValue": "string"}
// ]
// };
return _map; return _map;
} }
bool validate(){ bool validate() {
if(visitDate == null) return false; if (visitDate == null) return false;
//if(serviceType == null) return false; //if(serviceType == null) return false;
if(status == null) return false; if (status == null) return false;
if(type == null && assetType==null) return false; if (type == null && assetType == null) return false;
if(engineer == null) return false; if (engineer == null) return false;
if(callLastSituation == null) return false; if (callLastSituation == null) return false;
if(callLastSituation?.value == 12){ if (callLastSituation?.value == 12) {
// if(invoiceCode != null || invoiceCode?.isEmpty == true) return false; // if(invoiceCode != null || invoiceCode?.isEmpty == true) return false;
if(invoiceNumber != null || invoiceNumber?.isEmpty== true ) return false; if (invoiceNumber != null || invoiceNumber?.isEmpty == true) return false;
} }
if(parts == null) return false; if (parts == null) return false;
//if(endDate == null) return false; //if(endDate == null) return false;
//if(reason == null) return false; //if(reason == null) return false;
//todo uncoment this line //todo uncoment this line
@ -138,16 +172,14 @@ class ServiceReport {
return true; return true;
} }
factory ServiceReport.fromJson(Map<String,dynamic> parsedJson,int id){ factory ServiceReport.fromJson(Map<String, dynamic> parsedJson, int id) {
List<Part> _parts = []; List<Part> _parts = [];
if(parsedJson["sparePartsWorkOrders"] != null){ if (parsedJson["sparePartsWorkOrders"] != null) {
if(parsedJson["sparePartsWorkOrders"][0]["id"] != null){ if (parsedJson["sparePartsWorkOrders"][0]["id"] != null) {
List partsList = parsedJson["sparePartsWorkOrders"]; List partsList = parsedJson["sparePartsWorkOrders"];
_parts = partsList.map((e) => Part.fromJson( _parts = partsList.map((e) => Part.fromJson(e["sparePart"], reportJson: e)).toList();
e["sparePart"],reportJson: e)).toList();
}
} }
}
return ServiceReport( return ServiceReport(
id: id, id: id,
assetType: Lookup.fromJson(parsedJson["assetType"]), assetType: Lookup.fromJson(parsedJson["assetType"]),
@ -156,7 +188,7 @@ class ServiceReport {
status: Lookup.fromJson(parsedJson["status"]), status: Lookup.fromJson(parsedJson["status"]),
type: Lookup.fromJson(parsedJson["typeOfWO"]), type: Lookup.fromJson(parsedJson["typeOfWO"]),
//faultDescriptionId: parsedJson["fault_description"], //faultDescriptionId: parsedJson["fault_description"],
endDate:DateTime.tryParse(parsedJson["endofWorkTime"]), endDate: DateTime.tryParse(parsedJson["endofWorkTime"]),
//invoiceCode: parsedJson["invoice_code"], //invoiceCode: parsedJson["invoice_code"],
//invoiceNumber: parsedJson["invoice_no"], //invoiceNumber: parsedJson["invoice_no"],
//jobSheetNumber: parsedJson["job_sheet_no"], //jobSheetNumber: parsedJson["job_sheet_no"],
@ -168,14 +200,11 @@ class ServiceReport {
visitDate: DateTime.tryParse(parsedJson["visitDate"]), visitDate: DateTime.tryParse(parsedJson["visitDate"]),
//workHours: parsedJson["working_hours"], //workHours: parsedJson["working_hours"],
timer: TimerModel( timer: TimerModel(
startAt: DateTime.tryParse(parsedJson["startofWorkTime"]), startAt: DateTime.tryParse(parsedJson["startofWorkTime"]), endAt: DateTime.tryParse(parsedJson["endofWorkTime"]), durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 * 60).toInt()),
endAt: DateTime.tryParse(parsedJson["endofWorkTime"]),
durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 *60).toInt()
),
//workPreformed: parsedJson["work_performed"], //workPreformed: parsedJson["work_performed"],
device: Device.fromJson(parsedJson["callRequest"]["asset"]), device: Device.fromJson(parsedJson["callRequest"]["asset"]),
signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]) , signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]),
signatureEngineer:URLs.getFileUrl(parsedJson["engSignature"]), signatureEngineer: URLs.getFileUrl(parsedJson["engSignature"]),
); );
} }

Loading…
Cancel
Save