Bug Fix #97 - Removed Organisation Address References
Remove Device Profile references to an address when its removed, and anticipate missing addresses where referenced.
This commit is contained in:
@@ -285,7 +285,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
#endregion
|
||||
|
||||
#region Update Properties
|
||||
private void UpdateDescription(Disco.Models.Repository.DeviceProfile deviceProfile, string Description)
|
||||
private void UpdateDescription(DeviceProfile deviceProfile, string Description)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Description))
|
||||
deviceProfile.Description = null;
|
||||
@@ -294,7 +294,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Database.SaveChanges();
|
||||
}
|
||||
|
||||
private void UpdateName(Disco.Models.Repository.DeviceProfile deviceProfile, string Name)
|
||||
private void UpdateName(DeviceProfile deviceProfile, string Name)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Name))
|
||||
throw new Exception("Profile name cannot be empty");
|
||||
@@ -303,7 +303,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Database.SaveChanges();
|
||||
}
|
||||
|
||||
private void UpdateShortName(Disco.Models.Repository.DeviceProfile deviceProfile, string ShortName)
|
||||
private void UpdateShortName(DeviceProfile deviceProfile, string ShortName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ShortName))
|
||||
throw new Exception("Profile short name cannot be empty");
|
||||
@@ -312,12 +312,12 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Database.SaveChanges();
|
||||
}
|
||||
|
||||
private void UpdateDistributionType(Disco.Models.Repository.DeviceProfile deviceProfile, string DistributionType)
|
||||
private void UpdateDistributionType(DeviceProfile deviceProfile, string DistributionType)
|
||||
{
|
||||
int iDt;
|
||||
if (int.TryParse(DistributionType, out iDt))
|
||||
{
|
||||
deviceProfile.DistributionType = (Disco.Models.Repository.DeviceProfile.DistributionTypes)iDt;
|
||||
deviceProfile.DistributionType = (DeviceProfile.DistributionTypes)iDt;
|
||||
Database.SaveChanges();
|
||||
return;
|
||||
}
|
||||
@@ -432,7 +432,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Database.SaveChanges();
|
||||
}
|
||||
|
||||
private void UpdateOrganisationalUnit(Disco.Models.Repository.DeviceProfile deviceProfile, string OrganisationalUnit)
|
||||
private void UpdateOrganisationalUnit(DeviceProfile deviceProfile, string OrganisationalUnit)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(OrganisationalUnit))
|
||||
OrganisationalUnit = ActiveDirectory.Context.PrimaryDomain.DefaultComputerContainer;
|
||||
@@ -444,7 +444,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateComputerNameTemplate(Disco.Models.Repository.DeviceProfile deviceProfile, string ComputerNameTemplate)
|
||||
private void UpdateComputerNameTemplate(DeviceProfile deviceProfile, string ComputerNameTemplate)
|
||||
{
|
||||
Authorization.Require(Claims.Config.DeviceProfile.ConfigureComputerNameTemplate);
|
||||
|
||||
@@ -458,7 +458,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
deviceProfile.ComputerNameInvalidateCache();
|
||||
}
|
||||
|
||||
private void UpdateDefaultOrganisationAddress(Disco.Models.Repository.DeviceProfile deviceProfile, string DefaultOrganisationAddress)
|
||||
private void UpdateDefaultOrganisationAddress(DeviceProfile deviceProfile, string DefaultOrganisationAddress)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DefaultOrganisationAddress))
|
||||
{
|
||||
@@ -490,7 +490,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Database.SaveChanges();
|
||||
}
|
||||
|
||||
private void UpdateEnforceComputerNameConvention(Disco.Models.Repository.DeviceProfile deviceProfile, string EnforceComputerNameConvention)
|
||||
private void UpdateEnforceComputerNameConvention(DeviceProfile deviceProfile, string EnforceComputerNameConvention)
|
||||
{
|
||||
bool bValue;
|
||||
if (bool.TryParse(EnforceComputerNameConvention, out bValue))
|
||||
@@ -503,7 +503,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
throw new Exception("Invalid Boolean Value");
|
||||
}
|
||||
|
||||
private void UpdateEnforceOrganisationalUnit(Disco.Models.Repository.DeviceProfile deviceProfile, string EnforceOrganisationalUnit)
|
||||
private void UpdateEnforceOrganisationalUnit(DeviceProfile deviceProfile, string EnforceOrganisationalUnit)
|
||||
{
|
||||
bool bValue;
|
||||
if (bool.TryParse(EnforceOrganisationalUnit, out bValue))
|
||||
@@ -516,7 +516,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
throw new Exception("Invalid Boolean Value");
|
||||
}
|
||||
|
||||
private void UpdateProvisionADAccount(Disco.Models.Repository.DeviceProfile deviceProfile, string ProvisionADAccount)
|
||||
private void UpdateProvisionADAccount(DeviceProfile deviceProfile, string ProvisionADAccount)
|
||||
{
|
||||
bool bValue;
|
||||
if (bool.TryParse(ProvisionADAccount, out bValue))
|
||||
|
||||
@@ -167,6 +167,11 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
[DiscoAuthorize(Claims.Config.Organisation.ConfigureAddresses)]
|
||||
public virtual ActionResult DeleteOrganisationAddress(int Id, bool redirect = false)
|
||||
{
|
||||
// Remove References in Device Profiles
|
||||
Database.DeviceProfiles
|
||||
.Where(dp => dp.DefaultOrganisationAddress == Id).ToList()
|
||||
.ForEach(dp => dp.DefaultOrganisationAddress = null);
|
||||
|
||||
Database.DiscoConfiguration.OrganisationAddresses.RemoveAddress(Id);
|
||||
Database.SaveChanges();
|
||||
|
||||
|
||||
@@ -27,8 +27,12 @@ namespace Disco.Web.Areas.Config.Models.DeviceProfile
|
||||
if (DiscoApplication.MultiSiteMode)
|
||||
{
|
||||
foreach (var dp in m.DeviceProfiles)
|
||||
{
|
||||
if (dp.Address.HasValue)
|
||||
dp.AddressName = Database.DiscoConfiguration.OrganisationAddresses.GetAddress(dp.Address.Value).Name;
|
||||
{
|
||||
dp.AddressName = Database.DiscoConfiguration.OrganisationAddresses.GetAddress(dp.Address.Value)?.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Disco.Web.Areas.Public.Models.UserHeldDevices
|
||||
ReadyForReturn = this.ReadyForReturn,
|
||||
WaitingForUserAction = this.WaitingForUserAction,
|
||||
DeviceProfileId = this.DeviceProfileId,
|
||||
DeviceAddress = (this.DeviceAddressId.HasValue ? Database.DiscoConfiguration.OrganisationAddresses.GetAddress(this.DeviceAddressId.Value).ShortName : string.Empty)
|
||||
DeviceAddress = (this.DeviceAddressId.HasValue ? Database.DiscoConfiguration.OrganisationAddresses.GetAddress(this.DeviceAddressId.Value)?.ShortName : string.Empty)
|
||||
};
|
||||
var n = DateTime.Now;
|
||||
if (!this.ReadyForReturn && this.EstimatedReturnTime.HasValue && this.EstimatedReturnTime.Value > n)
|
||||
|
||||
Reference in New Issue
Block a user