233 lines
8.8 KiB
Dart
233 lines
8.8 KiB
Dart
import 'dart:io';
|
|
|
|
class AirCollectionData {
|
|
// Link to the original installation
|
|
String? installationRefID;
|
|
int? airManId; // The ID from the server database
|
|
|
|
// Collection Info
|
|
String? collectionDate;
|
|
String? collectionTime;
|
|
String? weather;
|
|
double? temperature;
|
|
String? powerFailure;
|
|
|
|
// PM10 Readings
|
|
double? pm10Flowrate;
|
|
String? pm10FlowrateResult;
|
|
String? pm10TotalTime;
|
|
String? pm10TotalTimeResult;
|
|
double? pm10Pressure;
|
|
String? pm10PressureResult;
|
|
double? pm10Vstd;
|
|
|
|
// PM2.5 Readings
|
|
double? pm25Flowrate;
|
|
String? pm25FlowrateResult;
|
|
String? pm25TotalTime;
|
|
String? pm25TotalTimeResult;
|
|
double? pm25Pressure;
|
|
String? pm25PressureResult;
|
|
double? pm25Vstd;
|
|
|
|
// General
|
|
String? remarks;
|
|
int? collectionUserId;
|
|
String? status;
|
|
|
|
// Image Files for Collection
|
|
File? imageFront;
|
|
File? imageBack;
|
|
File? imageLeft;
|
|
File? imageRight;
|
|
File? imageChart;
|
|
File? imageFilterPaper;
|
|
File? optionalImage1;
|
|
File? optionalImage2;
|
|
File? optionalImage3;
|
|
File? optionalImage4;
|
|
String? optionalRemark1;
|
|
String? optionalRemark2;
|
|
String? optionalRemark3;
|
|
String? optionalRemark4;
|
|
|
|
AirCollectionData({
|
|
this.installationRefID,
|
|
this.airManId,
|
|
this.collectionDate,
|
|
this.collectionTime,
|
|
this.weather,
|
|
this.temperature,
|
|
this.powerFailure,
|
|
this.pm10Flowrate,
|
|
this.pm10FlowrateResult,
|
|
this.pm10TotalTime,
|
|
this.pm10TotalTimeResult,
|
|
this.pm10Pressure,
|
|
this.pm10PressureResult,
|
|
this.pm10Vstd,
|
|
this.pm25Flowrate,
|
|
this.pm25FlowrateResult,
|
|
this.pm25TotalTime,
|
|
this.pm25TotalTimeResult,
|
|
this.pm25Pressure,
|
|
this.pm25PressureResult,
|
|
this.pm25Vstd,
|
|
this.remarks,
|
|
this.collectionUserId,
|
|
this.status,
|
|
this.imageFront,
|
|
this.imageBack,
|
|
this.imageLeft,
|
|
this.imageRight,
|
|
this.imageChart,
|
|
this.imageFilterPaper,
|
|
this.optionalImage1,
|
|
this.optionalImage2,
|
|
this.optionalImage3,
|
|
this.optionalImage4,
|
|
this.optionalRemark1,
|
|
this.optionalRemark2,
|
|
this.optionalRemark3,
|
|
this.optionalRemark4,
|
|
});
|
|
|
|
factory AirCollectionData.fromMap(Map<String, dynamic> map) {
|
|
File? fileFromPath(String? path) => path != null ? File(path) : null;
|
|
|
|
double? parseDouble(dynamic value) {
|
|
if (value is double) return value;
|
|
if (value is int) return value.toDouble();
|
|
if (value is String) return double.tryParse(value);
|
|
return null;
|
|
}
|
|
|
|
return AirCollectionData(
|
|
installationRefID: map['installationRefID'],
|
|
airManId: map['air_man_id'],
|
|
collectionDate: map['air_man_collection_date'],
|
|
collectionTime: map['air_man_collection_time'],
|
|
weather: map['air_man_collection_weather'],
|
|
temperature: parseDouble(map['air_man_collection_temperature']),
|
|
powerFailure: map['air_man_collection_power_failure'],
|
|
pm10Flowrate: parseDouble(map['air_man_collection_pm10_flowrate']),
|
|
pm10FlowrateResult: map['air_man_collection_pm10_flowrate_result'],
|
|
pm10TotalTime: map['air_man_collection_pm10_total_time'],
|
|
pm10TotalTimeResult: map['air_man_collection_total_time_result'],
|
|
pm10Pressure: parseDouble(map['air_man_collection_pm10_pressure']),
|
|
pm10PressureResult: map['air_man_collection_pm10_pressure_result'],
|
|
pm10Vstd: parseDouble(map['air_man_collection_pm10_vstd']),
|
|
pm25Flowrate: parseDouble(map['air_man_collection_pm25_flowrate']),
|
|
pm25FlowrateResult: map['air_man_collection_pm25_flowrate_result'],
|
|
pm25TotalTime: map['air_man_collection_pm25_total_time'],
|
|
pm25TotalTimeResult: map['air_man_collection_pm25_total_time_result'],
|
|
pm25Pressure: parseDouble(map['air_man_collection_pm25_pressure']),
|
|
pm25PressureResult: map['air_man_collection_pm25_pressure_result'],
|
|
pm25Vstd: parseDouble(map['air_man_collection_pm25_vstd']),
|
|
remarks: map['air_man_collection_remarks'],
|
|
status: map['status'],
|
|
optionalRemark1: map['optionalRemark1'],
|
|
optionalRemark2: map['optionalRemark2'],
|
|
optionalRemark3: map['optionalRemark3'],
|
|
optionalRemark4: map['optionalRemark4'],
|
|
imageFront: fileFromPath(map['imageFrontPath']),
|
|
imageBack: fileFromPath(map['imageBackPath']),
|
|
imageLeft: fileFromPath(map['imageLeftPath']),
|
|
imageRight: fileFromPath(map['imageRightPath']),
|
|
imageChart: fileFromPath(map['imageChartPath']),
|
|
imageFilterPaper: fileFromPath(map['imageFilterPaperPath']),
|
|
optionalImage1: fileFromPath(map['optionalImage1Path']),
|
|
optionalImage2: fileFromPath(map['optionalImage2Path']),
|
|
optionalImage3: fileFromPath(map['optionalImage3Path']),
|
|
optionalImage4: fileFromPath(map['optionalImage4Path']),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'installationRefID': installationRefID,
|
|
'air_man_id': airManId,
|
|
'air_man_collection_date': collectionDate,
|
|
'air_man_collection_time': collectionTime,
|
|
'air_man_collection_weather': weather,
|
|
'air_man_collection_temperature': temperature,
|
|
'air_man_collection_power_failure': powerFailure,
|
|
'air_man_collection_pm10_flowrate': pm10Flowrate,
|
|
'air_man_collection_pm10_flowrate_result': pm10FlowrateResult,
|
|
'air_man_collection_pm10_total_time': pm10TotalTime,
|
|
'air_man_collection_total_time_result': pm10TotalTimeResult,
|
|
'air_man_collection_pm10_pressure': pm10Pressure,
|
|
'air_man_collection_pm10_pressure_result': pm10PressureResult,
|
|
'air_man_collection_pm10_vstd': pm10Vstd,
|
|
'air_man_collection_pm25_flowrate': pm25Flowrate,
|
|
'air_man_collection_pm25_flowrate_result': pm25FlowrateResult,
|
|
'air_man_collection_pm25_total_time': pm25TotalTime,
|
|
'air_man_collection_pm25_total_time_result': pm25TotalTimeResult,
|
|
'air_man_collection_pm25_pressure': pm25Pressure,
|
|
'air_man_collection_pm25_pressure_result': pm25PressureResult,
|
|
'air_man_collection_pm25_vstd': pm25Vstd,
|
|
'air_man_collection_remarks': remarks,
|
|
'status': status,
|
|
'optionalRemark1': optionalRemark1,
|
|
'optionalRemark2': optionalRemark2,
|
|
'optionalRemark3': optionalRemark3,
|
|
'optionalRemark4': optionalRemark4,
|
|
'imageFront': imageFront,
|
|
'imageBack': imageBack,
|
|
'imageLeft': imageLeft,
|
|
'imageRight': imageRight,
|
|
'imageChart': imageChart,
|
|
'imageFilterPaper': imageFilterPaper,
|
|
'optionalImage1': optionalImage1,
|
|
'optionalImage2': optionalImage2,
|
|
'optionalImage3': optionalImage3,
|
|
'optionalImage4': optionalImage4,
|
|
};
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'air_man_id': airManId?.toString(),
|
|
'air_man_collection_user_id': collectionUserId?.toString(),
|
|
'air_man_collection_date': collectionDate,
|
|
'air_man_collection_time': collectionTime,
|
|
'air_man_collection_weather': weather,
|
|
'air_man_collection_temperature': temperature?.toString(),
|
|
'air_man_collection_power_failure': powerFailure,
|
|
'air_man_collection_pm10_flowrate': pm10Flowrate?.toString(),
|
|
'air_man_collection_pm10_flowrate_result': pm10FlowrateResult,
|
|
'air_man_collection_pm10_total_time': pm10TotalTime,
|
|
'air_man_collection_total_time_result': pm10TotalTimeResult,
|
|
'air_man_collection_pm10_pressure': pm10Pressure?.toString(),
|
|
'air_man_collection_pm10_pressure_result': pm10PressureResult,
|
|
'air_man_collection_pm10_vstd': pm10Vstd?.toString(),
|
|
'air_man_collection_pm25_flowrate': pm25Flowrate?.toString(),
|
|
'air_man_collection_pm25_flowrate_result': pm25FlowrateResult,
|
|
'air_man_collection_pm25_total_time': pm25TotalTime,
|
|
'air_man_collection_pm25_total_time_result': pm25TotalTimeResult,
|
|
'air_man_collection_pm25_pressure': pm25Pressure?.toString(),
|
|
'air_man_collection_pm25_pressure_result': pm25PressureResult,
|
|
'air_man_collection_pm25_vstd': pm25Vstd?.toString(),
|
|
'air_man_collection_remarks': remarks,
|
|
'air_man_collection_image_optional_01_remarks': optionalRemark1,
|
|
'air_man_collection_image_optional_02_remarks': optionalRemark2,
|
|
'air_man_collection_image_optional_03_remarks': optionalRemark3,
|
|
'air_man_collection_image_optional_04_remarks': optionalRemark4,
|
|
};
|
|
}
|
|
|
|
Map<String, File> getImagesForUpload() {
|
|
final Map<String, File> files = {};
|
|
if (imageFront != null) files['front'] = imageFront!;
|
|
if (imageBack != null) files['back'] = imageBack!;
|
|
if (imageLeft != null) files['left'] = imageLeft!;
|
|
if (imageRight != null) files['right'] = imageRight!;
|
|
if (imageChart != null) files['chart'] = imageChart!;
|
|
if (imageFilterPaper != null) files['filter_paper'] = imageFilterPaper!;
|
|
if (optionalImage1 != null) files['optional_01'] = optionalImage1!;
|
|
if (optionalImage2 != null) files['optional_02'] = optionalImage2!;
|
|
if (optionalImage3 != null) files['optional_03'] = optionalImage3!;
|
|
if (optionalImage4 != null) files['optional_04'] = optionalImage4!;
|
|
return files;
|
|
}
|
|
} |