using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using PackingControlSystem.lib;

namespace PackingControlSystem
{
    public partial class frmLogin : Form
    {
        private List<List<string>> Settings = new List<List<string>>();
        DataTable dtUserSelect = new DataTable();
        string strUserID = string.Empty;
        string strPassword = string.Empty;
        string strPermission = string.Empty;

        public frmLogin()
        {
            InitializeComponent();
        }

        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 frmLogin_Load(object sender, EventArgs e)
        {
            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()
        {
            txtUsername.Text = string.Empty;
            txtPassword.Text = string.Empty;
            txtUsername.Focus();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            dtUserSelect = new DataTable();
            strUserID = string.Empty;
            strPassword = string.Empty;
            strPermission = string.Empty;
            if (txtUsername.Text.Trim() == string.Empty)
            {
                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;
            }
            clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUsername.Text.Trim());
            if (dtUserSelect is not null)
            {
                if (dtUserSelect.Rows.Count > 0)
                {
                    strUserID = dtUserSelect.Rows[0][1].ToString();
                    strPassword = dtUserSelect.Rows[0][3].ToString();
                    strPermission = dtUserSelect.Rows[0][4].ToString();
                    if ((strPassword != null) && (strPassword == txtPassword.Text))
                    {
                        frmMain frm = new frmMain(strUserID, strPermission);
                        frm.Show();
                        this.Hide();

                    }
                    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 btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        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();
                strUserID = string.Empty;
                strPassword = string.Empty;
                strPermission = string.Empty;
                if (txtUsername.Text.Trim() == string.Empty)
                {
                    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;
                }
                clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUsername.Text.Trim());
                if (dtUserSelect is not null)
                {
                    if (dtUserSelect.Rows.Count > 0)
                    {
                        strUserID = dtUserSelect.Rows[0][1].ToString();
                        strPassword = dtUserSelect.Rows[0][3].ToString();
                        strPermission = dtUserSelect.Rows[0][4].ToString();
                        if ((strPassword != null) && (strPassword == txtPassword.Text))
                        {
                            frmMain frm = new frmMain(strUserID, strPermission);
                            frm.Show();
                            this.Hide();

                        }
                        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 txtUsername_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtUsername_KeyDown(object sender, KeyEventArgs e)
        {

        }

        private void txtUsername_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == System.Windows.Forms.Keys.Return)
            {
                dtUserSelect = new DataTable();
                strUserID = string.Empty;
                strPassword = string.Empty;
                strPermission = string.Empty;
                if (txtUsername.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 = txtUsername.Text.Split("%").ToList();

                if (tmp.Count == 2)
                {
                    txtUsername.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;
                }
                clsUtil_MSSQL.GetDataFromTBUserSelect(RtnDbCon(), "TM_USER", ref dtUserSelect, txtUsername.Text.Trim());
                if (dtUserSelect is not null)
                {
                    if (dtUserSelect.Rows.Count > 0)
                    {
                        strUserID = dtUserSelect.Rows[0][1].ToString();
                        strPassword = dtUserSelect.Rows[0][3].ToString();
                        strPermission = dtUserSelect.Rows[0][4].ToString();
                        if ((strPassword != null) && (strPassword == txtPassword.Text))
                        {
                            frmMain frm = new frmMain(strUserID, strPermission);
                            frm.Show();
                            this.Hide();

                        }
                        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();
                }
            }
        }
    }
}
