public static DeviceUserAssignment AssignDevice(this Device d, DiscoDataContext Database, User u) { DeviceUserAssignment newDua = default(DeviceUserAssignment); // Mark existing assignments as Unassigned foreach (var dua in Database.DeviceUserAssignments.Where(m => m.DeviceSerialNumber == d.SerialNumber && !m.UnassignedDate.HasValue)) dua.UnassignedDate = DateTime.Now; if (u != null) { // Add new Assignment newDua = new DeviceUserAssignment() { DeviceSerialNumber = d.SerialNumber, AssignedUserId = u.UserId, AssignedDate = DateTime.Now }; Database.DeviceUserAssignments.Add(newDua); d.AssignedUserId = u.UserId; d.AssignedUser = u; } else { d.AssignedUserId = null; } // Update AD Account if (ActiveDirectory.IsValidDomainAccountId(d.DeviceDomainId)) { var adMachineAccount = ActiveDirectory.RetrieveADMachineAccount(d.DeviceDomainId); if (adMachineAccount != null) adMachineAccount.SetDescription(d); } return newDua; }
public override bool Apply(DiscoDataContext Database, Device Device) { if (this.FieldAction == EntityState.Modified) { // Remove Current Assignments var currentAssignments = Device.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue); foreach (var currentAssignment in currentAssignments) { currentAssignment.UnassignedDate = DateTime.Now; } } if (FieldAction == EntityState.Added || FieldAction == EntityState.Modified) { // Add Assignment if (parsedValue != null) { var assignment = new DeviceUserAssignment() { Device = Device, DeviceSerialNumber = Device.SerialNumber, AssignedUserId = parsedValue, AssignedDate = DateTime.Now }; Database.DeviceUserAssignments.Add(assignment); } Device.AssignedUserId = parsedValue; return true; } else { return false; } }