using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace The_Contacts
{
    public partial class Newuser : Form
    {
        public Newuser()
        {
            InitializeComponent();
        }
        SqlConnection objSqlConnection;
        SqlCommand objSQLcommand;
        private void Newuser_Load(object sender, EventArgs e)
        {
            objSqlConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Pars Contacts\DataBase.mdf" + ";Integrated Security=True;Connect Timeout=30;User Instance=True");
            try
            {
                objSqlConnection.Open();
                objSQLcommand = new SqlCommand();
                objSQLcommand.Connection = objSqlConnection;
            }
            catch (Exception EX)
            {
                MessageBox.Show(EX.Message, "Error");
                this.Close();
            }
        }
        int Radif()
        {
            SqlDataAdapter DA = new SqlDataAdapter("select id From Users", objSqlConnection);
            DataTable DT = new DataTable();
            DA.Fill(DT);
            return DT.Rows.Count + 1;
        }
        public Boolean ISIN(string UserName)
        {
            objSQLcommand.CommandText = "select * from Users Where UserName=@";
            objSQLcommand.Parameters.AddWithValue("@", UserName);
            SqlDataReader DR = objSQLcommand.ExecuteReader();
            DR.Read();
            bool blnHasRows = DR.HasRows;
            if (DR.IsClosed == false) DR.Close();
            return blnHasRows;

        }
        private void commandLink1_Click(object sender, EventArgs e)
        {
            FarsiDate.FarsiDateTime FarsiDate = new global::FarsiDate.FarsiDateTime();
            SecurityCode Sec = new SecurityCode();
            Sec.ShowDialog();
            if (Sec.DialogResult == DialogResult.OK)
            {
                try
                {
                    objSQLcommand.Parameters.Clear();
                    if (textBox1.Text.Trim() == "") throw new Exception("نام شخصی معتبر نمی باشد");
                    if (textBox2.Text.Trim() == "") throw new Exception("نام کاربری معتبر نمی باشد");
                    if (ISIN(textBox2.Text)) throw new Exception("این نام کاربری قبلا به ثبت رسیده است لطفا نام دیگری را انتخاب کنید");
                    if (textBox3.Text.Trim() == "") throw new Exception("لطفا کلمه عبور خود را وارد کنید");
                    if (textBox4.Text != textBox3.Text) throw new Exception("کلمه عبور با تائید ان مطابقت ندارد");
                    if (comboBox1.SelectedIndex == -1) throw new Exception("لطفا یک سوال امنیتی را انتخاب کنید");
                    if (textBox5.Text.Trim() == "") throw new Exception("لطفا پاسخی برای سوال امنیتی بدهید");
                    objSQLcommand.CommandText = "insert into Users values(@3,@22,@1,@2,@7,@8)";
                    objSQLcommand.Parameters.AddWithValue("@3", Radif().ToString());
                    objSQLcommand.Parameters.AddWithValue("@22", textBox2.Text);
                    objSQLcommand.Parameters.AddWithValue("@1",Encrypt.EncryptStringAES(textBox3.Text,"X2"));
                    objSQLcommand.Parameters.AddWithValue("@2", textBox1.Text);
                    objSQLcommand.Parameters.AddWithValue("@7", comboBox1.SelectedItem.ToString());
                    objSQLcommand.Parameters.AddWithValue("@8",Encrypt.EncryptStringAES( textBox5.Text,"X2"));
                    objSQLcommand.ExecuteNonQuery();
                    MessageBox.Show("شما در تاریخ: "+FarsiDate.Today+" ثبت نام کردید\n با تشکر از انتخاب شما ","مخاطبین", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                    


                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                }
            }
            else
            {
                MessageBox.Show("کد امنیتی صحیح نیست یا مرحله امنیتی توسط کاربر لغو شده است.","Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void textBox4_TextChanged(object sender, EventArgs e)
        {
            if (textBox3.Text + textBox4.Text != "")
            {
                if (textBox4.Text == textBox3.Text)
                {
                    pictureBox1.Show();
                    pictureBox1.Image = Properties.Resources.ok;
                }
                else
                {
                    pictureBox1.Show();
                    pictureBox1.Image = Properties.Resources._109_AllAnnotations_Error_16x16_72;

                }

            }
            else
            {
                pictureBox1.Hide();
            }
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            foreach (Control C in this.Controls)
            {
                if (C is TextBox)
                {
                    C.Text = "";
                }
            }
        }
    }
}
