using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

using System.IO;
using System.Data;//DataTable

using System.Diagnostics;//Process.Start(name);
using System.Collections;// ArrayList newdepartlist = new ArrayList();




namespace Forms
{
    class untCommon
    {

        //公钥
        //private static String  strrasout=(@"<RSAKeyValue><Modulus>y7JYCGvkantaS6SKemw6M/JiWImJDax7eTaXfhrpoattCFo+d24BWiMF2YyKk9qkclJUtaTN5CqSdfUjCn77kdZD9pW5Q2lLRxc5l3bYVCV08Wx8joZoj1R5rTkFHAAKcFl1Ni+ls6L2SlYYZqZNwyi/a5Q+kIjuvh/E6xZJvOs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>");


        /// <summary>
        /// 消息对话框
        /// </summary>
        /// <param name="txt">文本</param>
        /// <param name="title">标题</param>
        public static void InfoMsg(string txt)
        {
            
            MessageBox.Show(txt, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        /// <summary>
        /// 错误对话框
        /// </summary>
        /// <param name="txt">文本</param>
        /// <param name="title">标题</param>
        public static void ErrorMsg(string txt)
        {

            MessageBox.Show(txt," 错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
        }
        /// <summary>
        /// 问题对话框
        /// </summary>
        /// <param name="txt">文本</param>
        /// <param name="title">标题</param>
        public static bool QuestionMsg(string txt)
        {

            if (MessageBox.Show(txt, "确认请求", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                return true;
            }
            else
            {
                return false;
            }

        }


        /// <summary>
        /// 将DataTable中的数据导出到excel中 ,"true"
        /// </summary>
        /// <param name=" filename"> 要保存的文件名</param>
        /// <param name="dat">要保存的表名，DataTable dat = DataView1.DataSource as DataTable;可用传</param>

        public static void ToExel(string filename, DataTable dat)
        {
            try
            {
                if (dat.Rows.Count == 0)
                {
                    untCommon.InfoMsg("表格中没有数据，不能导出空表");
                    return;
                }

                //建立Excel对象
                // Excel.Application excel = new Excel.Application();

                //excel.Application.Workbooks.Add(true);
                //  excel.Visible = true;
                //生成字段名称
                System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
                saveFileDialog1.FileName = filename;
                saveFileDialog1.DefaultExt = ".XLS";
                saveFileDialog1.Filter = "execl文件|*.XLS|*|*.*";
                DialogResult re = saveFileDialog1.ShowDialog();
                string name = saveFileDialog1.FileName;
                saveFileDialog1.Dispose();
                if (re == DialogResult.OK)
                {
                    // MessageBox.Show(name);//显示保存的路径

                    //DataTable dat = eq.DataSource as DataTable;

                    //所有的记录     DataTable dat = EpMgr.getEqList(0, pageCount);
                    NPOIHelper.ExportDataTableToExcel(dat, name, "Sheet1");

                    // 读取导出execl文件设定
                    //Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();

                    // 为真时打开文件
                   // if (bll.getexeclopen().MA011)
                   // {
                        Process.Start(name);//打开文件
                    //}



                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                //throw;
            }




        }


        ///// <summary>
        ///// 将DataTable中的数据导出到excel中 ,string isnull="true"时导出空表
        ///// </summary>
        ///// <param name=" filename"> 要保存的文件名</param>
        ///// <param name="dat">要保存的表名，DataTable dat = DataView1.DataSource as DataTable;可用传</param>

        //public static void ToExel(string filename, DataTable dat,string isnull)
        //{
        //    try
        //    {
        //        if (dat.Rows.Count == 0 && isnull!="true")
        //        {
        //            untCommon.InfoMsg("表格中没有数据，不能导出空表");
        //            return;
        //        }

        //        //建立Excel对象
        //        // Excel.Application excel = new Excel.Application();

        //        //excel.Application.Workbooks.Add(true);
        //        //  excel.Visible = true;
        //        //生成字段名称
        //        System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
        //        saveFileDialog1.FileName = filename;
        //        saveFileDialog1.DefaultExt = ".XLS";
        //        saveFileDialog1.Filter = "execl文件|*.XLS|*|*.*";
        //        DialogResult re = saveFileDialog1.ShowDialog();
        //        string name = saveFileDialog1.FileName;
        //        saveFileDialog1.Dispose();
        //        if (re == DialogResult.OK)
        //        {
        //            // MessageBox.Show(name);//显示保存的路径

        //            //DataTable dat = eq.DataSource as DataTable;

        //            //所有的记录     DataTable dat = EpMgr.getEqList(0, pageCount);
        //            NPOIHelper.ExportDataTableToExcel(dat, name, "Sheet1");
        //            // 读取导出execl文件设定
        //            Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();

        //            // 为真时打开文件
        //            if (bll.getexeclopen().MA011)
        //            {
        //                Process.Start(name);//打开文件
        //            }
        //        }

        //    }
        //    catch (Exception ex)
        //    {
        //        MessageBox.Show(ex.Message);
        //        //throw;
        //    }




        //}

        /// <summary>
        /// 将excel中的数据导入到DataTable中 
        /// </summary>
        /// <param name=" filename"> 要导入的文件名</param>
        /// <param name="dat">要保存的表名，DataTable dat = DataView1.DataSource as DataTable;可用</param>

        public static DataTable formExel(string filename)
        {
            DataTable ret = new DataTable();
            try
            {
               
               
                System.Windows.Forms.OpenFileDialog OpenFileDialog1 = new System.Windows.Forms.OpenFileDialog();
                OpenFileDialog1.FileName = filename;
                OpenFileDialog1.DefaultExt = ".XLS";
                OpenFileDialog1.Filter = "execl文件|*.XLS|*|*.*";
                DialogResult re = OpenFileDialog1.ShowDialog();

                string name = OpenFileDialog1.FileName;
                OpenFileDialog1.Dispose();
                if (re == DialogResult.OK)
                {
                     //MessageBox.Show(name);//显示保存的路径

                    //DataTable dat = eq.DataSource as DataTable;

                    //所有的记录     DataTable dat = EpMgr.getEqList(0, pageCount);
                   // NPOIHelper.ExportDataTableToExcel(dat, name, "Sheet1");
                   ret  = NPOIHelper.ImportDataTableFromExcel(name, 0, 0);

                    //Process.Start(name);//打开文件
                  
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                //throw;
            }
            return ret;



        }

       // /// <summary>
       // /// 通用的多级部门构造树包括根目录
       // /// </summary>  
       // /// 
       // //TreeNode RootNode = null;
       //// ArrayList newdepartlist = new ArrayList();

       // public static void BuidTree(TreeView Roottree,bool expanall)
       // {
       //     TreeNode RootNode = null;
       //    // tvwDepart.Nodes.Clear();
       //     Maticsoft.BLL.CompanyInfo bll = new Maticsoft.BLL.CompanyInfo();
            
       //     //DataTable dt = ConpanyInfoMgr.GetInfo();
       //     DataTable dt = bll.GetAllList().Tables[0];
       //     if (dt != null)
       //     {
       //         Roottree.Nodes.Clear();
                
       //         RootNode = new TreeNode();
       //         RootNode.Text = dt.Rows[0][1].ToString();//跟节点的文本为本单位的名称
       //        // RootNode.Name = dt.Rows[0][1].ToString();//跟节点的文本为本单位的名称
       //         RootNode.Tag ="";
       //         RootNode.ImageIndex = 0;
       //         RootNode.SelectedImageIndex = 0;
       //         Roottree.Nodes.Add(RootNode);

       //         BuildNodesDepart(null,RootNode,1);//加载部门节点
       //         if (expanall)
       //         {
       //             Roottree.ExpandAll();
       //         }
                

       //     }

       // }


       // /// <summary>
       // /// 构造本单位树的部门节点,不包括根目录
       // /// </summary>
       // /// <param name="dt">数据表,不为空时为递归</param>
       // /// <param name="parent">上级节点</param>
       // /// <param name="ImageIndex">图像索引,为零</param>
       // public static void BuildNodesDepart(DataTable dt, TreeNode parent, int ImageIndex)
       // {
       //    if (dt==null)
       //    {
       //        Maticsoft.BLL.Department bll = new Maticsoft.BLL.Department();

       //        dt = bll.GetAllList().Tables[0];
       //    }
           
       //     string chars = "";
       //     string upchars = "";

       //     if (dt != null)
       //     {
       //         //部门编码规则MA011为假时上级部门编号存贮在ROOTNAME字段
       //         bool Departsave = bool.Parse(getdepart()[0].ToString());

       //         //上级部门等于本部门后面少N位
       //         int intdepart = int.Parse(getdepart()[1].ToString());

       //         for (int i = 0; i < dt.Rows.Count; i++)
       //         {                    
       //             chars = dt.Rows[i]["id"].ToString();

       //             //untCommon.InfoMsg("1");

       //             if (!Departsave)
       //             {
       //                 upchars = dt.Rows[i]["rootname"].ToString();
       //                 //untCommon.InfoMsg(upchars + "2");

       //                 if (upchars == parent.Tag.ToString())
       //                 {
       //                     //untCommon.InfoMsg(upchars + "3");
       //                     TreeNode depart = new TreeNode();
       //                     depart.Text = dt.Rows[i]["departname"].ToString();
       //                     depart.Name = dt.Rows[i]["rootname"].ToString();
       //                     depart.ToolTipText = "部门";//标识类型
       //                     depart.Tag = dt.Rows[i]["id"].ToString(); ;
       //                     depart.ImageIndex = ImageIndex;
       //                     depart.SelectedImageIndex = ImageIndex;
       //                     parent.Nodes.Add(depart);
       //                     BuildNodesDepart(dt, depart, ImageIndex);
       //                 }

       //             }


       //             else if (chars.Substring(0, chars.Length - intdepart) == parent.Tag.ToString())
       //             {
       //                 TreeNode depart = new TreeNode();
       //                 depart.Text = dt.Rows[i]["departname"].ToString();
       //                 depart.Name = dt.Rows[i]["rootname"].ToString();
       //                 depart.ToolTipText = "部门";//标识类型
       //                 depart.Tag = dt.Rows[i]["id"].ToString(); ;
       //                 depart.ImageIndex = ImageIndex;
       //                 depart.SelectedImageIndex = ImageIndex;
       //                 parent.Nodes.Add(depart);
       //                BuildNodesDepart(dt, depart, ImageIndex);
       //             }
       //         }

       //     }

       // }

       // /// <summary>
       // /// 构造本单位树的部门节点,不包括根目录
       // /// </summary>
       // /// <param name="dt">数据表,不为空时为递归</param>
       // /// <param name="parent">上级节点</param>
       // /// <param name="ImageIndex">图像索引,为零</param>
       // /// <param name="where">是否在下面加载员工</param>
       // public static void BuildNodesDepart(DataTable dt, TreeNode parent, int ImageIndex,bool where)
       // {
       //     if (dt == null)
       //     {
       //         Maticsoft.BLL.Department bll = new Maticsoft.BLL.Department();

       //         dt = bll.GetAllList().Tables[0];
       //     }

       //     string chars = "";
       //     string upchars = "";

       //     if (dt != null)
       //     {
       //         //部门编码规则MA011为假时上级部门编号存贮在ROOTNAME字段
       //         bool Departsave = bool.Parse(getdepart()[0].ToString());

       //         for (int i = 0; i < dt.Rows.Count; i++)
       //         {
       //             chars = dt.Rows[i]["id"].ToString();

       //             //untCommon.InfoMsg("1");
               
       //             if (!Departsave)
       //             {
       //                 upchars = dt.Rows[i]["rootname"].ToString();
       //                 //untCommon.InfoMsg(upchars+"2");

       //                 if (upchars == parent.Tag.ToString())
       //                 {
       //                     //untCommon.InfoMsg(upchars+"3");
       //                     TreeNode depart = new TreeNode();
       //                     depart.Text = dt.Rows[i]["departname"].ToString();
       //                     depart.Name = dt.Rows[i]["rootname"].ToString();
       //                     depart.ToolTipText = "部门";//标识类型
       //                     depart.Tag = dt.Rows[i]["id"].ToString(); ;
       //                     depart.ImageIndex = ImageIndex;
       //                     depart.SelectedImageIndex = ImageIndex;
       //                     parent.Nodes.Add(depart);
       //                     if (where)
       //                     {
       //                         InitEmp(depart.Tag.ToString(), depart);//加载树员工节点
       //                     }

       //                     BuildNodesDepart(dt, depart, ImageIndex, true);
       //                 }
                        
       //             }

                    
       //             else if (chars.Substring(0, chars.Length - 2) == parent.Tag.ToString())
       //             {
       //                 TreeNode depart = new TreeNode();
       //                 depart.Text = dt.Rows[i]["departname"].ToString();
       //                 depart.Name = dt.Rows[i]["rootname"].ToString();
       //                 depart.ToolTipText = "部门";//标识类型
       //                 depart.Tag = dt.Rows[i]["id"].ToString(); ;
       //                 depart.ImageIndex = ImageIndex;
       //                 depart.SelectedImageIndex = ImageIndex;
       //                 parent.Nodes.Add(depart);
       //                 if (where)
       //                 {
       //                     InitEmp(depart.Tag.ToString(), depart);//加载树员工节点
       //                 }

       //                 BuildNodesDepart(dt, depart, ImageIndex,true);
       //             }
                    

       //         }

       //     }

       // }

       // /// <summary>
       // /// 初始化员工节点
       // /// </summary>
       // /// <param name="departid">部门id</param>
       // /// <param name="parent">父节点</param>
       // public static void InitEmp(string departid, TreeNode parent)
       // {
       //     Maticsoft.BLL.Employee bll = new Maticsoft.BLL.Employee();

       //     //DataTable dt = EmployeeMgr.GetEmpByDepart(departid);
       //     DataTable dt = bll.GetList(string.Format("departId='{0}'", departid)).Tables[0];
       //     if (dt != null)
       //     {
       //         for (int i = 0; i < dt.Rows.Count; i++)
       //         {
       //             TreeNode emp = new TreeNode();
       //             emp.Text = dt.Rows[i][1].ToString();//5~1-a-s-p-x
       //             //emp.Name = "员工";//标识类型
       //             emp.ToolTipText = "员工";//标识类型
       //             emp.Tag = dt.Rows[i][0].ToString();
       //             emp.ImageIndex = 2;
       //             emp.SelectedImageIndex = 2;
       //             parent.Nodes.Add(emp);

       //         }
       //     }
       // }



       // /// <summary>
       // /// 测试注册码
       // /// </summary>
       // /// <param name="strrasout">公钥</param>
       // /// <param name="txtnum">机器码</param>
       // /// <param name="txtreg">注册码</param>
       // public static bool InitReg( string txtnum, string txtreg)
       // {
       //     //测试

       //     try
       //     {
       //         if (!(txtreg == ""))
       //         {


       //             //将机器码用公钥进行验证
       //             Maticsoft.Common.DEncrypt.RSACryption creasereg = new Maticsoft.Common.DEncrypt.RSACryption();
       //             // MessageBox.Show(txtreg.Text.Trim(), "提示");

       //             return (creasereg.SignatureDeformatter(strrasout, txtnum.Trim(), txtreg.Trim()));
                    


       //         }
       //         else
       //         {
       //            // ErrorMsg("注册码为空!,请先生成注册码!");
       //             return false;
       //         }

       //     }
       //     catch (System.Exception ex)
       //     {
       //         ErrorMsg(ex.Message);
       //         return false;
       //     }
            
       // }


        
       // /// <summary>
       // /// 写入注册码
       // /// </summary>
       // /// <param name="txtreg">注册码</param>
       // /// <param name="_user">操作用户</param>
       //  public static void writeReg(string txtreg,string _user)
       // {
       //    // Maticsoft.BLL.publics pub = new Maticsoft.BLL.publics();
       //     Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();
       //     if ( !bll.Updatereg(txtreg, _user))
       //     {
       //         ErrorMsg("保存注册码时失败");
       //     }
       //  }

       // /// <summary>
       // /// 检查已存在的注册码是否正确
       // /// </summary>
       //  public static bool checkReg()
       //      {

       //     Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();
                         
       //     string strnum = bll.getkeys();
       //     string strreg = bll.getreg();
       //     //检查存在的注册码
       //     if (InitReg( strnum, strreg))
       //     {
       //         //正确
       //         return true;
       //     }
       //     else
       //     {
       //         //错
       //         return false;

       //     }


       //      }
       // /// <summary>
       // /// 检查年度时间和电脑数量
       // /// </summary>
       // /// <returns></returns>
       //  public static int checkcount()
       //  {
       //      bool chkyear;
       //      bool big;
       //      //检查年度
       //      if (System.DateTime.Now.Year > 2013)
       //      {
       //          chkyear = true;
       //      }
       //      else
       //      {
       //          chkyear = false;
       //      }

       //      Maticsoft.BLL.Equipment bll = new Maticsoft.BLL.Equipment();
       //      int count = bll.GetRecordCount("");

       //      //InfoMsg(count.ToString());
       //      //超过100台设备
       //      if (count>100)
       //      {
       //          count = 200;
       //         big = true;
       //         // big =false;
       //      }
       //      //超过50台设备
       //      else if (count > 50)
               
       //      {
       //          count = 60;
       //          big = true;
       //          //big = false;
       //      }
       //      //不超过50台设备
       //      else
       //         { 
       //          count = 60;
       //          big = false;

       //         }

       //      if (chkyear || big)
       //      {
       //          return count;
       //      } 
       //      else
       //      {
       //          count = 0;
       //          return count;
       //      }

            
       //  }
       // /// <summary>
       //  /// 读取部门编码规则
       // /// </summary>
       // /// <returns></returns>
       //  public static ArrayList getdepart()
       //  {
       //      Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();

             
       //      Maticsoft.Model.CMSMA model1 = bll.getdepart();

       //      ArrayList List = new ArrayList();
            
       //      List.Add(model1.MA011);
       //      List.Add(model1.MA001);
             
            
       //     // string strdepart = model1.MA004;
       //     // bool booldepart = model1.MA011;
       //      return List;


       //  }

       //  /// <summary>
       //  /// 读取打印机判定
       //  /// </summary>
       //  /// <returns></returns>
       //  public static int getprintname()
       //  {
       //      Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();

       //      Maticsoft.Model.CMSMA model = bll.getprintname();

       //      Maticsoft.BLL.EqName bll1 = new Maticsoft.BLL.EqName();
       //      Maticsoft.Model.EqName model1 = bll1.GetModel(int.Parse(model.MA001.ToString()));
       //      //int intprintname = model.MA001;
       //     // Maticsoft.BLL.Department bll1 = new Maticsoft.BLL.Department();

       //      return model1.id;


       //  }
       // /// <summary>
       //  /// 读取报表路径
       // /// </summary>
       // /// <returns></returns>
       //  public static string getreportpath()
       //  {
       //      Maticsoft.BLL.CMSMA bll = new Maticsoft.BLL.CMSMA();

       //      // 读取报表路径
       //      Maticsoft.Model.CMSMA modelreportpath = bll.getreportpath();
       //      bool boolreportpath = modelreportpath.MA011;

       //      string reportpath;
             
       //      if (boolreportpath)
       //      {
                 
                
       //          reportpath = Maticsoft.Common.ConfigHelper.GetConfigString("reports");
       //          //为空时
       //          if (reportpath == "" || reportpath ==null)
       //          {
       //               return  System.AppDomain.CurrentDomain.BaseDirectory + "reports\\";

       //          }

       //          if (reportpath.Substring(reportpath.Length-1)!="\\")
       //          {
       //              reportpath += "\\";
       //          }
       //         // untCommon.InfoMsg(reportpath);
       //          return reportpath;
       //      }
       //      else
       //      {
                
                
       //          reportpath = modelreportpath.MA003;
       //          //为空时
       //          if (reportpath == "" || reportpath == null)
       //          {
       //              return System.AppDomain.CurrentDomain.BaseDirectory + "reports\\";

       //          }

       //          if (reportpath.Substring(reportpath.Length - 1) != "\\")
       //          {
       //              reportpath += "\\";
       //          }
       //         // untCommon.InfoMsg(modelreportpath.MA003);
       //          //untCommon.InfoMsg(reportpath);
       //          return reportpath;
                
       //      }

       //  }


    }
}
