AddLaptopUseCase.cs 751 B

123456789101112131415161718192021222324252627
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.Laptops;
  4. public class AddLaptopUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(string name)
  7. {
  8. ThrowIfInvalid.ResourceName(name);
  9. var existing = await repository.GetByNameAsync(name);
  10. if (existing != null)
  11. throw new InvalidOperationException($"Laptop '{name}' already exists.");
  12. var laptop = new Laptop
  13. {
  14. Name = name,
  15. Cpus = new List<Cpu>(),
  16. Drives = new List<Drive>(),
  17. Gpus = new List<Gpu>(),
  18. Ram = null
  19. };
  20. await repository.AddAsync(laptop);
  21. }
  22. }