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); }