using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Sql;
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 LogoWReklamieForm : Form
    {

		#region Fields (1) 

        private int customerId;
        private int reklamaId;

        Baza_Reklam.REKLAMADataSetTableAdapters.REKLAMATableAdapter reklamaAdapter = new Baza_Reklam.REKLAMADataSetTableAdapters.REKLAMATableAdapter();

		#endregion Fields 

		#region Constructors (1) 

        public LogoWReklamieForm(int reklamaId)
        {
            InitializeComponent();

            this.reklamaId = reklamaId;
            this.customerId = DbUtils.customerId(reklamaId);
            
            this.kLIENCI_INTERNET_LOGOTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
            this.reklamaAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
        }

		#endregion Constructors 

		#region Methods (5) 


		// Private Methods (5) 

        private bool CheckImageSize()
        {
            Image image = Image.FromFile(openFileDialog1.FileName);
            if (image.Size.Height > 75 || image.Size.Width > 150)
            {
                MessageBox.Show("Logo ma nieodpowiednie wymiary (150 x 75)");
                return false;
            }

             return true;
        }

        private void DodajLogoToolStripButton_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {

                if (!CheckImageSize())
                {
                    return;
                }

                kLIENCI_INTERNET_LOGOTableAdapter.Insert(customerId,openFileDialog1.SafeFileName,"",ImageToBytes(openFileDialog1.FileName));

                this.kLIENCI_INTERNET_LOGOTableAdapter.FillBy(this.bAZA_REKLAMDataSet.KLIENCI_INTERNET_LOGO, customerId);
            }
        }

        private byte[] ImageToBytes(string  fileName)
        {
            FileInfo fInfo = new FileInfo(fileName);

            long bytesNumber = fInfo.Length;

            FileStream stream = new FileStream(fileName, FileMode.Open,FileAccess.Read);
            BinaryReader reader = new BinaryReader(stream);

            byte[] byteArray = reader.ReadBytes((int)bytesNumber);

            reader.Close();
            stream.Close();

            return byteArray;
        }

        private void ImageFromDB(int idLoga)
        {

            Byte[] byteBLOBData = new Byte[0];

            string sqlText = "SELECT logo FROM KLIENCI_INTERNET_LOGO WHERE id = " + idLoga;

            SqlConnection connection = new SqlConnection(ConnString.getConnString().Value);
            SqlCommand command = new SqlCommand(sqlText, connection);

            connection.Open();
            SqlDataReader dr = command.ExecuteReader();

            if (dr.Read())
            {
                byteBLOBData = (Byte[])dr.GetValue(0);
            }

            connection.Close();
            MemoryStream stmBLOBData = new MemoryStream(byteBLOBData);
            pictureBox1.Image = Image.FromStream(stmBLOBData);
            
            stmBLOBData.Close();    
         
        }

        private void LogaKlientowForm_Load(object sender, EventArgs e)
        {
            this.kLIENCI_INTERNET_LOGOTableAdapter.FillBy(this.bAZA_REKLAMDataSet.KLIENCI_INTERNET_LOGO,customerId);

            //int id = DbUtils.logoId(reklamaId);


            REKLAMADataSet.REKLAMARow row = reklamaAdapter.GetDataByReklamaId(reklamaId)[0];


            if (row.logo != false)
            {
                ImageFromDB(row.logoID);
            }
            
        }


		#endregion Methods 

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (kLIENCI_INTERNET_LOGOBindingSource.Current != null)
            {
                DataRowView logoRow = (DataRowView)kLIENCI_INTERNET_LOGOBindingSource.Current;

                REKLAMADataSet.REKLAMARow row = reklamaAdapter.GetDataByReklamaId(reklamaId)[0];

                row.logo = true;
                row.logoID = Convert.ToInt32(logoRow["ID"]);

                reklamaAdapter.Update(row);

                ImageFromDB(row.logoID);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

         
            REKLAMADataSet.REKLAMARow row = reklamaAdapter.GetDataByReklamaId(reklamaId)[0];

            row.logo = false;
           // row.logoID = DBNull.Value;

            reklamaAdapter.Update(row);

            pictureBox1.Image = null;
        }


    }
}