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 BazaZamowien.Classes;
using BazaZamowien.PREMIEDataSetTableAdapters;

namespace BazaZamowien
{
    
    public partial class AdminFormPremie : Form
    {
        UsersTableAdapter usersAdapter = new UsersTableAdapter();
        GrupyTableAdapter grupyAdapter = new GrupyTableAdapter();
        GrupaDzialTableAdapter grupyDzialAdapter = new GrupaDzialTableAdapter();
        DzialyTableAdapter dzialAdapter = new DzialyTableAdapter();
        
        public AdminFormPremie()
        {
            InitializeComponent();

            usersAdapter.Connection.ConnectionString = ConnString.getConnString().PremieConnStr;
            grupyAdapter.Connection.ConnectionString = ConnString.getConnString().PremieConnStr;
            grupyDzialAdapter.Connection.ConnectionString = ConnString.getConnString().PremieConnStr;
            dzialAdapter.Connection.ConnectionString = ConnString.getConnString().PremieConnStr;
        }

        private void AdminFormPremie_Load(object sender, EventArgs e)
        {
            dzialyWGrupieListBox.DisplayMember = "Dzial";
            dzialyWGrupieListBox.ValueMember = "IDE";

            grupyListBox.SelectedValueChanged += new System.EventHandler(this.grupyListBox_SelectedValueChanged);

            usersListBox.DisplayMember = "login";
            usersListBox.ValueMember = "IDEPracownik";
            usersListBox.DataSource = usersAdapter.GetData();

            grupyListBox.DisplayMember = "NazwaGrupy";
            grupyListBox.ValueMember = "IDE";
            grupyListBox.DataSource = grupyAdapter.GetData();

            dzialyListBox.DisplayMember = "Dzial";
            dzialyListBox.ValueMember = "IDE";            
            dzialyListBox.DataSource = dzialAdapter.GetData();
            
        }

        private void edytujUzytkownikaButton_Click(object sender, EventArgs e)
        {
            if (usersListBox.SelectedValue != null)
            {
                int ide = Convert.ToInt32(usersListBox.SelectedValue);
                UserAddFormPremie userAddFromPremie = new UserAddFormPremie(ide);
                userAddFromPremie.ShowDialog();
            }
        }

        private void dodajUzytkownikaButton_Click(object sender, EventArgs e)
        {
            UserAddFormPremie userAddFromPremie = new UserAddFormPremie(0);
            userAddFromPremie.ShowDialog();
        }

        private void grupyListBox_SelectedValueChanged(object sender, EventArgs e)
        {
            if (grupyListBox.SelectedValue != null)
            {
                int IDEgrupy = Convert.ToInt32(grupyListBox.SelectedValue);
                dzialyWGrupieListBox.DataSource = dzialAdapter.GetDataByIDEGrupy(IDEgrupy);
            }
        }

        private void dodajGrupeButton_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                try
                {
                    grupyAdapter.Insert(textBox1.Text);
                    grupyListBox.DataSource = grupyAdapter.GetData();
                }
                catch (SqlException e1)
                {
                    if (e1.Number == 2627)
                    {
                        MessageBox.Show("Istnieje już grupa o takiej nazwie");
                    }
                }

            }
        }

        private void usunGrupeButton_Click(object sender, EventArgs e)
        {
            if (grupyListBox.SelectedValue != null)
            {
                int IDEgrupy = Convert.ToInt32(grupyListBox.SelectedValue);

                if (PremieUtils.iloscDzialowWGrupie(IDEgrupy) == 0 && PremieUtils.iloscUzytkownikowWGrupie(IDEgrupy)==0 )
                {
                    grupyAdapter.Delete(IDEgrupy);
                    grupyListBox.DataSource = grupyAdapter.GetData();
                }
                else
                {
                    MessageBox.Show("Nie można usunąć grupy do której przypisano użytkowników lub działy.");
                }
            }

        }

        private void dodajDzialDoGrupyButton_Click(object sender, EventArgs e)
        {
            if ((grupyListBox.SelectedValue != null) & (dzialyListBox.SelectedValue != null))
            {
                try
                {
                    int IDEGrupy = Convert.ToInt32(grupyListBox.SelectedValue);
                    int IDEDzialu = Convert.ToInt32(dzialyListBox.SelectedValue);
                    grupyDzialAdapter.Insert(IDEGrupy, IDEDzialu);
                    dzialyWGrupieListBox.DataSource = dzialAdapter.GetDataByIDEGrupy(IDEGrupy);
                }
                catch (SqlException e1)
                {
                    if (e1.Number == 2627)
                    {
                        MessageBox.Show("Grupie już przydzielono ten dział");
                    }
                }
            }
        }

        private void usunDzialZGrupyButton_Click(object sender, EventArgs e)
        {
            if ((grupyListBox.SelectedValue != null) & (dzialyWGrupieListBox.SelectedValue != null))
            {
                try
                {
                    int IDEGrupy = Convert.ToInt32(grupyListBox.SelectedValue);
                    int IDEDzialu = Convert.ToInt32(dzialyWGrupieListBox.SelectedValue);
                    grupyDzialAdapter.Delete(IDEGrupy, IDEDzialu);
                    dzialyWGrupieListBox.DataSource = dzialAdapter.GetDataByIDEGrupy(IDEGrupy);
                }
                catch (SqlException e1)
                {
                }
            }
        }

    }
}