UpdateAccessPointUseCase.cs 1.1 KB

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