using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Formats.Asn1;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//using CsvReadWrite;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Drawing.Imaging;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using PackingControlSystem.lib;

namespace PackingControlSystem
{
    public partial class frmNG : Form
    {
        private List<List<string>> Settings = new List<List<string>>();
        DataTable dtUserSelect = new DataTable();
        bool isClose = false;

        public frmNG(string warning)
        {
            InitializeComponent();
            lblWarning.Text = warning;
            //PC Kanban นี้เคยสแกนแล้วในวันนี้
            //Kanban ไม่ตรงกับ Model ที่กำลังแพ็ค
            //QR Code ชิ้นงานนี้เคยสแกนแล้ว
            //ชิ้นงานหมดอายุการใช้งานแล้ว
        }

        public string RtnDbCon()
        {
            return "Data Source=" + this.Settings[0][0] + ";Initial Catalog=" + this.Settings[0][1] + ";User Id=sa;Password=" + this.Settings[0][2] + ";";

        }

        private void frmNG_Load(object sender, EventArgs e)
        {
            lblPermission.Text = "ADMINISTRATOR";
            lblPermission2.Text = "LEADER";
            List<string> tmp = null;
            Settings = new List<List<string>>();
            tmp = null;
            using (var csv = new CsvReader(System.IO.Directory.GetCurrentDirectory() + "\\Settings.csv"))
            {
                while ((tmp = csv.ReadRow()) != null)
                {
                    Settings.Add(tmp);

                }

            }//using end

            SettxtStart();


        }

        private void SettxtStart()
        {
            isClose = false;
            txtUserID.Text = string.Empty;
            txtPassword.Text = string.Empty;
            txtUserID.Focus();
        }

        private void btnUnlock_Click(object sender, EventArgs e)
        {
            dtUserSelect = new DataTable();
            string strPassword = string.Empty;
            string strPermission = string.Empty;

            if (txtUserID.Text.Trim() == string.Empty || txtPassword.Text.Trim() == string.Empty)
            {
                MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                       "ERROR", MessageBoxButtons.OK,
                                       MessageBoxIcon.Error,
                                       MessageBoxDefaultButton.Button1, 0);

                SettxtStart();

                return;
            }

            clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUserID.Text.Trim());
            if (dtUserSelect is not null)
            {
                if (dtUserSelect.Rows.Count > 0)
                {
                    strPassword = dtUserSelect.Rows[0][3].ToString();
                    strPermission = dtUserSelect.Rows[0][4].ToString();
                    if ((strPassword != null) && (strPassword == txtPassword.Text)
                        && ((strPermission == "LEADER")
                        || (strPermission == "ADMINISTRATOR")))
                    {
                        isClose = true;
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                        SettxtStart();
                    }
                }
                else
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                       "ERROR", MessageBoxButtons.OK,
                                       MessageBoxIcon.Error,
                                       MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();
                }
            }
            else
            {
                MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                       "ERROR", MessageBoxButtons.OK,
                                       MessageBoxIcon.Error,
                                       MessageBoxDefaultButton.Button1, 0);

                SettxtStart();
            }

        }

        private void txtPassword_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtPassword_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == System.Windows.Forms.Keys.Return)
            {
                dtUserSelect = new DataTable();
                string strPassword = string.Empty;
                string strPermission = string.Empty;

                if (txtUserID.Text.Trim() == string.Empty || txtPassword.Text.Trim() == string.Empty)
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();

                    return;
                }

                clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUserID.Text.Trim());
                if (dtUserSelect is not null)
                {
                    if (dtUserSelect.Rows.Count > 0)
                    {
                        strPassword = dtUserSelect.Rows[0][3].ToString();
                        strPermission = dtUserSelect.Rows[0][4].ToString();
                        if ((strPassword != null) && (strPassword == txtPassword.Text)
                            && ((strPermission == "LEADER")
                            || (strPermission == "ADMINISTRATOR")))
                        {
                            isClose = true;
                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                               "ERROR", MessageBoxButtons.OK,
                                               MessageBoxIcon.Error,
                                               MessageBoxDefaultButton.Button1, 0);

                            SettxtStart();
                        }
                    }
                    else
                    {
                        MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                        SettxtStart();
                    }
                }
                else
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();
                }
            }
        }

        private void txtUserID_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtUserID_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == System.Windows.Forms.Keys.Return)
            {
                dtUserSelect = new DataTable();
                string strPassword = string.Empty;
                string strPermission = string.Empty;


                if (txtUserID.Text.Trim() == string.Empty)
                {
                    MessageBox.Show(this, "กรุณาใส่ชื่อเข้าระบบ",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();

                    return;
                }

                List<string> tmp;
                tmp = new List<string>();
                tmp = txtUserID.Text.Split("%").ToList();

                if (tmp.Count == 2)
                {
                    txtUserID.Text = tmp[0];
                    txtPassword.Text = tmp[1];
                }
                else if (tmp.Count == 1)
                {
                    txtPassword.Focus();
                    return;
                }
                else
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                               "ERROR", MessageBoxButtons.OK,
                                               MessageBoxIcon.Error,
                                               MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();
                    return;
                }

                if (txtPassword.Text.Trim() == string.Empty)
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();

                    return;
                }


                //if (txtUserID.Text.Trim() == string.Empty || txtPassword.Text.Trim() == string.Empty)
                //{
                //    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                //                           "ERROR", MessageBoxButtons.OK,
                //                           MessageBoxIcon.Error,
                //                           MessageBoxDefaultButton.Button1, 0);

                //    SettxtStart();

                //    return;
                //}

                clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUserID.Text.Trim());
                if (dtUserSelect is not null)
                {
                    if (dtUserSelect.Rows.Count > 0)
                    {
                        strPassword = dtUserSelect.Rows[0][3].ToString();
                        strPermission = dtUserSelect.Rows[0][4].ToString();
                        if ((strPassword != null) && (strPassword == txtPassword.Text)
                            && ((strPermission == "LEADER")
                            || (strPermission == "ADMINISTRATOR")))
                        {
                            isClose = true;
                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                               "ERROR", MessageBoxButtons.OK,
                                               MessageBoxIcon.Error,
                                               MessageBoxDefaultButton.Button1, 0);

                            SettxtStart();
                        }
                    }
                    else
                    {
                        MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                        SettxtStart();
                    }
                }
                else
                {
                    MessageBox.Show(this, "ปลดล็อคไม่ถูกต้อง กรุณาปลดล็อคอีกครั้ง",
                                           "ERROR", MessageBoxButtons.OK,
                                           MessageBoxIcon.Error,
                                           MessageBoxDefaultButton.Button1, 0);

                    SettxtStart();
                }
            }
        }

        private void frmNG_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (isClose == false)
            {
                e.Cancel = true;
            }
        }
    }
}
