UpdateAccessPointUseCase.cs 1.0 KB

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