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;
using System.IO;
using Baza_Reklam.Classes;

namespace Baza_Reklam
{
    public partial class ListaReklamNaWydanieForm : Form
    {
        private static ListaReklamNaWydanieForm lrnwForm;

        public static ListaReklamNaWydanieForm getListaReklamNaWydanieForm(MDIBazaReklam parent)
        {
            if (lrnwForm == null)
            {
                lrnwForm = new ListaReklamNaWydanieForm(parent);
            }
            return lrnwForm;        
        }

        private ListaReklamNaWydanieForm(MDIBazaReklam parent)
        {
            InitializeComponent();

            this.MdiParent = parent;
            listaReklamNaWydanie2TableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
         
            bindingNavigator1.Items.Insert(22, new ToolStripLabel("DR"));
            bindingNavigator1.Items.Insert(23, new ToolStripControlHost(new CheckBox(), "DRCheckBox"));
            ((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["DRCheckBox"]).Control).Checked = true;

            bindingNavigator1.Items.Insert(24, new ToolStripLabel("W"));
            bindingNavigator1.Items.Insert(25, new ToolStripControlHost(new CheckBox(), "WyrCheckBox"));
            ((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["WyrCheckBox"]).Control).Checked = false;
         
        }

        private void ListaReklamNaWydanieForm_Load(object sender, EventArgs e)
        {
            DBBindings.bindujTytuly(tytulToolStripComboBox);
            DBBindings.bindujTytuly(tytToolStripComboBox2);
            DBBindings.bindujGrzbiety2(grzbietToolStripComboBox);
            DBBindings.bindujAgencje(agencjaToolStripComboBox);
            DBBindings.bindujAgentow(agentToolStripComboBox);
            DBBindings.bindujModuly(modToolStripComboBox);
            
            ((ComboBox)this.tytToolStripComboBox2.Control).SelectedValueChanged += new EventHandler(
                tytToolStripComboBox2_SelectedIndexChanged);
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            rEKLAMADataSet.ListaReklamNaWydanie2.Clear();

            if (tytulToolStripComboBox.Text.Trim() == "")
            {
                MessageBox.Show("Wybierz tytuł.");
                return;
            }

            if (nrToolStripTextBox.Text.Trim() != "")
            {
                int i;
                if (!Int32.TryParse(nrToolStripTextBox.Text.Trim(), out i))
                {
                    MessageBox.Show("Podaj prawidłowy nr wydania.");
                    return;
                }
            }
            else
            {
                MessageBox.Show("Wybierz nr wydania.");
                return;
            }

            this.Cursor = Cursors.WaitCursor;

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConnString.getConnString().Value;

            SqlCommand command = new SqlCommand();
            command.Connection = conn;
            command.CommandText = "SELECT TOP 1000 R.ReklamaID, R.TYTUŁ, R.TYP, R.[ID REKLAMY], R.SZER, R.WYS, R.KOLOR, R.[NICK NAME], R.MOD_TYP, R.RABAT, R.STRONA AS lokalizacja, " +
                        " [UKAŻE SIĘ W NR].[Nr Wydania] AS NR, R.[ZATWIERDZONO DO DRUKU], R.GRZBIET, REKLAMA_STRONA.STRONA, A.Symbol AS agencja,  " +
                        " R.[SYMBOL AKWIZYTORA], R.KROTNOŚĆ, R.NETTO, G.Nazwa AS nazwaGrzbietu, A2.ID_AGENTA, R.[CENA JEDN], R.[RABAT WARTOŚĆ], R.wyroznienie, "+
                        " R.wyroznienie_exported, R.logo, R.logoID, ogl_d.DZIAŁ_TXT, ogl_r.ROZDZIAŁ_TXT,PS.STAN " +
                        " FROM AGENCI AS A2 LEFT OUTER JOIN " +
                        " AGENCJE AS A ON A.Id_agencji = A2.ID_AGENCJI INNER JOIN "+
                        "  REKLAMA AS R ON A2.Symbol = R.[SYMBOL AKWIZYTORA] INNER JOIN "+
                        "  [UKAŻE SIĘ W NR] ON R.ReklamaID = [UKAŻE SIĘ W NR].ReklamaId LEFT OUTER JOIN "+
                        "  REKLAMA_STRONA ON R.ReklamaID = REKLAMA_STRONA.ReklamaId AND  "+
                        "  [UKAŻE SIĘ W NR].[Nr Wydania] = REKLAMA_STRONA.NR_WYDANIA LEFT OUTER JOIN "+                    
                        " GRZBIETY AS G ON R.GRZBIET = G.ID LEFT OUTER JOIN "+
                        " ogl_dzialy AS ogl_d ON R.ogl_dzial = ogl_d.DZIAŁ_NR LEFT OUTER JOIN "+
                        " ogl_rozdzialy AS ogl_r ON R.ogl_rozdzial = ogl_r.id and ogl_d.DZIAŁ_NR = ogl_r.dzial LEFT OUTER JOIN " +
                        " (SELECT ReklamaId AS rekID, STAN, DATA_AGENT FROM PRODUKCJA) AS PS ON R.ReklamaID = PS.rekID AND PS.DATA_AGENT =" +
                        " (SELECT MAX(DATA_AGENT) AS Expr1 FROM PRODUKCJA WHERE (ReklamaId = R.ReklamaID)) " + 
                        " WHERE (R.TYTUŁ = @tytul) AND ([UKAŻE SIĘ W NR].[Nr Wydania] = @nrwydania) ";

            command.Parameters.AddWithValue("@tytul", tytulToolStripComboBox.Text.Trim());
            command.Parameters.AddWithValue("@nrwydania", nrToolStripTextBox.Text.Trim());

            if (((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["DRCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND (R.[ZATWIERDZONO DO DRUKU] = 1) ";
            }

            if (((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["WyrCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND (R.[wyroznienie] = 1) ";
            }

            if (agencjaToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += " AND (A.Symbol = @agencja) ";
                command.Parameters.AddWithValue("@agencja", agencjaToolStripComboBox.Text.Trim());
            }

            if (agentToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += " AND (A2.Symbol = @agent) ";
                command.Parameters.AddWithValue("@agent", agentToolStripComboBox.Text.Trim());
            }

            if (grzbietToolStripComboBox.SelectedItem != null)
            {
                command.CommandText += " AND (R.GRZBIET = @grzbiet) ";
                command.Parameters.AddWithValue("@grzbiet", ((BoundItem)grzbietToolStripComboBox.SelectedItem).IDEvalue1);
            }

          //  ((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["DRCheckBox"]).Control).Checked = true;

         
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = command;

            adapter.Fill(rEKLAMADataSet.ListaReklamNaWydanie2);
            
            this.Cursor = Cursors.Default;
            
        }

        private void klientToolStripButton_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {
                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;
                int idRek = Convert.ToInt32(row["ReklamaId"]);

                int custId = Utils.customerId(idRek);

                ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).pokazKlienta(custId);

                this.Hide();

                ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).Show();
            }  
        }

        private void zamToolStripButton_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {
                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;
                int idRek = Convert.ToInt32(row["ReklamaId"]);
               // this.reklamaTableAdapter.FillByReklamaId(this.rEKLAMADataSet.REKLAMA, idRek);

                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(idRek);
                OrderDetails.getOrderDetails().ShowDialog();
                /*
                OrderDetails od = new OrderDetails();
                od.pokazSzczegolyZamowienia(idRek);
                od.ShowDialog(); */
            }     
        }

        private void tytToolStripComboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (((ComboBox)this.tytToolStripComboBox2.Control).SelectedItem != null)
            {
                ((BindingSource)((ComboBox)this.modToolStripComboBox.Control).DataSource).Filter = "tytul = '" + ((ComboBox)this.tytToolStripComboBox2.Control).Text.ToString() + "'";
                this.modToolStripComboBox.SelectedIndex = -1;
                this.modToolStripComboBox.SelectedIndex = -1;
            }
        }


        private void wyczyscFiltrToolStripButton_Click(object sender, EventArgs e)
        {            
            tytulToolStripComboBox.Text = "";
            nrToolStripTextBox.Text = "";
            agencjaToolStripComboBox.SelectedIndex = -1;
            agencjaToolStripComboBox.Text = "";

            agentToolStripComboBox.SelectedIndex = -1; 
            agentToolStripComboBox.Text = "";

            grzbietToolStripComboBox.SelectedIndex = -1;
            grzbietToolStripComboBox.Text = "";

            ((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["DRCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)bindingNavigator1.Items["WyrCheckBox"]).Control).CheckState = CheckState.Indeterminate;          

        }

        private void szukajRezerToolStripButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConnString.getConnString().Value;

            SqlCommand command = new SqlCommand();
            command.Connection = conn;

            command.CommandText = "SELECT TOP 1000 R.ReklamaID, R.TYTUŁ, R.TYP, R.[ID REKLAMY], R.SZER, R.WYS, R.KOLOR, R.[NICK NAME], R.MOD_TYP, R.RABAT, R.STRONA AS lokalizacja, " +
                " [UKAŻE SIĘ W NR].[Nr Wydania] AS NR, R.[ZATWIERDZONO DO DRUKU], R.GRZBIET, REKLAMA_STRONA.STRONA, A.Symbol AS agencja,  " +
                " R.[SYMBOL AKWIZYTORA], R.KROTNOŚĆ, R.NETTO, G.Nazwa AS nazwaGrzbietu, A2.ID_AGENTA, R.[CENA JEDN], R.[RABAT WARTOŚĆ], R.wyroznienie, " +
                " R.wyroznienie_exported, R.logo, R.logoID, ogl_d.DZIAŁ_TXT, ogl_r.ROZDZIAŁ_TXT,PS.STAN " +
                " FROM AGENCI AS A2 LEFT OUTER JOIN " +
                " AGENCJE AS A ON A.Id_agencji = A2.ID_AGENCJI INNER JOIN " +
                "  REKLAMA AS R ON A2.Symbol = R.[SYMBOL AKWIZYTORA] INNER JOIN " +
                "  [UKAŻE SIĘ W NR] ON R.ReklamaID = [UKAŻE SIĘ W NR].ReklamaId LEFT OUTER JOIN " +
                "  REKLAMA_STRONA ON R.ReklamaID = REKLAMA_STRONA.ReklamaId AND  " +
                "  [UKAŻE SIĘ W NR].[Nr Wydania] = REKLAMA_STRONA.NR_WYDANIA LEFT OUTER JOIN " +
                " GRZBIETY AS G ON R.GRZBIET = G.ID LEFT OUTER JOIN " +
                " ogl_dzialy AS ogl_d ON R.ogl_dzial = ogl_d.DZIAŁ_NR LEFT OUTER JOIN " +
                " ogl_rozdzialy AS ogl_r ON R.ogl_rozdzial = ogl_r.id and ogl_d.DZIAŁ_NR = ogl_r.dzial LEFT OUTER JOIN " +
                " (SELECT ReklamaId AS rekID, STAN, DATA_AGENT FROM PRODUKCJA) AS PS ON R.ReklamaID = PS.rekID AND PS.DATA_AGENT =" +
                " (SELECT MAX(DATA_AGENT) AS Expr1 FROM PRODUKCJA WHERE (ReklamaId = R.ReklamaID)) " + 
                " WHERE 1=1 ";
               

            this.rEKLAMADataSet.ListaReklamNaWydanie2.Clear();       

            command.Parameters.Clear();


            if (odToolStripTextBox.Text.Trim() != "")
            {
                int i;
                if (!Int32.TryParse(odToolStripTextBox.Text.Trim(), out i))
                {
                    MessageBox.Show("Podaj prawidłową wartość.");
                    this.Cursor = Cursors.Default;
                    return;
                }

                command.CommandText += " AND [UKAŻE SIĘ W NR].[Nr Wydania]>=@od ";
                command.Parameters.AddWithValue("@od", odToolStripTextBox.Text.Trim());
            }


            if (doToolStripTextBox.Text.Trim() != "")
            {
                int i;
                if (!Int32.TryParse(doToolStripTextBox.Text.Trim(), out i))
                {
                    MessageBox.Show("Podaj prawidłową wartość.");
                    this.Cursor = Cursors.Default;
                    return;
                }

                command.CommandText += " AND [UKAŻE SIĘ W NR].[Nr Wydania]<=@do ";
                command.Parameters.AddWithValue("@do", doToolStripTextBox.Text.Trim());
            }

            if (modToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += " AND r.MOD_TYP=@modul ";
                command.Parameters.AddWithValue("@modul", modToolStripComboBox.Text.Trim());
            }

            if (tytToolStripComboBox2.Text.Trim() != "")
            {
                command.CommandText += " AND r.[TYTUŁ]=@tyt ";
                command.Parameters.AddWithValue("@tyt", tytToolStripComboBox2.Text.Trim());

            }
          
            
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = command;

            adapter.Fill(rEKLAMADataSet.ListaReklamNaWydanie2);
                        
            this.Cursor = Cursors.Default; 
        }

        private void wyczyscToolStripButton2_Click(object sender, EventArgs e)
        {
            odToolStripTextBox.Clear();
            doToolStripTextBox.Clear();
            ((BindingSource)((ComboBox)this.modToolStripComboBox.Control).DataSource).Filter = "";          
            modToolStripComboBox.SelectedIndex = -1;
            modToolStripComboBox.SelectedIndex = -1;
            modToolStripComboBox.Text = "";
            tytToolStripComboBox2.SelectedIndex = -1;
            tytToolStripComboBox2.SelectedIndex = -1;
            tytToolStripComboBox2.Text = "";
        }

        private void drukujToolStripButton_Click(object sender, EventArgs e)
        {
            PrintDGV.Print_DataGridView(listaReklamDataGridView,50);
        }

        private void podgladJPGToolStripButton_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;

                int reklamaId = Convert.ToInt32(row["reklamaId"]);
                string idReklamy = row["id reklamy"].ToString();

                string tytul;
                int grzbiet;
                string miasto;
                byte staryNowyArchiwum;

                Produkcja.argumentyDoSciezki(reklamaId,idReklamy, out tytul, out grzbiet, out miasto, out staryNowyArchiwum);

                string sciezka = Produkcja.GetReklamaFileName(idReklamy, tytul, grzbiet, miasto, staryNowyArchiwum, "jpg");

                if (File.Exists(sciezka))
                {
                    System.Diagnostics.Process.Start(sciezka);
                }
                else
                {
                    MessageBox.Show("Nie znaleziono pliku: " + sciezka);
                }

                this.Cursor = Cursors.Default;
            }
        }

        private void podgladToolStripButton_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;

                int reklamaId = Convert.ToInt32(row["reklamaId"]);
                string idReklamy = row["id reklamy"].ToString();

                string tytul;
                int grzbiet;
                string miasto;
                byte staryNowyArchiwum;

                Produkcja.argumentyDoSciezki(reklamaId,idReklamy, out tytul, out grzbiet, out miasto, out staryNowyArchiwum);

                string sciezka = Produkcja.GetReklamaFileName(idReklamy, tytul, grzbiet, miasto, staryNowyArchiwum, "pdf");

                if (File.Exists(sciezka))
                {
                    System.Diagnostics.Process.Start(sciezka);
                }
                else
                {
                    MessageBox.Show("Nie znaleziono pliku: " + sciezka);
                }

                this.Cursor = Cursors.Default;
            }
        }

        private void dodajLogoToolStripButton_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {              
                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;

                int reklamaId = Convert.ToInt32(row["reklamaId"]);
                LogoWReklamieForm lwrf = new LogoWReklamieForm(reklamaId);

                lwrf.ShowDialog();
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (listaReklamNaWydanie2BindingSource.Current != null)
            {
                DataRowView row = (DataRowView)listaReklamNaWydanie2BindingSource.Current;
                int reklamaId = Convert.ToInt32(row["reklamaId"]);
                int custId = Utils.customerId(reklamaId);

                LogaKlientowForm logaForm = new LogaKlientowForm(custId);
                logaForm.ShowDialog();
            }
        }

    }
}