UpdateAccessPointUseCase.cs 1005 B

123456789101112131415161718192021222324252627282930313233343536
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.AccessPoints;
  4. public class UpdateAccessPointUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(
  7. string name,
  8. string? model = null,
  9. double? speed = null
  10. )
  11. {
  12. // ToDo validate / normalize all inputs
  13. name = Normalize.HardwareName(name);
  14. ThrowIfInvalid.ResourceName(name);
  15. var ap = await repository.GetByNameAsync(name) as AccessPoint;
  16. if (ap == null)
  17. throw new NotFoundException($"Access point '{name}' not found.");
  18. if (!string.IsNullOrWhiteSpace(model))
  19. {
  20. ThrowIfInvalid.AccessPointModelName(model);
  21. ap.Model = model;
  22. }
  23. if (speed.HasValue)
  24. {
  25. ThrowIfInvalid.NetworkSpeed(speed.Value);
  26. ap.Speed = speed.Value;
  27. }
  28. await repository.UpdateAsync(ap);
  29. }
  30. }