//OnDisconnected private void OnDisconnected(SemacV14.Entity.TerminalEntity En) { EventLog.Write("{0}-{1}", "OnDisconnected", "OnDisconnected"); try { lock (TerminalTable) { DBO.CardReader dt = new DBO.CardReader(); foreach (DataRow row in TerminalTable.Rows) { if (row["TerminalID"].ToString() == En.TerminalID.ToString()) { TerminalTable.Rows.Remove(row); dt.TerminalID = En.TerminalID.ToString(); dt.Status = dt.Status = En.Status.Equals("On Line") ? "1" : "0"; BO.updateCardReaderState(dt); break; } } } Msg = string.Format("OnDisconnected,CardReader:{0},{1}", TerminalTable.Rows.Count.ToString(), En.ToMyString); EventLog.Write("{0}-{1}", "OnDisconnected", Msg); Console.WriteLine(Msg); _timer.Enabled = false; } catch (Exception ex) { EventLog.WriteError("{0}-{1}", "OnDisconnected", ex.ToString()); } }
//OnConnected private void OnConnected(SemacV14.Entity.TerminalEntity En) { EventLog.Write("{0}-{1}", "OnConnected", "Start"); try { ChannelID = En.ChannelID; TerminalID = En.TerminalID; MacAddress = En.MacAddress; lock (this.TerminalTable) { DataRow row = this.TerminalTable.NewRow(); row["ChannelID"] = En.ChannelID; //Connection ID row["Status"] = En.Status; //On Line status row["TerminalID"] = En.TerminalID.ToString(); //TerminalID row["IPAddress"] = En.IPAddress; //IP Address row["MacAddress"] = En.MacAddress; //MAC Address row["SerialNo"] = En.SerialNo; //Serial No. row["ModelName"] = En.ModelName; //Model Name row["FirmwareVersion"] = En.FirmwareVersion; //Firmware Version this.TerminalTable.Rows.Add(row); } EventLog.Write("{0}-{1}", "OnConnected", "Start-UpdateCardReaderState"); int iResult = 0;//0.Insert ,1.Update DBO.CardReader dt = new DBO.CardReader(); foreach (DataRow dr in dtCardReader.Rows) { if (dr["TerminalID"].ToString() == En.TerminalID.ToString()) { iResult = 1; break; } } dt.Status = En.Status.Equals("On Line")?"1":"0"; dt.TerminalID = En.TerminalID.ToString(); dt.IPAddress = En.IPAddress; dt.MacAddress = En.MacAddress; dt.SerialNo = En.SerialNo; dt.ModelName = En.ModelName; dt.FirmwareVersion = En.FirmwareVersion; dt.IsUse = "Y"; if (iResult == 0) { BO.insertCardReader(dt); } else { BO.updateCardReader(dt); } Msg = string.Format("OnConnected,CardReader:{0},{1}", TerminalTable.Rows.Count.ToString(), En.ToMyString); EventLog.Write("{0}-{1}", "OnConnected", Msg); Console.WriteLine(Msg); _timer.Enabled = true; } catch (Exception ex) { EventLog.Write("Error:{0}-{1}", "OnConnected", ex.ToString()); } }
private void insertLog(SemacV14.Entity.DoorLogEntity table) { BO.insertCardLog(table.CardNo , table.TerminalID.ToString() , table.EntryDate.ToString("yyyy/MM/dd HH:mm:ss") , table.EventAlarmCode , table.EventAlarmCodeInt32.ToString() , table.LogIndex.ToString()); }
public string QueryTheNumberOfAlreadyRegisteredUsers() { try { if (!checkCardReader("QueryTheNumberOfAlreadyRegisteredUsers")) { return("99,99"); } EventLog.Write("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", "Start"); var re = new SemacV14.Request.CommonRequest(TerminalID, Define.CommandType.QueryTheNumberOfAlreadyRegisteredUsers); var Ea = new SemacV14.Service.ExecuteArgz(ChannelID, re); //Execute SemacV14.Service.Actor Wrk = new Actor(Ea); Ea = Wrk.SendAndReceive(); // 'Send command,and return result // check the result if (Ea.IsCompleted == true) { EventLog.Write("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", "Success"); //Msg = String.Format("筆數:{0},TerminalID={1}, ChannelID={2}", Ea.EntityList.Count.ToString(), TerminalID, ChannelID); //EventLog.Write("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", Msg); SemacV14.Entity.QueryTheNumberOfAlreadyRegisteredUsersEntity En = (SemacV14.Entity.QueryTheNumberOfAlreadyRegisteredUsersEntity)Ea.CallbackEntity; BO.UpdateCardReaderUserCount(TerminalID.ToString(), En.RegisteredCount.ToString()); return("1," + En.RegisteredCount.ToString()); } else { EventLog.Write("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", "Failure"); Msg = String.Format("ErrorMsg:{0},TerminalID={1}, ChannelID={2}", Ea.ErrorMessage, TerminalID, ChannelID); EventLog.Write("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", Msg); return("0," + Ea.ErrorMessage); } //SemacV14.Service.Actor act = new Actor(Ea); //act.OnEntityDataArrival += HandleEntity; //act.Send(); //return true; } catch (Exception ex) { Msg = String.Format("ErrorMsg:{0},TerminalID={1}, ChannelID={2}", ex.Message, TerminalID, ChannelID); EventLog.WriteError("{0}-{1}", "QueryTheNumberOfAlreadyRegisteredUsers", Msg); return("99,99"); } }
/// <summary> /// 取得卡機內 UserID List /// </summary> /// <returns></returns> private int RetrievingUserIDList() { try { if (!checkCardReader("RetrievingUserIDList")) { return(99); } var re = new SemacV14.Request.CommonRequest(TerminalID, Define.CommandType.RetrievingUserIDList); var Ea = new SemacV14.Service.ExecuteArgz(ChannelID, re); //Execute SemacV14.Service.Actor Wrk = new Actor(Ea); Wrk.TimeoutMinisecond = 10 * 60 * 1000; //those cmd may need more time,but in default , timeout checking was 10 seconds. Ea = Wrk.SendAndReceive(); // 'Send command,and return result // check the result if (Ea.IsCompleted == true) { EventLog.Write("{0}-{1}", "RetrievingUserIDList", "Success"); SemacV14.Entity.RetrievingUserIDListEntity En = (SemacV14.Entity.RetrievingUserIDListEntity)Ea.CallbackEntity; BO.insertCheckUserLog(TerminalID.ToString(), En.Count.ToString()); string SEQ = BO.getCheckUserLogSEQ(TerminalID.ToString()); int iCount = 0; foreach (uint Item in En.Items) { iCount++; Console.WriteLine(iCount.ToString() + "-" + String.Format("{0:X}", Convert.ToInt64(Item.ToString()))); BO.insertCheckUserList(TerminalID.ToString(), String.Format("{0:X}", Convert.ToInt64(Item.ToString()))); BO.insertCheckUserListTemp(SEQ, TerminalID.ToString(), String.Format("{0:X}", Convert.ToInt64(Item.ToString()))); } return(1); } else { EventLog.WriteCU("{0}-{1}", "RetrievingUserIDList.Ea.IsCompleted=false", "失敗:" + Ea.ErrorMessage.ToString()); //EventLog.Write("{0}-{1}", "RetrievingUserIDList", "Failure"); return(0); } } catch (Exception ex) { Msg = String.Format("ErrorMsg:{0},TerminalID={1}, ChannelID={2}", ex.Message, TerminalID, ChannelID); EventLog.WriteCU("{0}-{1}", "RetrievingUserIDList", Msg); return(99); } }
/// <summary> /// 差異更新 /// </summary> private void SyncCRUser() { blIsCheckUserSyncOK = true; try { EventLog.WriteCU("{0}-{1}", "SyncCRUser", "Start"); DataTable dt = BO.getCheckUserToCR(TerminalID.ToString()); foreach (DataRow dr in dt.Rows) { User user = new User { UserID = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber), EmployeeID = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber).ToString(), OverWrite = true, CardNo = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber).ToString(), UserName = dr["Cn"].ToString(), CheckExpire = true, ExpiredFrom = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss")), ExpiredTo = Convert.ToDateTime(DateTime.Now.AddDays(1000).ToString("yyyy/MM/dd HH:mm:ss")), EnabledStatus = true,//!entry.Black && entry.ExpireOn.Value >= DateTime.Now, UserType = 0, Group01 = 1, Group02 = 0, Group03 = 0, Group04 = 0, BypassTimeZoneLevel = 1, PersonalPassword = "" }; if (dr["State"].ToString().Equals("D")) { UserDeletionRequest(user.UserID); } else { AddUser(user); } } EventLog.WriteCU("{0}-{1}", "SyncCRUser", "End-Sync CRUser"); } catch (Exception ex) { EventLog.WriteCU("{0}-{1}", "SyncCRUser", ex.ToString()); } blIsCheckUserSyncOK = false; }
private void SyncUserNew() { try { //檢查CardReaderSyncTime的時間範圍,是否符合可執行的時段 if (!getIsSync()) { return; } EventLog.Write("{0}-{1}", "SyncUserNew", "Start"); foreach (DataRow drT in TerminalTable.Rows) { ChannelID = drT["ChannelID"].ToString(); TerminalID = Convert.ToInt32(drT["TerminalID"].ToString()); MacAddress = drT["MacAddress"].ToString(); this.dtCardReader = BO.getCardReader(TerminalID.ToString()); DataTable dtSyncCardReaderUserLog = BO.getSyncCardReaderUserLog(TerminalID.ToString(), SyncTimeSEQ.ToString()); //判斷今天是否已同步完成 if (dtSyncCardReaderUserLog.Rows.Count == 0) { if (dtCardReader.Rows[0]["IsSyncAll"].ToString().Equals("1")) { DeleteAllUser(); BO.UpdateCardReaderIsSyncAll(TerminalID.ToString()); } int addCount = 0, delCount = 0, AllCount = 0; DataTable dt = BO.getPersonCardToCardReader(TerminalID.ToString()); foreach (DataRow dr in dt.Rows) { User user = new User { UserID = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber), EmployeeID = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber).ToString(), OverWrite = true, CardNo = UInt32.Parse(dr["HexCardOrderNo"].ToString(), System.Globalization.NumberStyles.HexNumber).ToString(), UserName = dr["Cn"].ToString(), CheckExpire = true, ExpiredFrom = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy/MM/dd HH:mm:ss")), ExpiredTo = Convert.ToDateTime(DateTime.Now.AddDays(1000).ToString("yyyy/MM/dd HH:mm:ss")), EnabledStatus = true,//!entry.Black && entry.ExpireOn.Value >= DateTime.Now, UserType = 0, Group01 = 1, Group02 = 0, Group03 = 0, Group04 = 0, BypassTimeZoneLevel = 1, PersonalPassword = "" }; int RCount = addCount + delCount; if (dr["State"].ToString().Equals("D")) { if (GetOneUser(user.UserID) == 1) { if (UserDeletionRequest(user.UserID) == 1) { delCount++; } else if (UserDeletionRequest(user.UserID) == 1) { delCount++; } else if (UserDeletionRequest(user.UserID) == 1) { delCount++; } else if (UserDeletionRequest(user.UserID) == 1) { delCount++; } } else { delCount++; } } else { if (AddUser(user)) { addCount++; } else if (AddUser(user)) { addCount++; } else if (AddUser(user)) { addCount++; } else if (AddUser(user)) { addCount++; } } if (RCount < (delCount + addCount)) { BO.sp_TFSyncUserSuccess(dr["SEQ"].ToString()); } } Msg = String.Format(@"已同步【白名單】,人員筆數:{0},更新筆數:{1},刪除筆數:{2},失敗筆數:{3},TerminalID={4}, MacAddress={5}" , dt.Rows.Count.ToString(), addCount.ToString(), delCount.ToString() , (dt.Rows.Count - addCount - delCount).ToString() , TerminalID, MacAddress); EventLog.Write("{0}-{1}", "SyncUser", Msg); BO.insertSyncUserLog(TerminalID.ToString(), Msg); if ((addCount + delCount) == dt.Rows.Count) { BO.insertSyncCardReaderUserLog(TerminalID.ToString(), SyncTimeSEQ.ToString()); //查詢卡機人員筆數 QueryTheNumberOfAlreadyRegisteredUsers(); blTodayIsSyncOK = true; } } else { blTodayIsSyncOK = true; } } EventLog.Write("{0}-{1}", "SyncUserNew", "End-Sync User"); } catch (Exception ex) { EventLog.WriteError("{0}-{1}", "SyncUserNew", ex.ToString()); } }
private void getCheckUserSyncTime() { this.dtCheckUserSyncTime = BO.getCheckUserSyncTime(); }
private void getCardReaderSyncTime() { this.dtCardReaderSyncTime = BO.getCardReaderSyncTime(); }
private void getCardReader() { this.dtCardReader = BO.getCardReader(); }
/// <summary> /// CheckUser Timer /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _timerCheckUser_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { //_timerCheckUser.Enabled = false; //忙線中 if (blIsCheckUserSyncOK) { return; } blIsCheckUserSyncOK = true; //不在時限內,則不執行 if (!getIsSyncCheckUser()) { EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "不在時間區間內 return"); Console.WriteLine("不在時間區間內 return"); blIsCheckUserSyncOK = false; return; } //卡機基本資料-最後同步時間 等於 目前日期,則不執行 //卡機基本資料-人員名單數量 等於 人員基本資料數量,則不執行 if (BO.isReturn(TerminalID.ToString())) { EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "不符合規則 return"); Console.WriteLine("不符合規則 return"); blIsCheckUserSyncOK = false; return; } EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "=== _timerCheckUser Start ==="); Console.WriteLine("=== _timerCheckUser Start ==="); //清除資料CheckUserList EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "1.清除資料CheckUserList"); Console.WriteLine("1.清除資料CheckUserList"); BO.delCheckUserList(TerminalID.ToString()); EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "2.取得卡機人員筆數"); Console.WriteLine("2.取得卡機人員筆數"); int iState = 0; //取得卡機人員筆數 iState = RetrievingUserIDList(); if (iState == 0) { iState = RetrievingUserIDList(); } if (iState == 0) { iState = RetrievingUserIDList(); } if (iState != 1) { EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "取得卡機人員筆數失敗 return"); Console.WriteLine("取得卡機人員筆數失敗 return"); blIsCheckUserSyncOK = false; return; } //比對人員名單 EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "3.比對人員名單"); Console.WriteLine("3.比對人員名單"); BO.CompareUserList(TerminalID.ToString()); //同步時間 EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "4.同步時間"); Console.WriteLine("4.同步時間"); SetNewTimeAndDate(); System.Threading.Thread.Sleep(10 * 1000); //差異更新 EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "5.差異更新"); Console.WriteLine("5.差異更新"); SyncCRUser(); System.Threading.Thread.Sleep(10 * 1000); //查詢卡機人員筆數 EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "6.查詢卡機人員筆數"); Console.WriteLine("6.查詢卡機人員筆數"); QueryTheNumberOfAlreadyRegisteredUsers(); EventLog.WriteCU("{0}-{1}", "_timerCheckUser_Elapsed", "=== _timerCheckUser End ==="); Console.WriteLine("=== _timerCheckUser End ==="); //_timerCheckUser.Enabled = true; blIsCheckUserSyncOK = false; }