/// <summary> 删除状态信息 </summary> /// <param name="number"></param> /// <returns></returns> public static bool DeleteMemberState(long number,TalkControl.EnumUserLineStatus uState) { DB_Talk.BLL.Data_MemberState memberBLL = new DB_Talk.BLL.Data_MemberState(); List<DB_Talk.Model.Data_MemberState> lstMember = new List<DB_Talk.Model.Data_MemberState>(); lstMember = memberBLL.GetModelList(string.Format("i_Number={0} and i_State={1}", number, uState.GetHashCode())); if (lstMember.Count > 0) { return memberBLL.Delete(lstMember[0].ID); } return false; }
/// <summary> 删除状态信息 </summary> /// <param name="number"></param> /// <returns></returns> public static bool DeleteMemberState(long number) { DB_Talk.BLL.Data_MemberState memberBLL = new DB_Talk.BLL.Data_MemberState(); List<DB_Talk.Model.Data_MemberState> lstMember = new List<DB_Talk.Model.Data_MemberState>(); try { if (Pub._isDBOnline == true) { lstMember = memberBLL.GetModelList("i_Number=" + number); if (lstMember.Count > 0) { return memberBLL.Delete(lstMember[0].ID); } } } catch (Exception) { return false; } return false; }
/// <summary>根据自已和对方号码得到号码状态</summary> /// <param name="number"></param> /// <returns></returns> public static DB_Talk.Model.Data_MemberState GetMemberModelBySelf(long selfNumber, TalkControl.EnumUserLineStatus uState) { DB_Talk.BLL.Data_MemberState memberBLL = new DB_Talk.BLL.Data_MemberState(); List<DB_Talk.Model.Data_MemberState> lstMember = new List<DB_Talk.Model.Data_MemberState>(); lstMember = memberBLL.GetModelList(string.Format("(i_Number={0} or i_PeerNumber={0}) and i_State={1}", selfNumber, uState.GetHashCode())); if (lstMember.Count > 0) { return lstMember[0]; } return null; }
/// <summary>得到号码状态</summary> /// <param name="number"></param> /// <returns></returns> public static DB_Talk.Model.Data_MemberState GetMemberModel(long dispatchNumber, long number, TalkControl.EnumUserLineStatus uState) { DB_Talk.BLL.Data_MemberState memberBLL = new DB_Talk.BLL.Data_MemberState(); List<DB_Talk.Model.Data_MemberState> lstMember = new List<DB_Talk.Model.Data_MemberState>(); lstMember = memberBLL.GetModelList(string.Format("i_Number={0} and i_State={1} and i_dispatchNumber={2}", number, uState.GetHashCode(), dispatchNumber)); if (lstMember.Count > 0) { return lstMember[0]; } return null; }
/// <summary> /// 写用户状态 /// </summary> /// <param name="number"></param> /// <param name="?"></param> /// <returns></returns> public static bool WriteMemberState(long dispatchNumber, long number, long peerNumber, TalkControl.EnumUserLineStatus uState) { DB_Talk.BLL.Data_MemberState memberBLL = new DB_Talk.BLL.Data_MemberState(); List<DB_Talk.Model.Data_MemberState> lstMember = new List<DB_Talk.Model.Data_MemberState>(); lstMember = memberBLL.GetModelList(string.Format("i_Number={0} and i_State={1} and i_dispatchNumber={2}", number, uState.GetHashCode(), dispatchNumber)); if (lstMember.Count > 0) { lstMember[0].i_State = uState.GetHashCode(); lstMember[0].i_PeerNumber = peerNumber; lstMember[0].i_DispatchNumber = dispatchNumber; return memberBLL.Update(lstMember[0]); } else { DB_Talk.Model.Data_MemberState model = new DB_Talk.Model.Data_MemberState(); model.i_Number = number; model.i_State = uState.GetHashCode(); model.i_PeerNumber = peerNumber; model.i_DispatchNumber = dispatchNumber; if ((new DB_Talk.BLL.Data_MemberState()).Add(model) > 0) { return true; } else { return false; } } }
/// <summary>恢复用户状态</summary> private void RestoreMemberState() { ///从数据库读取上次的状态信息 List<DB_Talk.Model.Data_MemberState> lstMember = new DB_Talk.BLL.Data_MemberState().GetModelList(""); foreach (DB_Talk.Model.Data_MemberState item in lstMember) { TalkControl.EnumUserLineStatus state = (TalkControl.EnumUserLineStatus)item.i_State; if (state == TalkControl.EnumUserLineStatus.Insert) { Pub.DeleteMemberState(item.i_Number.Value, state); } if (state == TalkControl.EnumUserLineStatus.Listen) { if (Pub._memberManage.GetMemberState(item.i_Number.Value) == TalkControl.EnumUserLineStatus.Busy && (Pub._memberManage.GetMemberState(item.i_DispatchNumber.Value) == TalkControl.EnumUserLineStatus.Busy || Pub._memberManage.GetMemberState(item.i_DispatchNumber.Value) == TalkControl.EnumUserLineStatus.HookOn) ) { Pub._memberManage.UpdateMemberState(item.i_Number.Value, state); Pub._meetingManage.UpdateMeetingMemberState(item.i_Number.Value, state); Pub._memberManage.UpdateMemberState(item.i_PeerNumber, state); Pub._meetingManage.UpdateMeetingMemberState(item.i_PeerNumber, state); } else { Pub.DeleteMemberState(item.i_Number.Value); } } if (state == TalkControl.EnumUserLineStatus.Record) { SingleUserControl sc = Pub._memberManage.GetSingleControl(item.i_Number.Value); if (sc != null) { if (sc.UserLineStatus == TalkControl.EnumUserLineStatus.Busy && sc.UserRecordStatus == TalkControl.EnumRecordStatus.ON) { Pub._memberManage.UpdateMemberState(item.i_Number.Value, state); Pub._meetingManage.UpdateMeetingMemberState(item.i_Number.Value, state); Pub._memberManage.UpdateMemberState(item.i_PeerNumber, state); Pub._meetingManage.UpdateMeetingMemberState(item.i_PeerNumber, state); } else { Pub.DeleteMemberState(item.i_Number.Value); } } } } }