public void startContextCall(List<string> selectedUserList)
 {
     if (null != selectedUserList && selectedUserList.Count>0)
     {
         MakeCallBusiness call = new MakeCallBusiness();
         StringBuilder str = new StringBuilder();
         string strContact ="";
         for (int index = 0; index < selectedUserList.Count; index++)
         {
             str = new StringBuilder(selectedUserList[index]);
             call.insertMember(0,str);
             strContact+=(str+";");
         }
         if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口
         {
             WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';'));
             winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
             winCall.Show();
             winCall.Title = "Calling: " + str.ToString();
             toolbar.Lync.winCall = winCall;
         }
         else
         {
             DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
             return;
         }
     }
 }
Example #2
0
 public void startContextCall(List <string> selectedUserList)
 {
     if (null != selectedUserList && selectedUserList.Count > 0)
     {
         MakeCallBusiness call       = new MakeCallBusiness();
         StringBuilder    str        = new StringBuilder();
         string           strContact = "";
         for (int index = 0; index < selectedUserList.Count; index++)
         {
             str = new StringBuilder(selectedUserList[index]);
             call.insertMember(0, str);
             strContact += (str + ";");
         }
         if (call.startContextCall() == 0) //插件呼叫管理模块的发起上下文呼叫业务接口
         {
             WinCall winCall = new WinCall(toolbar.Lync, SingletonObj.LoginInfo.LyncName + ";" + strContact.TrimEnd(';'));
             winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
             winCall.Show();
             winCall.Title        = "Calling: " + str.ToString();
             toolbar.Lync.winCall = winCall;
         }
         else
         {
             DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
             return;
         }
     }
 }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Image img = ((sender as Button).Content as StackPanel).Children[0] as Image;
            if (img.Tag.ToString() == "call")
            {
                if (txtNumber.Text.ToString()=="")
                {
                    return;
                }
                if (Lync.winCall!=null)
                {
                    this.Close();
                    Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"));
                    return;
                }
                //拨号
                MakeCallBusiness call = new MakeCallBusiness();
                StringBuilder ucName = new StringBuilder(100);
                call.GetUCAccount(txtNumber.Text.ToString(), ucName);
                string str = null;

                if (ucName.ToString()=="")
                {
                    str = txtNumber.Text.ToString();
                    call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str));
                }
                else
                {
                    str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                    call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                }

                if (call.startContextCall() == 0)   //modify by 00327190  2015/6/18 只要返回值不为0,就不能执行以下操作
                {
                    this.Close();

                    WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString());
                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                    winCall.Show();
                    Lync.winCall = winCall;
                }
                else
                {
                    this.Close();
                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                    return;
                }
            }
            else if (img.Tag.ToString() == "back")
            {
                if (txtNumber.Text.Length > 0)
                {
                    txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1);
                }
            }
            else
            {
                txtNumber.Text = txtNumber.Text + img.Tag.ToString();
                txtNumber.Focus();
                txtNumber.Select(txtNumber.Text.Length, 0);
            }
        }
