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

165 lines
6.1 KiB
Dart

import 'package:flutter/src/widgets/framework.dart';
import 'package:fluttertoast/fluttertoast.dart';
3 years ago
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/fault_description.dart';
import 'package:test_sa/models/lookup.dart';
class ServiceRequest {
3 years ago
String id;
String requestCode;
String deviceSerialNumber;
3 years ago
int deviceId;
3 years ago
String deviceArName;
String deviceEnName;
List<String> devicePhotos;
String callComments;
3 years ago
String hospitalName;
3 years ago
int hospitalId;
3 years ago
String departmentName;
String engineerName;
2 years ago
String engineerId;
3 years ago
String date;
String audio;
int statusValue;
int statusId;
3 years ago
String statusLabel;
String reviewComment;
String comments;
3 years ago
bool viewReport;
String engineerMobile;
String deviceModel;
FaultDescription faultDescription;
//String workPerformed;
3 years ago
String visitDate;
DateTime nextVisitDate;
String jobSheetNumber;
3 years ago
int reportID;
String deviceNumber;
Lookup priority;
Lookup defectType;
3 years ago
Lookup type;
Lookup requestedThrough;
Lookup firstAction;
Lookup loanAvailability;
Asset device;
3 years ago
ServiceRequest({
this.id,
this.date,
this.requestCode,
this.hospitalName,
this.deviceArName,
this.deviceEnName,
this.devicePhotos,
this.hospitalId,
this.deviceSerialNumber,
this.callComments,
3 years ago
this.statusLabel,
this.statusValue,
this.statusId,
3 years ago
this.departmentName,
this.deviceId,
this.audio,
this.engineerName,
2 years ago
this.engineerId,
3 years ago
this.viewReport = false,
this.deviceModel,
this.engineerMobile,
this.faultDescription,
this.jobSheetNumber,
this.visitDate,
this.nextVisitDate,
//this.workPerformed,
3 years ago
this.reportID,
this.defectType,
this.priority,
this.deviceNumber,
3 years ago
this.type,
this.requestedThrough,
3 years ago
this.device,
this.reviewComment,
this.comments,
this.loanAvailability,
this.firstAction,
3 years ago
});
factory ServiceRequest.fromJson(Map<String, dynamic> parsedJson) {
3 years ago
List<String> images = [];
if (parsedJson["attachmentsCallRequest"] != null) if (parsedJson["attachmentsCallRequest"] is List) {
3 years ago
List list = parsedJson["attachmentsCallRequest"];
images = list.map((e) => URLs.getFileUrl(e["name"])).toList();
3 years ago
}
// print(parsedJson["requestedDate"]??"");
3 years ago
return ServiceRequest(
3 years ago
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"] ?? "",
3 years ago
devicePhotos: images,
deviceSerialNumber: parsedJson["asset"]["assetSerialNo"],
date: DateTime.tryParse(parsedJson["requestedDate"] ?? "").toString(),
2 years ago
// todo. add requeste time param for time
callComments: parsedJson["callComments"],
comments: parsedJson["comments"],
statusLabel: parsedJson["status"] == null ? null : parsedJson["status"]["name"],
statusValue: parsedJson["status"] == null ? null : parsedJson["status"]["value"],
statusId: parsedJson["status"] == null ? null : parsedJson["status"]["id"],
departmentName: parsedJson["asset"]["department"] != null ? parsedJson["asset"]["department"]["name"] : "",
engineerName: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["name"],
2 years ago
engineerId: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["id"],
3 years ago
hospitalId: parsedJson["asset"]["site"]["id"],
reportID: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workOrderId"] : null,
3 years ago
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
? FaultDescription.fromJson(parsedJson["workOrder"]["faultDescription"])
: null
: null,
jobSheetNumber: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["jobSheetNumber"] : null,
3 years ago
visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first,
nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""),
//workPerformed: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workPerformed"] : null,
device: Asset.fromJson(parsedJson["asset"]),
reviewComment: parsedJson["reviewComment"],
type: Lookup.fromJson(parsedJson['typeofRequest']),
defectType: Lookup.fromJson(parsedJson['defectType']),
loanAvailability: Lookup.fromJson(parsedJson['loanAvailablity']),
firstAction: Lookup.fromJson(parsedJson['firstAction']),
requestedThrough: Lookup.fromJson(parsedJson['requestedThrough']),
priority: Lookup.fromJson(parsedJson['priority']),
3 years ago
);
}
Future<bool> validateNewRequest(BuildContext context) async {
if (device == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}");
return false;
} else if (priority == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.priority}");
return false;
} else if (defectType == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.jopStatus}");
return false;
} else if (requestedThrough == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.status}");
return false;
} else if (type == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.costCodeName}");
return false;
}
return true;
}
}