UpsHardwareReport.cs 778 B

123456789101112131415161718192021222324252627282930313233
  1. using RackPeek.Domain.Resources.Models;
  2. namespace RackPeek.Domain.Resources.Hardware.UpsUnits;
  3. public record UpsHardwareReport(
  4. IReadOnlyList<UpsHardwareRow> UpsUnits
  5. );
  6. public record UpsHardwareRow(
  7. string Name,
  8. string Model,
  9. int Va
  10. );
  11. public class UpsHardwareReportUseCase(IHardwareRepository repository) : IUseCase
  12. {
  13. public async Task<UpsHardwareReport> ExecuteAsync()
  14. {
  15. var hardware = await repository.GetAllAsync();
  16. var upsUnits = hardware.OfType<Ups>();
  17. var rows = upsUnits.Select(ups =>
  18. {
  19. return new UpsHardwareRow(
  20. ups.Name,
  21. ups.Model ?? "Unknown",
  22. ups.Va ?? 0
  23. );
  24. }).ToList();
  25. return new UpsHardwareReport(rows);
  26. }
  27. }