public FormCallKeyborad(DispatchPlatform.TalkControl tc) { _tc = tc; InitializeComponent(); lblNumber.Text = ""; }
/// <summary>常规调度Trap消息使用</summary> /// <param name="obj"></param> /// <param name="e"></param> public void UpdateState(object obj, TalkControl.UserStateArgs e) { foreach (NormalGroupModel item in _lstGroup) { _tempSingleControl = item.lstControl.Find(delegate(SingleUserControl p) { return p.Number == e.UserNumber; }); if (_tempSingleControl != null) { _tempSingleControl.UserLineStatus = e.UserLineStatus; _tempSingleControl.UserRecordStatus = e.RecordStatus; if (_tempSingleControl.UserRecordStatus == TalkControl.EnumRecordStatus.ON && e.PeerPartNumber == 0)//会议中的录音不更新对放名称 { // } else { _tempSingleControl.PeerNumber = e.PeerPartNumber.ToString(); } Pub.UpdateSingleUserContorlFont(_tempSingleControl); if (_tempSingleControl.IsDispatch) { try { SingleUserControl scu = GetSingleControl(Convert.ToInt32(_tempSingleControl.PeerNumber)); if (scu != null) { _tempSingleControl.lblPeerNumberName.Text = scu.MemberName; } else { _tempSingleControl.lblPeerNumberName.Text = ""; } } catch (Exception) { //throw; } } else { _tempSingleControl.lblPeerNumberName.Text = ""; } } } }
/// <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 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> /// <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> /// <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; }
void _talkControl_OnMemberStateChanged(object obj, TalkControl.UserStateArgs e) { System.Console.WriteLine("开始:_talkControl_OnMemberStateChanaged"); //IntPtr i = this.Handle; if (IsDisposed || !this.IsHandleCreated) return; this.Invoke(new EventHandler(delegate(object o, EventArgs ee) { Pub._memberManage.UpdateState(obj, e); Pub._meetingManage.UpdateMeeting(obj, e); // Console.Write(e.ToString()); if (waitControl1.NumberIsExits(e.UserNumber) == true && e.UserLineStatus != TalkControl.EnumUserLineStatus.Idle && e.UserLineStatus != TalkControl.EnumUserLineStatus.Offline ) { Pub._memberManage.SetMemberState(e.UserNumber, "等待中"); Pub._meetingManage.SetMemberState(e.UserNumber, "等待中"); } if (waitControl1.NumberIsExits(e.UserNumber) == true && (e.UserLineStatus == TalkControl.EnumUserLineStatus.Idle || e.UserLineStatus == TalkControl.EnumUserLineStatus.Offline) ) { waitControl1.DeleteWait(e.UserNumber); Pub._lemcWaitForm.DeleteWait(e.UserNumber); } if (Pub._lemcWaitForm != null) { if ((e.UserNumber == cLeft.Number || e.UserNumber == cRight.Number) && e.UserLineStatus == TalkControl.EnumUserLineStatus.Idle) { if (Pub._lemcWaitForm.WaitUserCount > 0) { Pub._lemcWaitForm.ResetCallState(); } else { if (waitControl1.WaitUserCount > 0) { waitControl1.ResetCallState(); } } } Pub._lemcWaitForm.UpdateMemberState(obj, e); } if (e.UserHookStatus == TalkControl.EnumUserHookStatus.ON && e.UserLineStatus == TalkControl.EnumUserLineStatus.Idle)//手柄 摘机状态 { SetDispatchButtonState(e.UserNumber); } Pub.waitMsg = string.Format("正在获取号码【{0}】的状态信息", e.UserNumber); // System.Console.WriteLine("Ab"); DB_Talk.Model.m_Member model = _lstMember.Find(p => p.i_Number == e.UserNumber); if (model != null) { _lstMember.Remove(model); } //为了解决Box在接队列时返回不正使用的补救方法 if ((e.UserNumber == cLeft.Number || e.UserNumber == cRight.Number) && e.UserLineStatus == TalkControl.EnumUserLineStatus.Busy) { DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.SelectAnser, e.UserNumber, e.PeerPartNumber.ToString(), true); } if (e.UserLineStatus == TalkControl.EnumUserLineStatus.Idle) { Pub.DeleteMemberState(e.UserNumber); } //将当前号码属于那个基站记录在号码表中 //System.Console.WriteLine("sdf" + e.FapIP); // DispatchPlatform.TalkControl.EnumEquipmentType type= Pub._talkControl.GetEquipmentType(); SingleUserControl sc = Pub._memberManage.GetSingleControl(e.UserNumber); if (sc != null && e.FapIP != "0.0.0.0") { //if (sc.FapIP != e.FapIP || e.UserLineStatus == TalkControl.EnumUserLineStatus.Offline) //{ sc.FapIP = e.FapIP; if (Pub.DicFap.ContainsKey(e.FapIP)) { int fapID = Pub.DicFap[e.FapIP]; DB_Talk.Model.m_Member mem = new DB_Talk.BLL.m_Member().GetModel(sc.ID); if (mem != null) { if (e.UserLineStatus == TalkControl.EnumUserLineStatus.Offline) { mem.FapID = 0; } else { mem.FapID = fapID; } new DB_Talk.BLL.m_Member().Update(mem); } } // } } // ////if (Pub.CanSort)//定时刷新在线的 ////{ //// Pub._meetingManage.Sort(); //// Pub._memberManage.Sort(); ////} SetCommandState(); })); // System.Console.WriteLine("结束:_talkControl_OnMemberStateChanaged"); }
void _talkControl_OnHotStandbyChanged(object obj, TalkControl.HotStandbyArgs e) { this.Invoke(new EventHandler(delegate(object o, EventArgs ee) { //lblTitle.Text = e.RedUndancyWorkMode.ToString()+"_"+ e.StandyHostActiveIP ; CommControl.Tools.WriteLog.AppendLog(e.RedUndancyWorkMode.ToString() + "_" + e.StandyHostActiveIP + "\n\r"); if (e.RedUndancyWorkMode == 1) { Pub._talkControl.ReGetState(); } })); }
void _talkControl_OnWaitingQueensChanged(object obj, TalkControl.WaitingQueensAgs e) { // System.Console.WriteLine("开始:_talkControl_OnWaitingQueensChaanged"); waitControl1.Invoke(new EventHandler(delegate(object o, EventArgs ee) { if (e.WaitingUserStatus == TalkControl.EnumWaitingUserStatus.Add) { waitControl1.AddNormalWait(e.WaitingUserNumber); Pub._memberManage.SetMemberState(e.WaitingUserNumber, "等待中"); } else { waitControl1.DeleteWait(e.WaitingUserNumber); } })); // System.Console.WriteLine("结束:_talkControl_OnWaitingQueensChaanged"); }
void _talkControl_OnLemcQueensChanged(object obj, TalkControl.LemcQueensArgs e) { // System.Console.WriteLine("开始:_talkControl_OnLemcQueensChaanged"); this.Invoke(new EventHandler(delegate(object o, EventArgs ee) { if (e.LemcStatus == TalkControl.EnumLemcStatus.Add) { _lockForm.Hide(); Pub._lemcWaitForm.AddLemcWait(e.UserNumber); if (Pub._lemcWaitForm.Visible == false) { Pub._lemcWaitForm.Show(); } } })); // System.Console.WriteLine("结束:_talkControl_OnLemcQueensChaanged"); }
void _talkControl_OnDispatchStateChanged(object obj, TalkControl.DispatchArgs e) { // System.Console.WriteLine("开始:_talkControl_OnDispatchStateChaanged"); this.Invoke(new EventHandler(delegate(object o, EventArgs ee) { SetCommandState(); switch (e.DispatchCmdSubType) { #region 呼叫 case TalkControl.EnumDispatchCmdType.makeCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}呼叫{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Call, e.FromNumber, e.ToNumber.ToString(), true); SingleUserControl scc = Pub._memberManage.GetSingleControl(e.FromNumber); if (scc != null) { Pub._memberManage.UpdateMemberState(scc.Number, TalkControl.EnumUserLineStatus.Busy); } break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫释放")); DB_Talk.Model.Data_DispatchLog log = DispatchLogBLL.GetDispatchLog(PublicEnums.EnumNormalCmd.Call, e.FromNumber); if (log != null) { SingleUserControl sc = Pub._memberManage.GetSingleControl(int.Parse(log.DispatchedNumbers)); if (sc != null) { Pub._memberManage.UpdateMemberState(sc.Number, sc.UserLineStatus); } } break; case TalkControl.EnumDispatchStatus.failure: DB_Talk.Model.Data_DispatchLog logF = DispatchLogBLL.GetDispatchLog(PublicEnums.EnumNormalCmd.Call, e.FromNumber); if (logF != null) { SingleUserControl sc = Pub._memberManage.GetSingleControl(int.Parse(logF.DispatchedNumbers)); if (sc != null) { Pub._memberManage.UpdateMemberState(sc.Number, sc.UserLineStatus); } } bc_OnMsg(string.Format("呼叫失败")); break; case TalkControl.EnumDispatchStatus.userRinging: if (e.ToNumber != 0) { bc_OnMsg(string.Format("用户{0}振铃", e.ToNumber)); } break; default: break; } break; #endregion #region 创建会议 case TalkControl.EnumDispatchCmdType.createConf: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.confCreated://会议创建 if (e.ConfID > 0) { RestoreMeetingButtonState(); Pub._meetingManage.SetTempGroupState(e.FromNumber, e.ConfID); } break; case TalkControl.EnumDispatchStatus.success://创建成功 bc_OnMsg(string.Format("创建会议成功", Pub.GetDispatchNameByNumber(e.FromNumber))); _meetingCommand.btnMeetingBeginEnd.Text = "结束会议"; superTabControlMeeting.SelectedTab.RaiseClick(); _meetingCommand.btnAddMeetingMember.Enabled = true; Pub._meetingManage.SetMeetingGroupState(e.FromNumber, e.ConfID); RestoreMeetingButtonState(); break; case TalkControl.EnumDispatchStatus.released: bc_OnMsg(string.Format("会议释放", e.ToNumber)); RestoreMeetingButtonState(); _meetingCommand.btnMeetingBeginEnd.Text = "开始会议"; Pub._meetingManage.SetTempGroupStateOff(e.FromNumber, e.ConfID); superTabControlMeeting.SelectedTab.RaiseClick(); _meetingCommand.btnAddMeetingMember.Enabled = true; Pub._meetingManage.DeleteMeeting(e.ConfID); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}创建会议失败", Pub.GetDispatchNameByNumber(e.FromNumber))); _meetingCommand.btnMeetingBeginEnd.Text = "开始会议"; Pub._meetingManage.SetTempGroupStateOff(e.FromNumber, e.ConfID); superTabControlMeeting.SelectedTab.RaiseClick(); _meetingCommand.btnAddMeetingMember.Enabled = true; Pub._meetingManage.DeleteMeeting(e.ConfID); RestoreMeetingButtonState(); break; case TalkControl.EnumDispatchStatus.userRinging: break; case TalkControl.EnumDispatchStatus.confDelPart: break; default: break; } break; #endregion #region 增加会议成员 case TalkControl.EnumDispatchCmdType.confAddPart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}增加会议成员成功", Pub.GetDispatchNameByNumber(e.FromNumber))); // Pub._meetingManage.SetMeetingGroupState(e.ConfID); // Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumConfUserState.DU_ST_ISOLATED); break; case TalkControl.EnumDispatchStatus.released: ////没有会议成员时显示为开始状态,因为SDK没有给消息,所以用软件处理 //List<SingleUserControl> lstC = _currentSelectedMeetingModel.lstControl.FindAll(p => p.UserLineStatus == TalkControl.EnumUserLineStatus.Busy // && p.Number != e.ToNumber // ); bc_OnMsg(string.Format("会议释放", e.ToNumber)); RestoreMeetingButtonState(); _meetingCommand.btnMeetingBeginEnd.Text = "开始会议"; Pub._meetingManage.SetTempGroupStateOff(e.FromNumber, e.ConfID); superTabControlMeeting.SelectedTab.RaiseClick(); _meetingCommand.btnAddMeetingMember.Enabled = true; Pub._meetingManage.DeleteMeeting(e.ConfID); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}增加会议成员失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; case TalkControl.EnumDispatchStatus.confAddPart: //Pub._memberManage.GetSingleControl(e.ToNumber).PeerNumber = _currentSelectedMeetingModel.GroupName; Pub._memberManage.SetMemberPeeName(e.ToNumber, _currentSelectedMeetingModel.GroupName, true); Pub._meetingManage.SetMeetingMemberPeeName(e.ToNumber, _currentSelectedMeetingModel.GroupName, true); break; default: break; } break; #endregion #region 删除会议成员 case TalkControl.EnumDispatchCmdType.confDelPart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}踢出会议成员成功", Pub.GetDispatchNameByNumber(e.FromNumber))); // Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumConfUserState.DU_ST_ISOLATED); break; case TalkControl.EnumDispatchStatus.released: bc_OnMsg(string.Format("{0}踢出会议成员成功", Pub.GetDispatchNameByNumber(e.FromNumber))); ////没有会议成员时显示为开始状态,因为SDK没有给消息,所以用软件处理 //List<SingleUserControl> lstCs = _currentSelectedMeetingModel.lstControl.FindAll(p => p.UserLineStatus == TalkControl.EnumUserLineStatus.Busy // && p.Number != e.ToNumber // ); //if ((lstCs != null && lstCs.Count == 0)) //{ // _currentSelectedMeetingModel.MeetingState = MeetingGroupModel.EnumMeetingState.Off; // _meetingCommand.btnMeetingBeginEnd.Text = "开始会议"; //} bc_OnMsg(string.Format("会议释放", e.ToNumber)); RestoreMeetingButtonState(); _meetingCommand.btnMeetingBeginEnd.Text = "开始会议"; Pub._meetingManage.SetTempGroupStateOff(e.FromNumber, e.ConfID); superTabControlMeeting.SelectedTab.RaiseClick(); _meetingCommand.btnAddMeetingMember.Enabled = true; Pub._meetingManage.DeleteMeeting(e.ConfID); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}踢出会议成员失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; case TalkControl.EnumDispatchStatus.confDelPart: Pub._meetingManage.DeleteMeetingMember(e.ConfID, e.ToNumber); break; default: break; } break; #endregion #region 禁言 case TalkControl.EnumDispatchCmdType.confForbidPart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}禁言{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Forbid); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Forbid); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}禁言失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 解除禁言 case TalkControl.EnumDispatchCmdType.confUnforbidPart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}呼叫{1}成功", e.FromNumber, e.ToNumber)); bc_OnMsg(string.Format("{0}解除禁言{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}解除禁言失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 隔离 case TalkControl.EnumDispatchCmdType.confIsolatePart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}呼叫{1}成功", e.FromNumber, e.ToNumber)); bc_OnMsg(string.Format("{0}隔离{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Isolate); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Isolate); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}隔离失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 解除隔离 case TalkControl.EnumDispatchCmdType.confUnisolatePart: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}呼叫{1}成功", e.FromNumber, e.ToNumber)); bc_OnMsg(string.Format("{0}解除隔离{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}解除隔离失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 结束会议 case TalkControl.EnumDispatchCmdType.delConf: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}结束会议成功", Pub.GetDispatchNameByNumber(e.FromNumber))); Pub._meetingManage.DeleteMeeting(e.ConfID); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}结束会议失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; case TalkControl.EnumDispatchStatus.confDeleted: bc_OnMsg(string.Format("{0}结束会议成功", Pub.GetDispatchNameByNumber(e.FromNumber))); // Pub._meetingManage.DeleteMeeting(e.ConfID); break; default: break; } break; #endregion #region 强插 case TalkControl.EnumDispatchCmdType.insertCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}呼叫{1}成功", e.FromNumber, e.ToNumber)); bc_OnMsg(string.Format("{0}强插{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Insert); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Insert); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Insert, e.FromNumber, e.ToNumber.ToString(), true); DB_Talk.Model.Data_MemberState mstate = Pub.GetMemberModel(e.FromNumber, e.ToNumber, TalkControl.EnumUserLineStatus.Insert); if (mstate != null) { Pub._memberManage.UpdateMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); Pub._meetingManage.UpdateMeetingMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); } break; case TalkControl.EnumDispatchStatus.released: bc_OnMsg(string.Format("强插释放")); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}强插失败", Pub.GetDispatchNameByNumber(e.FromNumber))); Pub.DeleteMemberStateByDispatchNumber(e.FromNumber, TalkControl.EnumUserLineStatus.Insert); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 监听 case TalkControl.EnumDispatchCmdType.monitorCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}监听{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Listen); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Listen); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Listen, e.FromNumber, e.ToNumber.ToString(), true); DB_Talk.Model.Data_MemberState mstate = Pub.GetMemberModel(e.FromNumber, e.ToNumber, TalkControl.EnumUserLineStatus.Listen); _dispatchCommand.btnListen.Image = DispatchPlatform.Properties.Resources.ListenIco; if (mstate != null) { Pub._memberManage.UpdateMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Listen); Pub._meetingManage.UpdateMeetingMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Listen); } break; case TalkControl.EnumDispatchStatus.released: bc_OnMsg(string.Format("监听释放")); //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("i_State=" + TalkControl.EnumUserLineStatus.Record.GetHashCode()); //foreach (DB_Talk.Model.Data_MemberState item in lstMember) //{ // if (item.i_DispatchNumber == e.FromNumber) // { // Pub._meetingManage.UpdateMeetingMemberState(item.i_Number.Value, TalkControl.EnumUserLineStatus.Record); // Pub._memberManage.UpdateMemberState(item.i_Number.Value, TalkControl.EnumUserLineStatus.Record); // Pub._meetingManage.UpdateMeetingMemberState(item.i_PeerNumber, TalkControl.EnumUserLineStatus.Record); // Pub._memberManage.UpdateMemberState(item.i_PeerNumber, TalkControl.EnumUserLineStatus.Record); // break; // } //} Pub.DeleteMemberStateByDispatchNumber(e.FromNumber, TalkControl.EnumUserLineStatus.Listen); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}监听失败", Pub.GetDispatchNameByNumber(e.FromNumber))); Pub.DeleteMemberStateByDispatchNumber(e.FromNumber, TalkControl.EnumUserLineStatus.Listen); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 录音 case TalkControl.EnumDispatchCmdType.recordCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}录音{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.BeginRecord, e.FromNumber, e.ToNumber.ToString(), true); DB_Talk.Model.Data_MemberState mstate = Pub.GetMemberModelBySelf(e.ToNumber, TalkControl.EnumUserLineStatus.Listen); if (mstate != null) { Pub._memberManage.SetMemberPeeName(mstate.i_Number.Value, mstate.i_PeerNumber.ToString(), false); Pub._meetingManage.SetMeetingMemberPeeName(mstate.i_Number.Value, mstate.i_PeerNumber.ToString(), false); Pub._memberManage.SetMemberPeeName(mstate.i_PeerNumber, mstate.i_Number.Value.ToString(), false); Pub._meetingManage.SetMeetingMemberPeeName(mstate.i_PeerNumber, mstate.i_Number.Value.ToString(), false); } Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Record); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Record); SingleUserControl sc = Pub._memberManage.GetSingleControl(e.ToNumber); _dispatchCommand.btnRecord.Image = DispatchPlatform.Properties.Resources.RecordIco; if (sc != null) { try { int.Parse(sc.PeerNumber); Pub._meetingManage.UpdateMeetingMemberState(int.Parse(sc.PeerNumber), TalkControl.EnumUserLineStatus.Record); Pub._memberManage.UpdateMemberState(int.Parse(sc.PeerNumber), TalkControl.EnumUserLineStatus.Record); Pub.WriteMemberState(e.FromNumber, e.ToNumber, long.Parse(sc.PeerNumber), TalkControl.EnumUserLineStatus.Record); } catch (Exception) { } } else//手柄设为录音状态,外线打进来时 { Pub._meetingManage.UpdateMeetingMemberState(e.FromNumber, TalkControl.EnumUserLineStatus.Record); Pub._memberManage.UpdateMemberState(e.FromNumber, TalkControl.EnumUserLineStatus.Record); } break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}录音失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 停止录音 case TalkControl.EnumDispatchCmdType.stopRecord: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}停止录音{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.EndRecord, e.FromNumber, e.ToNumber.ToString(), true); DB_Talk.Model.Data_MemberState mstate = Pub.GetMemberModelBySelf(e.ToNumber, TalkControl.EnumUserLineStatus.Listen); if (mstate != null) { Pub._meetingManage.UpdateMeetingMemberState(mstate.i_Number.Value, TalkControl.EnumUserLineStatus.Listen); Pub._memberManage.UpdateMemberState(mstate.i_Number.Value, TalkControl.EnumUserLineStatus.Listen); Pub._meetingManage.UpdateMeetingMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Listen); Pub._memberManage.UpdateMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Listen); } else { mstate = Pub.GetMemberModelBySelf(e.ToNumber, TalkControl.EnumUserLineStatus.Insert); if (mstate != null) { if (Pub._memberManage.GetMemberState(mstate.i_Number.Value) == TalkControl.EnumUserLineStatus.Idle || Pub._memberManage.GetMemberState(mstate.i_PeerNumber) == TalkControl.EnumUserLineStatus.Idle) { } else { DB_Talk.Model.Data_MemberState ms = Pub.GetMemberModelBySelf(e.ToNumber, TalkControl.EnumUserLineStatus.Record); if (ms == null) { Pub._meetingManage.UpdateMeetingMemberState(mstate.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); Pub._memberManage.UpdateMemberState(mstate.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); Pub._meetingManage.UpdateMeetingMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); Pub._memberManage.UpdateMemberState(mstate.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); } else { if (ms.i_PeerNumber == 0)//录音对方为空时 { Pub._meetingManage.UpdateMeetingMemberState(ms.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); Pub._memberManage.UpdateMemberState(ms.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); } else { Pub._meetingManage.UpdateMeetingMemberState(ms.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); Pub._memberManage.UpdateMemberState(ms.i_Number.Value, TalkControl.EnumUserLineStatus.Insert); Pub._meetingManage.UpdateMeetingMemberState(ms.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); Pub._memberManage.UpdateMemberState(ms.i_PeerNumber, TalkControl.EnumUserLineStatus.Insert); } } } } else { SingleUserControl sc = Pub._memberManage.GetSingleControl(e.ToNumber); if (sc != null) { Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Busy); Pub._memberManage.UpdateMemberState(int.Parse(sc.PeerNumber), TalkControl.EnumUserLineStatus.Busy); Pub._meetingManage.UpdateMeetingMemberState(int.Parse(sc.PeerNumber), TalkControl.EnumUserLineStatus.Busy); } } } Pub.DeleteMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Record); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}停止录音失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 挂断 case TalkControl.EnumDispatchCmdType.discCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}呼叫{1}成功", e.FromNumber, e.ToNumber)); bc_OnMsg(string.Format("挂断{0}成功", e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Handup, e.FromNumber, e.ToNumber.ToString(), true); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("挂断失败", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 转接 case TalkControl.EnumDispatchCmdType.deliverCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("转接{0}成功", e.ToNumber)); SingleUserControl sc = Pub._memberManage.GetSingleControl(e.ToNumber); if (sc != null) { sc = Pub._memberManage.GetSingleControl(int.Parse(sc.PeerNumber)); if (sc != null) { sc.IsCalling = true; sc.PeerNumber = sc.PeerNumber; } } DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Transfer, e.FromNumber, e.ToNumber.ToString(), true); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("转接失败")); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 代答 case TalkControl.EnumDispatchCmdType.insteadAnswer: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}代答{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); // bc_OnMsg(string.Format("转接{0}成功", e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.InsteadAnswer, e.FromNumber, e.ToNumber.ToString(), true); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("代答失败")); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 强拆 case TalkControl.EnumDispatchCmdType.snatchCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}强拆{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.SnatchCall, e.FromNumber, e.ToNumber.ToString(), true); SingleUserControl sc = Pub._memberManage.GetSingleControl(e.ToNumber); if (sc != null) { sc.IsCalling = false; sc.PeerNumber = e.FromNumber.ToString(); } sc = Pub._memberManage.GetSingleControl(e.FromNumber); if (sc != null) { sc.IsCalling = true; sc.PeerNumber = e.ToNumber.ToString(); } break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("{0}强拆失败", Pub.GetDispatchNameByNumber(e.FromNumber))); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 接听 case TalkControl.EnumDispatchCmdType.selectAnswer: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: //bc_OnMsg(string.Format("{0}接听{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); // DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.SelectAnser, e.FromNumber, e.ToNumber.ToString(), true); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: // bc_OnMsg(string.Format("呼叫{0}失败", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 群答 case TalkControl.EnumDispatchCmdType.groupAnswer: break; #endregion #region 保持呼叫 case TalkControl.EnumDispatchCmdType.holdCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}保持呼叫成功", e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Keep, e.FromNumber, e.ToNumber.ToString(), true); _dispatchCommand.btnKeep.Image = DispatchPlatform.Properties.Resources.KeepIco; // this._keepedNumber = e.ToNumber; waitControl1.DeleteWait(e.ToNumber); Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Holding); Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Holding); break; case TalkControl.EnumDispatchStatus.released: // bc_OnMsg(string.Format("呼叫{0}释放", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("保持呼叫失败")); break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 组呼 case TalkControl.EnumDispatchCmdType.groupCall: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("组呼成功")); //DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.Keep, e.FromNumber, e.ToNumber.ToString(), true); //_dispatchCommand.btnKeep.Image = DispatchPlatform.Properties.Resources.KeepIco; //// this._keepedNumber = e.ToNumber; //waitControl1.DeleteWait(e.ToNumber); //Pub._memberManage.UpdateMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Holding); //Pub._meetingManage.UpdateMeetingMemberState(e.ToNumber, TalkControl.EnumUserLineStatus.Holding); _dispatchCommand.btnGroupCall.Image = DispatchPlatform.Properties.Resources.icoGroupCall; break; case TalkControl.EnumDispatchStatus.released: bc_OnMsg(string.Format("组呼释放")); _dispatchCommand.btnGroupCall.Image = null; break; case TalkControl.EnumDispatchStatus.failure: bc_OnMsg(string.Format("组呼失败")); // _dispatchCommand.btnRecord.Image = null; break; case TalkControl.EnumDispatchStatus.userRinging: // bc_OnMsg(string.Format("用户{0}振铃", e.FromNumber)); break; default: break; } break; #endregion #region 得到会议分组 case TalkControl.EnumDispatchCmdType.getConfList: break; #endregion #region 得到会议成员 case TalkControl.EnumDispatchCmdType.getConfPartList: break; #endregion #region 等待列表 case TalkControl.EnumDispatchCmdType.getWaitingUserList: break; #endregion #region 紧急列表 case TalkControl.EnumDispatchCmdType.lemcGetCallList: break; #endregion #region 接听紧急呼叫 case TalkControl.EnumDispatchCmdType.lemcSelectAnswer: switch (e.DispatchStatus) { case TalkControl.EnumDispatchStatus.success: bc_OnMsg(string.Format("{0}接听紧急呼叫{1}成功", Pub.GetDispatchNameByNumber(e.FromNumber), e.ToNumber)); DispatchLogBLL.UpdateLog(CommControl.PublicEnums.EnumNormalCmd.SelectLemcAnser, e.FromNumber, e.ToNumber.ToString(), true); ////自启动录音 _baseCommand = new BeginRecordCommand(); SingleUserControl sc = Pub._memberManage.GetSingleControl(e.ToNumber); if (sc != null) { _baseCommand.MemberControl = sc; } else { _baseCommand.MemberControl = new SingleUserControl() { Number = e.ToNumber }; } _baseCommand.talkControl = Pub._talkControl; _baseCommand.OnMsg += new BaseCommand.MsgDelegate(bc_OnMsg); _baseCommand.Begin(); break; case TalkControl.EnumDispatchStatus.released: break; case TalkControl.EnumDispatchStatus.failure: // bc_OnMsg(string.Format("接听紧急呼叫{0}失败", e.ToNumber)); break; case TalkControl.EnumDispatchStatus.userRinging: break; default: break; } break; #endregion default: break; } })); // System.Console.WriteLine("结束:_talkControl_OnDispatchStateChaanged"); }
/// <summary>更新会议成员状态</summary> /// <param name="obj"></param> /// <param name="e"></param> public void UpdateMeeting(object obj, TalkControl.UserStateArgs e) { for (int i = 0; i < _lstGroup.Count; i++) { //} //foreach (MeetingGroupModel item in _lstGroup) //{ _tempSingleControl = _lstGroup[i].lstControl.Find(delegate(SingleUserControl p) { return p.Number == e.UserNumber; }); if (_tempSingleControl != null) { _tempSingleControl.UserLineStatus = e.UserLineStatus; _tempSingleControl.UserRecordStatus = e.RecordStatus; if (_tempSingleControl.UserRecordStatus == TalkControl.EnumRecordStatus.ON && e.PeerPartNumber == 0)//会议中的录音不更新对放名称 { // } else { _tempSingleControl.PeerNumber = e.PeerPartNumber.ToString(); } Pub.UpdateSingleUserContorlFont(_tempSingleControl); } } }
public MeetingManage(FormMain frm, TalkControl tc) { _mainForm = frm; _tc = tc; }