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 = "";
                    }

                }
            }
        }
Esempio n. 3
0
        /// <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;
        }
Esempio n. 4
0
        /// <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;
        }
Esempio n. 5
0
        /// <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;
                }
            }
        }
Esempio n. 6
0
        /// <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;
        }
Esempio n. 7
0
        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");

        }
Esempio n. 8
0
 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();
       }
   }));
 }
Esempio n. 9
0
        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");
        }
Esempio n. 10
0
        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");
        }
Esempio n. 11
0
        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;
 }