Beispiel #1
0
        public Enroll GetEnroll(int userId)
        {
            var device        = _deviceProxy.Device;
            var extraProperty = (UInt64)userId;
            var extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(()
                                                               =>
                {
                    return(_deviceProxy.DeviceConnection.GetProperty(DeviceProperty.Enrolls, extraProperty, ref device, ref extraData));
                });

                if (!result)
                {
                    Log.WarnFormat("Cannot get enroll for useid: {0}", userId);
                    return(null);
                }

                var rawUser   = (User)extraData;
                var rawEnroll = rawUser.Enrolls.First();
                return(rawEnroll);
            }
        }
Beispiel #2
0
        public bool SaveOrUpdateUser(User deviceUser)
        {
            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(
                    () => _deviceProxy.DeviceConnection.SetProperty(UserProperty.Enroll, new object(), deviceUser, false));

                return(result);
            }
        }
Beispiel #3
0
        public bool DeleteAllLog()
        {
            bool result;
            var  device        = _deviceProxy.Device;
            var  extraProperty = new object();
            var  extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                result = _deviceProxy.DeviceConnection.SetProperty(DeviceProperty.AttRecords, extraProperty, device, extraData);
                return(result);
            }
        }
Beispiel #4
0
        public bool UpdateTimeGroupData(byte[] data)
        {
            var    device    = _deviceProxy.Device;
            object extraData = Encoding.Unicode.GetString(data);

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(
                    () => _deviceProxy.DeviceConnection.SetProperty(DeviceProperty.PassGroup, Zd2911Utils.DevicePassGroup, device, extraData));

                return(result);
            }
        }
Beispiel #5
0
        public void UpdateDevice(byte[] data)
        {
            bool result        = false;
            var  device        = _deviceProxy.Device;
            var  extraProperty = new object();
            var  extraData     = Encoding.Unicode.GetString(data);

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var retryablePolicy = Policies.GetRetryablePolicy();
                result           = retryablePolicy.Execute(
                    () => result = _deviceProxy.DeviceConnection.SetProperty(DeviceProperty.AccessControlSettings, Zd2911Utils.DeviceAccessControlSettings, device, extraData));
            }
        }
Beispiel #6
0
        public DoorStateInfo GetDoorStates(Int32 doorIndex)
        {
            var doorState = new DoorStateInfo()
            {
                DoorIndex = doorIndex
            };

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                doorState.Opened = GetDoorStatus(doorIndex == 1);
            }

            return(doorState);
        }
Beispiel #7
0
        public User GetUser(int userId)
        {
            var deviceUser = new User()
            {
                DIN = (UInt64)userId
            };
            object extraData = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetOneRetryPolicy();
                bool result          = retryablePolicy.Execute(
                    () => _deviceProxy.DeviceConnection.GetProperty(UserProperty.Enroll, null, ref deviceUser, ref extraData));
                return(result ? deviceUser : null);
            }
        }
Beispiel #8
0
        public List <Record> GetLogData(QueryLogCondictions conditions)
        {
            var logs = new List <Record>();

            bool result;
            var  device        = _deviceProxy.Device;
            var  extraProperty = new object();
            var  extraData     = new object();

            var datetimeRange = new List <DateTime>()
            {
                conditions.BeginTime.Value,
                conditions.EndTime.Value,
            };

            ;

            var boolList = new List <bool>()
            {
                conditions.Options == GetLogOptions.GetNewLogs, //新日志,该参数为true时,第二个参数清除新日志标记值为true或false时都将强制清除新日志标记
                conditions.CleanNewLogPosition,                 //清除新日志标记
            };

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                extraProperty = (conditions.Options == GetLogOptions.GetNewLogs);
                extraData     = datetimeRange;
                result        = _deviceProxy.DeviceConnection.GetProperty(DeviceProperty.ManagementRecordsCount, extraProperty, ref device, ref extraData);

                int recordCount;
                int.TryParse(extraData.ToString(), out recordCount);
                if (result == false || recordCount == 0)
                {
                    return(logs);
                }

                extraProperty = boolList;
                extraData     = datetimeRange;
                result        = _deviceProxy.DeviceConnection.GetProperty(DeviceProperty.ManagementRecords, extraProperty, ref device, ref extraData);
                if (result)
                {
                    logs = (List <Record>)extraData;
                }

                return(logs);
            }
        }
Beispiel #9
0
        public bool DeleteUser(int userId)
        {
            var device        = _deviceProxy.Device;
            var extraProperty = new object();
            var extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(
                    () =>
                {
                    extraData = (UInt64)userId;
                    return(_deviceProxy.DeviceConnection.SetProperty(DeviceProperty.Enrolls, extraProperty, device, extraData));
                });

                return(result);
            }
        }
