private void btnOk_Click(object sender, EventArgs e)
        {
            if (NewFormMain.LoadBox(Global.Params.BoxIP))
             {
                string mesQuestion = "确认设备 【" + Global.Params.BoxIP + "】要恢复出厂设置吗?";
                DialogResult dr = CommControl.MessageBoxEx.MessageBoxEx.Show(mesQuestion, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (dr == DialogResult.OK)
                {
                    //LoadControl(null);
                    if (MBoxSDK.ConfigSDK.MBOX_ClearDeviceCfg(Global.Params.BoxHandle))
                    //  && ClearDispatchTell())  //删除两个调度号码
                    {
                        //清空数据库
                        ClearDB();
                        //int iFind = Global.Params.LstBox.FindIndex(item => item.vc_IP == Global.Params.BoxIP);
                        //if(iFind>=0)   Global.Params.LstBox[iFind].i_Flag = 0;
                        //checkOnline_StateChange(Global.Params.BoxIP, false);

                        Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                        procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "正在恢复出厂设置,请稍等...");
                        System.Threading.Thread.Sleep(5000);
                        procDlg.Dispose();

                        CommControl.MessageBoxEx.MessageBoxEx.Show("设备【" + Global.Params.BoxIP + "】恢复出厂设置成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        //重新取BOX信息
                        Global.Params.LstBox = new DB_Talk.BLL.m_Box().GetModelList("i_Flag=0");
                        Global.Params.frmMain.LoadModelList();
                        CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.SystemOperate, "恢复", "恢复出厂设置", "");
                    }
                    else
                        CommControl.MessageBoxEx.MessageBoxEx.Show("设备【" + Global.Params.BoxIP + "】恢复出厂设置失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
            }
            else
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("未登录设备【" + Global.Params.BoxIP + "】,不能执行此操作", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }
        private void btnDown_Click(object sender, EventArgs e)
        {
            Bestway.Windows.Forms.ProgressBarDialog prog = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                if (NewFormMain.LoadBox(Global.Params.BoxIP))
                {
                    ftp.FindFtpFileList("");
                    int i = 0;
                    foreach (FtpFileInfo info in ftp.lstftpfile)
                    {
                        prog.Show(Bestway.Windows.Forms.EnumDisplayType.Custom, "正在备份文件:" + info.FileName);
                        i++;
                        ftp.Download(info.FileFullName, Global.Params.FILE_PATH_BOXCONFIG); //"F:\\xiazai");
                    }
                    string mes = "硬件配置备份成功\r\n";
                    DbOper dboper = new DbOper();
                    prog.Show(Bestway.Windows.Forms.EnumDisplayType.Custom, "正在备份数据库...");
                    if (dboper.DbBackup(Global.Params.FILE_PATH_BOXCONFIG_DB))
                    {
                        mes += "数据库备份成功";
                    }
                    else
                    {
                        mes += "数据库备份失败!" +dboper.errorMes;
                    }
                    prog.Hide();
                    CommControl.MessageBoxEx.MessageBoxEx.Show(mes, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
            catch(Exception ex)
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                prog.Dispose();
            }
        }
 public void ReStartBox()
 {
     MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);
     if (Global.Params.IsRestart)
     {
         Global.Params.IsRestart = false;
         Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
         procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "正在重启站点【" + Global.Params.BoxIP + "】,请稍等...");
         MBoxSDK.ConfigSDK.MBOX_Restart(Global.Params.BoxHandle);
         int iFind = Global.Params.LstBox.FindIndex(item => item.vc_IP == Global.Params.BoxIP);
         if (iFind >= 0) Global.Params.LstBox[iFind].i_Flag = 0;
         checkOnline_StateChange(Global.Params.BoxIP, false);
         System.Threading.Thread.Sleep(5000);
         procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "重启站点【" + Global.Params.BoxIP + "】成功...");
         //CommControl.MessageBoxEx.MessageBoxEx.Show("重启设备【" + Global.Params.BoxIP + "】成功", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
         System.Threading.Thread.Sleep(500);
         procDlg.Dispose();
     }
 }
        public static bool LoadBox(string BoxIP)
        {
            // return true;

            //登录box
            Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
            bool b = false;
            try
            {
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在登录" + Global.Params.BOXNAME + "【" + BoxIP + "】,请稍等...");
                if (Global.Params.BoxHandle > 0)
                {
                    //MBoxSDK.ConfigSDK.MBOX_Logout(Global.Params.BoxHandle);
                    Global.Params.BoxHandle = 0;
                }
                Global.Params.BoxHandle = MBoxSDK.ConfigSDK.MBOX_Login(BoxIP, "", "", "");

                b = Global.Params.BoxHandle > 0 ? true : false;
                b = b && MBoxSDK.ConfigSDK.MBOX_IsDeviceOnline(BoxIP);

                if (b)
                {
                    Global.Params.BoxType = Global.Methods.GetBoxType(Global.Params.BoxHandle);
                    int iFind = Global.Params.LstBox.FindIndex(item => item.vc_IP == Global.Params.BoxIP);
                    if (iFind >= 0) Global.Params.LstBox[iFind].i_Flag = 1;
                    // Global.Params.LstBox.Find(item => item.vc_IP == Global.Params.BoxIP).i_Flag = 1;
                    //b =Tools.MBoxOperate.CreateCalinglSourceRule();
                }

                Global.Params.frmMain.checkOnline_StateChange(Global.Params.BoxIP, b);
                LoadBoxError(b == true ? 1 : 0, "");
            }
            catch (Exception ex)
            {
                CommControl.Tools.WriteLog.AppendErrorLog(ex);
            }
            finally
            {
                procDlg.Dispose();
            }
            return b;
        }
        private void btnUp_Click(object sender, EventArgs e)
        {
            Bestway.Windows.Forms.ProgressBarDialog prog = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                if (NewFormMain.LoadBox(Global.Params.BoxIP))
                {
                    //ftp.FindLocalFile(@"F:\xiazai\tffs0\cfg");
                    //ftp.FindLocalFile(@"F:\xiazai\tffs0\db");
                    if (radioButton1.Checked)
                    {
                        //仅还原配置文件
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\cfg");
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\db");
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\boot");
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\fw");
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\lc");
                        //if (!Directory.Exists(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\cfg") ||
                        //     !Directory.Exists(Global.Params.FILE_PATH_BOXCONFIG + @"\tffs0\db")) 
                        //{
                        //    throw new Exception("硬件配置文件不存在,无法恢复");
                        //}

                    }
                    else if (radioButton2.Checked)
                    {
                        //全部还原
                        ftp.FindLocalFile(Global.Params.FILE_PATH_BOXCONFIG);
                        //if (!Directory.Exists(Global.Params.FILE_PATH_BOXCONFIG))
                        //{
                        //    throw new Exception("硬件配置文件不存在,无法恢复");
                        //}
                    }

                    if (ftp.lstLocalfile.Count == 0)
                    {
                        throw new Exception("硬件配置文件不存在,无法恢复");
                    }

                    if (!File.Exists(Global.Params.FILE_PATH_BOXCONFIG_DB + "\\" + Global.Params.ConfigModel.DBInfo.DatabaseName + ".bak"))
                    {
                        throw new Exception("数据库文件不存在,无法恢复");
                    }

                    int i = 0;
                    foreach (FtpFileInfo info in ftp.lstLocalfile)
                    {
                        i++;
                        prog.Show(Bestway.Windows.Forms.EnumDisplayType.Custom, "正在恢复文件:" + info.FileName);
                        ftp.UpToFtpFile(info.FileFullName, Global.Params.FILE_PATH_BOXCONFIG);
                    }

                    string mes = "硬件配置恢复成功\r\n";
                    DbOper dboper = new DbOper();
                    prog.Show(Bestway.Windows.Forms.EnumDisplayType.Custom, "正在还原数据库...");
                    //DB_Talk.DB.OleDbHelper.Dispose();
                    if (dboper.DbRestore(Global.Params.FILE_PATH_BOXCONFIG_DB))
                    {
                        mes += "数据库还原成功!";
                    }
                    else
                    {
                        mes += "数据库还原失败!"  + dboper.errorMes;
                    }
                    prog.Hide();
                    if (dboper.errorMes == "")
                    {
                        //重启站点
                        Global.Params.IsRestart = true;
                        Global.Params.frmMain.ReStartBox();
                    }
                    //数据库连接
                    Start.frmConnect frmConnect = new Start.frmConnect();
                    frmConnect.ShowDialog();
                    frmConnect = null;
                    //prog.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在连接数据库,请稍等...");
                    //if (Program.OpenDataBase() == false)
                    //{
                    //    prog.Hide();
                    //    DialogResult dr = new DialogResult();
                    //    dr = (new Start.frmDatabaseConfig()).ShowDialog();
                    //    if (dr == DialogResult.Cancel)
                    //    {

                    //        return;
                    //    }
                    //}
                    CommControl.MessageBoxEx.MessageBoxEx.Show(mes, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                prog.Hide();
                CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            finally
            {
                prog.Dispose();
            }
        }
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

           // Application.Run(new Form1());

           // Application.Run(new TalkLog());
            try
            {
               
                //new FormCallKeyborad(null).ShowDialog();
               // new Form1().ShowDialog();
                //单例模式
                bool bCreatedNew;
                System.Threading.Mutex mutex = new System.Threading.Mutex(false, Application.ProductName, out bCreatedNew);
                if (!bCreatedNew)
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show("程序已打开!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }


                //捕获程序级错误
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);

                Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog(new FormWelcome());
                Form tempForm = new Form();
                tempForm.FormBorderStyle = FormBorderStyle.None;
                tempForm.Size = new System.Drawing.Size(1, 1);
                tempForm.Show();
                tempForm.Hide();
                //bool b = DB_Talk.DB.OpenDataBase("172.21.2.78\\hc", "MBoxOss", "Tester1", "User@1234", new ExecuteErrorEventHandler(OleDbHelper_ExecuteError));
                Pub._configModel = Config.GetModel();

                if (Pub._configModel.LocalIP == "127.0.0.1")
                {
                    IPHostEntry hostName = Dns.GetHostByName(Dns.GetHostName());
                    if (hostName.AddressList.Length > 0)
                    {
                        Pub._configModel.LocalIP = hostName.AddressList[0].ToString();
                        Config.WriteModel(Pub._configModel);
                    }
                }

                // bool b = DB_Talk.DB.OpenDataBase(Pub._configModel.DBServer, Pub._configModel.DBName, Pub._configModel.DBUserName, Pub._configModel.DBPassword, new ExecuteErrorEventHandler(OleDbHelper_ExecuteError));
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "  正在连接数据库,请稍等...");
                if (OpenDataBase() == false)
                {
                    procDlg.Hide();
                    DialogResult dr = new DialogResult();
                    dr = (new frmDatabaseConfig()).ShowDialog();
                    if (dr == DialogResult.Cancel)
                    {
                        procDlg.Dispose();
                        return;
                    }
                }
                procDlg.Hide();

                if (Pub._configModel.IsAutoLogin)
                {
                    List<DB_Talk.Model.m_Manager> lst = new List<DB_Talk.Model.m_Manager>();
                    lst = new DB_Talk.BLL.m_Manager().GetModelList(string.Format("vc_UserName='******' and  i_Flag=0  ", "admin"));
                    Pub._configModel.LastUser = "******";
                    if (lst != null && lst.Count > 0)
                    {
                        Pub.manageModel = lst[0];

                        if (Pub.manageModel.i_Dispatch.Value != 1)
                        {
                            MessageBoxEx.Show("当前用户没有调度权限,请联系管理员!", "提示");
                            return;
                        }

                        Config.WriteModel(Pub._configModel);
                        //选择Box;
                        FormSelectBox fs = new FormSelectBox();
                        if (fs.LoadBoxList() == true)
                        {
                            fs.ShowDialog();
                        }
                        
                        if (Pub.manageModel.BoxID == null)
                        {
                            MessageBoxEx.Show("请先到网管程序配置语音调度交换机", "提示");
                            return;
                        }

                        DB_Talk.Model.m_Box boxModel = new DB_Talk.BLL.m_Box().GetModel(Pub.manageModel.BoxID.Value);
                        if (boxModel == null)
                        {
                            MessageBoxEx.Show("请到网管程序增加MBox设备!", "提示");
                            return;
                        }

                        ///添加调度号码,取调度的前两个

                        List<DB_Talk.Model.m_Member> lstM = new List<DB_Talk.Model.m_Member>();

                        lstM = new DB_Talk.BLL.m_Member().GetModelList(string.Format("boxID={0} and i_isdispatch=1 and i_Flag=0", Pub.manageModel.BoxID));
                        if (lstM.Count >= 2)
                        {
                            Pub.manageModel.LeftDispatchNumber = lstM[0].i_Number;
                            Pub.manageModel.LeftDispatchName = lstM[0].vc_Name;

                            Pub.manageModel.RightDispatchNumber = lstM[1].i_Number;
                            Pub.manageModel.RightDispatchName = lstM[1].vc_Name;
                        }
                        else
                        {
                            MessageBoxEx.Show("请到网管程序添加调度号码!", "提示");
                            return;
                        }

                        lstM = new DB_Talk.BLL.m_Member().GetModelList(string.Format("boxID={0} and i_isdispatch=2 and i_Flag=0", Pub.manageModel.BoxID));
                        if (lstM != null && lstM.Count > 0)
                        {
                            Pub.VideoNumber = lstM[0].i_Number.Value.ToString();
                            Pub.VideoPassword = lstM[0].i_NuPassword.ToString();
                        }
                        else
                        {
                            if (Pub._configModel.IsVideoCall)
                            {
                                MessageBoxEx.Show("请到网管程序添加视频调度号码!", "提示");
                                return;
                            }
                        }

                        if (Pub._configModel.IsVideoCall)
                        {
                            if (Pub._configModel.VideoSize<=0 || Pub._configModel.VideoSize>=10)
                            {
                                 MessageBoxEx.Show("请设置合适的视频大小!", "提示");
                                return;
                            }
                        }
                        if (boxModel.i_MaxMeetingMember != null)
                        {
                            Pub._maxMeetingMemberCount = boxModel.i_MaxMeetingMember.Value;
                        }
                        CommControl.SystemLogBLL.WriteLog(
                            Pub.manageModel.ID, Pub.manageModel.BoxID.Value, SystemLogBLL.EnumLogAction.SystemOperate, "登录", "登录成功", "");
                    }
                    else
                    {
                        MessageBoxEx.Show("请先到网管程序进行配置!", "提示");
                        return;
                    }
                }
                else
                {
                    FormLogin frmLogin = new FormLogin(FormLogin.EnumLoginType.Login);
                    if (frmLogin.ShowDialog() == DialogResult.Cancel)
                    {
                        procDlg.Dispose();
                        return;
                    }
                }
                Pub.CanDestroyControl = false;
                //frmLogin.Dispose();
                List<DB_Talk.Model.m_Member> lstMember = new DB_Talk.BLL.m_Member().GetModelList(string.Format("i_Flag=0 and BoxID={0} order by id", Pub.manageModel.BoxID.Value));

                if (lstMember.Count == 0)
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show("请先到网管软件增加用户", "提示");
                    return;
                }
                
                FormMain frmMain = new FormMain();
                //Form1 frmMain = new Form1();
                //frmMain.Width = 1;
                //frmMain.Height = 1;
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "  正在初始化程序,请稍等...");

                frmMain.WindowState = FormWindowState.Normal;
                frmMain.Show();//为了让加载主窗体滚动条显示出来
                frmMain.Visible = false;
                Pub._pageControl = Pub._meetingManage.GetToSelectPageControl();
                if (Pub._pageControl == null)
                {
                    procDlg.Hide();
                    MessageBoxEx.Show("请先到网管程序增加电话号码!", "提示");
                    return;
                }
                

                frmMain.ShowLoadOk();
                frmMain.Visible = true;
                int tt = 10000;//当所有用户的信息都上报之后LstMember.cout会等于0,如果意外情况下Box内部没有上报数据库中的号码的话,这里执行10000次自动跳过
                while (FormMain._lstMember.Count>0 && tt>=0)
                {
                    tt--;
                    System.Threading.Thread.Sleep(1);
                    Application.DoEvents();
                }
                
                frmMain.SetDispatchAndLoadState();
                frmMain.WindowState = System.Windows.Forms.FormWindowState.Maximized;

                procDlg.Hide();
                procDlg.Dispose();
                Pub._memberManage.ClickTab();
                frmMain.imgBtnMeeting_Click(null, null);
                Pub._meetingManage.ClickTab();
               
                
                frmMain.imgBtnDispatch_Click(null, null);
                frmMain.SetSortButton();
                Pub.CanDestroyControl = true;
                frmMain.SetDefaultMemberGroupIndex();
                frmMain.SetMenuSelect();
                //new Form1().ShowDialog();
                Application.Run(frmMain);

            }
            catch (Exception ex)
            {
                CommControl.Tools.WriteLog.AppendLog("Main:" + ex.Message + ex.StackTrace);
                //MessageBoxEx.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Environment.Exit(0);
            }
        }
        //删除PRI中继
        private void btnDeletePRI_Click(object sender, EventArgs e)
        {
            if (dgvPRI.CurrentRow != null)
            {
                if (!NewFormMain.LoadBox(Global.Params.BoxIP))
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show("登录站点【" + Global.Params.BoxIP + "】失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                 Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                 try
                 {
                     
                     bool delete = false;
                     DB_Talk.Model.m_PRIInterface model = dgvPRI.CurrentRow.Tag as DB_Talk.Model.m_PRIInterface;
                     if (model != null)
                     {
                         procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在删除PRI中继【" + model.PRIID + "】,请稍等...");
                  
                         List<DB_Talk.Model.m_CalledRule> lstAdd = new List<DB_Talk.Model.m_CalledRule>();
                         List<DB_Talk.Model.m_CalledRule> lstDelete = new List<DB_Talk.Model.m_CalledRule>();

                         if (model.vc_OutNumberLocal!=null)
                         {
                             GetCalledRule(0, model.PRIID, "", model.vc_OutNumberLocal, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.市话);    
                         }
                         
                         if (model.vc_OutNumber!=null)
                         {
                             GetCalledRule(0, model.PRIID, "", model.vc_OutNumber, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途);    
                         }
                         
                     
                     

                         if (Tools.MBoxOperate.DeletePRI(model, lstAdd, lstDelete) && new DB_Talk.BLL.m_PRIInterface().Delete(model.ID))
                         {
                             MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);
                             delete = true;
                         }
                     }
                     else  //还未添加 直接删除
                         delete = true;

                     if (delete)
                     {
                         dgvPRI.Rows.Remove(dgvPRI.CurrentRow);
                         procDlg.Hide();
                         CommControl.MessageBoxEx.MessageBoxEx.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                     }
                     else
                     {
                         procDlg.Hide();
                         CommControl.MessageBoxEx.MessageBoxEx.Show("删除失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                     }
                 }
                 catch (Exception ex)
                 {
                     procDlg.Hide();
                     CommControl.Tools.WriteLog.AppendErrorLog(ex);
                 }
                 finally
                 {
                     procDlg.Dispose();
                 }
            }
            else
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("请选择要删除的PRI中继!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
        }
        //保存SIP
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!NewFormMain.LoadBox(Global.Params.BoxIP))
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("登录站点【" + Global.Params.BoxIP + "】失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            System.Collections.Generic.Dictionary<DB_Talk.Model.m_SIPInterface, DB_Talk.Model.m_SIPInterface> lst = new Dictionary<DB_Talk.Model.m_SIPInterface, DB_Talk.Model.m_SIPInterface>();
            try
            {
                lst = GetLstSIPInterface();
                if (lst==null || lst.Count==0)
                {
                    return;
                }
            }
            catch(Exception ex)
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            string mes="";
            Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                try
                {
                    foreach (System.Collections.Generic.KeyValuePair<DB_Talk.Model.m_SIPInterface, DB_Talk.Model.m_SIPInterface> d in lst)
                    {
                        procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在保存SIP中继【" + d.Key.SIPID + "】,请稍等...");

                        List<DB_Talk.Model.m_CalledRule> lstAdd = new List<DB_Talk.Model.m_CalledRule>();
                        List<DB_Talk.Model.m_CalledRule> lstDelete = new List<DB_Talk.Model.m_CalledRule>();
                        string outNum = "";  //原有的引导码
                        if (d.Value != null) outNum = d.Value.vc_OutNumber == null ? "" : d.Value.vc_OutNumber;

                        string outNumLocal = "";  //原有的引导码
                        if (d.Value != null) outNumLocal = d.Value.vc_OutNumberLocal == null ? "" : d.Value.vc_OutNumberLocal;

                        if (d.Key.vc_OutNumberLocal!=null)
                        {
                            GetCalledRule(d.Key.SIPID, 0, d.Key.vc_OutNumberLocal, outNumLocal, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.市话);    
                        }
                        
                        if (d.Key.vc_OutNumber!=null)
                        {
                            GetCalledRule(d.Key.SIPID, 0, d.Key.vc_OutNumber, outNum, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途);    
                        }
                        
                      
                        if (!Tools.MBoxOperate.CreateSIP(d.Key, d.Value, lstAdd, lstDelete))
                        {
                            mes = d.Key.SIPID.ToString();
                            procDlg.Hide();
                            CommControl.MessageBoxEx.MessageBoxEx.Show("保存SIP中继【" + d.Key.SIPID + "】失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    procDlg.Hide();
                    CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                Loaddata(1);
                if (mes == "")
                {
                    MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);
                    procDlg.Hide();
                    //CommControl.MessageBoxEx.MessageBoxEx.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    DialogResult dr = CommControl.MessageBoxEx.MessageBoxEx.Show("SIP中继保存成功,需要重启后生效,请确认是否要重启,点击【确定】重启,点击【取消】不重启", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    if (dr == DialogResult.OK)
                    {
                        Global.Params.frmMain.ReStartBox();
                    }
                    else
                    {
                        Global.Params.IsRestart = false;
                    }
                }
            }
            catch (Exception ex)
            {
                procDlg.Hide();
                CommControl.Tools.WriteLog.AppendErrorLog(ex);
            }
            finally
            {
                procDlg.Dispose();
            }

        }
        //保存PRI中继
        private void btnSavePRI_Click(object sender, EventArgs e)
        {
            if (!NewFormMain.LoadBox(Global.Params.BoxIP))
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("登录站点【" + Global.Params.BoxIP + "】失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                System.Collections.Generic.Dictionary<DB_Talk.Model.m_PRIInterface, DB_Talk.Model.m_PRIInterface> Dic = new Dictionary<DB_Talk.Model.m_PRIInterface, DB_Talk.Model.m_PRIInterface>();
                try
                {
                    Dic = GetLstPRIInterface();
                    if (Dic == null || Dic.Count == 0)
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                   
                    CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }

                string mes = "";
                //foreach (DB_Talk.Model.m_SIPInterface m in lst)
                try
                {
                    foreach (System.Collections.Generic.KeyValuePair<DB_Talk.Model.m_PRIInterface, DB_Talk.Model.m_PRIInterface> d in Dic)
                    {
                        procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在保存PRI中继【" + d.Key.PRIID + "】,请稍等...");
                        List<DB_Talk.Model.m_CalledRule> lstAdd = new List<DB_Talk.Model.m_CalledRule>();
                        List<DB_Talk.Model.m_CalledRule> lstDelete = new List<DB_Talk.Model.m_CalledRule>();
                        string outNum = "";
                        if (d.Value != null) outNum = d.Value.vc_OutNumber == null ? "" : d.Value.vc_OutNumber;
                        string outNumLocal = "";  //原有的引导码
                        if (d.Value != null) outNumLocal = d.Value.vc_OutNumberLocal == null ? "" : d.Value.vc_OutNumberLocal;
                        if (d.Key.vc_OutNumberLocal!=null)
                        {
                            GetCalledRule(0, d.Key.PRIID, d.Key.vc_OutNumberLocal, outNumLocal, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.市话);    
                        }

                        if (d.Key.vc_OutNumber!=null)
                        {
                            GetCalledRule(0, d.Key.PRIID, d.Key.vc_OutNumber, outNum, ref lstAdd, ref lstDelete, MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途);    
                        }
                        
                        
                        if (!Tools.MBoxOperate.CreatePRI(d.Key, d.Value, lstAdd, lstDelete))
                        {
                            mes = d.Key.PRIID.ToString();
                            procDlg.Hide();
                            CommControl.MessageBoxEx.MessageBoxEx.Show("保存PRI中继【" + d.Key.PRIID + "】失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    procDlg.Hide();
                    CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                Loaddata(2);
                if (mes == "")
                {
                    MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);
                    procDlg.Hide();
                    CommControl.MessageBoxEx.MessageBoxEx.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            catch (Exception ex)
            {
                procDlg.Hide();
                CommControl.Tools.WriteLog.AppendErrorLog(ex);
            }
            finally
            {
                procDlg.Dispose();
            }


        }
Beispiel #10
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            System.Threading.Thread.CurrentThread.CurrentUICulture =
                new System.Globalization.CultureInfo("zh-Hans");
            //读本地配置文件
            Global.Params.ConfigModel = (new Config.ConfigBLL()).ReadConfig();  
            //OpenDataBase();

            Bestway.Windows.Forms.ProgressBarDialog procDlg = null;
            Form tempForm = new Form();
            tempForm.FormBorderStyle = FormBorderStyle.None;
            tempForm.Size = new System.Drawing.Size(1, 1);
            tempForm.Show();
            tempForm.Hide();

            try
            {
                //单例模式
                bool bCreatedNew;
                System.Threading.Mutex mutex = new System.Threading.Mutex(false, Application.ProductName, out bCreatedNew);
                if (!bCreatedNew)
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show("程序已打开!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //捕获程序级错误
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);

                
                procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在加载配置文件...");
                //读本地配置文件
                Global.Params.ConfigModel = (new Config.ConfigBLL()).ReadConfig();
                //数据库连接
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在连接数据库,请稍等...");
                if ( OpenDataBase() == false)
                {
                    procDlg.Hide();
                    DialogResult dr = new DialogResult();
                    dr = (new Start.frmDatabaseConfig()).ShowDialog();
                    if (dr == DialogResult.Cancel)
                    {
                        procDlg.Dispose();
                        return;
                    }
                }
                DB_Talk.DB.OleDbHelper.StateChanged += new System.Data.StateChangeEventHandler(OleDbHelper_StateChanged);
               
                procDlg.Hide();

                #region 用户登录
                procDlg.Hide();
                NewfrmLogin frmLogin = new NewfrmLogin();
                if (!frmLogin.Login())
                {
                    procDlg.Dispose();
                    return;
                }
                #endregion

                procDlg.Dispose();
                Global.Params.frmMain = new NewFormMain();
                Application.Run(Global.Params.frmMain);

            }
            catch (Exception ex)
            {

                CommControl.Tools.WriteLog.AppendErrorLog("Main:" + ex.Message + ex.StackTrace);
                //MessageBoxEx.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                MBoxSDK.ConfigSDK.MBOX_Dispose();
                Global.Params.BoxHandle = 0;
                Environment.Exit(0);
            }
        }
Beispiel #11
0
 public bool LoadBoxTest(string BoxIP)
 {
     //登录box
     Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
     bool b = false;
     try
     {
         procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在登录" + Global.Params.BOXNAME + "【" + BoxIP + "】,请稍等...");
         int handle=MBoxSDK.ConfigSDK.MBOX_Login(BoxIP, "", "", "");
         b = handle > 0 ? true : false;
         b = b && MBoxSDK.ConfigSDK.MBOX_IsDeviceOnline(BoxIP);
         if (b)
         {
             Global.Params.BoxHandle = handle;
             Global.Params.BoxIP = BoxIP;
             DB_Talk.Model.m_Box m = new DB_Talk.Model.m_Box();
             if (_operate==0 && Tools.MBoxOperate.GetNodeInfo(handle, out m))
             {
                 txtMask.Text = m.vc_Mask;
                 txtNetIP.Text = m.vc_NetIP;
                 _mModel.vc_Mask = txtMask.Text.Trim();
                 _mModel.vc_NetIP = txtNetIP.Text.Trim();
             }
         }
     }
     catch (Exception ex)
     {
         CommControl.Tools.WriteLog.AppendErrorLog(ex);
     }
     finally
     {
         procDlg.Dispose();
     }
     return b;
 }
        private void btnDel_Click(object sender, EventArgs e)
        {
            if (dgvList.CurrentRow != null)
            {
                bool delete = false;
                Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                try
                {
                    DB_Talk.Model.m_CalledRule model = dgvList.CurrentRow.Tag as DB_Talk.Model.m_CalledRule;
                    if (model != null)
                    {
                        CheckDeleteCondition(model);
                        List<DB_Talk.Model.m_Member> lstMember=new DB_Talk.BLL.m_Member().GetModelList(
                           string.Format(" i_Flag=0 and i_Number like '{0}%' and BoxID='{1}' ", model.vc_CalledNumber, Global.Params.BoxID));
                          // string.Format(" i_Flag=0 and i_Number like '{0}%' and BoxID='{1}' and i_IsDispatch!=1", model.vc_CalledNumber, Global.Params.BoxID));

                        if (lstMember.Count > 0)
                        {
                            CommControl.MessageBoxEx.MessageBoxEx.Show("用户号码中引用了此呼叫规则,不允许删除,要想删除,请先删除用户号码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            return;
                        }

                        procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在删除被叫规则【" + model.vc_CalledNumber + "】,请稍等...");
                        List<DB_Talk.Model.m_CalledRule> lstAdd = new List<DB_Talk.Model.m_CalledRule>();
                        List<DB_Talk.Model.m_CalledRule> lstDelete = new List<DB_Talk.Model.m_CalledRule>();
                        lstDelete.Add(model);
                        DB_Talk.Model.m_SIPInterface modelSip = null;
                        DB_Talk.Model.m_PRIInterface modelPri = null;

                        if (model.i_SIPID > 0)
                            modelSip = new DB_Talk.BLL.m_SIPInterface().GetModel(
                                 string.Format(" i_Flag=0 and SIPID='{0}' and BoxID='{1}'", model.i_SIPID, Global.Params.BoxID));
                        if (modelSip != null)
                        {
                            List<DB_Talk.Model.m_CalledRule> lstm = new DB_Talk.BLL.m_CalledRule().GetModelList(
                               string.Format(" i_Flag=0 and i_SIPID='{0}' and BoxID='{1}' and ID!='{2}'",
                               model.i_SIPID, Global.Params.BoxID, model.ID));
                            if (lstm.Count > 0)  //只删除呼叫规则(还存在引用此中继的呼叫规则)
                            {
                                if (Tools.MBoxOperate.Delete_Rule(lstAdd, lstDelete))
                                {
                                    delete = true;
                                    if (model.i_CalledSubType == MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.市话.GetHashCode())
                                    {
                                        modelSip.vc_OutNumberLocal = modelSip.vc_OutNumberLocal.Replace(model.vc_CalledNumber, "").Replace(",,",",").Trim(','); ;
                                    }
                                    else if (model.i_CalledSubType == MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途.GetHashCode())
                                    {
                                        modelSip.vc_OutNumber = modelSip.vc_OutNumber.Replace(model.vc_CalledNumber, "").Replace(",,", ",").Trim(','); ;
                                    }
                                     new DB_Talk.BLL.m_SIPInterface().Update(modelSip);
                                }
                            }
                            else  //连中继一起删除
                            {
                                if (Tools.MBoxOperate.DeleteSIP(modelSip, lstAdd, lstDelete) && new DB_Talk.BLL.m_SIPInterface().Delete(modelSip.ID))
                                {
                                    delete = true;
                                }
                            }
                        }

                        if (model.i_PRIID > 0)
                            modelPri = new DB_Talk.BLL.m_PRIInterface().GetModel(
                                 string.Format(" i_Flag=0 and PRIID='{0}' and BoxID='{1}'", model.i_PRIID, Global.Params.BoxID));

                        if (modelPri != null)
                        {
                            List<DB_Talk.Model.m_CalledRule> lstm = new DB_Talk.BLL.m_CalledRule().GetModelList(
                                string.Format(" i_Flag=0 and i_PRIID='{0}' and BoxID='{1}' and ID!='{2}'",
                                model.i_PRIID, Global.Params.BoxID, model.ID));
                            if (lstm.Count > 0 && Tools.MBoxOperate.Delete_Rule(lstAdd, lstDelete))  //只删除呼叫规则
                            {
                                if (model.i_CalledSubType == MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.市话.GetHashCode())
                                {
                                    //modelPri.vc_OutNumberLocal = modelPri.vc_OutNumberLocal.Replace(model.vc_CalledNumber, "").Replace(",,", ",").Trim(',');
                                    modelPri.vc_OutNumberLocal = ReplaceString(modelPri.vc_OutNumberLocal, model.vc_CalledNumber);
                                }
                                else if (model.i_CalledSubType == MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途.GetHashCode())
                                {
                                   // modelPri.vc_OutNumber = modelPri.vc_OutNumber.Replace(model.vc_CalledNumber, "").Replace(",,", ",").Trim(',');
                                    modelPri.vc_OutNumber = ReplaceString(modelPri.vc_OutNumber, model.vc_CalledNumber);
                                }
                                 new DB_Talk.BLL.m_PRIInterface().Update(modelPri);
                                delete = true;
                            }
                            else  //连中继一起删除
                            {
                                if (Tools.MBoxOperate.DeletePRI(modelPri, lstAdd, lstDelete) && new DB_Talk.BLL.m_PRIInterface().Delete(modelPri.ID))
                                {
                                    delete = true;
                                }
                            }
                        }

                        if (modelSip == null && modelPri == null)  //删除的入局规则
                        {

                            if (Tools.MBoxOperate.Delete_Rule(lstAdd, lstDelete))
                            {
                                DB_Talk.Model.m_Box BoxModel = new DB_Talk.BLL.m_Box().GetModel(Global.Params.BoxID);
                                if (BoxModel != null && BoxModel.vc_NumberHead!=null)  
                                {

                                    BoxModel.vc_NumberHead = BoxModel.vc_NumberHead.Replace(lstDelete[0].vc_CalledNumber, "").Replace(",,", ",").Trim(',');
                                    
                                    new DB_Talk.BLL.m_Box().Update(BoxModel);
                                }
                                delete = true;
                            }
                        }
                    }
                    else  //还未添加 直接删除
                        delete = true;


                    if (delete)
                    {
                        MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);
                        procDlg.Hide();
                        Loaddata();
                        //dgvList.Rows.Remove(dgvList.CurrentRow);
                        CommControl.MessageBoxEx.MessageBoxEx.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    }
                    else
                    {
                        procDlg.Hide();
                        CommControl.MessageBoxEx.MessageBoxEx.Show("删除失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                    }
                }
                catch (Exception ex)
                {
                    procDlg.Hide();
                    CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //CommControl.Tools.WriteLog.AppendErrorLog(ex);
                }
                finally
                {
                    procDlg.Dispose();
                }
            }
            else
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("请选择要删除的呼叫规则!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
        }
        public void LoadData(string strwhere)
        {
           Bestway.Windows.Forms.ProgressBarDialog procDlg = null;
            procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在加载数据,请稍等...");
                //cbHeader._checked = false;
                dgvList.Rows.Clear();

                List<DB_Talk.Model.v_Member> lst = new List<DB_Talk.Model.v_Member>();
                lst = new DB_Talk.BLL.v_Member().GetModelList("i_Flag=0 and BoxID='" + Global.Params.BoxID + "' and i_IsDispatch=0 " + strwhere);

                int i = 0;
                foreach (DB_Talk.Model.v_Member item in lst)
                {
                    i++;
                    string numberType = "", level, telType = "",strAuthority="";
                    if (item.NumberTypeID != null)
                        numberType = ((CommControl.PublicEnums.EnumNumberType)item.NumberTypeID).ToString().Replace("_", "-");
                    if (item.i_TellType != null)
                        telType = ((CommControl.PublicEnums.EnumTelType)item.i_TellType).ToString().Replace("G3","G"); ;
                    if (item.LevelID == null) 
                        level = "";
                    else 
                        level = ((PublicEnums.EnumLevel)item.LevelID).ToString();

                    string paswType = "";
                    if (item.NumberTypeID != CommControl.PublicEnums.EnumNumberType.手机3G.GetHashCode())
                        paswType = item.i_NuPasswordType == 1 ? "固定" : "增加";
                    dgvList.Rows[dgvList.Rows.Add(item.ID," " + i,
                        item.vc_Name,
                        item.i_Number,
                        item.deptName,
                        paswType,
                        item.i_NuPassword == 0 ? "" : item.i_NuPassword.ToString(),
                        item.TellAuthority,
                        item.TellType,    //telType,          //item.TellType,
                        level,            //item.LevelName,
                        item.vc_UmtsImsi,
                        item.i_UnCForwardNu,
                        item.i_NoAnswerForward,
                        item.i_BusyForward,
                        item.i_PowerOffForward,
                        item.i_AssociateNum1,
                        item.i_AssociateNum2,
                        item.vc_Memo,
                        item.vc_IP

                        )].Tag = item;
                }
                kryptonHeaderGroup1.ValuesSecondary.Heading = "  共" + dgvList.Rows.Count.ToString() + "个人员";
                //Tools.AcrReportManage.Current.RefushDataset();
                //loadReport(strwhere);
                loadReport();
                InitListBoxName();
                InitListBoxTel();
            }
            catch(Exception ex)
            {
                CommControl.Tools.WriteLog.AppendErrorLog(ex);
            }
            finally
            {
                procDlg.Dispose();
            }

           
        }
        private void btnDel_Click(object sender, EventArgs e)
        {
            int lastIndex = 0;
            try
            {
                int count = dgvList.SelectedRows.Count;
               
                if (count >= 1)
                {
                    lastIndex = dgvList.SelectedRows[0].Index;
                    Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                     DialogResult dr = DialogResult.No;
                     string mesQuestion = "";

                     if (dgvList.SelectedRows.Count > 1)
                     {
                         mesQuestion = "确认要删除选中的 【" + dgvList.SelectedRows.Count + "】个用户吗? 如果用户已经被添加到组,组中也会被删除!";
                         dr = CommControl.MessageBoxEx.MessageBoxEx.Show(mesQuestion, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                     }
                     else if (dgvList.SelectedRows.Count == 1)
                     {
                         DB_Talk.Model.v_Member Model = (DB_Talk.Model.v_Member)dgvList.SelectedRows[0].Tag; // dgvList.CurrentRow.Tag;
                        
                         if (new DB_Talk.BLL.m_GroupMembers().Exists("MemberID='" + Model.ID + "'"))
                         {
                             mesQuestion = "用户【" + Model.vc_Name + "】已经被添加到组,如果删除用户,组中也会删除,确认删除吗?";
                         }
                         else
                             mesQuestion = "确认要删除 【" + Model.vc_Name + "】吗?";
                         dr = CommControl.MessageBoxEx.MessageBoxEx.Show(mesQuestion, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                     }

                     if (dr == DialogResult.OK)
                     {
                         StringBuilder mesOK = new StringBuilder();
                         StringBuilder mesMemberID = new StringBuilder();
                         StringBuilder mesNO = new StringBuilder();
                         int OK = 0, NO = 0;
                         DateTime dtstart = System.DateTime.Now;
                         foreach (DataGridViewRow item in dgvList.SelectedRows)
                         {
                             DB_Talk.Model.v_Member _mModel = (DB_Talk.Model.v_Member)item.Tag; // dgvList.CurrentRow.Tag;
                             //2013-6-13 修改,在删除前判断,存在的号码才删除(因为有时候数据库里面有的号码,box里面没有,直接删除会返回false)
                             bool IsExist = MBoxSDK.ConfigSDK.MBOX_IsSubscriberExist(Global.Params.BoxHandle,(_mModel.i_Number.Value));
                             CommControl.Tools.WriteLog.AppendLog("box添加号码", "删除号码操作,boxHandle:" + Global.Params.BoxHandle + ", 号码:" + Convert.ToInt32(_mModel.i_Number.ToString()) + ", 是否存在:" + IsExist);

                             if (IsExist)
                             {
                                 //System.Threading.Thread.Sleep(500);
                                 if (MBoxSDK.ConfigSDK.MBOX_DeleteSubscriber(Global.Params.BoxHandle, (_mModel.i_Number.Value)))
                                 {
                                     RemoveAssociateNum(_mModel);
                                     mesMemberID.Append("," + _mModel.ID);
                                     mesOK.Append("," + _mModel.vc_Name);
                                     OK++;
                                     CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID,CommControl.SystemLogBLL.EnumLogAction.Delete, "删除(box中存在)","删除了人员:" + _mModel.vc_Name, "");
                                     procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在删除用户【" + _mModel.vc_Name + "】,请稍等...");
                                 }
                                 else
                                 {
                                     CommControl.Tools.WriteLog.AppendLog("box中存在,删除人员:" + _mModel.vc_Name + "失败");
                                     CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Delete, "删除失败(box中存在)", "删除了人员:" + _mModel.vc_Name + "失败", "");
                                     mesNO.Append("," + _mModel.vc_Name);
                                     NO++;
                                 }
                             }
                             else
                             {
                                 RemoveAssociateNum(_mModel);
                                 mesMemberID.Append("," + _mModel.ID);
                                 mesOK.Append("," + _mModel.vc_Name);
                                 OK++;
                                 CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Delete, "删除(box中不存在)", "删除了人员:" + _mModel.vc_Name, "");
                             }
                         }
                         string mes = "";
                         bool bSave = false;
                         if (OK > 0)
                         {
                             bSave = MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle); //保存更改
                             mesMemberID.Remove(0, 1);
                             mesOK.Remove(0, 1);
                         }
                         DateTime dtEnd = System.DateTime.Now;
                         TimeSpan sp = dtEnd - dtstart;
                         CommControl.Tools.WriteLog.AppendLog("删除" + dgvList.SelectedRows.Count + "个用户,时间:" + sp.TotalMilliseconds + "ms");
                         if (bSave)
                         {
                             if (new DB_Talk.BLL.m_Member().DeleteList(mesMemberID.ToString()))
                             {
                                      
                                 //CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, 
                                 //    CommControl.SystemLogBLL.EnumLogAction.Delete, "删除", 
                                 //    "删除了人员:" + mesOK.ToString(), "");
                                 if (mesOK.Length > 0 && OK > 0 && OK < 10)
                                 {
                                     mes = "删除【" + mesOK.ToString() + "】成功!";
                                 }
                                 else
                                 {
                                     mes = "删除【" + OK + "】个用户成功!";
                                 }
                                 LoadData("");
                             }
                             else
                                 mes = "数据库删除【" + OK + "】个用户失败!";
                         }
                         else if (OK != 0)
                         {
                              mes = "硬件保存配置失败!";
                         }
                         if (mesNO.Length > 0)
                         {
                             mesNO.Remove(0, 1);
                             mes = "从硬件中删除【" + mesNO.ToString() + "】失败!";
                         }
                         procDlg.Dispose();
                         CommControl.MessageBoxEx.MessageBoxEx.Show(mes, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                 }
                 else
                 {
                     CommControl.MessageBoxEx.MessageBoxEx.Show("请选择要删除的人员", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                 }
            }
            catch{}
            LoadData("");

            dgvList.ClearSelection();
            if (lastIndex < dgvList.Rows.Count)
            {
                dgvList.Rows[lastIndex].Selected = true;
                dgvList.CurrentCell = dgvList[1, lastIndex];
            }
        }
        //CommControl.MessageBoxEx.MessageBoxEx messagebox;
        private void btnOK_Click(object sender, EventArgs e)
        {
            DB_Talk.BLL.m_Member _BLL = new DB_Talk.BLL.m_Member();
            List<DB_Talk.Model.m_Member> listCount = new List<DB_Talk.Model.m_Member>();
            listCount = _BLL.GetModelList(string.Format(" i_flag=0 and BoxID='{0}'", Global.Params.BoxID));
            if (listCount.Count >= Global.Params.MaxBoxMemberCount)
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show(string.Format("不能导入,号码已经达到最大限制,【{0}】个!", Global.Params.MaxBoxMemberCount), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            Bestway.Windows.Forms.ProgressBarDialog procDlg = null;
            procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
            try
            {
                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在导入用户,请稍等...");
                DataTable dt = new DataTable();
                dt = (DataTable)dgvList.DataSource;
                if (dt == null)
                {
                    throw new Exception("没有数据!");
                    
                }
                DB_Talk.BLL.m_Member bll = new DB_Talk.BLL.m_Member();
                StringBuilder sbAdd = new StringBuilder();
                List<DB_Talk.Model.m_Member> listAdd = new List<DB_Talk.Model.m_Member>();

                StringBuilder sbNotAdd = new StringBuilder();
                StringBuilder sbAdded = new StringBuilder();     //box中已经存在的
                StringBuilder sbBoxMaxNotAdded = new StringBuilder();  //box到达最大值未添加的
                //List<DB_Talk.Model.m_Member> list = (List < DB_Talk.Model.m_Member >)dgvListOk.DataSource;
                List<DB_Talk.Model.m_Member> list = DataTableToModelList(dt);

                int iAdd=0,iAdded = 0;  //添加成功数,已经存在的数
                int iRepeatIP=0;  //IP已经存在的
                int iNotAdd = 0;     //添加失败数
                int iBoxMaxNotAdded = 0;    //到达最大后的用户
                if (dt.Rows.Count == 0)
                {
                    throw new Exception("没有数据可以导入!");
                }
                if (list.Count == 0)
                {
                    throw new Exception("没有合法的数据可以导入!");
                }

                foreach (DB_Talk.Model.m_Member item in list)
                {
                    if (listCount.Count + iAdded >= Global.Params.MaxBoxMemberCount)  //到达最大值
                    {
                        iBoxMaxNotAdded++;
                        sbBoxMaxNotAdded.Append("," + item.i_Number);

                    }
                    else
                    {
                        string strW = " i_Flag=0 and BoxID='" + Global.Params.BoxID + "'";
                        //strW += " and vc_Name='" + item.vc_Name + "'";
                        strW += " and i_Number='" + item.i_Number + "'";

                       

                        bool IsExist = MBoxSDK.ConfigSDK.MBOX_IsSubscriberExist(Global.Params.BoxHandle,(item.i_Number.Value));
                        CommControl.Tools.WriteLog.AppendLog("box添加号码", "boxHandle:" + Global.Params.BoxHandle + ", 号码:" + Convert.ToInt32(item.i_Number.ToString()) + ", 是否存在:" + IsExist);
          
                        if (bll.Exists(strW) || IsExist)
                            //MBoxSDK.ConfigSDK.MBOX_IsSubscriberExist(Global.Params.BoxHandle, Convert.ToInt32(item.i_Number.ToString())))
                        {
                            iAdded++;
                            sbAdded.Append("," + item.i_Number);//.vc_Name);
                        }
                        else if (item.i_TellType.Value == PublicEnums.EnumTelType.广播.GetHashCode() &&
                          _BLL.GetModelList(string.Format(" i_flag=0 and  vc_IP='{0}' and BoxID='{1}'", item.vc_IP, item.BoxID)).Count > 0)
                        {
                           //(string.Format("数据库中IP【{0}】已存在!", item.i_Number)
                            iRepeatIP++;
                        }
                        else
                        {
                            item.i_supplementSerive = (int)(MBoxSDK.ConfigSDK.SPM_MISS_CALL |
                                                            MBoxSDK.ConfigSDK.SPM_MISS_CALL_ON_BUSY |
                                                            MBoxSDK.ConfigSDK.SPM_SMS |
                                                            MBoxSDK.ConfigSDK.SPM_THREE_PARTY |
                                                            MBoxSDK.ConfigSDK.SPM_CALL_WAITING |
                                                            MBoxSDK.ConfigSDK.SPM_CALL_TRANSFER); // |
                                                           // MBoxSDK.ConfigSDK.SPM_CALL_PICKUP);
                            bool create= new frmMember(null, 0).AddBase(item);
                            //bool create =  MBoxSDK.ConfigSDK.MBOX_CreateSubscriber(Global.Params.BoxHandle,ref subscriberBase);
                            if (create)
                            //MBoxSDK.ConfigSDK.MBOX_CreateSubscriber(Global.Params.BoxHandle, Convert.ToInt32(item.i_Number.ToString())))
                            {
                                listAdd.Add(item);
                                //bll.Add(item);
                                //CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "导入", "导入了人员:" + item.vc_Name, "");
                                sbAdd.Append("," + item.i_Number);

                                iAdd++;
                                procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      用户【" + item.vc_Name + "】正在写入硬件,请稍等...");
                            }
                            else
                            {
                                sbNotAdd.Append("," + item.i_Number); //.vc_Name);
                                iNotAdd++;

                            }
                        }
                    }
                }
                string mes = "";
                bool bSave = false;
                if (iAdd > 0)
                {
                    TimeSpan sp = new TimeSpan(0);
                    DateTime dtstart = System.DateTime.Now;
                    bSave = MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle); //保存更改
                    DateTime dtEnd = System.DateTime.Now;
                    if (bSave)
                    {
                        sp = dtEnd - dtstart;
                        //CommControl.MessageBoxEx.MessageBoxEx.Show(sp.TotalMilliseconds.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    //sbAdd.Remove(0, 1);
                }
                if (bSave)
                {
                    foreach (DB_Talk.Model.m_Member item in listAdd)
                    {
                        procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      用户【" + item.vc_Name + "】加入数据库,请稍等...");
                     
                        bll.Add(item);
                        CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "导入", "导入了人员:" + item.vc_Name, "");
                    }
                           
                    if (iAdd > 10)
                    {
                        mes = "共导入【" + iAdd + "】个用户!\r\n";
                    }
                    else if (iAdd > 0 && iAdd <= 10)
                    {
                        sbAdd.Remove(0, 1);
                        mes = "号码【" + sbAdd.ToString() + "】导入成功!\r\n";
                    }

                }
                else if (iAdd!=0)
                {
                    mes = "保存硬件配置失败!\r\n";
                }

                if (iNotAdd > 10)
                {
                    mes += "【" + iNotAdd + "】个号码写入硬件失败!\r\n";
                }
                else if (iNotAdd > 0 && iNotAdd <= 10)
                {
                    sbNotAdd.Remove(0, 1);
                    mes += "号码【" + sbNotAdd.ToString() + "】写入硬件失败!\r\n";
                }

                if (iAdded > 10)
                {
                    mes += "【" + iAdded + "】个号码已经存在,不再导入!\r\n";
                }
                else if (iAdded > 0 && iAdded <= 10)
                {
                    sbAdded.Remove(0, 1);
                    mes += "号码【" + sbAdded.ToString() + "】已经存在,不再导入!\r\n";
                }
                if(iBoxMaxNotAdded>5)
                {
                    mes += "设备中号码已经达到最大值,【" + iBoxMaxNotAdded + "】个号码,不再导入!";
                }
                else if (iBoxMaxNotAdded > 0 && iBoxMaxNotAdded <= 5)
                {
                    sbBoxMaxNotAdded.Remove(0, 1);
                    mes += "设备中号码已经达到最大值,号码【" + sbBoxMaxNotAdded + "】,不再导入!";
                }
                if (iRepeatIP>0)
                {
                    mes += "【" + iRepeatIP + "】个重复IP,不再导入!";
                }

                procDlg.Dispose();
                if (mes.Length > 0)
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show(mes, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                procDlg.Dispose();
                CommControl.MessageBoxEx.MessageBoxEx.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
           
            
           
         }
        private void AddMutiTel()
        {
            try
            {
                Bestway.Windows.Forms.ProgressBarDialog procDlg = new Bestway.Windows.Forms.ProgressBarDialog();
                               
                DB_Talk.Model.m_Member model = _mModel;
                int sucADD = 0;
                int errorAdd = 0;
                DateTime dtStart = System.DateTime.Now;
                for (int i = 0; i <= addCount; i++)
                {
                    model.vc_Name = _mModel.i_Number.ToString();

                    procDlg.Show(Bestway.Windows.Forms.EnumDisplayType.LoadData, "      正在添加用户【" + model.vc_Name + "】,请稍等...");


                    if (_mModel.i_TellType.Value == PublicEnums.EnumTelType.广播.GetHashCode() &&
                       _BLL.GetModelList(string.Format(" i_flag=0 and  vc_IP='{0}' and BoxID='{1}'", _mModel.vc_IP, _mModel.BoxID)).Count > 0)
                    {
                        CommControl.Tools.WriteLog.AppendLog("添加号码"+_mModel.i_Number+"失败,数据库已经存在IP:" + _mModel.vc_IP );
                        errorAdd++;
                    }
                    else

                    //bool IsExist = MBoxSDK.ConfigSDK.MBOX_IsSubscriberExist(Global.Params.BoxHandle, Convert.ToInt32(_mModel.i_Number.ToString()));
                    //if (!IsExist)
                    {
                        if (AddBase(model))
                        {
                           
                            //System.Threading.Thread.Sleep(500);
                            if (_BLL.Add(_mModel) == 1)
                            {
                                UpdateAssociateNum(_mModel);
                                CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "添加", "添加了人员:" + _mModel.vc_Name, "");
                                sucADD++;
                            }
                            else
                            {
                                CommControl.Tools.WriteLog.AppendLog("数据库中添加人员:" + _mModel.vc_Name + "失败");
                                CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "添加失败", "数据库添加人员:" + _mModel.vc_Name + "失败", "");
                                errorAdd++;
                            }
                        }
                        else
                        {
                            CommControl.Tools.WriteLog.AppendLog("box中添加人员:" + _mModel.vc_Name + "失败");
                            CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "添加失败", "box添加人员:" + _mModel.vc_Name + "失败", "");
                            errorAdd++;
                        }
                    }
                    //else
                    //{
                    //    CommControl.Tools.WriteLog.AppendLog("box中已经存在,添加人员:" + _mModel.vc_Name + "失败");
                    //    CommControl.SystemLogBLL.WriteLog(Global.Params.UserID, Global.Params.BoxID, CommControl.SystemLogBLL.EnumLogAction.Add, "添加失败", "box中已经存在,添加人员:" + _mModel.vc_Name + "失败", "");
                    //    errorAdd++;
                    //}
                    model.i_Number = model.i_Number + 1;
                    if (txtIP1.Enabled && !string.IsNullOrEmpty(model.vc_IP))
                    {
                        string[] IP = model.vc_IP.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
                        model.vc_IP = string.Format("{0}.{1}.{2}.{3}",IP[0],IP[1],IP[2] ,(int.Parse(IP[3]) + 1));
                    }
                    
                    if (model.i_TellType != CommControl.PublicEnums.EnumTelType.G3G手机.GetHashCode())
                    {
                        if (_mModel.i_NuPasswordType == PublicEnums.EnumTelPasswordType.增加.GetHashCode())
                        {
                            _mModel.i_NuPassword = (UInt64)model.i_Number;
                        }
                    }

                    if (model.vc_UmtsImsi!="")
                          model.vc_UmtsImsi = (Convert.ToUInt64(model.vc_UmtsImsi) + 1).ToString();
                }
                procDlg.Dispose();
                string mes = "";
                if (sucADD > 0) mes = sucADD + "个用户添加成功 \r\n";
                if (errorAdd > 0) mes += errorAdd + "个用户添加失败";
              
                if (mes!="")
                {
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                    MBoxSDK.ConfigSDK.MBOX_SaveHaveDoneCfg(Global.Params.BoxHandle);

                    DateTime dtEnd = System.DateTime.Now;
                    TimeSpan sp = dtEnd - dtStart;
                    CommControl.Tools.WriteLog.AppendLog("添加" + (addCount+1).ToString() + "个用户,时间:" + sp.TotalMilliseconds + "ms");

                    CommControl.MessageBoxEx.MessageBoxEx.Show(mes, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    CommControl.MessageBoxEx.MessageBoxEx.Show("批量添加不成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }

            }
            catch
            {
                CommControl.MessageBoxEx.MessageBoxEx.Show("批量添加失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }