import 'package:maibu_satabot_v2/features/v2/home/domain/entities/home_entity.dart'; class HomeDataModel extends HomeEntity { const HomeDataModel({ required super.plantName, required super.realTimePower, required super.todayGeneration, required super.equivalentHours, required super.pendingWorkOrders, required super.weather, required super.alarmCount, required super.workOrderStats, required super.powerTrendData, required super.plantOverview, }); factory HomeDataModel.fromJson(Map json) { return HomeDataModel( plantName: json['plantName'] as String, realTimePower: (json['realTimePower'] as num).toDouble(), todayGeneration: (json['todayGeneration'] as num).toDouble(), equivalentHours: (json['equivalentHours'] as num).toDouble(), pendingWorkOrders: json['pendingWorkOrders'] as int, weather: WeatherInfo.fromJson(json['weather']), alarmCount: json['alarmCount'] as int, workOrderStats: WorkOrderStats.fromJson(json['workOrderStats']), powerTrendData: (json['powerTrendData'] as List) .map((e) => PowerTrendPoint.fromJson(e)) .toList(), plantOverview: PlantOverview.fromJson(json['plantOverview']), ); } Map toJson() { return { 'plantName': plantName, 'realTimePower': realTimePower, 'todayGeneration': todayGeneration, 'equivalentHours': equivalentHours, 'pendingWorkOrders': pendingWorkOrders, 'weather': weather.toJson(), 'alarmCount': alarmCount, 'workOrderStats': workOrderStats.toJson(), 'powerTrendData': powerTrendData.map((e) => e.toJson()).toList(), 'plantOverview': plantOverview.toJson(), }; } HomeEntity toEntity() { return HomeEntity( plantName: plantName, realTimePower: realTimePower, todayGeneration: todayGeneration, equivalentHours: equivalentHours, pendingWorkOrders: pendingWorkOrders, weather: weather, alarmCount: alarmCount, workOrderStats: workOrderStats, powerTrendData: powerTrendData, plantOverview: plantOverview, ); } factory HomeDataModel.fromEntity(HomeEntity entity) { return HomeDataModel( plantName: entity.plantName, realTimePower: entity.realTimePower, todayGeneration: entity.todayGeneration, equivalentHours: entity.equivalentHours, pendingWorkOrders: entity.pendingWorkOrders, weather: entity.weather, alarmCount: entity.alarmCount, workOrderStats: entity.workOrderStats, powerTrendData: entity.powerTrendData, plantOverview: entity.plantOverview, ); } } extension WeatherInfoModelX on WeatherInfo { Map toJson() { return { 'condition': condition, 'tempMin': tempMin, 'tempMax': tempMax, 'windDirection': windDirection, 'windLevel': windLevel, }; } } extension WorkOrderStatsModelX on WorkOrderStats { Map toJson() { return { 'pending': pending, 'processing': processing, 'pendingAcceptance': pendingAcceptance, }; } } extension PlantOverviewModelX on PlantOverview { Map toJson() { return { 'installedCapacity': installedCapacity, 'commissionDate': commissionDate, 'backgroundImage': backgroundImage, }; } } extension PowerTrendPointModelX on PowerTrendPoint { Map toJson() { return { 'time': time, 'power': power, }; } }