Beispiel #10
0
        public IEnumerable <User> GetAllUsers(bool isAlsoGetName)
        {
            var device        = _deviceProxy.Device;
            var extraProperty = new object();
            var extraData     = new object();
            var users         = new List <User>();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(
                    () =>
                {
                    extraProperty = (UInt64)0;
                    return(_deviceProxy.DeviceConnection.GetProperty(DeviceProperty.Enrolls, extraProperty, ref device, ref extraData));
                });

                if (result)
                {
                    users = (List <User>)extraData;
                }

                if (isAlsoGetName)
                {
                    var oneRetryPolicy = Policies.GetOneRetryPolicy();
                    users.ForEach(x =>
                    {
                        var user = new User()
                        {
                            DIN = x.DIN
                        };
                        oneRetryPolicy.Execute(
                            () => _deviceProxy.DeviceConnection.GetProperty(UserProperty.UserName, extraProperty, ref user, ref extraData));
                        x.UserName = user.UserName;
                    });
                }

                return(users);
            }
        }
Beispiel #11
0
        public byte[] GetDeviceData()
        {
            bool result;
            var  device        = _deviceProxy.Device;
            var  extraProperty = new object();
            var  extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var retryablePolicy = Policies.GetRetryablePolicy();
                result = retryablePolicy.Execute(
                    () =>
                {
                    extraData = Zd2911Utils.DeviceAccessControlSettings;
                    return(_deviceProxy.DeviceConnection.GetProperty(DeviceProperty.AccessControlSettings, extraProperty,
                                                                     ref device, ref extraData));
                });

                byte[] data = Encoding.Unicode.GetBytes((string)extraData);
                return(data);
            }
        }
Beispiel #12
0
        public SystemEntity GetSystemData()
        {
            var    entity = new SystemEntity();
            var    device = _deviceProxy.Device;
            bool   result;
            object extraProperty = new object();
            object extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                entity.DeviceId   = GetSystemParameter(SystemParameters.DeviceID);
                entity.BaudRate   = GetSystemParameter(SystemParameters.Baudrate);
                entity.Password   = GetSystemParameter(SystemParameters.DevicePassword);
                entity.IP         = GetSystemParameter(SystemParameters.IPAddress);
                entity.Port       = GetSystemParameter(SystemParameters.UDPPort);
                entity.ServerURL  = GetSystemParameter(SystemParameters.ServerIPAddress);
                entity.ServerPort = GetSystemParameter(SystemParameters.ServerUDPPort);


                extraData    = Zd2911Utils.DeviceModel;
                result       = _deviceProxy.DeviceConnection.GetProperty(DeviceProperty.Model, extraProperty, ref device, ref extraData);
                entity.Model = (string)extraData;

                extraData           = Zd2911Utils.DeviceSerialNo;
                result              = _deviceProxy.DeviceConnection.GetProperty(DeviceProperty.SerialNo, extraProperty, ref device, ref extraData);
                entity.SerialNumber = (string)extraData;

                result = _deviceProxy.DeviceConnection.GetProperty(DeviceProperty.MacAddress, extraProperty, ref device, ref extraData);
                if (result)
                {
                    var bytes = (byte[])extraData; //bytes.Length = 6 }
                    entity.Mac = ConvertObject.ConvertByteToHex(bytes);
                }

                return(entity);
            }
        }
Beispiel #13
0
        public byte[] GetTimeGroupData()
        {
            var device        = _deviceProxy.Device;
            var extraProperty = new object();
            var extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                var  retryablePolicy = Policies.GetRetryablePolicy();
                bool result          = retryablePolicy.Execute(()
                                                               =>
                {
                    extraData = Zd2911Utils.DevicePassGroup;
                    return(_deviceProxy.DeviceConnection.GetProperty(DeviceProperty.PassGroup, extraProperty, ref device, ref extraData));
                });

                if (!result)
                {
                    throw new Exception("Get time group fails");
                }

                return(Encoding.Unicode.GetBytes((string)extraData));
            }
        }
Beispiel #14
0
        public bool UpdateSystemData(SystemEntity entity)
        {
            var    device        = _deviceProxy.Device;
            bool   result        = true;
            object extraProperty = new object();
            object extraData     = new object();

            using (var operation = new DeviceLockableOperation(_deviceProxy))
            {
                SetSystemParameter(SystemParameters.DeviceID, entity.DeviceId);
                SetSystemParameter(SystemParameters.Baudrate, entity.BaudRate);
                SetSystemParameter(SystemParameters.DevicePassword, entity.Password);
                SetSystemParameter(SystemParameters.IPAddress, entity.IP);
                SetSystemParameter(SystemParameters.UDPPort, entity.Port);
                SetSystemParameter(SystemParameters.ServerIPAddress, entity.ServerURL);
                SetSystemParameter(SystemParameters.ServerUDPPort, entity.ServerPort);

                extraProperty = Zd2911Utils.DeviceModel;
                extraData     = entity.Model;
                _deviceProxy.DeviceConnection.SetProperty(DeviceProperty.Model, extraProperty, device, extraData);

                return(result);
            }
        }