You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/models/service_request/service_request.dart

119 lines
3.9 KiB
Dart

import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/device/device.dart';
import 'package:test_sa/models/lookup.dart';
class ServiceRequest{
String id;
String requestCode;
String deviceSerialNumber;
int deviceId;
String deviceArName;
String deviceEnName;
List<String> devicePhotos;
String maintenanceIssue;
String hospitalName;
int hospitalId;
String departmentName;
String engineerName;
String date;
String audio;
int statusValue;
String statusLabel;
bool viewReport;
String engineerMobile;
String deviceModel;
String faultDescription;
String workPerformed;
String visitDate;
DateTime nextVisitDate;
String jobSheetNumber;
int reportID;
String deviceNumber;
Lookup priority;
Lookup defectType;
Lookup type;
Lookup requestedThrough;
Device device;
ServiceRequest({
this.id,
this.date,
this.requestCode,
this.hospitalName,
this.deviceArName,
this.deviceEnName,
this.devicePhotos,
this.hospitalId,
this.deviceSerialNumber,
this.maintenanceIssue,
this.statusLabel,
this.statusValue,
this.departmentName,
this.deviceId,
this.audio,
this.engineerName,
this.viewReport = false,
this.deviceModel,
this.engineerMobile,
this.faultDescription,
this.jobSheetNumber,
this.visitDate,
this.nextVisitDate,
this.workPerformed,
this.reportID,
this.defectType,
this.priority,
this.deviceNumber,
this.type,
this.requestedThrough,
this.device,
});
factory ServiceRequest.fromJson(Map<String,dynamic> parsedJson){
List<String> images = [];
if(parsedJson["attachmentsCallRequest"] is List){
List list = parsedJson["attachmentsCallRequest"];
images = list.map((e) => URLs.getFileUrl(e["attachmentsCallRequest"])).toList();
}
return ServiceRequest(
id: parsedJson["id"].toString(),
requestCode: parsedJson["callNo"].toString(),
hospitalName: parsedJson["asset"]["site"]["custName"],
deviceNumber: parsedJson["asset"]["assetNumber"].toString(),
deviceId: parsedJson["asset"]["id"],
audio: URLs.getFileUrl(parsedJson["voiceNote"] ?? ""),
deviceArName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
deviceEnName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
devicePhotos: images,
deviceSerialNumber: parsedJson["asset"]["assetSerialNo"],
date: DateTime.tryParse(parsedJson["requestedDate"] ?? "").toString().split(" ").first,
maintenanceIssue: parsedJson["comments"],
statusLabel: parsedJson["status"] == null ? null :
parsedJson["status"]["name"],
statusValue: parsedJson["status"] == null ? null :
parsedJson["status"]["value"],
departmentName: parsedJson["asset"]["department"] != null ?
parsedJson["asset"]["department"]["name"] : "",
engineerName: parsedJson["assignedEmployee"] == null ? null :
parsedJson["assignedEmployee"]["name"],
hospitalId: parsedJson["asset"]["site"]["id"],
reportID: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["workOrderId"] : null,
viewReport: parsedJson["workOrder"] != null,
deviceModel: parsedJson["asset"]["modelDefinition"]["modelName"],
engineerMobile: parsedJson["assignedEmployee"] == null ? null :
parsedJson["assignedEmployee"]["phone"],
faultDescription: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["faultDescription"] : null,
jobSheetNumber: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["jobSheetNumber"] :null,
visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first,
nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""),
workPerformed: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["workPerformed"] : null,
device: Device.fromJson(parsedJson["asset"])
);
}
}