using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Baza_Reklam
{
    public partial class Facturer : Form
    {
        private int reklamaId;
        private int customerId;

        public Facturer(int rekId)
        {
            InitializeComponent();
            this.reklamaId = rekId;

            kLIENCITableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            kONTATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            rEKLAMATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
        }

        /// <summary>
        /// Ładuje informacje z reklamy o fakturze - jeżeli była wcześniej wystawiona proforma
        /// lub inna faktura, to w tabeli REKLAMA sa zapamietane min. daty. Jeżeli faktura jest wystawiana
        /// po raz pierwszy to wpisuje daty systemowe.
        /// </summary>
        private void Facturer_Load(object sender, EventArgs e)
        {
            this.rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, reklamaId);

            if (rEKLAMABindingSource.Current != null)
            {
                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;

                int idAgencji = Utils.idAgencji(row["SYMBOL AKWIZYTORA"].ToString());
                
                this.kONTATableAdapter.FillByIdAgencji(this.sLOWNIKDataSet.KONTA, idAgencji);

                rEKLAMABindingSource.ResetBindings(false);

                customerId = Convert.ToInt32(row["customerId"]);

                kLIENCITableAdapter.FillByCustomerId(this.rEKLAMADataSet.KLIENCI, customerId);
               
                if (row["id_faktury"] != DBNull.Value)
                {
                    wystawFaktureButton.Enabled = false;
                    wystawProformeButton.Enabled = false;
                  //  usunButton.Enabled = true & User.getUser().St_kierownik;
 
                    nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());

                    string numer_fakt = Convert.ToString(row["FAKTURA NUMER"]);
                    string[] read = new string[3];
                    read = numer_fakt.Split("/".ToCharArray(), 3);
                    nUMERTextBox.Text = read[0];
                }
                else
                {
                    nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());
                    nUMERTextBox.Text = Utils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year).ToString();

                    if (row["FAKTURA DATA SPRZEDAŻY"] == DBNull.Value)
                    {
                        dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today;
                    }

                    if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value)
                    {
                        dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today;
                    }

                    if (row["Zaliczka_Data"] == DBNull.Value)
                    {
                        zaliczka_DataDateTimePicker.Value = DateTime.Today;
                    }

                    if (row["FAKTURA TERMIN ZAPŁATY"] == DBNull.Value)
                    {
                        tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7);
                    }                    

                    sPOSOB_ZAPLATYListBox.SelectedIndex = 1;

                    rEKLAMABindingSource.EndEdit();

                    wystawFaktureButton.Enabled = true;
                    wystawProformeButton.Enabled = true;
                   // usunButton.Enabled = false;
                    
                  //  iD_KONTAComboBox.SelectedIndex = 0;
                }
            }
        }

        /// <summary>
        /// Wyświetla szczegóły konta
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            if (kONTABindingSource.Current != null)
            {
                DataRowView row = (DataRowView)kONTABindingSource.Current;
                MessageBox.Show(row["konto"].ToString());
            }
        }

        private void wystawFaktureButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            bool ok = false;

           // if (tYPLabel1.Text == "BEZPŁATNA"

            if (zATWIERDZONO_DO_DRUKUCheckBox.CheckState != CheckState.Checked)
            {
                MessageBox.Show("Zamówienie nie jest zatwierdzone do druku.");
                this.Cursor = Cursors.Default;
                return;
            }

            if (Utils.istniejeFaktura(Convert.ToInt32(nUMERTextBox.Text),
                nUMER_ROZTextBox.Text, dATA_WYSTAWIENIADateTimePicker.Value.Year))
            {
                MessageBox.Show("Istnieje już faktura o numerze " + nUMERTextBox.Text + "/" + nUMER_ROZTextBox.Text + "/" + dATA_WYSTAWIENIADateTimePicker.Value.Year.ToString());
                this.Cursor = Cursors.Default;
                return;
            }
            
            if (iD_KONTAComboBox.SelectedValue == null)
            {
                MessageBox.Show("Wybierz konto");
                this.Cursor = Cursors.Default;
                return;
            }


            if ((nipKrajTextBox.Text.Length == 0) && ((int)iD_KONTAComboBox.SelectedValue != 1))
            {
                if (MessageBox.Show("Brak kodu kraju w EU. Czy na pewno chcesz wystawić fakturę?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
                    == DialogResult.No)
                {
                    this.Cursor = Cursors.Default;
                    return;
                }
            }

            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);

            SqlTransaction transaction;

            SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn);
            command.CommandType = CommandType.StoredProcedure;

            //dodawanie parametrow 
            command.Parameters.AddWithValue("@ReklamaID", this.reklamaId);
            command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text);
            command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text);

            switch (sPOSOB_ZAPLATYListBox.SelectedIndex)
            {
                case 1:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew");
                    break;
                case 2:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka");
                    break;
                case 3:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter");
                    break;
                default:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa");
                    break;
            }

            DataRowView row = (DataRowView)rEKLAMABindingSource.Current;

            command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked);
            command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value);
            command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value);
            command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value);
            command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue);
            command.Parameters.AddWithValue("@StawkaVat", row["VAT"]);

            if (zaliczka_BruttoTextBox.Text != "")
            {
                command.Parameters.AddWithValue("@Zaliczka_Brutto", row["Zaliczka_Brutto"]);
                command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value);
            }

            command.Parameters.AddWithValue("@wyroznienie", row["wyroznienie"]);

            //dodawanie parametrow do faktury w walucie
            SqlCommand command2 = new SqlCommand();
            command2.Connection = conn;
            command2.CommandType = CommandType.Text;
            command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from "
                + "reklama where reklamaId= " + this.reklamaId;

            conn.Open();

            SqlDataReader reader = command2.ExecuteReader();
            while (reader.Read())
            {
                command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0));
                command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1));
                command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2));
                command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3));
                command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4));
                command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5));
            }

            conn.Close();

            conn.Open();

            //wystawanie faktury
            transaction = conn.BeginTransaction();

            command.Transaction = transaction;

            try
            {
                command.ExecuteNonQuery();
                transaction.Commit();
                ok = true;
                MessageBox.Show("Fakture dodano!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.GetType() + ex.Message);

                try
                {
                    transaction.Rollback();
                }
                catch (Exception ex2)
                {
                    MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message);
                }
            }

            conn.Close();
                     

            //odswiezanie - musi być bo faktura jest dodawana przez procedure

            if (ok)
            {
                rEKLAMADataSet.REKLAMA.Clear();
                rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId);
                row = (DataRowView)rEKLAMABindingSource.Current;

                this.rEKLAMADataSet.FAKTURY.Clear();
                int idFaktury = Convert.ToInt32(row["id_faktury"]);
                this.fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);

                //wydruk faktury
                FactureViewer fv = new FactureViewer(idFaktury, true);
                fv.ShowDialog();
    
                this.Cursor = Cursors.Default;

                wystawFaktureButton.Enabled = false;
                wystawProformeButton.Enabled = false;
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                this.Cursor = Cursors.Default;
            }
        }


        /// <summary>
        ///  Wystawienie proformy polega na wystawieniu faktury i poźniejszym usunięciu jej z bazy...
        /// </summary>
        private void wystawProformeButton_Click(object sender, EventArgs e)
        {
            bool ok = false;

            if (iD_KONTAComboBox.SelectedValue == null)
            {
                MessageBox.Show("Wybierz konto");
                return;
            }

            SqlConnection conn = new SqlConnection(
                        ConnString.getConnString().Value);

            SqlTransaction transaction;

            SqlCommand command = new SqlCommand("Proc_Make_Faktura_Waluty", conn);
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.AddWithValue("@ReklamaID", this.reklamaId);
            command.Parameters.AddWithValue("@FakturaNumer", nUMERTextBox.Text);
            command.Parameters.AddWithValue("@NumerRoz", nUMER_ROZTextBox.Text);

            switch (sPOSOB_ZAPLATYListBox.SelectedIndex)
            {
                case 1:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Przelew");
                    break;
                case 2:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Gotówka");
                    break;
                case 3:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Barter");
                    break;
                default:
                    command.Parameters.AddWithValue("@FakturaSposobZaplaty", "Karta kredytowa");
                    break;
            }
                        
            DataRowView r = (DataRowView)rEKLAMABindingSource.Current;

            command.Parameters.AddWithValue("@Zaplacono", zAPLACONOCheckBox.Checked);
            command.Parameters.AddWithValue("@FakturaDataWyst", dATA_WYSTAWIENIADateTimePicker.Value);
            command.Parameters.AddWithValue("@FakturaDataSprzed", dATA_SPRZEDAZYDateTimePicker.Value);
            command.Parameters.AddWithValue("@FakturaTerminZaplaty", tERMIN_ZAPLATYDateTimePicker.Value);
            command.Parameters.AddWithValue("@Konto", iD_KONTAComboBox.SelectedValue);
            command.Parameters.AddWithValue("@StawkaVat", r["VAT"]);

            if (zaliczka_BruttoTextBox.Text != "")
            {
                command.Parameters.AddWithValue("@Zaliczka_Brutto", r["Zaliczka_Brutto"]);
                command.Parameters.AddWithValue("@Zaliczka_Data", zaliczka_DataDateTimePicker.Value);
            }

            command.Parameters.AddWithValue("@wyroznienie", r["wyroznienie"]);

            SqlCommand command2 = new SqlCommand();
            command2.Connection = conn;
            command2.CommandType = CommandType.Text;
            command2.CommandText = "select Brutto_Euro, Brutto_Euro_Miano, waluta_kurs, waluta_przelicznik,waluta_kurs_z_dnia,waluta_tabela_nr from "
                + "reklama where reklamaId= " + this.reklamaId;

            conn.Open();

            SqlDataReader reader = command2.ExecuteReader();
            while (reader.Read())
            {
                command.Parameters.AddWithValue("@waluta_brutto", reader.GetValue(0));
                command.Parameters.AddWithValue("@waluta_miano", reader.GetValue(1));
                command.Parameters.AddWithValue("@waluta_kurs", reader.GetValue(2));
                command.Parameters.AddWithValue("@waluta_przelicznik", reader.GetValue(3));
                command.Parameters.AddWithValue("@waluta_kurs_z_dnia", reader.GetValue(4));
                command.Parameters.AddWithValue("@waluta_tabela_nr", reader.GetValue(5));
            }

            conn.Close();

            conn.Open();

            transaction = conn.BeginTransaction();

            command.Transaction = transaction;

            try
            {
                command.ExecuteNonQuery();
                transaction.Commit();
                ok = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.GetType() + ex.Message);

                try
                {
                    transaction.Rollback();
                }
                catch (Exception ex2)
                {
                    MessageBox.Show("ROLLBACK:" + ex2.GetType() + ex2.Message);
                }
            }

            conn.Close();
            
            //odswiezanie

            if (ok)
            {
                rEKLAMADataSet.REKLAMA.Clear();
                rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId);
                DataRowView row = (DataRowView)rEKLAMABindingSource.Current;

                int idFaktury = Convert.ToInt32(row["id_faktury"]);
                this.fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);

                FactureViewer fv = new FactureViewer(idFaktury, false);
                fv.ShowDialog();

                this.usunFakture(idFaktury);

                //odswiezenie reklam
                rEKLAMADataSet.REKLAMA.Clear();
                rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, this.reklamaId);
                row = (DataRowView)rEKLAMABindingSource.Current;

                //ustawienie pól formularza na dodanie nowej faktury

                nUMER_ROZTextBox.Text = Utils.tagAgenta(row["SYMBOL AKWIZYTORA"].ToString());
                nUMERTextBox.Text = Utils.numerNowejFaktury(nUMER_ROZTextBox.Text, DateTime.Today.Year).ToString();

                if (row["FAKTURA DATA SPRZEDAŻY"] == DBNull.Value)
                {
                    dATA_SPRZEDAZYDateTimePicker.Value = DateTime.Today;
                }

                if (row["FAKTURA DATA WYSTAWIENIA"] == DBNull.Value)
                {
                    dATA_WYSTAWIENIADateTimePicker.Value = DateTime.Today;
                }

                if (row["Zaliczka_Data"] == DBNull.Value)
                {
                    zaliczka_DataDateTimePicker.Value = DateTime.Today;
                }

                if (row["FAKTURA TERMIN ZAPŁATY"] == DBNull.Value)
                {
                    tERMIN_ZAPLATYDateTimePicker.Value = DateTime.Today.AddDays(7);
                }

                //iD_KONTAComboBox.SelectedIndex = 0;

                sPOSOB_ZAPLATYListBox.SelectedIndex = 1;

                rEKLAMABindingSource.EndEdit();

                wystawFaktureButton.Enabled = true;
                wystawProformeButton.Enabled = true;
            }
        }

        /// <summary>
        /// Zmiana faktury dla Poznania.
        /// </summary>
        private void fakturaPoznan(int idFaktury)
        {

            int idSprzedawcy = 6;
            int idNabywcy = 18845;
            int idKonta = 43;

            SqlCommand command = new SqlCommand();
            command.Connection = new SqlConnection(ConnString.getConnString().Value);
            command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=18845";

            command.Connection.Open();

            string nabywcaAdres = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select Nip from KLIENCI where  CustomerId=18845";

            string nabywcaNIP = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2";

            string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select NIP from AGENCJE where Id_agencji = 2";

            string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar());

            command.Connection.Close();

            command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," +
            "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," +
            "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury";

            command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy);
            command.Parameters.AddWithValue("@idNabywcy", idNabywcy);
            command.Parameters.AddWithValue("@nadres", nabywcaAdres);
            command.Parameters.AddWithValue("@sadres", sprzedawcaAdres);
            command.Parameters.AddWithValue("@nnip", nabywcaNIP);
            command.Parameters.AddWithValue("@snip", sprzedawcaNIP);
            command.Parameters.AddWithValue("@idKonta", idKonta);
            command.Parameters.AddWithValue("@idFaktury", idFaktury);

            try
            {
                command.Connection.Open();
                command.ExecuteNonQuery();
                command.Connection.Close();
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
        }
        
        /// <summary>
        /// Zmiana faktury dla Katowic.
        /// </summary>
        private void fakturaKatowice(int idFaktury)
        {
            int idSprzedawcy = 4;
            int idNabywcy = 678;
            int idKonta = 43;

            SqlCommand command = new SqlCommand();
            command.Connection = new SqlConnection(ConnString.getConnString().Value);
            command.CommandText = "select Adres_Fkatura from Klienci where CustomerId=678";

            command.Connection.Open();

            string nabywcaAdres = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select Nip from KLIENCI where  CustomerId=678";

            string nabywcaNIP = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select Adres_Fk from AGENCJE where Id_agencji = 2";

            string sprzedawcaAdres = Convert.ToString(command.ExecuteScalar());

            command.CommandText = "select NIP from AGENCJE where Id_agencji = 2";

            string sprzedawcaNIP = Convert.ToString(command.ExecuteScalar());

            command.Connection.Close();

            command.CommandText = "update faktury set ID_SPRZEDAWCY=@idSprzedawcy, ID_NABYWCY=@idNabywcy," +
            "NABYWCA_ADRES=@nadres,SPRZEDAWCA_ADRES=@sadres,NABYWCA_NIP=@nnip,SPRZEDAWCA_NIP=@snip," +
            "ID_KONTA=@idKonta where ID_FAKTURY=@idFaktury";

            command.Parameters.AddWithValue("@idSprzedawcy", idSprzedawcy);
            command.Parameters.AddWithValue("@idNabywcy", idNabywcy);
            command.Parameters.AddWithValue("@nadres", nabywcaAdres);
            command.Parameters.AddWithValue("@sadres", sprzedawcaAdres);
            command.Parameters.AddWithValue("@nnip", nabywcaNIP);
            command.Parameters.AddWithValue("@snip", sprzedawcaNIP);
            command.Parameters.AddWithValue("@idKonta", idKonta);
            command.Parameters.AddWithValue("@idFaktury", idFaktury);

            try
            {
                command.Connection.Open();
                command.ExecuteNonQuery();
                command.Connection.Close();
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }


        }

        private void zamknijButton_Click(object sender, EventArgs e)
        {
            fAKTURYBindingSource.CancelEdit();
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void usunButton_Click(object sender, EventArgs e)
        {
            if (rEKLAMABindingSource.Current != null)
            {
                bool ok = MessageBox.Show("Czyna pewno chcesz usunąć fakturę?", "", MessageBoxButtons.YesNo) == DialogResult.Yes ? true : false;

                if (ok)
                {
                    DataRowView row = (DataRowView)rEKLAMABindingSource.Current;
                    int idFaktury = Convert.ToInt32(row["id_faktury"]);

                    this.usunFakture(idFaktury);

                    this.rEKLAMADataSet.REKLAMA.Clear();
                    this.rEKLAMATableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, reklamaId);
                    wystawFaktureButton.Enabled = true;
                    wystawProformeButton.Enabled = true;
                //    usunButton.Enabled = false;
                }
            }
        }

        /// <summary>
        /// Usuwa fakture z tabel: FAKTURA, FAKTURA_DETAILS, REKLAMA (częsciowo)
        /// </summary>
        /// <param name="idFaktury"></param>
        private void usunFakture(int  idFaktury) {

            SqlConnection conn = new SqlConnection(
                       ConnString.getConnString().Value);

            //usuwanie faktury
            SqlCommand command3 = new SqlCommand();
            command3.CommandText = "delete from faktury where id_faktury = @param ";
            command3.CommandType = CommandType.Text;
            command3.Parameters.AddWithValue("@param", idFaktury);

            command3.Connection = conn;

            conn.Open();

            command3.ExecuteNonQuery();

            conn.Close();
            
            //usuwanie pozycji faktury
            command3 = new SqlCommand();
            command3.CommandText = "delete from faktura_details where id_faktury = @param ";
            command3.CommandType = CommandType.Text;
            command3.Parameters.AddWithValue("@param", idFaktury);

            command3.Connection = conn;

            conn.Open();

            command3.ExecuteNonQuery();

            conn.Close();

            //usuniecie informacji o fakturze z tabeli REKLAMA
            command3.CommandText = "update REKLAMA set ID_FAKTURY = null where ID_FAKTURY = @param ";

            conn.Open();

            command3.ExecuteNonQuery();

            conn.Close();
        }

        private void poznanKatowiceButton_Click(object sender, EventArgs e)
        {
            DataRowView row = (DataRowView)rEKLAMABindingSource.Current;

            // zmiana faktury dla Poznania i Katowic
            if (row["customerId_Sub"] != DBNull.Value)
            {
                if (row["id_faktury"] == DBNull.Value)
                {
                    MessageBox.Show("Faktura nie została wystawiona");
                    return;
                }

                int idFaktury = Convert.ToInt32(row["id_faktury"]);

                switch (Convert.ToInt32(row["customerId_Sub"]))
                {
                    case 678:
                        fakturaKatowice(idFaktury);
                        MessageBox.Show("Faktura została zmieniona");
                        break;
                    case 18845:
                        fakturaPoznan(idFaktury);
                        MessageBox.Show("Faktura została zmieniona");
                        break;
                }
            }
        }
              
        private void Facturer_Shown(object sender, EventArgs e)
        {

            if (!User.getUser().St_kierownik)
            {
                foreach (Control c in this.Controls)
                {
                    c.Enabled = false;
                }
            }
        }
    }
}