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;

namespace Baza_Reklam
{
    public partial class OrdersForm : Form
    {
        private static OrdersForm orderForm;
        private SqlDataAdapter sqlDataAdapter;
        private SqlCommand command;

        bool commandExecuted = false;

        /// <summary>
        /// Do każdego filtrowania musi być dodany warunek  (r.SZER * r.WYS)<>0 !!!
        /// </summary>
        private string query = " select TOP 1000 R.*, O.OD, O.DO, datepart(year,NR.DATA_W), datepart(month,NR.DATA_W)," +
            " NR.DATA_W AS '1emisja', A.Symbol AS agencja, (r.[CENA JEDN] - r.[RABAT WARTOŚĆ]) / r.SZER * r.WYS AS [CENA MODUŁU],NM.CENA_MIN, NM.CENA, K.firstname " +
            " fROM dbo.AGENCI A2 JOIN dbo.AGENCJE A ON A.Id_agencji = A2.ID_AGENCJI " +
            " right JOIN REKLAMA R ON A2.Symbol = R.[SYMBOL AKWIZYTORA] " + 
            " left JOIN dbo.VIEW_REKLAMA_OD_DO O ON R.ReklamaID = O.ReklamaId" + 
            " left JOIN NR ON R.TYTUŁ = NR.TYT AND O.OD = NR.NRW " +
            " LEFT OUTER JOIN [NAZWY MODUŁÓW] NM ON r.MOD_TYP = NM.MOD_TYP" +
            " left outer join dbo.KLIENCI AS K on R.customerId=K.CustomerId	";

        public static OrdersForm getOrderForm(MDIBazaReklam parent)
        {
            if (orderForm == null) {
                orderForm = new OrdersForm(parent);
            }
            return orderForm;
        }

        private OrdersForm(MDIBazaReklam parent)
        {
            InitializeComponent();

            this.MdiParent = parent;

            reklamaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            reklamyZestawienieTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            kONTATableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            kLIENCITableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
                       
            SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);

            command = new SqlCommand();
            command.CommandType = CommandType.Text;
            command.CommandText = query;
            command.Connection = conn; 

            this.sqlDataAdapter = new SqlDataAdapter();
            this.sqlDataAdapter.SelectCommand = command;

            szukajToolStrip.Items.Insert(13, new ToolStripLabel("DR"));
            szukajToolStrip.Items.Insert(14, new ToolStripControlHost(new CheckBox(), "DRCheckBox"));
            
            szukajToolStrip.Items.Insert(15, new ToolStripLabel("FW"));
            szukajToolStrip.Items.Insert(16, new ToolStripControlHost(new CheckBox(), "FWCheckBox"));

            szukajToolStrip.Items.Insert(17, new ToolStripLabel("KZ"));
            szukajToolStrip.Items.Insert(18, new ToolStripControlHost(new CheckBox(), "KZCheckBox"));

            szukajToolStrip.Items.Insert(19, new ToolStripLabel("PR"));
            szukajToolStrip.Items.Insert(20, new ToolStripControlHost(new CheckBox(), "PRCheckBox"));

            szukajToolStrip.Items.Insert(21, new ToolStripLabel("ZP"));
            szukajToolStrip.Items.Insert(22, new ToolStripControlHost(new CheckBox(), "ZPCheckBox"));

