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/new_models/site.dart

60 lines
1.6 KiB
Dart

import 'package:test_sa/models/base.dart';
import 'package:test_sa/models/new_models/building.dart';
class Site extends Base {
Site({
this.id,
this.custName,
this.buildings,
}) : super(identifier: id?.toString() ?? '', name: custName); // Handle potential null id
Site.fromJson(dynamic json) {
id = json['siteId'] ?? json['id'];
identifier = id?.toString() ?? ''; // Handle potential null id
custName = json['custName']?? json['siteName'];
name = custName;
if (json['buildings'] != null) {
buildings = [];
json['buildings'].forEach((v) {
buildings!.add(Building.fromJson(v)); // Use '!' since buildings is initialized here
});
}
else if (json['assetInventoryBuildings'] != null) {
buildings = [];
json['assetInventoryBuildings'].forEach((v) {
buildings!.add(Building.fromJson(v));
});
}
}
num? id; // Now nullable
String? custName; // Now nullable
List<Building>? buildings; // Now nullable
Site copyWith({
num? id, // Parameters are now nullable
String? custName,
List<Building>? buildings,
}) =>
Site(
id: id ?? this.id,
custName: custName ?? this.custName,
buildings: buildings ?? this.buildings,
);
Map<String, dynamic> toJson({bool addBuildings = true}) {
final map = <String, dynamic>{};
map['id'] = id;
map['custName'] = custName;
if (addBuildings) {
if (buildings != null) {
map['buildings'] = buildings!.map((v) => v.toJson()).toList(); // Use '!' since buildings could be null
}
} else {
map['buildings'] = [];
}
return map;
}
}