using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace autodoprava
{
///
/// MainForm - trida vytvari hlavni formular pro zadavani objednavek do databaze
///
public partial class MainForm
{
// retezek pro pripojeni k databazi
private string connectionString = "server=160.217.96.3;database=krhanj00;uid=student;pwd=student";
// spojeni
public static SqlConnection mySqlConnection;
// pokud je vstup validni
private bool validni = false;
// pro vsechny kontrolky, jestli jsou validni
private bool[] validniKontrolky = new bool[7];
// rika se kterou objednavkou se prave pracuje
private string beznaObjednavka;
// seznamy
private SortedDictionary seznamObjednavek = new SortedDictionary();
private SortedDictionary seznamZakazniku = new SortedDictionary();
private SortedDictionary seznamAut = new SortedDictionary();
private SortedDictionary seznamDispeceru = new SortedDictionary();
// promenne
private int id_objednavka;
private int zakaznik;
private string odkud;
private string kam;
private string datumZadani;
private string typZbozi;
private string cena;
private string auto;
private string dispecer;
///
/// Main() - vstupni metoda programu
///
/// parametry prikazoveho radku
[STAThread]
public static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
///
/// MainForm() - konstruktor s inicializaci formulare
///
public MainForm()
{
InitializeComponent();
// zakazeme tlacitko OK
b_akce.Enabled = false;
// rekneme ze jsou vsechny kontrolky nevalidni
for(int i = 0; i < validniKontrolky.Length; i++)
{
validniKontrolky[i] = false;
}
// vycitime hlavni formular
VycistitObjednavku();
// informujeme uzivatele
Informovat("Vítejte ... Připojte se k databazi (Menu - Soubor - Připojit)");
}
///
/// NacistObjednavky() - metoda nacte cisla objednavek do listBoxu
///
public void NacistObjednavky()
{
// prikaz SQL
string s = "SELECT id_objednavka FROM dbo.objednavka ORDER BY id_objednavka";
// vycistime seznam i listBox
seznamObjednavek.Clear();
listBox.Items.Clear();
try
{
// spojeni
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
// pro vsechny nalezy
for(int i = 0; mySqlDataReader.Read(); i++)
{
// vyplnime seznamy
seznamObjednavek.Add(i,(int)mySqlDataReader["id_objednavka"]);
listBox.Items.Add(mySqlDataReader["id_objednavka"]);
}
// uzavreme spojeni
mySqlDataReader.Close();
mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování");
}
// zmenime tlacitko
b_akce.Text = "Vložit";
}
///
/// ZobrazitObjednavku() - vyplni kontrolky udaji o objednavce, na kterou jsme klikli v listBoxu
///
/// cislo objednavky
/// vraci jestli bylo nacteni objednavky uspesne
public bool ZobrazitObjednavku(string cislo)
{
// vycistime si kontrolky
VycistitObjednavku();
try
{
// vytvorime prikaz
int id = Int32.Parse(cislo);
string s = "SELECT id_objednavka,zakaznik,odkud,kam,datum_zadani,typ_zbozi,cena,auto,dispecer FROM dbo.objednavka WHERE id_objednavka=" + id;
// spojeni
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
// vsechna data predame kontrolkam
while(mySqlDataReader.Read())
{
tb_cisloObjednavky.Text = mySqlDataReader["id_objednavka"].ToString();
// jelikoz nechceme zobrazit id ale opravdovy nazev, tak pak udelame toto:
cb_zakaznik.SelectedIndex = -1;
for(int i = 0; i < seznamZakazniku.Count; i++)
{
if(seznamZakazniku[i] == (int)mySqlDataReader["zakaznik"])
{
cb_zakaznik.SelectedIndex = i;
}
}
// jinak:
//cb_zakaznik.Text = mySqlDataReader["zakaznik"].ToString();
tb_odkud.Text = mySqlDataReader["odkud"].ToString();
tb_kam.Text = mySqlDataReader["kam"].ToString();
dtp_datumZadani.Text = mySqlDataReader["datum_zadani"].ToString();
cb_typZbozi.Text = mySqlDataReader["typ_zbozi"].ToString();
tb_cena.Text = mySqlDataReader["cena"].ToString();
cb_auto.SelectedIndex = -1;
for(int i = 0; i < seznamAut.Count; i++)
{
if(seznamAut[i] == mySqlDataReader["auto"].ToString())
{
cb_auto.SelectedIndex = i;
}
}
//cb_auto.Text = mySqlDataReader["auto"].ToString();
cb_dispecer.SelectedIndex = -1;
for(int i = 0; i < seznamDispeceru.Count; i++)
{
if(seznamDispeceru[i] == mySqlDataReader["dispecer"].ToString())
{
cb_dispecer.SelectedIndex = i;
}
}
//cb_dispecer.Text = mySqlDataReader["dispecer"].ToString();
}
// uzavreme spojeni
mySqlDataReader.Close();
mySqlConnection.Close();
// vratime true
return true;
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se načtení objednávky!","Varování");
// pokud nejaka chyba, vracime false
return false;
}
}
///
/// VycistitObjednavku() - nastaveni kontrolek na defaultni hodnoty
///
public void VycistitObjednavku()
{
tb_cisloObjednavky.Text = "";
cb_zakaznik.Text = "";
tb_odkud.Text = "";
tb_kam.Text = "";
dtp_datumZadani.Text = "";
cb_typZbozi.Text = cb_typZbozi.Items[0].ToString();
// typZbozi je jiz nasteven validni
validniKontrolky[3] = true;
tb_cena.Text = "0,00";
// cena je jiz nastevena validni
validniKontrolky[4] = true;
cb_auto.Text = "";
cb_dispecer.Text = "";
errorProviderObjednavka.Clear();
}
///
/// NacistZakazniky() - nacte zakazniky do kontrolky
///
public void NacistZakazniky()
{
string s = "SELECT id_zakaznik,nazev FROM dbo.zakaznik ORDER BY nazev";
seznamZakazniku.Clear();
cb_zakaznik.Items.Clear();
try
{
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
for(int i = 0; mySqlDataReader.Read(); i++)
{
seznamZakazniku.Add(i,(int)mySqlDataReader["id_zakaznik"]);
cb_zakaznik.Items.Add(mySqlDataReader["nazev"]);
}
mySqlDataReader.Close();
mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování");
}
}
///
/// NacistAuta() - nacte auta do kontrolky
///
public void NacistAuta()
{
string s = "SELECT spz,typ FROM dbo.auto ORDER BY spz";
seznamAut.Clear();
cb_auto.Items.Clear();
try
{
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
for(int i = 0; mySqlDataReader.Read(); i++)
{
seznamAut.Add(i, mySqlDataReader["spz"].ToString());
cb_auto.Items.Add(mySqlDataReader["spz"] + " " + mySqlDataReader["typ"]);
}
mySqlDataReader.Close();
mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování");
}
}
///
/// NacistDispecery() - nacte dispecery do kontrolky
///
public void NacistDispecery()
{
string s = "SELECT rodne_cislo,jmeno,prijmeni FROM dbo.zamestnanec WHERE profese='dispečer' ORDER BY prijmeni";
seznamDispeceru.Clear();
cb_dispecer.Items.Clear();
try
{
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
for(int i = 0; mySqlDataReader.Read(); i++)
{
seznamDispeceru.Add(i,mySqlDataReader["rodne_cislo"].ToString());
cb_dispecer.Items.Add(mySqlDataReader["jmeno"] + " " + mySqlDataReader["prijmeni"] + " " + mySqlDataReader["rodne_cislo"]);
}
mySqlDataReader.Close();
mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se načtení záznamů z databáze!","Varování");
}
}
///
/// OdstranitZaznam() - metoda se stara o odstranovani vybranych zaznamu
///
public void OdstranitZaznam(string prikazSQL)
{
if(MessageBox.Show("Opravdu chcete smazat tento záznam?","Varování", MessageBoxButtons.OKCancel)==DialogResult.OK)
{
try
{
SqlCommand mySqlCommand = MainForm.mySqlConnection.CreateCommand();
mySqlCommand.CommandText = prikazSQL;
MainForm.mySqlConnection.Open();
mySqlCommand.ExecuteNonQuery();
MainForm.mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se smazání záznamu z databáze!","Varování");
}
}
}
#region tlacitka Storno x OK
///
/// B_akceClick() - po kliknuti na Vlozit ci Editovat
///
/// objekt
/// udalost
void B_akceClick(object sender, System.EventArgs e)
{
// predani hodnot z kontrolek promennym
zakaznik = seznamZakazniku[cb_zakaznik.SelectedIndex];
odkud = tb_odkud.Text;
kam = tb_kam.Text;
datumZadani = dtp_datumZadani.Value.Day +"."+ dtp_datumZadani.Value.Month +"."+ dtp_datumZadani.Value.Year;
typZbozi = cb_typZbozi.Text;
cena = tb_cena.Text.Replace(',','.');
auto = seznamAut[cb_auto.SelectedIndex];
dispecer = seznamDispeceru[cb_dispecer.SelectedIndex];
// jestli jde o vlozeni nebo editaci
string s = "";
if(b_akce.Text == "Vložit")
{
s = "INSERT INTO dbo.objednavka (zakaznik, odkud, kam, datum_zadani, typ_zbozi, cena, auto, dispecer) VALUES " +
"("+zakaznik+",'"+odkud+"','"+kam+"','"+datumZadani+"','"+typZbozi+"',"+cena+",'"+auto+"','"+dispecer+"')";
}
if(b_akce.Text == "Editovat")
{
id_objednavka = Int32.Parse(tb_cisloObjednavky.Text);
s = "UPDATE dbo.objednavka SET zakaznik="+zakaznik+", odkud='"+odkud+"', kam='"+kam+"', datum_zadani='"+datumZadani+"', typ_zbozi='"+typZbozi+"', cena="+cena+", auto='"+auto+"', dispecer='"+dispecer+"' WHERE id_objednavka="+id_objednavka;
}
try
{
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
mySqlCommand.CommandText = s;
mySqlConnection.Open();
mySqlCommand.ExecuteNonQuery();
mySqlConnection.Close();
}
catch
{
mySqlConnection.Close();
MessageBox.Show("Nezdařilo se vložení záznamu do databáze!","Varování");
}
// nastavime vse jako na zacatku
VycistitObjednavku();
b_akce.Text = "Vložit";
b_akce.Enabled = false;
NacistObjednavky();
}
///
/// B_stornoClick() - po kliknuti na Storno
///
/// objekt
/// udalost
void B_stornoClick(object sender, System.EventArgs e)
{
VycistitObjednavku();
listBox.SelectedIndex = -1;
b_akce.Text = "Vložit";
b_akce.Enabled = false;
}
#endregion
#region tlacitka Pridat x Odstranit
///
/// B_pridatZakaznikaClick() - po kliknuti na Pridat (u zakaznika)
///
/// objekt
/// udalost
void B_pridatZakaznikaClick(object sender, System.EventArgs e)
{
new ZakaznikForm().ShowDialog();
NacistZakazniky();
}
///
/// B_pridatAutoClick() - po kliknuti na Pridat (u auta)
///
/// objekt
/// udalost
void B_pridatAutoClick(object sender, System.EventArgs e)
{
new AutoForm().ShowDialog();
NacistAuta();
}
///
/// B_pridatDispeceraClick() - po kliknuti na Pridat (u dispecera)
///
/// objekt
/// udalost
void B_pridatDispeceraClick(object sender, System.EventArgs e)
{
new ZamestnanecForm().ShowDialog();
NacistDispecery();
}
///
/// B_odstranitZakaznikaClick() - po kliknuti na odstranit (u zakaznika)
///
/// objekt
/// udalost
void B_odstranitZakaznikaClick(object sender, System.EventArgs e)
{
if(cb_zakaznik.Text != "")
{
try
{
int podminka = seznamZakazniku[cb_zakaznik.SelectedIndex];
string s = "DELETE FROM dbo.zakaznik WHERE id_zkaznik="+podminka;
OdstranitZaznam(s);
NacistZakazniky();
cb_zakaznik.Text = "";
}
catch
{
MessageBox.Show("Název musí být vybrán ze seznamu!","Varování");
}
}
else
{
MessageBox.Show("Není vybrán žádný záznám!","Varování");
}
}
///
/// B_odstranitAutoClick() - po kliknuti na odstranit (u auta)
///
/// objekt
/// udalost
void B_odstranitAutoClick(object sender, System.EventArgs e)
{
if(cb_auto.Text != "")
{
try
{
string podminka = seznamAut[cb_auto.SelectedIndex];
string s = "DELETE FROM dbo.auto WHERE spz='"+podminka+"'";
OdstranitZaznam(s);
NacistAuta();
cb_auto.Text = "";
}
catch
{
MessageBox.Show("Název musí být vybrán ze seznamu!","Varování");
}
}
else
{
MessageBox.Show("Není vybrán žádný záznám!","Varování");
}
}
///
/// B_odstranitDispeceraClick() - po kliknuti na odstranit (u dispecera)
///
/// objekt
/// udalost
void B_odstranitDispeceraClick(object sender, System.EventArgs e)
{
if(cb_dispecer.Text != "")
{
try
{
string podminka = seznamDispeceru[cb_zakaznik.SelectedIndex];
string s = "DELETE FROM dbo.zamestnanec WHERE rodne_cislo='"+podminka+"'";
OdstranitZaznam(s);
NacistDispecery();
cb_dispecer.Text = "";
}
catch
{
MessageBox.Show("Název musí být vybrán ze seznamu!","Varování");
}
}
else
{
MessageBox.Show("Není vybrán žádný záznám!","Varování");
}
}
#endregion
#region udalosti na kontrolkach
///
/// ListBoxClick() - po kliknuti na listBox
///
/// objekt
/// udalost
void ListBoxClick(object sender, System.EventArgs e)
{
if(listBox.SelectedItem != null)
{
beznaObjednavka = listBox.SelectedItem.ToString();
if(ZobrazitObjednavku(beznaObjednavka))
{
string s = "Objednávka " + beznaObjednavka + " byla načtena v pořádku ...";
Informovat(s);
b_akce.Text = "Editovat";
b_akce.Enabled = false;
for(int i = 0; i < validniKontrolky.Length; i++)
{
validniKontrolky[i] = true;
}
}
else
{
string s = "Objednávku " + beznaObjednavka + " se nepodařilo správně načíst";
Varovat(s);
}
}
}
#endregion
#region menu
///
/// MenuSouborKonecClick() - po kliknuti na konec
///
/// objekt
/// udalost
void MenuSouborKonecClick(object sender, System.EventArgs e)
{
this.Close();
}
///
/// MenuSouborPripojitClick() - po kliknuti na Pripojit
///
/// objekt
/// udalost
void MenuSouborPripojitClick(object sender, System.EventArgs e)
{
try
{
mySqlConnection = new SqlConnection(connectionString);
mySqlConnection.Open();
if(mySqlConnection.State == ConnectionState.Open)
{
Informovat("Připojení proběhlo v pořádku (" + mySqlConnection.ConnectionString + ")");
}
mySqlConnection.Close();
}
catch
{
Varovat("Chyba při navazování spojení");
}
NacistZakazniky();
NacistAuta();
NacistDispecery();
NacistObjednavky();
}
#endregion
#region status - vypisy pro uzivatele
///
/// Varovat() zmeni vlastnost Text pro kontrolku status
///
/// varovani pro uzivatele
public void Varovat(string s)
{
status.ForeColor = Color.Red;
status.Text = " ! ! ! " + s + " ! ! ! ";
}
///
/// Informovat() zmeni vlastnost Text pro kontrolku status
///
/// informace pro uzivatele
public void Informovat(string s)
{
status.ForeColor = Color.Blue;
status.Text = s;
}
#endregion
#region validace
void Tb_odkudValidated(object sender, System.EventArgs e)
{
string s = ((TextBox)sender).Text;
switch(((TextBox)sender).Name)
{
case "tb_odkud":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[1] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[1] = true;
}
break;
case "tb_kam":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[2] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[2] = true;
}
break;
case "tb_cena":
try
{
decimal i = decimal.Parse(s);
if(i < 100000000)
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[4] = true;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"Musí být menší než 100 000 000!");
validniKontrolky[4] = false;
}
}
catch
{
this.errorProviderObjednavka.SetError((Control)sender,"Musí být číslo!");
validniKontrolky[4] = false;
}
break;
}
validni = true;
foreach(bool b in validniKontrolky)
{
if(b == false)
{
validni = false;
}
}
b_akce.Enabled = validni;
}
void Cb_zakaznikValidated(object sender, System.EventArgs e)
{
string s = ((ComboBox)sender).Text;
switch(((ComboBox)sender).Name)
{
case "cb_zakaznik":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[0] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[0] = true;
}
break;
case "cb_typZbozi":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[3] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[3] = true;
}
break;
case "cb_auto":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[5] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[5] = true;
}
break;
case "cb_dispecer":
if(s == "")
{
this.errorProviderObjednavka.SetError((Control)sender,"Nutno vyplnit!");
validniKontrolky[6] = false;
}
else
{
this.errorProviderObjednavka.SetError((Control)sender,"");
validniKontrolky[6] = true;
}
break;
}
validni = true;
foreach(bool b in validniKontrolky)
{
if(b == false)
{
validni = false;
}
}
b_akce.Enabled = validni;
}
#endregion
#region kontextove menu
///
/// SmazatToolStripMenuItemClick() - po kliknuti na smazat v kontextovem menu
///
/// objekt
/// udalost
void SmazatToolStripMenuItemClick(object sender, System.EventArgs e)
{
if(listBox.SelectedItem != null)
{
try
{
int podminka = Int32.Parse(listBox.SelectedItem.ToString());
string s = "DELETE FROM dbo.objednavka WHERE id_objednavka="+podminka;
OdstranitZaznam(s);
NacistObjednavky();
}
catch
{
MessageBox.Show("Chyba pri prevodu cisla objednavky!","Varování");
}
}
}
#endregion
}
}