dtoToResetFaultsValidation function

ResetFaultsValidation dtoToResetFaultsValidation(
  1. DeviceDetailsDTO details,
  2. List<TimelineItem> activeAlerts
)

Implementation

ResetFaultsValidation dtoToResetFaultsValidation(
  DeviceDetailsDTO details,
  List<TimelineItem> activeAlerts,
) {
  final fault = activeAlerts
      .firstWhereOrNull((alert) => alert.type == TimelineItemType.shutdown);

  final hasMatchingProduct = details.device?.product == ProductDTO.rdc2v4 ||
      details.device?.product == ProductDTO.dc2v4;

  final firmware = details.device?.firmwareVersion;
  final hasUpdatedVersion =
      firmware != null && Version.parse(firmware) >= Version(3, 3, 2);

  return ResetFaultsValidation(
    isCriticalFault: activeAlerts
        .where((alert) => alert.type == TimelineItemType.shutdown)
        .any((alert) => alert.isCriticalFault),
    isSupportedFaultType: fault?.canRemoteResetFault != false,
    isAuto: details.switchState == SwitchStateDTO.auto,
    isConnected: details.device?.isConnected ?? false,
    isFirmwareUpdated: hasMatchingProduct && hasUpdatedVersion,
  );
}