예제 #1
0
        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;
        }
예제 #2
0
        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;
            }
        }