using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace FileWatcher
{
    public partial class 测试记录解析 : Form
    {

        DataHelper dh = new DataHelper();

        ftpOperater ftp = new ftpOperater();

        public 测试记录解析()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000 * 10;
            OperateResult.AppendText("连接上服务器\n");
            //timer1.Start();
        }

        public void DoLog(string Message)
        {
            try
            {
                StreamWriter sw = File.AppendText(DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
                sw.WriteLine("\n【时间】" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + Message + "\n");
                sw.Close();
            }
            catch (Exception) { }
        }

        /// <summary>
        /// 私有变量
        /// </summary>
        private List<FileInfo> lst = new List<FileInfo>();
        /// <summary>
        /// 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)
        /// </summary>
        /// <param name="path">文件夹路径</param>
        /// <param name="extName">扩展名可以多个 例如 .mp3.wma.rm</param>
        /// <returns>List<FileInfo></returns>

        public static List<FileInfo> getFile(string path, string extName, List<FileInfo> lst)
        {
            try
            {
                string[] directories = Directory.GetDirectories(path);
                DirectoryInfo directoryInfo = new DirectoryInfo(path);
                FileInfo[] files = directoryInfo.GetFiles();
                if (files.Length != 0 || directories.Length != 0)
                {
                    FileInfo[] array = files;
                    foreach (FileInfo fileInfo in array)
                    {
                        if (extName.ToLower().IndexOf(fileInfo.Extension.ToLower()) >= 0)
                        {
                            lst.Add(fileInfo);
                        }
                    }
                    string[] array2 = directories;
                    foreach (string path2 in array2)
                    {
                        getFile(path2, extName, lst);
                    }
                }
                return lst;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        /// <summary>
        /// 私有方法,递归获取指定类型文件,包含子文件夹
        /// </summary>
        /// <param name="path"></param>
        /// <param name="extName"></param>
        private void getdir(string path, string extName)
        {
            try
            {
                string[] directories = Directory.GetDirectories(path);
                DirectoryInfo directoryInfo = new DirectoryInfo(path);
                FileInfo[] files = directoryInfo.GetFiles();
                if (files.Length != 0 || directories.Length != 0)
                {
                    string text = "";
                    string text2 = "";
                    FileInfo[] array = files;
                    foreach (FileInfo fileInfo in array)
                    {
                        text2 = fileInfo.FullName.Substring(0, fileInfo.FullName.LastIndexOf("\\"));
                        text = text2.Substring(text2.LastIndexOf("\\") + 1);
                        if (fileInfo.FullName.Contains("SN_"))
                        {
                            StreamReader streamReader = new StreamReader(fileInfo.FullName);
                            while (!streamReader.EndOfStream)
                            {
                                string text3 = streamReader.ReadLine();
                                string text4 = text3.Split(':')[0].Trim();
                                string text5 = text3.Split(':')[1].Trim();
                                dh.ExecuteSql("insert into windowsninfo(ws_id,ws_sncode,ws_type,ws_value,ws_indate)values(windowsninfo_seq.nextval,'" + text + "','" + text4 + "','" + text5 + "',sysdate)", "insert");
                            }
                            streamReader.Close();
                        }
                        try
                        {
                            string uploadFolder = "/" + DateTime.Now.ToString("yyyy-MM-dd") + "/" + text2.Substring(text2.LastIndexOf("\\") + 1) + "/";
                            ftp.UpLoadFile(text2, fileInfo.Name, uploadFolder, BackUpFolderPath.Text);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                    FileInfo[] array2 = files;
                    foreach (FileInfo fileInfo2 in array2)
                    {
                        try
                        {
                            if (!Directory.Exists(BackUpFolderPath.Text + "\\" + text + "\\"))
                            {
                                Directory.CreateDirectory(BackUpFolderPath.Text + "\\" + text + "\\");
                            }
                            File.Move(fileInfo2.FullName, BackUpFolderPath.Text + "\\" + text + "\\" + fileInfo2.Name);
                        }
                        catch (Exception ex2)
                        {
                            Console.WriteLine(ex2.Message);
                        }
                    }
                    try
                    {
                        Directory.Delete(text2);
                    }
                    catch (Exception)
                    {
                    }
                    string[] array3 = directories;
                    foreach (string path2 in array3)
                    {
                        getdir(path2, extName);
                    }
                }
            }
            catch (Exception ex4)
            {
                Console.WriteLine(ex4.Message);
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        private void ChooseFolder_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folder = new FolderBrowserDialog();
            folder.Description = "选择监控文件夹";
            DialogResult result = folder.ShowDialog();
            if (result == DialogResult.OK)
            {
                FolderPath.Text = folder.SelectedPath;
            }
        }

        private void ChooseBackUpFolder_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folder = new FolderBrowserDialog();
            folder.Description = "选择备份文件夹";
            DialogResult result = folder.ShowDialog();
            if (result == DialogResult.OK)
            {
                BackUpFolderPath.Text = folder.SelectedPath;
            }
        }

        private void Start_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
    }
}