Skip to content

Commit 06babd4

Browse files
committed
Adding IDisposed on services
1 parent 1612dc4 commit 06babd4

5 files changed

Lines changed: 111 additions & 14 deletions

File tree

Pages/Brand/Index.cshtml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace TechInventory.Pages.Brand
88
public class IndexModel(IBrandService service) : PageModel
99
{
1010
private readonly IBrandService _service = service;
11-
public IList<Models.Brand> BrandList { get; set; } = new List<Models.Brand>();
11+
public IList<Models.Brand> BrandList { get; set; } = [];
1212

1313
public async Task OnGetAsync()
1414
{

Services/Brand/BrandService.cs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
namespace TechInventory.Services.Brand;
66

7-
public class BrandService : IBrandService
7+
public class BrandService : IBrandService, IDisposable
88
{
99
private readonly UnitOfWork _unitOfWork;
1010
private readonly IRepository<Models.Brand> _repository;
11-
11+
private bool _disposed = false;
12+
1213
public BrandService(IUnitOfWork unitOfWork)
1314
{
1415
_unitOfWork = (UnitOfWork)unitOfWork;
@@ -44,7 +45,33 @@ public async Task<Result<bool>> UpdateBrand(Models.Brand brand)
4445

4546
public async Task<Result<bool>> DeleteBrand(int id)
4647
{
47-
await _repository.DeleteAsync(id);
48+
var brand = await _repository.GetAsync(id);
49+
if (brand == null)
50+
return Result<bool>.Failure($"Marca com Id {id} não foi encontrada.", false);
51+
52+
var deleteResult = await _repository.DeleteAsync(id);
53+
if (!deleteResult.IsSuccessful)
54+
return Result<bool>.Failure(deleteResult.Message, false);
55+
4856
return await _unitOfWork.CommitAsync();
4957
}
58+
59+
protected virtual void Dispose(bool disposing)
60+
{
61+
if (!_disposed)
62+
{
63+
if (disposing)
64+
{
65+
// Nothing to dispose here as per the request.
66+
// _unitOfWork is managed by DI container.
67+
}
68+
_disposed = true;
69+
}
70+
}
71+
72+
public void Dispose()
73+
{
74+
Dispose(true);
75+
GC.SuppressFinalize(this);
76+
}
5077
}

Services/Device/DeviceService.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
namespace TechInventory.Services.Device;
66

7-
public class DeviceService : IDeviceService
7+
public class DeviceService : IDeviceService, IDisposable
88
{
99
private readonly UnitOfWork _unitOfWork;
1010
private readonly IRepository<Models.Device> _repository;
1111
private readonly IRepository<Models.DeviceModel> _deviceModelRepository;
12+
private bool _disposed = false;
1213

1314
public DeviceService(IUnitOfWork unitOfWork)
1415
{
@@ -91,4 +92,24 @@ public async Task<Result<bool>> CheckIncludes(Models.Device device)
9192

9293
return Result<bool>.Success(true);
9394
}
95+
96+
protected virtual void Dispose(bool disposing)
97+
{
98+
if (!_disposed)
99+
{
100+
if (disposing)
101+
{
102+
// Nothing to dispose here as per the request.
103+
// _unitOfWork is managed by DI container.
104+
}
105+
106+
_disposed = true;
107+
}
108+
}
109+
110+
public void Dispose()
111+
{
112+
Dispose(true);
113+
GC.SuppressFinalize(this);
114+
}
94115
}

Services/DeviceModel/DeviceModelService.cs

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44

55
namespace TechInventory.Services.DeviceModel;
66

7-
public class DeviceModelService : IDeviceModelService
7+
public class DeviceModelService : IDeviceModelService, IDisposable
88
{
99
private readonly UnitOfWork _unitOfWork;
1010
private readonly IRepository<Models.DeviceModel> _deviceModelRepository;
1111
private readonly IRepository<Models.Brand> _brandRepository;
12-
12+
private bool _disposed = false;
13+
1314
public DeviceModelService(IUnitOfWork unitOfWork)
1415
{
1516
_unitOfWork = (UnitOfWork)unitOfWork;
@@ -47,10 +48,17 @@ public async Task<Result<bool>> UpdateDeviceModel(Models.DeviceModel deviceModel
4748
return await _unitOfWork.CommitAsync();
4849
}
4950

50-
public Task<Result<bool>> DeleteDeviceModel(int id)
51+
public async Task<Result<bool>> DeleteDeviceModel(int id)
5152
{
52-
_deviceModelRepository.DeleteAsync(id);
53-
return _unitOfWork.CommitAsync();
53+
var model = await _deviceModelRepository.GetAsync(id);
54+
if (model is null)
55+
return Result<bool>.Failure($"Modelo de dispositivo com Id {id} não foi encontrado", false);
56+
57+
var deleteResult = await _deviceModelRepository.DeleteAsync(id);
58+
if (!deleteResult.IsSuccessful)
59+
return Result<bool>.Failure(deleteResult.Message, false);
60+
61+
return await _unitOfWork.CommitAsync();
5462
}
5563

5664
public async Task<List<Models.DeviceModel>> GetDeviceModelsByBrandId(int brandId)
@@ -66,4 +74,24 @@ public async Task<Result<bool>> CheckIncludes(Models.DeviceModel deviceModel)
6674
return Result<bool>.Failure($"A marca com id {deviceModel.BrandId} não existe", false);
6775
return Result<bool>.Success(true);
6876
}
77+
78+
protected virtual void Dispose(bool disposing)
79+
{
80+
if (!_disposed)
81+
{
82+
if (disposing)
83+
{
84+
// Nothing to dispose here as per the request.
85+
// _unitOfWork is managed by DI container.
86+
}
87+
88+
_disposed = true;
89+
}
90+
}
91+
92+
public void Dispose()
93+
{
94+
Dispose(true);
95+
GC.SuppressFinalize(this);
96+
}
6997
}

Services/Maintenance/MaintenanceRecordService.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
namespace TechInventory.Services.Maintenance;
66

7-
public class MaintenanceRecordService : IMaintenanceRecordService
7+
public class MaintenanceRecordService : IMaintenanceRecordService, IDisposable
88
{
99
private readonly UnitOfWork _unitOfWork;
1010
private readonly IRepository<MaintenanceRecord> _repository;
1111
private readonly IRepository<Models.Device> _deviceRepository; // This is correct
12+
private bool _disposed = false;
1213

1314
public MaintenanceRecordService(IUnitOfWork unitOfWork)
1415
{
@@ -39,9 +40,9 @@ public async Task<Result<bool>> UpdateRecord(MaintenanceRecord record)
3940

4041
public async Task<Result<bool>> DeleteRecord(int id)
4142
{
42-
var device = await _repository.GetAsync(id);
43-
if (device == null)
44-
return Result<bool>.Failure($"O dispositivo com Id {id} não foi encontrado", false);
43+
var record = await _repository.GetAsync(id);
44+
if (record == null)
45+
return Result<bool>.Failure($"O registro de manutenção com Id {id} não foi encontrado", false);
4546

4647
var deleteResult = await _repository.DeleteAsync(id);
4748
if (!deleteResult.IsSuccessful)
@@ -80,4 +81,24 @@ public async Task<Result<bool>> CheckIncludes(MaintenanceRecord record)
8081
return Result<bool>.Failure("O dispositivo associado ao registro não existe", false);
8182
return Result<bool>.Success(true);
8283
}
84+
85+
protected virtual void Dispose(bool disposing)
86+
{
87+
if (!_disposed)
88+
{
89+
if (disposing)
90+
{
91+
// Nothing to dispose here as per the request.
92+
// _unitOfWork is managed by DI container.
93+
}
94+
95+
_disposed = true;
96+
}
97+
}
98+
99+
public void Dispose()
100+
{
101+
Dispose(true);
102+
GC.SuppressFinalize(this);
103+
}
83104
}

0 commit comments

Comments
 (0)