using nGantt.GanttChart;
using SunlightCentralizedControlManagement_SCCM_.View;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Xml.Linq;
namespace SunlightCentralizedControlManagement_SCCM_.WindowsView
{
    /// 
    /// Machine.xaml 的交互逻辑
    /// 
    public partial class User : Window
    {
        private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db";  //数据库路径
        private UserClass.SqliteHelper.SQLiteHelper SQLiteHelpers = null;  //定义数据库
        CheckBox[] checkBoxes = new CheckBox[99];
        string[] strings = new string[13] {"修改系统设置", "修改用户设置",
            "单机监控","单机控制","单机设置","新建排程","排程编辑","排程删除",        
            "历史曲线","工艺查看","工艺编辑","工艺删除","输送信息"};
        public User()
        {
            WindowStartupLocation = WindowStartupLocation.CenterScreen;
            InitializeComponent();
        }
        private  void user_Loaded(object sender, RoutedEventArgs e)//打开页面执行
        {
            for (int i = 0; i < strings.Length; i++)
            {
                checkBoxes[i] = new CheckBox();
                checkBoxes[i].Content = strings[i].ToString();
                checkBoxes[i].FontSize = 20;
                checkBoxes[i].Width = 200;
                checkBoxes[i].Height = 50;
                Capacity.Children.Add(checkBoxes[i]);
            }
            SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径
            SQLiteHelpers.Open();  //打开数据库
            DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView;
            SQLiteHelpers.Close();
        }       
        private void Tb_KeyFloating(object sender, TextCompositionEventArgs e)//输入事件
        {
            //Regex re = new Regex("[^0-9.-]+");
            Regex re = new Regex(@"^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$");// 非负浮点数
            e.Handled = !re.IsMatch(e.Text);
        }
        
        private void DataGridMac_MouseDoubleClick(object sender, MouseButtonEventArgs e)//数据表双击事件
        {
            string Capacity_;
            int rownum = DataGriduser.SelectedIndex;//获取鼠标选中行并定义变量
            if (rownum != -1)//判断鼠标定位是否有效
            {
                /*定位选中行及指定列单元格文本信息*/
                _Name.Text = (DataGriduser.Columns[0].GetCellContent(DataGriduser.Items[rownum]) as TextBlock).Text.Trim();//定位第列
                GROUP.Text = (DataGriduser.Columns[1].GetCellContent(DataGriduser.Items[rownum]) as TextBlock).Text.Trim();
                Capacity_ = (DataGriduser.Columns[2].GetCellContent(DataGriduser.Items[rownum]) as TextBlock).Text.Trim();
                Note.Text = (DataGriduser.Columns[3].GetCellContent(DataGriduser.Items[rownum]) as TextBlock).Text.Trim();
                for (int i = 0; i < Capacity_.Length; i++)
                {
                    if (Capacity_.Substring(i, 1) == "1")
                    {
                        checkBoxes[i].IsChecked = true;
                    }
                    else 
                    {
                        checkBoxes[i].IsChecked = false;
                    }
                }
            }
                Pasword.Text = null;  //清除密码框
        }
        private void Button_Preservation(object sender, RoutedEventArgs e)//保存按钮事件
        {
            Regex re_number = new Regex(@"^[0-9]+(.[0-9]{1,2})?$");//校验用正则表达式有1~2位小数的正实数
            Regex re_char = new Regex(@"^[A-Za-z0-9\s@()()/+!!_-]+$");//校验用正则表达式由数字,26个英文字母,空白字符和@()()/+!!_-组成的字符串         
            string name = _Name.Text;
            string password = Pasword.Text;
            string Group = GROUP.Text;
            string Cap = null;
            string note = Note.Text;
            for (int i = 0; i < strings.Length; i++)
            {
                if ((bool)checkBoxes[i].IsChecked)
                {
                    Cap = Cap + "1";
                }
                else { Cap = Cap + "0"; }
            }
            Dictionary USER_new = new Dictionary();//缓存函数
            USER_new.Add("Name", name);
            USER_new.Add("Password", password);
            USER_new.Add("Groups", Group);
            USER_new.Add("Capacity", Cap);
            USER_new.Add("Note", note);
            SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径
            SQLiteHelpers.Open();  //打开数据库
            SQLiteHelpers.Delete("USER", "Name='" + name + "'", null);
            SQLiteHelpers.InsertData("USER", USER_new);// 执行插入
            DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView;
            SQLiteHelpers.Close();
            _Name.Text = null;
        }
        private void Button_Delete(object sender, RoutedEventArgs e)//删除按钮事件
        {
            SQLiteHelpers = new UserClass.SqliteHelper.SQLiteHelper(DBAddress); //数据库连接路径
            SQLiteHelpers.Open();  //打开数据库
            SQLiteHelpers.Delete("USER", "Name='" + _Name.Text + "'", null);
            DataGriduser.ItemsSource = SQLiteHelpers.ExecuteDataSet("select * from USER order by Name desc", null).Tables[0].DefaultView;
            SQLiteHelpers.Close();
            _Name.Text = null;
        }
    }
}