Example #4
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            Image img = ((sender as Button).Content as StackPanel).Children[0] as Image;

            if (img.Tag.ToString() == "call")
            {
                if (txtNumber.Text.ToString() == "")
                {
                    return;
                }
                if (Lync.winCall != null)
                {
                    this.Close();
                    Dialog.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"));
                    return;
                }
                //拨号
                MakeCallBusiness call   = new MakeCallBusiness();
                StringBuilder    ucName = new StringBuilder(100);
                call.GetUCAccount(txtNumber.Text.ToString(), ucName);
                string str = null;

                if (ucName.ToString() == "")
                {
                    str = txtNumber.Text.ToString();
                    call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(str));
                }
                else
                {
                    str = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                    call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                }

                if (call.startContextCall() == 0)   //modify by 00327190  2015/6/18 只要返回值不为0,就不能执行以下操作
                {
                    this.Close();

                    WinCall winCall = new WinCall(Lync, SingletonObj.LoginInfo.LyncName + ";" + str.ToString());
                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                    winCall.Show();
                    Lync.winCall = winCall;
                }
                else
                {
                    this.Close();
                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                    return;
                }
            }
            else if (img.Tag.ToString() == "back")
            {
                if (txtNumber.Text.Length > 0)
                {
                    txtNumber.Text = txtNumber.Text.Substring(0, txtNumber.Text.Length - 1);
                }
            }
            else
            {
                txtNumber.Text = txtNumber.Text + img.Tag.ToString();
                txtNumber.Focus();
                txtNumber.Select(txtNumber.Text.Length, 0);
            }
        }
        /// <summary>
        /// 处理另一进程发过来的消息
        /// </summary>
        /// <param name="cds"></param>
        void LyncMessageProcess(COPYDATASTRUCT cds)
        {
            try
            {
                LogManager.SystemLog.Debug(cds.cbData);
                if (cds.lpData == "LogOutUC")//注销UC
                {
                    StartSignOutUC();
                }
                else if (cds.lpData == "LoginUC")//登录
                {
                    if (SingletonObj.LoginInfo == null || SingletonObj.LoginInfo.UserID == null)
                    {
                        StartLoginUC();
                    }
                }
                else if (cds.lpData != "")
                {
                    if (SingletonObj.LoginInfo == null)
                    {
                        Dialog.Show(StringHelper.FindLanguageResource("NoLogin"), StringHelper.FindLanguageResource("error"));
                        return;
                    }
                    if (winCall == null)
                    {
                        string[] strList = cds.lpData.Split(';');
                        if (strList.Count((x) => { return x.IndexOf("phone-context") > -1 ? true : false; }) > 0)
                        {
                            List<string> strListTemp = new List<string>();
                            for (int i = 0; i < strList.Length; i++)
                            {
                                if (strList[i].IndexOf("phone-context") < 0)
                                {
                                    strListTemp.Add(strList[i]);
                                }
                            }
                            strList = new string[strListTemp.Count];
                            cds.lpData = "";
                            for (int i = 0; i < strListTemp.Count; i++)
                            {
                                cds.lpData += strListTemp[i] + ";";
                                strList[i] = strListTemp[i];
                            }

                            cds.lpData = cds.lpData.Substring(0, cds.lpData.Length - 1);
                        }
                        MakeCallBusiness call = new MakeCallBusiness();
                        StringBuilder str = new StringBuilder();
                        string type = strList[0];
                        if (type == "VideoCall")//视频呼叫
                        {
                            if (this.isHave == true)  //有接听界面,则不允许做视频操作
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            else
                            {
                                if (strList.Length > 3)
                                {
                                    Dialog.Show(StringHelper.FindLanguageResource("NoMultiplePersonVideo"), StringHelper.FindLanguageResource("error"));
                                    return;
                                }

                                if (toolBar.JointType == PhoneJointType.IPPhone_Device)
                                {
                                    Dialog.Show(StringHelper.FindLanguageResource("NoSupportVideo"), StringHelper.FindLanguageResource("error"));
                                    return;
                                }
                                //call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                //winCall = new WinCall(this, cds.lpData);
                                //winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                //winCall.Show();
                                //modify by 00327190  之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开   2015/9/18
                                if (strList[2].IndexOf("@") != -1)
                                {
                                    call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                    winCall = new WinCall(this, cds.lpData);
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }
                                else  //如果是纯数字,则再分能不能查到对应的UC用户  2015/9/21
                                {
                                    StringBuilder ucName = new StringBuilder(100);
                                    call.GetUCAccountByPhoneNo(strList[2], ucName);
                                    if (ucName.ToString() == "")  //纯话机   2015/9/21
                                    {
                                        call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strList[2]));
                                        winCall = new WinCall(this, cds.lpData);
                                        winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                        winCall.Show();
                                    }
                                    else
                                    {
                                        call.insertMember((int)MemberType.UC_ACCOUNT, new StringBuilder(strList[2]));
                                        winCall = new WinCall(this, cds.lpData);
                                        winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                        winCall.Show();
                                    }
                                }
                               
                            }

                        }
                        else
                        {
                            //modify byjinyeqing  2015/6/3  多于20人不可以显示出来
                            if (strList.Length > 21)   //第一行是call  所以应该是21  
                            {
                                DialogShow.Show(StringHelper.FindLanguageResource("somanypeople"), StringHelper.FindLanguageResource("error"), 2);
                                return;
                            }
                            if (strList.Length == 3)  //两人会话的操作(逻辑上为了与多人会议区别开来 modify by jinyeqing 2015/6/19)
                            {
                                str = new StringBuilder(strList[2].Substring(strList[2].IndexOf(':') + 1).TrimEnd('>'));
                                string a = ";" + str.ToString().Trim();
                                if (boolnum(str.ToString().Trim()) == false)     //不为纯数字就报警 ,若为纯数字,可能为话机用户,这里就不做和UC匹配的校验                               
                                //if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0)  //moidify by jinyeqing 2015/6/8 以前没有if判断
                                {
                                    if (call.insertMember((int)MemberType.UC_ACCOUNT, str) != 0)
                                    //if (call.GetUCAccountByPhoneNo(str.ToString(), ucName) == "" || call.GetUCAccountByPhoneNo(str.ToString(), ucName) == null)  
                                    {
                                        string message = str + " " + StringHelper.FindLanguageResource("NoSuchUCAccount");
                                        DialogShow.Show(message, StringHelper.FindLanguageResource("error"), 2);
                                        cds.lpData = cds.lpData.Replace(a, "");
                                        this.isUcCount = false;
                                        call.startContextCall();
                                        return;
                                    }

                                }
                                else  //纯数字能找到UC账户的,就把数字替换成UCname 
                                {
                                    StringBuilder ucName = new StringBuilder(100);
                                    call.GetUCAccountByPhoneNo(str.ToString(), ucName);
                                    string strTemp = null;

                                    if (ucName.ToString() == "")
                                    {
                                        strTemp = str.ToString();
                                        call.insertMember((int)MemberType.UC_IPPHONE, new StringBuilder(strTemp));
                                    }
                                    else
                                    {
                                        strTemp = ucName + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName);
                                        call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                                        cds.lpData = cds.lpData.Replace(str.ToString().Trim(), strTemp);
                                    }
                                }
                                if (call.startContextCall() == 0)
                                {
                                    winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1));
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }
                                else
                                {
                                    DialogShow.Show(StringHelper.FindLanguageResource("startContextCallFailed"), StringHelper.FindLanguageResource("error"), 2);
                                    return;

                                }
                            }
                            else   //三人至20人的会议 
                            {
                                if (this.isHave == true)  //有接听界面,则不允许做会议操作
                                {
                                    DialogShow.Show(StringHelper.FindLanguageResource("TwoCallsSameTime"), StringHelper.FindLanguageResource("error"), 2);
                                    return;
                                }
                                else
                                {
                                    for (int index = 2; index < strList.Length; index++)
                                    {
                                        str = new StringBuilder(strList[index].Substring(strList[index].IndexOf(':') + 1).TrimEnd('>'));

                                        string a = ";" + str.ToString().Trim();
                                        StringBuilder ucName = new StringBuilder(100);
                                       // call.insertMember((int)MemberType.UC_ACCOUNT, str);
                                        //modify by 00327190  之前是只有上面隐掉的,会有问题,纯话机和UC账户要分开   2015/9/18
                                        if (str.ToString().IndexOf("@") != -1)
                                        {
                                            call.insertMember((int)MemberType.UC_ACCOUNT, str);
                                        }
                                        else  //如果是纯数字,则再分能不能查到对应的UC用户  2015/9/21
                                        {                                           
                                            call.GetUCAccountByPhoneNo(str.ToString(), ucName);                                           
                                            if (ucName.ToString() == "")  //纯话机 
                                            {
                                                call.insertMember((int)MemberType.UC_IPPHONE, str);
                                            }
                                            else
                                            {
                                                call.insertMember((int)MemberType.UC_ACCOUNT, ucName);
                                            }

                                        }

                                    }
                                    call.startContextCall();
                                    winCall = new WinCall(this, cds.lpData.Substring(cds.lpData.IndexOf(';') + 1));
                                    winCall.callType = CallHistoryType.HISTORY_CALL_DIALED;
                                    winCall.Show();
                                }

                            }
                        }
                    }
                    else
                    {
                        DialogShow.Show(StringHelper.FindLanguageResource("Youareincallalready"), StringHelper.FindLanguageResource("error"), 2);  //不能同时发起两路通话
                        return;
                    }
                }
            }
            catch (System.Exception ex)
            {
                LogManager.SystemLog.Error(ex.ToString());
            }

        }