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 FarsiMsgBox;
using System.Data.SqlClient;

namespace ajans
{
    public partial class form_setting : Form
    {

        int valid = 0;

        DataView objdv;
        public form_setting()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Opacity = 1;
            for (int i = 100; i > 1; i--)
            {
                this.Opacity -= 0.01;
                Application.DoEvents();
            }
            this.Close();
        }

        private void form_setting_FormClosed(object sender, FormClosedEventArgs e)
        {
            static_variables.form_setting_show = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            login Login = new login();
            objdv = new DataView(Login.SelectAccount(txtolduser.Text, txtoldpass.Text).Tables["login"]);
            lbluser.DataBindings.Clear();
            lbluser.Text = "";
            lbluser.DataBindings.Add("text", objdv, "user_name");
            lblpass.DataBindings.Clear();
            lblpass.Text = "";
            lblpass.DataBindings.Add("text", objdv, "password");
            if (lbluser.Text != txtolduser.Text || lblpass.Text != txtoldpass.Text)
            {
                FarsiMessage.ShowMessageBox("نام کاربری یا رمز عبور اشتباه می باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                valid = 0;
            }
            else
            {
                FarsiMessage.ShowMessageBox("اعتبار سنجی با موفقیت انجام گرفت.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                valid = 1;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (valid == 0)
                FarsiMessage.ShowMessageBox("ابتدا باید عملیات اعتبار سنجی صورت گیرد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
            else
            {
                if (txtnewpass.Text == txtnewpass2.Text)
                {
                    login Login = new login();
                    Login.UpdateLoginUserPass(txtnewuser.Text, txtnewpass.Text);
                    FarsiMessage.ShowMessageBox("تغییر پسوورد با موفقیت انجام گرفت.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                }
                else
                {
                    FarsiMessage.ShowMessageBox("رمز عبور جدید باید مشابه تکرار آن باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                }
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            login Login = new login();
            objdv = new DataView(Login.SelectPassword().Tables["password"]);
            lblpass2.DataBindings.Clear();
            lblpass2.Text = "";
            lblpass2.DataBindings.Add("text", objdv, "password");
            if (lblpass2.Text != txtoldpass2.Text)
                FarsiMessage.ShowMessageBox("رمز قدیم اشتباه است.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
            else
            {
                if (txtnewpass3.Text == txtnewpass4.Text)
                {
                    Login.UpdateLoginUserPass(txtnewpass3.Text);
                    FarsiMessage.ShowMessageBox("تغییر پسوورد با موفقیت انجام گرفت.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                }
                else
                {
                    FarsiMessage.ShowMessageBox("رمز جدید باید مشابه تکرار آن باشد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                }

            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string command = @"BACKUP DATABASE [" + Application.StartupPath + "\\ajans.mdf] TO DISK = N'" + saveFileDialog1.FileName + "'  WITH FORMAT, INIT,  NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
                this.Cursor = Cursors.WaitCursor;
                SqlConnection objconnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ajans.mdf;Integrated Security=True;User Instance=True");
                SqlCommand oCommand = null;
                if (objconnection.State != ConnectionState.Open)
                    objconnection.Open();
                oCommand = new SqlCommand(command, objconnection);
                oCommand.ExecuteNonQuery();
                this.Cursor = Cursors.Default;
                objconnection.Close();
                FarsiMessage.ShowMessageBox("فایل پشتیبان ذخیره شد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                oCommand.Dispose();
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            try
            {
                FarsiMessage.ShowMessageBox("دقت کنید که با این کار اطلاعات نسخه پشتیبان جایگزین اطلاعات فعلی میشود. آیا ادامه میدهید؟", "هشدار", ShowButton.بله_خیر, MsgIcon.Warning);
                if (FarsiMessage.ClickButton == ButtonClicked.بله)
                {
                    SqlConnection objconnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ajans.mdf;Integrated Security=True;User Instance=True");
                    objconnection.Open();
                    if (openFileDialog1.ShowDialog() == DialogResult.OK)
                        if (openFileDialog1.FileName.EndsWith(".bak") == true)
                        {
                            string s1 = "ALTER DATABASE [" + Application.StartupPath + "\\ajans.mdf] SET OFFLINE WITH ROLLBACK IMMEDIATE";
                            string s2 = "ALTER DATABASE [" + Application.StartupPath + "\\ajans.mdf] SET MULTI_USER";
                            string query = "RESTORE DATABASE [" + Application.StartupPath + "\\ajans.mdf] FROM DISK ='" + openFileDialog1.FileName + "' WITH RECOVERY,REPLACE";
                            SqlCommand cmd = new SqlCommand();
                            cmd.CommandText = s1;
                            cmd.Connection = objconnection;
                            cmd.ExecuteNonQuery();

                            cmd.CommandText = s2;
                            cmd.Connection = objconnection;
                            cmd.ExecuteNonQuery();

                            cmd.CommandText = query;
                            cmd.Connection = objconnection;
                            cmd.ExecuteNonQuery();

                            cmd.Dispose();
                            //Application.Restart();
                            FarsiMessage.ShowMessageBox("بانک اطلاعاتی با موفقیت بازگردانی شد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                        }
                        else
                            FarsiMessage.ShowMessageBox("لطفا فایل با پسوند bak را انتخاب نمایید.", "خطا", ShowButton.تائید_تنها, MsgIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                FarsiMessage.ShowMessageBox("بانک اطلاعاتی با موفقیت بازگردانی شد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
                return;
            }
        }

        private void button8_Click(object sender, EventArgs e)
        {
            FarsiMessage.ShowMessageBox("با انجام این عمل تمامی اطلاعات حذف میشود. قبل از انجام این کار حتما یک نسخه پشتیبان از بانک تهیه نمایید. برای حذف کلی اطلاعات اطمینان دارید؟", "هشدار", ShowButton.بله_خیر, MsgIcon.Warning);
            if (FarsiMessage.ClickButton == ButtonClicked.بله)
            {
                report Report = new report();
                Report.DeleteAllInformation();
                FarsiMessage.ShowMessageBox("تمام اطلاعات پاک شد.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
            }
            service Service = new service();
            Service.InserCoffer();
            login Login = new login();
            Login.InsertLogin();
            Login.InsertPassword();
        }

        private void form_setting_Load(object sender, EventArgs e)
        {
            txtajnname.Focus();
        }

        private void txtolduser_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13) button1_Click(null, null);
        }

        private void txtoldpass_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13) button1_Click(null, null);
        }

        private void txtnewuser_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13) button2_Click(null, null);
        }

        private void txtoldpass2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13) button5_Click(null, null);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            login Login = new login();
            Login.InsertAjansSetting(txtajnname.Text, txtajnMname.Text, txtajnAddress.Text, txtajntel1.Text, txtajntel2.Text, txtajntel3.Text);
            FarsiMessage.ShowMessageBox("تغییر مشخصات با موفقیت انجام گرفت.", "پیغام", ShowButton.تائید_تنها, MsgIcon.Information_1);
        }
    }
}