            szukajToolStrip.Items.Insert(23, new ToolStripLabel("WYR"));
            szukajToolStrip.Items.Insert(24, new ToolStripControlHost(new CheckBox(), "WyrCheckBox"));

            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["DRCheckBox"]).Control).ThreeState = true;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["FWCheckBox"]).Control).ThreeState = true;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["KZCheckBox"]).Control).ThreeState = true;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["PRCheckBox"]).Control).ThreeState = true;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["ZPCheckBox"]).Control).ThreeState = true;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["WyrCheckBox"]).Control).ThreeState = true;

            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["DRCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["FWCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["KZCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["PRCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["ZPCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["WyrCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            
            generateNodes();

            zatwierdzoneNiezaplaconeColumns();

            command.CommandText = query;
        }

        private void OrdersForm_Load(object sender, EventArgs e)
        {
            this.kONTATableAdapter.FillByIdAgencji(this.sLOWNIKDataSet.KONTA,User.getUser().IdAgencji);
            this.WindowState = FormWindowState.Maximized;

            DBBindings.bindujAgencje(agencjaToolStripComboBox);
            DBBindings.bindujAgentow(agentToolStripComboBox);
            DBBindings.bindujTytuly(tytToolStripComboBox);
            DBBindings.bindujTypyReklam(typToolStripComboBox);
                  
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Node != null)
            {
                command.CommandText = query;
                command.Parameters.Clear();

                switch (e.Node.Level)
                {
                    case 0:
                        break;
                    case 1:
                        switch (e.Node.Parent.Name)
                        {
                            case "Tytuly":

                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[Tytuł]=@tytul aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@tytul", e.Node.Name);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "ZatwierdzoneNiezaplacone":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where A.symbol=@agencja AND R.[typ]!='BEZPŁATNA' AND R.[typ]!='REKLAMACJA' AND R.[ZATWIERDZONO DO DRUKU]=1 AND R.[ZAPŁACONO]=0 aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "ZmodyfikowaneDzisiaj":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += "  where A.symbol=@agencja AND [DATA OSTATNIEJ MODYFIKACJI]>@dzis aND [DATA OSTATNIEJ MODYFIKACJI]< @jutro AND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                command.Parameters.AddWithValue("@dzis", DateTime.Today.ToShortDateString());
                                command.Parameters.AddWithValue("@jutro", DateTime.Today.AddDays(1).ToShortDateString());
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "DodaneDzisiaj":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += "  where A.symbol=@agencja AND [DATA ZAMÓWIENIA]>@dzis aND [DATA ZAMÓWIENIA]<@jutro AND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                command.Parameters.AddWithValue("@dzis", DateTime.Today.ToShortDateString());
                                command.Parameters.AddWithValue("@jutro", DateTime.Today.AddDays(1).ToShortDateString());
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "MojeZamowienia":

                                switch (e.Node.Name)
                                {
                                    case "ZatwierdzoneNiezaplacone":

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += " where R.[symbol akwizytora]=@agent AND R.[typ]!='BEZPŁATNA' AND R.[typ]!='REKLAMACJA' AND R.[ZATWIERDZONO DO DRUKU]=1 AND R.[ZAPŁACONO]=0 aND (r.SZER * r.WYS)<>0  order by R.[DATA ZAMÓWIENIA] desc";
                                        command.Parameters.AddWithValue("@agent", User.getUser().Symbol_agenta);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    default:

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += " where R.[symbol akwizytora]=@agent AND R.[Tytuł]=@tytul aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                        command.Parameters.AddWithValue("@agent", User.getUser().Symbol_agenta);
                                        command.Parameters.AddWithValue("@tytul", e.Node.Name);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                }
                                break;
                            case "Bledy":
                                switch (e.Node.Name)
                                {
                                    case "BledyWreklamach":

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE ((r.MOD_TYP LIKE 'GS%' AND r.[TYTUŁ] LIKE 'AMT%') OR  (r.MOD_TYP LIKE 'AMT%' AND " +
                                            "r.[TYTUŁ] LIKE 'GS%') OR (r.TYP = 'PŁATNA' AND r.NETTO = 0) OR (r.TYP = 'BEZPŁATNA' AND r.NETTO > 0)) " +
                                            " aND (r.SZER * r.WYS)<>0 ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "PowtorzeniaReklam":

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE R.[ID REKLAMY] in (select [ID REKLAMY] from (SELECT [ID REKLAMY]," +
                                            "COUNT([ID REKLAMY]) AS NumOccurrences FROM dbo.REKLAMA GROUP BY [ID REKLAMY] " +
                                            "HAVING ( COUNT([ID REKLAMY]) > 1 ) )  as d) AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "Moduly":
                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText = command.CommandText.Replace("(r.[CENA JEDN] - r.[RABAT WARTOŚĆ]) / r.SZER * r.WYS AS [CENA MODUŁU]", "0");
                                        command.CommandText += "WHERE (r.SZER =0 or r.WYS=0) and year(R.[DATA ZAMÓWIENIA])>=2007  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    default:
                                        break;
                                }
                                break;
                            case "AnalizaCenyModulu":
                                switch (e.Node.Name)
                                {
                                    case "ZaTani50":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/ (R.SZER * R.WYS))<NM.[CENA]/2) AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "ZaTani30":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/ (R.SZER * R.WYS))<NM.[CENA_MIN]) AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "ZaDrogi":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/( R.SZER * R.WYS))>NM.[CENA]) AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    default:
                                        break;
                                }
                                break;
                            default:
                                break;
                        }
                        break;
                    case 2:
                        switch (e.Node.Parent.Parent.Name)
                        {
                            case "Tytuly":

                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[Tytuł]=@tytul and datepart(year,NR.DATA_W)=@rok aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@tytul", e.Node.Parent.Name);
                                command.Parameters.AddWithValue("@rok", e.Node.Name);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "MojeZamowienia":

                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[symbol akwizytora]=@agent AND R.[Tytuł]=@tytul and datepart(year,NR.DATA_W)=@rok aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agent", User.getUser().Symbol_agenta);
                                command.Parameters.AddWithValue("@tytul", e.Node.Parent.Name);
                                command.Parameters.AddWithValue("@rok", e.Node.Name);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "KoniecEmisji":

                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[Tytuł]=@tytul and O.DO=@nrWyd aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@tytul", e.Node.Parent.Name);
                                command.Parameters.AddWithValue("@nrWyd", e.Node.Name);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "ZatwierdzoneNiezaplacone":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[symbol akwizytora]=@agent AND R.[typ]!='BEZPŁATNA' AND R.[typ]!='REKLAMACJA' AND R.[ZATWIERDZONO DO DRUKU]=1 AND R.[ZAPŁACONO]=0 aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "ZmodyfikowaneDzisiaj":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[symbol akwizytora]=@agent aND [DATA OSTATNIEJ MODYFIKACJI]>@dzis aND [DATA OSTATNIEJ MODYFIKACJI]< @jutro AND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                command.Parameters.AddWithValue("@dzis", DateTime.Today.ToShortDateString());
                                command.Parameters.AddWithValue("@jutro", DateTime.Today.AddDays(1).ToShortDateString());
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "DodaneDzisiaj":
                                this.Cursor = Cursors.WaitCursor;

                                zatwierdzoneNiezaplaconeColumns();
                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                command.CommandText += " where R.[symbol akwizytora]=@agent aND [DATA ZAMÓWIENIA]>@dzis aND [DATA ZAMÓWIENIA]<@jutro AND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                command.Parameters.AddWithValue("@dzis", DateTime.Today.ToShortDateString());
                                command.Parameters.AddWithValue("@jutro", DateTime.Today.AddDays(1).ToShortDateString());
                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                commandExecuted = true;
                                reklamaDataGridView.Refresh();

                                this.Cursor = Cursors.Default;

                                break;
                            case "AnalizaCenyModulu":
                                switch (e.Node.Parent.Name)
                                {
                                    case "ZaTani50":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/ (R.SZER * R.WYS))<NM.[CENA]/2) AND A.symbol=@agencja AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "ZaTani30":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/ (R.SZER * R.WYS))<NM.[CENA_MIN]) AND A.symbol=@agencja AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "ZaDrogi":

                                        this.Cursor = Cursors.WaitCursor;

                                        analizaCenyModuluColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                            "/( R.SZER * R.WYS))>NM.[CENA]) AND A.symbol=@agencja AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                        command.Parameters.AddWithValue("@agencja", e.Node.Text);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                
                                    default:
                                        break;
                                }
                                break;
                            default:
                                break;
                        }
                        break;
                      
                           case 3:
                                switch (e.Node.Parent.Parent.Parent.Name)
                                {
                                    case "Tytuly":

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += " where R.[Tytuł]=@tytul and datepart(year,NR.DATA_W)=@rok and datepart(month,NR.DATA_W)=@miesiac aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                        command.Parameters.AddWithValue("@tytul", e.Node.Parent.Parent.Name);
                                        command.Parameters.AddWithValue("@rok", e.Node.Parent.Name);
                                        command.Parameters.AddWithValue("@miesiac", e.Node.Name);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "MojeZamowienia":

                                        this.Cursor = Cursors.WaitCursor;

                                        zatwierdzoneNiezaplaconeColumns();
                                        this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                        command.CommandText += " where R.[symbol akwizytora]=@agent AND R.[Tytuł]=@tytul and datepart(year,NR.DATA_W)=@rok and datepart(month,NR.DATA_W)=@miesiac aND (r.SZER * r.WYS)<>0 order by R.[DATA ZAMÓWIENIA] desc";
                                        command.Parameters.AddWithValue("@agent", User.getUser().Symbol_agenta);
                                        command.Parameters.AddWithValue("@tytul", e.Node.Parent.Parent.Name);
                                        command.Parameters.AddWithValue("@rok", e.Node.Parent.Name);
                                        command.Parameters.AddWithValue("@miesiac", e.Node.Name);
                                        sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                        commandExecuted = true;
                                        reklamaDataGridView.Refresh();

                                        this.Cursor = Cursors.Default;

                                        break;
                                    case "AnalizaCenyModulu":
                                        switch (e.Node.Parent.Parent.Name)
                                        {
                                            case "ZaTani50":

                                                this.Cursor = Cursors.WaitCursor;

                                                analizaCenyModuluColumns();
                                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                                command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                                    "/ (R.SZER * R.WYS))<NM.[CENA]/2) AND A.symbol=@agencja AND  R.[symbol akwizytora]=@agent AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                                command.Parameters.AddWithValue("@agencja", e.Node.Parent.Text);
                                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                                commandExecuted = true;
                                                reklamaDataGridView.Refresh();

                                                this.Cursor = Cursors.Default;

                                                break;
                                            case "ZaTani30":

                                                this.Cursor = Cursors.WaitCursor;

                                                analizaCenyModuluColumns();
                                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                                command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                                    "/ (R.SZER * R.WYS))<NM.[CENA_MIN]) AND A.symbol=@agencja AND  R.[symbol akwizytora]=@agent AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                                command.Parameters.AddWithValue("@agencja", e.Node.Parent.Text);
                                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                                commandExecuted = true;
                                                reklamaDataGridView.Refresh();

                                                this.Cursor = Cursors.Default;

                                                break;
                                            case "ZaDrogi":

                                                this.Cursor = Cursors.WaitCursor;

                                                analizaCenyModuluColumns();
                                                this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                                                command.CommandText += "WHERE (R.SZER * R.WYS <> 0) AND (((R.[CENA JEDN] - R.[RABAT WARTOŚĆ]) " +
                                                    "/( R.SZER * R.WYS))>NM.[CENA]) AND A.symbol=@agencja AND  R.[symbol akwizytora]=@agent AND datediff(month,R.[DATA ZAMÓWIENIA],getdate()) <= 3  ORDER BY R.[DATA ZAMÓWIENIA] DESC";
                                                command.Parameters.AddWithValue("@agencja", e.Node.Parent.Text);
                                                command.Parameters.AddWithValue("@agent", e.Node.Name);
                                                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                                                commandExecuted = true;
                                                reklamaDataGridView.Refresh();

                                                this.Cursor = Cursors.Default;

                                                break;

                                            default:
                                                break;
                                        }
                                        break;
                                    default:
                                        break;
                                }
                                break;
                            default:
                                break;
                        }
                }                
            }
               
        private void toolStripButton6_Click(object sender, EventArgs e)
        {
            szukajToolStrip.Visible = szukajToolStrip.Visible ? false : true;
        }

        private void szukajToolStripButton_Click(object sender, EventArgs e)
        {
            command.CommandText = query;

            this.rEKLAMADataSet.ReklamyZestawienie.Clear();

            command.CommandText += " where 1=1 AND (r.SZER * r.WYS)<>0 ";

            command.Parameters.Clear();

            if (agencjaToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += " AND A.Symbol=@agencja ";
                command.Parameters.AddWithValue("@agencja", agencjaToolStripComboBox.Text.Trim());
            }

            if (agentToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += "AND ([symbol akwizytora] like '%' + @agent + '%' )";
                command.Parameters.AddWithValue("@agent", agentToolStripComboBox.Text.Trim());

            }

            if (symbolToolStripTextBox.Text.Trim() != "")
            {
                command.CommandText += "AND r.[id reklamy] like '%' + @symbol + '%' ";
                command.Parameters.AddWithValue("@symbol", symbolToolStripTextBox.Text.Trim());

            }

            if (rokToolStripTextBox.Text.Trim() != "")
            {
                int i;
                if (!Int32.TryParse(rokToolStripTextBox.Text.Trim(),out i)) {
                    MessageBox.Show("Podaj prawidłowy rok.");
                    this.Cursor = Cursors.Default;
                    return;
                }

                command.CommandText += "AND DATEPART(yyyy,NR.DATA_W)=@rok ";
                command.Parameters.AddWithValue("@rok", rokToolStripTextBox.Text.Trim());             
            }

            if (msToolStripTextBox.Text.Trim() != "")
            {
                int i;
                if (!Int32.TryParse(msToolStripTextBox.Text.Trim(), out i))
                {
                    MessageBox.Show("Podaj prawidłowy miesiąc.");
                    this.Cursor = Cursors.Default;
                    return;
                }

                command.CommandText += "AND DATEPART(month,NR.DATA_W)=@ms ";
                command.Parameters.AddWithValue("@ms", msToolStripTextBox.Text.Trim());
            }


            if (tytToolStripComboBox.SelectedIndex != -1)
            {
                command.CommandText += "AND R.[tytuł]=@tytul ";
                command.Parameters.AddWithValue("@tytul",tytToolStripComboBox.Text.Trim());
            }

            if (typToolStripComboBox.Text.Trim() != "")
            {
                command.CommandText += "AND R.[TYP]=@typ ";
                command.Parameters.AddWithValue("@typ", typToolStripComboBox.Text.Trim());
            }

            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["DRCheckBox"]).Control).CheckState == CheckState.Checked) {
                command.CommandText += " AND R.[ZATWIERDZONO DO DRUKU]=1 ";
            }
            else if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["DRCheckBox"]).Control).CheckState == CheckState.Unchecked) {
                command.CommandText += " AND R.[ZATWIERDZONO DO DRUKU]=0 ";
            }

            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["FWCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += "AND R.[FAKTURA WYSTAWIONO]=1 ";
            }
            else if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["FWCheckBox"]).Control).CheckState == CheckState.Unchecked)
            {
                command.CommandText += "AND R.[FAKTURA WYSTAWIONO]=0 ";
            }
            
            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["KZCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND R.[kier_zatwierdzil]=1 ";
            }
            else if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["KZCheckBox"]).Control).CheckState == CheckState.Unchecked)
            {
                command.CommandText += " AND R.[kier_zatwierdzil]=0 ";
            }

            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["PRCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND R.[zablokuj_prowizje]=1 ";
            }
            else if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["PRCheckBox"]).Control).CheckState == CheckState.Unchecked)
            {
                command.CommandText += " AND R.[zablokuj_prowizje]=0 ";
            }

            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["ZPCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND R.[ZAPŁACONO]=1 ";
            } if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["ZPCheckBox"]).Control).CheckState == CheckState.Unchecked)
            {
                command.CommandText += " AND R.[ZAPŁACONO]=0 ";
            }

            if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["WyrCheckBox"]).Control).CheckState == CheckState.Checked)
            {
                command.CommandText += " AND R.[wyroznienie]=1 ";
            } if (((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["WyrCheckBox"]).Control).CheckState == CheckState.Unchecked)
            {
                command.CommandText += " AND R.[wyroznienie]=0 ";
            }


            command.CommandText += " order by R.[DATA ZAMÓWIENIA] desc";

            sqlDataAdapter.SelectCommand = command;

            //MessageBox.Show(sqlDataAdapter.SelectCommand.CommandText);

            /*
            this.rEKLAMADataSet.REKLAMA.Clear();
            try
            {
                sqlDataAdapter.Fill(this.rEKLAMADataSet.REKLAMA);
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
            */

            this.Cursor = Cursors.WaitCursor;

            sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
            commandExecuted = true;
            
            reklamaDataGridView.Refresh();

            treeView1.CollapseAll();
            treeView1.SelectedNode = null;

            this.Cursor = Cursors.Default;
            
            //MessageBox.Show("Wyszukiwanie zakończone");   

        }

        private void reklamaDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {  
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Int32.Parse(row["reklamaId"].ToString());

                
                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(idRek);
                DialogResult result = OrderDetails.getOrderDetails().ShowDialog();

                /*
                OrderDetails od = new OrderDetails();
                od.pokazSzczegolyZamowienia(idRek);
                DialogResult result = od.ShowDialog();*/
  
                if (result == DialogResult.OK) {
                    this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                    sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);                    
                }
            }
            
        }
        
        private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
        {
            if (e.Node != null)
            {
                SqlConnection conn = new SqlConnection(ConnString.getConnString().Value);

                SqlCommand comand = new SqlCommand();
                comand.Connection = conn;
                comand.CommandType = CommandType.Text;

                TreeNode node;
                SqlDataReader reader;

                switch (e.Node.Level)
                {
                    case 0:

                        switch (e.Node.Name)
                        {
                            case "Tytuly":
                                DBBindings.dodajTytulyDoWezla(e.Node);
                                break;
                            case "MojeZamowienia":
                                DBBindings.dodajTytulyDoWezla(e.Node);

                                node = new TreeNode("Zatwierdzone-niezapłacone");
                                node.Name = "ZatwierdzoneNiezaplacone";
                                treeView1.Nodes["MojeZamowienia"].Nodes.Add(node);

                                break;
                            case "KoniecEmisji":
                                DBBindings.dodajTytulyDoWezla(e.Node);
                                break;
                            case "ZatwierdzoneNiezaplacone":
                                
                                if (User.getUser().St_kierownik | User.getUser().St_produkcja)
                                {
                                    DBBindings.dodajAgencjeDoWezla(e.Node);
                                }
                                else if (User.getUser().St_handlowiec| User.getUser().St_sekretarka | User.getUser().St_subhandlowiec)
                                {
                                    e.Node.Nodes.Clear();
                                    node = new TreeNode(User.getUser().SymbolAgencji);
                                    node.Name = User.getUser().IdAgencji.ToString();
                                    node.Nodes.Add(new TreeNode());
                                    treeView1.Nodes["ZatwierdzoneNiezaplacone"].Nodes.Add(node);
                                }
                                break;
                            case "ZmodyfikowaneDzisiaj":
                                DBBindings.dodajAgencjeDoWezla(e.Node);
                                break;
                            case "DodaneDzisiaj":
                                DBBindings.dodajAgencjeDoWezla(e.Node);
                                break;                       
                            default:
                                break;
                        }

                        break;
                    case 1:
                        switch (e.Node.Parent.Name)
                        {
                            case "KoniecEmisji":
                                e.Node.Nodes.Clear();

                                comand.CommandText = "select top 20 NRW from dbo.NR where DATA_W > dateadd(day,-70,getDate()) AND tyt = @param";
                                conn.Open();
                                comand.Parameters.Clear();
                                comand.Parameters.AddWithValue("@param", e.Node.Name);
                                reader = comand.ExecuteReader();

                                while (reader.Read())
                                {
                                    node = new TreeNode(reader.GetValue(0).ToString());
                                    node.Name = reader.GetValue(0).ToString();
                                    e.Node.Nodes.Add(node);
                                }
                                conn.Close();
                                break;
                            case "ZatwierdzoneNiezaplacone":
                                DBBindings.dodajAgentowDoWezla(e.Node, e.Node.Name);
                                break;
                            case "ZmodyfikowaneDzisiaj":
                                DBBindings.dodajAgentowDoWezla(e.Node, e.Node.Name);
                                break;
                            case "DodaneDzisiaj":
                                DBBindings.dodajAgentowDoWezla(e.Node, e.Node.Name);
                                break;
                            case "AnalizaCenyModulu":
                                DBBindings.dodajAgencjeDoWezla(e.Node);
                                break;
                            default:
                                e.Node.Nodes.Clear();

                                comand.CommandText = "select distinct datepart(year,DATA_W) as rok from dbo.NR where TYT=@param order by rok desc";
                                conn.Open();
                                comand.Parameters.Clear();
                                comand.Parameters.AddWithValue("@param", e.Node.Name);
                                reader = comand.ExecuteReader();

                                while (reader.Read())
                                {
                                    node = new TreeNode(reader.GetValue(0).ToString());
                                    node.Name = reader.GetValue(0).ToString();

                                    for (int i = 1; i <= 12; i++)
                                    {
                                        TreeNode node2 = new TreeNode(i.ToString());
                                        node2.Name = i.ToString();
                                        node.Nodes.Add(node2);
                                    }

                                    e.Node.Nodes.Add(node);
                                }
                                conn.Close();
                                break;
                        }
                        break;
                    case 2:
                        switch (e.Node.Parent.Parent.Name)
                        {
                            case "AnalizaCenyModulu":
                                DBBindings.dodajAgentowDoWezla(e.Node, e.Node.Name);
                                break;
                            default:
                                break;
                        }
                        break;
                    default:
                        break;
                }
            }
        }

        private void fakturaButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;

                if (row["id_faktury"] != DBNull.Value)
                {
                    int idFaktury = Convert.ToInt32(row["id_faktury"]);
                    FactureViewer fv = new FactureViewer(idFaktury,true);
                    fv.ShowDialog();
                }
            }
            else {
                MessageBox.Show("Wybierz zamowienie");
            }
        }

        private void reklamaDataGridView_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            reklamyZestawienieBindingSource.CancelEdit();
        }

        /// <summary>
        /// Przechodzi do okna KLIENCI i wyświetla dane klienta związanego z zamówieniem.
        /// </summary>
        private void klientToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;

                int custID = Convert.ToInt32(row["CustomerId"]);

                ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).pokazKlienta(custID);

                this.Hide();

                ClientsForm.getClientsForm((MDIBazaReklam)this.MdiParent).Show();                

            }            
        }

        private void fakturaToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Convert.ToInt32(row["reklamaId"]);
                Facturer f = new Facturer(idRek);
                DialogResult result = f.ShowDialog();
                
                /*
                if (result == DialogResult.OK)
                {
                    //tu sie gdzies wywala
                    this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                    sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);                   
                } */     
            }
        }

        private void wplataToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Int32.Parse(row["reklamaId"].ToString());
                PaymentForm p = new PaymentForm(idRek);
                DialogResult result = p.ShowDialog();
                
                /*
                if (result == DialogResult.OK) {
                    this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                    sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                } 
                 */
            }
        }
        
        private void reklamaDataGridView_Leave(object sender, EventArgs e)
        {
            reklamaDataGridView.EndEdit();
        }

        private void kryteriumWyszukiwania_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                szukajToolStripButton.PerformClick();
            } 
        }

        private void wyczyscPolaToolStripButton_Click(object sender, EventArgs e)
        {
            rEKLAMADataSet.ReklamyZestawienie.Clear();

            symbolToolStripTextBox.Clear();
            rokToolStripTextBox.Clear();
            msToolStripTextBox.Clear();
            tytToolStripComboBox.SelectedIndex = -1;
            tytToolStripComboBox.Text = "";
            agencjaToolStripComboBox.SelectedIndex = -1;
            agencjaToolStripComboBox.Text = "";     
            agentToolStripComboBox.SelectedIndex = -1;
            agentToolStripComboBox.Text = "";
            typToolStripComboBox.SelectedIndex = -1;
            typToolStripComboBox.Text = "";
            
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["DRCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["FWCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["KZCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["PRCheckBox"]).Control).CheckState = CheckState.Indeterminate;
            ((CheckBox)((ToolStripControlHost)szukajToolStrip.Items["ZPCheckBox"]).Control).CheckState = CheckState.Indeterminate;
           
        }

        private void zamToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Int32.Parse(row["reklamaId"].ToString());
                
                OrderDetails.getOrderDetails().pokazSzczegolyZamowienia(idRek);
                DialogResult result = OrderDetails.getOrderDetails().ShowDialog();

                /*
                OrderDetails od = new OrderDetails();
                od.pokazSzczegolyZamowienia(idRek);
                DialogResult result = od.ShowDialog();*/
                /*
                if (result == DialogResult.OK)
                {
                    this.rEKLAMADataSet.ReklamyZestawienie.Clear();
                    sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                }*/
            }
        }

        private void pokazZamToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Convert.ToInt32(row["reklamaId"]);
                OrderViewer ov = new OrderViewer(idRek);

                this.Cursor = Cursors.Default;

                ov.ShowDialog();
            }
        }

        private void podgladToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;

                if (row["id_faktury"] != DBNull.Value)
                {
                    this.Cursor = Cursors.WaitCursor;

                    int idFaktury = Convert.ToInt32(row["id_faktury"]);

                    FactureViewer fv = new FactureViewer(idFaktury, true, 0);
                    fv.ShowDialog();

                    this.Cursor = Cursors.Default;                  
                }
                else {
                    MessageBox.Show("Nie wystawiono faktury");
                }
            }
        }

        private void generateNodes()
        {
            TreeNode node;
            /*
            node = new TreeNode("Tytuły");
            node.Name = "Tytuly";
            node.Nodes.Add(new TreeNode());

            treeView1.Nodes.Add(node);
            */

            if (User.getUser().St_handlowiec)
            {
                node = new TreeNode("Moje zamówienia");
                node.Name = "MojeZamowienia";
                node.Nodes.Add(new TreeNode());

                treeView1.Nodes.Add(node);
            }

            node = new TreeNode("Koniec emisji");
            node.Name = "KoniecEmisji";
            node.Nodes.Add(new TreeNode());

            treeView1.Nodes.Add(node);

            node = new TreeNode("Błędy");
            node.Name = "Bledy";
            treeView1.Nodes.Add(node);

            node = new TreeNode("Powtórzenia reklam");
            node.Name = "PowtorzeniaReklam";
            treeView1.Nodes["Bledy"].Nodes.Add(node);

            node = new TreeNode("Błędy w reklamach");
            node.Name = "BledyWreklamach";
            treeView1.Nodes["Bledy"].Nodes.Add(node);

            node = new TreeNode("Moduły");
            node.Name = "Moduly";
            treeView1.Nodes["Bledy"].Nodes.Add(node);


            if (User.getUser().St_kierownik)
            {
                node = new TreeNode("Analiza ceny modułu");
                node.Name = "AnalizaCenyModulu";
                treeView1.Nodes.Add(node);

                node = new TreeNode("Za tani 50%");
                node.Name = "ZaTani50";
                node.Nodes.Add(new TreeNode());
                treeView1.Nodes["AnalizaCenyModulu"].Nodes.Add(node);

                node = new TreeNode("Za tani 30%");
                node.Name = "ZaTani30";
                node.Nodes.Add(new TreeNode());
                treeView1.Nodes["AnalizaCenyModulu"].Nodes.Add(node);

                node = new TreeNode("Za drogi");
                node.Name = "ZaDrogi";
                node.Nodes.Add(new TreeNode());
                treeView1.Nodes["AnalizaCenyModulu"].Nodes.Add(node);
            }

            node = new TreeNode("Zatwierdzone-niezapłacone");
            node.Name = "ZatwierdzoneNiezaplacone";
            node.Nodes.Add(new TreeNode());
            treeView1.Nodes.Add(node);

            node = new TreeNode("Zmodyfikowane dzisiaj");
            node.Name = "ZmodyfikowaneDzisiaj";
            node.Nodes.Add(new TreeNode());
            treeView1.Nodes.Add(node);

            node = new TreeNode("Dodane dzisiaj");
            node.Name = "DodaneDzisiaj";
            node.Nodes.Add(new TreeNode());
            treeView1.Nodes.Add(node);

            /*
            node = new TreeNode("Zatwierdzone-niezafakturowane");
            node.Name = "ZatwierdzoneNiezafakturowane";
            node.Nodes.Add(new TreeNode());
             */
        }

        /// <summary>
        /// Widok standardowy kolumn - nieuzywane
        /// </summary>
       /*
        private void defaultColumns()
        {
            reklamaDataGridView.Columns["CENA_MODULU"].Visible = false;
            reklamaDataGridView.Columns["CENA_MIN"].Visible = false;
            reklamaDataGridView.Columns["CENA"].Visible = false;
            reklamaDataGridView.Columns["PROCENT_PROWIZJI"].Visible = false;

            reklamaDataGridView.Columns["netto"].Visible = false;
            reklamaDataGridView.Columns["brutto"].Visible = false;

            reklamaDataGridView.Columns["tYTUŁDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["TYP"].Visible = true;
            reklamaDataGridView.Columns["oDDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["emisjaDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["FirstName"].Visible = true;
            reklamaDataGridView.Columns["fAKTURANUMERDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["dATAOSTATNIEJMODYFIKACJIDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["dATAZAPŁATYDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zAPŁACONODataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["fAKTURAWYSTAWIONODataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zATWIERDZONODODRUKUDataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["wYSDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["sZERDataGridViewTextBoxColumn"].Visible = true;

            reklamaDataGridView.Columns["iDREKLAMYDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["mODTYPDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["rABATDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["kierzatwierdzilDataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zablokujprowizjeDataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["sYMBOLAKWIZYTORADataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["agencjaDataGridViewTextBoxColumn"].Visible = true;

        }
        */

        /// <summary>
        /// Kolumny z zatwierdzonych - niezapłaconych
        /// </summary>
        private void zatwierdzoneNiezaplaconeColumns()
        {
            reklamaDataGridView.Columns["CENA_MODULU"].Visible = false;
            reklamaDataGridView.Columns["CENA_MIN"].Visible = false;
            reklamaDataGridView.Columns["CENA"].Visible = false;
            reklamaDataGridView.Columns["PROCENT_PROWIZJI"].Visible = false;
            reklamaDataGridView.Columns["wYSDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["sZERDataGridViewTextBoxColumn"].Visible = true;

            reklamaDataGridView.Columns["tYTUŁDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["TYP"].Visible = true;
            reklamaDataGridView.Columns["oDDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["emisjaDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["FirstName"].Visible = true;
            reklamaDataGridView.Columns["fAKTURANUMERDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["dATAOSTATNIEJMODYFIKACJIDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["dATAZAPŁATYDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zAPŁACONODataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["fAKTURAWYSTAWIONODataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zATWIERDZONODODRUKUDataGridViewCheckBoxColumn"].Visible = true;

            reklamaDataGridView.Columns["iDREKLAMYDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["mODTYPDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["rABATDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["kierzatwierdzilDataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["zablokujprowizjeDataGridViewCheckBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["sYMBOLAKWIZYTORADataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["agencjaDataGridViewTextBoxColumn"].Visible = true;

            reklamaDataGridView.Columns["netto"].Visible = true;
            reklamaDataGridView.Columns["brutto"].Visible = true;

        }

        /// <summary>
        /// Kolumny z analizy ceny modułu
        /// </summary>
        private void analizaCenyModuluColumns()
        {
            reklamaDataGridView.Columns["CENA_MODULU"].Visible = true;
            reklamaDataGridView.Columns["CENA_MIN"].Visible = true;
            reklamaDataGridView.Columns["CENA"].Visible = true;
            reklamaDataGridView.Columns["PROCENT_PROWIZJI"].Visible = true;
            reklamaDataGridView.Columns["emisjaDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["TYP"].Visible = true;

            reklamaDataGridView.Columns["tYTUŁDataGridViewTextBoxColumn"].Visible = false;            
            reklamaDataGridView.Columns["oDDataGridViewTextBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["FirstName"].Visible = false;
            reklamaDataGridView.Columns["fAKTURANUMERDataGridViewTextBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["dATAOSTATNIEJMODYFIKACJIDataGridViewTextBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["dATAZAPŁATYDataGridViewTextBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["zAPŁACONODataGridViewCheckBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["fAKTURAWYSTAWIONODataGridViewCheckBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["zATWIERDZONODODRUKUDataGridViewCheckBoxColumn"].Visible = false;
            reklamaDataGridView.Columns["wYSDataGridViewTextBoxColumn"].Visible = true;
            reklamaDataGridView.Columns["sZERDataGridViewTextBoxColumn"].Visible = true;

            reklamaDataGridView.Columns["netto"].Visible = false;
            reklamaDataGridView.Columns["brutto"].Visible = false;
        }

        private void odswiezToolStripButton_Click(object sender, EventArgs e)
        {
            if (commandExecuted)
            {
                this.Cursor = Cursors.WaitCursor;

                rEKLAMADataSet.ReklamyZestawienie.Clear();
                sqlDataAdapter.Fill(this.rEKLAMADataSet.ReklamyZestawienie);
                reklamaDataGridView.Refresh();

                this.Cursor = Cursors.Default;
            }

        }

        private void reklamyZestawienieBindingSource_ListChanged(object sender, ListChangedEventArgs e)
        {
            podsumuj();
        }


        /// <summary>
        /// Podsumowuje brutto i netto z wyswietlonych zamowien
        /// </summary>
        private void podsumuj()
        {

            if (reklamyZestawienieBindingSource.List.Count != 0)
            {
                decimal brutto = Convert.ToDecimal(rEKLAMADataSet.ReklamyZestawienie.Compute("Sum(BRUTTO)", ""));
                decimal netto = Convert.ToDecimal(rEKLAMADataSet.ReklamyZestawienie.Compute("Sum(netto)", ""));

                sumaBruttoTextBox.Text = String.Format("{0:C}", brutto);
                sumaNettoTextBox.Text = String.Format("{0:C}", netto);

            }
            else
            {
                sumaBruttoTextBox.Clear();
                sumaNettoTextBox.Clear();
            }
        }

        private void drukujToolStripButton_Click(object sender, EventArgs e)
        {
            PrintDGV.Print_DataGridView(reklamaDataGridView,50);
        }

        private void zamProToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                int idRek = Int32.Parse(row["reklamaId"].ToString());
                ProjectForm pf = new ProjectForm(idRek);
                pf.ShowDialog();
            }          
        }

        private void OrdersForm_Shown(object sender, EventArgs e)
        {
            if (User.getUser().St_kierownik)
            {
                agencjaToolStripComboBox.Text = User.getUser().SymbolAgencji;
            }
            else if (User.getUser().St_handlowiec | User.getUser().St_subhandlowiec)
            {
                agentToolStripComboBox.Text = User.getUser().Login;
            }
          
        }

        private void OrdersForm_Leave(object sender, EventArgs e)
        {
           
        }

        private void podgladJPGToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.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");

                this.Cursor = Cursors.Default;

                if (File.Exists(sciezka))
                {
                    System.Diagnostics.Process.Start(sciezka);
                }
                else
                {
                    MessageBox.Show("Nie znaleziono pliku:" + sciezka);
                }
            }
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.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");

                this.Cursor = Cursors.Default;

                if (File.Exists(sciezka))
                {
                    System.Diagnostics.Process.Start(sciezka);
                }
                else
                {
                    MessageBox.Show("Nie znaleziono pliku: " + sciezka);
                }

            }
        }
    
        private void excelToolStripButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            ExcelHandler ex = new ExcelHandler();
            ex.exportToExcel(reklamaDataGridView);

            this.Cursor = Cursors.Default;
        }

        private void zamowieniaToolStripButton_Click(object sender, EventArgs e)
        {
            if (reklamyZestawienieBindingSource.Current != null)
            {
                this.Cursor = Cursors.WaitCursor;

                DataRowView row = (DataRowView)reklamyZestawienieBindingSource.Current;
                REKLAMADataSet.ReklamyZestawienieRow rek = (REKLAMADataSet.ReklamyZestawienieRow)
                    row.Row;
                if (!rek.IsidZamowieniaNull())
                {
                    ZamowieniaForm zam = new ZamowieniaForm(rek.CustomerID, rek.idZamowienia);
                    zam.ShowDialog();
                }
                else
                {
                    ZamowieniaForm zam = new ZamowieniaForm(rek.CustomerID);
                    zam.ShowDialog();
                }

                this.Cursor = Cursors.Default;
            }
        }
    }
}