feature: device model/profile decommissioning

This commit is contained in:
Gary Sharp
2025-07-05 13:55:44 +10:00
parent 583552ffdd
commit 6e99b4503b
17 changed files with 714 additions and 23 deletions
@@ -93,6 +93,26 @@ namespace Disco.Services.Devices.Importing
return new DeviceDecommissionImportContext($"Batch: {deviceBatch.Name} ({deviceBatch.Id})", devices, decommissionReason, unassignUsers);
}
public static DeviceDecommissionImportContext Create(DiscoDataContext database, DeviceProfile deviceProfile, DecommissionReasons decommissionReason, bool unassignUsers)
{
var devices = database.Devices
.Include(d => d.Jobs)
.Include(d => d.AssignedUser)
.Where(d => d.DeviceProfileId == deviceProfile.Id && d.DecommissionedDate == null)
.ToList();
return new DeviceDecommissionImportContext($"Profile: {deviceProfile.Name} ({deviceProfile.Id})", devices, decommissionReason, unassignUsers);
}
public static DeviceDecommissionImportContext Create(DiscoDataContext database, DeviceModel deviceModel, DecommissionReasons decommissionReason, bool unassignUsers)
{
var devices = database.Devices
.Include(d => d.Jobs)
.Include(d => d.AssignedUser)
.Where(d => d.DeviceModelId == deviceModel.Id && d.DecommissionedDate == null)
.ToList();
return new DeviceDecommissionImportContext($"Model: {deviceModel.Description} ({deviceModel.Id})", devices, decommissionReason, unassignUsers);
}
public IDeviceImportColumn GetColumn(int Index)
=> throw new NotImplementedException();
@@ -43,6 +43,12 @@ namespace Disco.Services.Devices.Importing
public static IDeviceImportContext BeginDecommissionImport(DiscoDataContext database, DeviceBatch deviceBatch, DecommissionReasons decommissionReason, bool unassignUsers)
=> DeviceDecommissionImportContext.Create(database, deviceBatch, decommissionReason, unassignUsers);
public static IDeviceImportContext BeginDecommissionImport(DiscoDataContext database, DeviceProfile deviceProfile, DecommissionReasons decommissionReason, bool unassignUsers)
=> DeviceDecommissionImportContext.Create(database, deviceProfile, decommissionReason, unassignUsers);
public static IDeviceImportContext BeginDecommissionImport(DiscoDataContext database, DeviceModel deviceModel, DecommissionReasons decommissionReason, bool unassignUsers)
=> DeviceDecommissionImportContext.Create(database, deviceModel, decommissionReason, unassignUsers);
private static void GuessHeaderTypes(this IDeviceImportContext Context, DiscoDataContext Database)
{
using (var dataReader = Context.GetDataReader())