Beispiel #1
0
        private bool DownloadLogData()
        {
            bool result            = true;
            int  idwTMachineNumber = 0;
            int  idwEnrollNumber   = 0;
            int  idwEMachineNumber = 0;
            int  idwVerifyMode     = 0;
            int  idwInOutMode      = 0;
            int  idwYear           = 0;
            int  idwMonth          = 0;
            int  idwDay            = 0;
            int  idwHour           = 0;
            int  idwMinute         = 0;

            int idwErrorCode = 0;
            int iGLCount     = 0;

            axCZKEM1.EnableDevice(iMachineNumber, false);    //disable the device
            if (axCZKEM1.ReadGeneralLogData(iMachineNumber)) //read all the attendance records to the memory
            {
                var device = context.Devices
                             .Where(w => w.IP == this.Device.IP).FirstOrDefault();

                while (axCZKEM1.GetGeneralLogData(iMachineNumber, ref idwTMachineNumber, ref idwEnrollNumber,
                                                  ref idwEMachineNumber, ref idwVerifyMode, ref idwInOutMode, ref idwYear, ref idwMonth, ref idwDay, ref idwHour, ref idwMinute))//get records from the memory
                {
                    iGLCount++;
                    var dtStr = idwYear.ToString() + '-' + idwMonth.ToString() + '-' + idwDay.ToString() + ' ' + idwHour.ToString() + ':' + idwMinute.ToString();
                    var dt    = DateTime.Parse(dtStr);

                    if (dt != null)
                    {
                        var employee = context.Employees
                                       .Where(w => w.EmployeeCode == idwEnrollNumber.ToString())
                                       .FirstOrDefault();

                        if (employee != null)
                        {
                            AttendanceRecord record = new AttendanceRecord()
                            {
                                EmployeeId = employee.EmployeeId,
                                Date       = dt,
                                DeviceId   = device.DeviceId,
                                InsertedAt = DateTime.Now
                            };

                            try
                            {
                                context.AttendanceRecords.Add(record);
                                context.SaveChanges();
                            }
                            catch (Exception e)
                            {
                                result = false;
                                MyLogger.GetInstance.Error(string.Format("ZKDevice.DownloadLogData() - Error on device Ip: {0} ", this.Device.IP), e);
                            }

                            MyLogger.GetInstance.Info(string.Format("ZKDevice.DownloadLogData() - Insert into dbo.AttendanceRecord(DeviceId,EmployeeId,Date,InsertedDate) Values({0},{1},'{2}','{3}')", this.Device.DeviceId, idwEnrollNumber.ToString(), dt.ToString("yyyy-MM-dd HH:mm"), DateTime.Now.ToString("yyyy-MM-dd HH:mm")));
                        }
                        else
                        {
                            MyLogger.GetInstance.Error(string.Format("ZKDevice.DownloadLogData() - Employee Not Exist - Insert into dbo.AttendanceRecord(DeviceId,EmployeeId,Date,InsertedDate) Values({0},{1},'{2}','{3}')", this.Device.DeviceId, idwEnrollNumber.ToString(), dt.ToString("yyyy-MM-dd HH:mm"), DateTime.Now.ToString("yyyy-MM-dd HH:mm")));
                        }
                    }
                    else
                    {
                        result = false;
                        MyLogger.GetInstance.Error(string.Format("ZKDevice.DownloadLogData() - Time error - Insert into dbo.AttendanceRecord(DeviceId,EmployeeId,Date,InsertedDate) Values({0},{1},'{2}','{3}')", this.Device.DeviceId, idwEnrollNumber.ToString(), dtStr, DateTime.Now.ToString("yyyy-MM-dd HH:mm")));
                    }
                }
            }
            else
            {
                axCZKEM1.GetLastError(ref idwErrorCode);
                result = false;

                if (idwErrorCode != 0)
                {
                    MyLogger.GetInstance.Error("ZKDevice.DownloadLogData() - Reading data from terminal failed, ErrorCode: " + idwErrorCode.ToString());
                }
                else
                {
                    MyLogger.GetInstance.Error("ZKDevice.DownloadLogData() - No data from terminal returns!");
                }
            }
            axCZKEM1.EnableDevice(iMachineNumber, true);//enable the device
            MyLogger.GetInstance.Debug("ZKDevice.DownloadLogData() - Download: " + iGLCount + " records");

            return(result);
        }