feature: device model/profile decommissioning
This commit is contained in:
@@ -48,12 +48,5 @@ namespace Disco.Services
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void Decommission(this DeviceBatch db, DiscoDataContext database, DecommissionReasons Reason, bool unassignUsers)
|
||||
{
|
||||
if (!db.CanDecommission(database))
|
||||
throw new InvalidOperationException("Decommission of Device Batch is Denied");
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,17 @@ namespace Disco.Services
|
||||
Database.DeviceModels.Remove(dm);
|
||||
}
|
||||
|
||||
public static bool CanDecommission(this DeviceModel dm, DiscoDataContext database)
|
||||
{
|
||||
if (!UserService.CurrentAuthorization.Has(Claims.Device.Actions.Import))
|
||||
return false;
|
||||
|
||||
if (!database.Devices.Any(d => d.DeviceModelId == dm.Id && d.DecommissionedDate == null))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static Tuple<DeviceModel, bool> GetOrCreateDeviceModel(this DbSet<DeviceModel> DeviceModelsSet, string Manufacturer, string Model, string ModelType)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Manufacturer))
|
||||
|
||||
@@ -70,7 +70,18 @@ namespace Disco.Services
|
||||
// Delete Profile
|
||||
Database.DeviceProfiles.Remove(dp);
|
||||
}
|
||||
|
||||
|
||||
public static bool CanDecommission(this DeviceProfile dp, DiscoDataContext database)
|
||||
{
|
||||
if (!UserService.CurrentAuthorization.Has(Claims.Device.Actions.Import))
|
||||
return false;
|
||||
|
||||
if (!database.Devices.Any(d => d.DeviceProfileId == dp.Id && d.DecommissionedDate == null))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static IEnumerable<PluginFeatureManifest> GetCertificateProviders(this DeviceProfile dp)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(dp.CertificateProviders))
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user