SystemReportUseCase.cs 945 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  2. public record SystemReport(
  3. IReadOnlyList<SystemReportRow> Systems
  4. );
  5. public record SystemReportRow(
  6. string Name,
  7. string? Type,
  8. string? Os,
  9. int Cores,
  10. int RamGb,
  11. int TotalStorageGb,
  12. string? RunsOn
  13. );
  14. public class SystemReportUseCase(ISystemRepository repository) : IUseCase
  15. {
  16. public async Task<SystemReport> ExecuteAsync()
  17. {
  18. var systems = await repository.GetAllAsync();
  19. var rows = systems.Select(system =>
  20. {
  21. var totalStorage = system.Drives?.Sum(d => d.Size) ?? 0;
  22. return new SystemReportRow(
  23. system.Name,
  24. system.Type,
  25. system.Os,
  26. system.Cores ?? 0,
  27. system.Ram ?? 0,
  28. totalStorage,
  29. system.RunsOn
  30. );
  31. }).ToList();
  32. return new SystemReport(rows);
  33. }
  34. }