private void button1_Click(object sender, EventArgs e)
        {
            List <Automobil> automobili = RadSaDatotekom.Procitaj <Automobil>("automobili.bin");

            //ako se podaci iz comboboxova poklapaju i automobila iz liste, dodajemo id vrednost automobilu
            for (int i = 0; i < automobili.Count; i++)
            {
                if (automobili[i].Marka == comboBox1.Text && automobili[i].Model == comboBox2.Text && automobili[i].Godiste == Convert.ToInt32(comboBox3.Text) && automobili[i].Kubikaza == Convert.ToInt32(comboBox4.Text) && automobili[i].Karoserija == comboBox5.Text && automobili[i].BrojVrata == Convert.ToInt32(comboBox6.Text) && automobili[i].Gorivo == comboBox7.Text && automobili[i].Pogon == comboBox8.Text && automobili[i].VrstaMenjaca == comboBox9.Text)
                {
                    a.Id = automobili[i].Id;
                }
            }
            textBox1.Text = "";
            bool inicijalizuj = true;

            //proveramo da li su sva polja popunjena
            foreach (Control c in this.Controls)
            {
                if (c.Text == "" && c is ComboBox)
                {
                    MessageBox.Show("Niste popunili sva polja.");
                    inicijalizuj = false;
                    break;
                }
            }

            //ako su popunjena sva polja
            if (inicijalizuj)
            {
                //pravi se novi auto
                Automobil auto = new Automobil(a.Id, comboBox1.Text, comboBox2.Text, Convert.ToInt32(comboBox3.Text), Convert.ToInt32(comboBox4.Text), comboBox9.Text, comboBox7.Text, comboBox8.Text, comboBox5.Text, Convert.ToInt32(comboBox6.Text));
                try //hvata se izuzetak, koji nastaje ukoliko neko promeni tekst u comboboxu
                {
                    //funkcija inicijalizuj auto dobija kao argument napravljeni auto
                    this.inicijalizacijaAutomobila(auto);
                }
                catch (Exception exc)
                {
                    MessageBox.Show("Uneti podaci nisu tacni.");
                }

                //funkcija koja ispisuje slobodne termine
                this.ispisiDatume();
            }
        }
        //BRISE SE STARI AUTO, A DODAJE SE NOVI
        private void button4_Click(object sender, EventArgs e)
        {
            List <Automobil> auta = RadSaDatotekom.Procitaj <Automobil>("automobili.bin");
            int rowIndex          = dataGridView1.CurrentCell.RowIndex;

            for (int i = 0; i < auta.Count; i++)
            {
                if (auta[i].Id == int.Parse(dataGridView1.Rows[rowIndex].Cells[0].Value.ToString()))
                {
                    Automobil autoPom = new Automobil(auta[i].Id, textBox2.Text, textBox3.Text, int.Parse(textBox4.Text), int.Parse(textBox5.Text), comboBox1.Text, comboBox2.Text, comboBox3.Text, comboBox4.Text, int.Parse(comboBox5.Text));
                    auta.RemoveAt(i);
                    auta.Insert(i, autoPom);
                }
            }
            RadSaDatotekom.Upisi(auta, "automobili.bin");
            MessageBox.Show("Automobil je uspesno izmenjen!");
            button4.Visible = false;
            this.AdminDodavanjeAutomobila_Load(this, e);
        }
        private void inicijalizacijaAutomobila(Automobil auto)
        {
            //citanje datoteke automobili.bin
            List <Automobil> auta      = RadSaDatotekom.Procitaj <Automobil>("automobili.bin");
            List <Automobil> autaIspis = new List <Automobil>();

            for (int i = 0; i < auta.Count; i++)
            { //prolazak kroz auta, ako se auto poklapa sa nekim iz liste, dodajemo ga u listu
                if (auta[i].Id == auto.Id)
                {
                    autaIspis.Add(auta[i]);
                }
            }
            if (autaIspis.Count == 1)
            {
                this.a = autaIspis[0]; //ako postoji samo jedno takvo auto, a inicijalizujemo njime.
            }
            else
            { //ako ih postoji vise, inicijalizujemo ih nekim od ponudjenih, jer su podaci potpuno isti
                Random rnd   = new Random();
                int    rndBr = rnd.Next(0, auta.Count);
                this.a = autaIspis[rndBr];
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //provere
            bool unetoSve = true;

            if (textBox2.Text.Length < 1)
            {
                MessageBox.Show("Niste uneli marku!");
                textBox2.BackColor = Color.Red;
                unetoSve           = false;
            }
            else if (!System.Text.RegularExpressions.Regex.IsMatch(textBox2.Text, @"^[a-zA-Z]+$"))
            {
                MessageBox.Show("Morate uneti samo karaktere kod marke automobila!");
                unetoSve = false;
            }


            if (textBox3.Text.Length < 1)
            {
                MessageBox.Show("Niste uneli model!");
                textBox3.BackColor = Color.Red;
                unetoSve           = false;
            }



            if (textBox4.Text.Length < 1)
            {
                MessageBox.Show("Niste uneli godiste automobila!");
                textBox4.BackColor = Color.Red;
                unetoSve           = false;
            }
            else if (!System.Text.RegularExpressions.Regex.IsMatch(textBox4.Text, "^[0-9]*$"))
            {
                MessageBox.Show("Godiste mora biti celi broj!");
                unetoSve = false;
            }
            else if (System.Text.RegularExpressions.Regex.IsMatch(textBox4.Text, "^[0-9]*$"))
            {
                if (Int32.Parse(textBox4.Text) <= 1950)
                {
                    MessageBox.Show("Ne koristimo automobile starije od 1950 godista!");
                    unetoSve = false;
                }
                else if (Int32.Parse(textBox4.Text) > 2019)
                {
                    MessageBox.Show("Ne mozete dodati automobil koji jos nije proizveden!");
                    unetoSve = false;
                }
            }



            if (textBox5.Text.Length < 1)
            {
                MessageBox.Show("Niste uneli kubikazu!");
                textBox5.BackColor = Color.Red;
                unetoSve           = false;
            }
            else if (!System.Text.RegularExpressions.Regex.IsMatch(textBox5.Text, "^[0-9]*$"))
            {
                MessageBox.Show("Kubikaza mora biti celi broj!");
                unetoSve = false;
            }
            else if (System.Text.RegularExpressions.Regex.IsMatch(textBox5.Text, "^[0-9]*$"))
            {
                if (Int32.Parse(textBox5.Text) < 1200)
                {
                    MessageBox.Show("Ne primamo automobile ispod 1200 kubika!");
                    unetoSve = false;
                }
                else if (Int32.Parse(textBox5.Text) > 5000)
                {
                    MessageBox.Show("Ne primamo automobile sa vise od 5000 kubika!");
                    unetoSve = false;
                }
            }



            //ako je sve uneto kako treba
            if (unetoSve)
            {
                List <Automobil> automobili = RadSaDatotekom.Procitaj <Automobil>("automobili.bin");
                int maxID = 0;
                //dodeljuje se id automobilu da se ne bi poklapao sa drugim id drugih automobila
                for (int i = 0; i < automobili.Count; i++)
                {
                    if (automobili[i].Id > maxID)
                    {
                        maxID = automobili[i].Id;
                    }
                }

                //pa se pravi automobil kome se prosledjuje dodeljen Id
                try
                {
                    Automobil a = new Automobil(maxID + 1, textBox2.Text, textBox3.Text, Int32.Parse(textBox4.Text), Int32.Parse(textBox5.Text), comboBox1.Text, comboBox2.Text, comboBox3.Text, comboBox4.Text, Int32.Parse(comboBox5.Text));
                    //proveravamo da li automobil postoji
                    foreach (Automobil auto in automobili)
                    {
                        if (auto.Equals(a))
                        {
                            MessageBox.Show("Automobil vec postoji!");
                            return;
                        }
                    }
                    automobili.Add(a);
                }
                catch (Exception) {
                    MessageBox.Show("Uneti podaci nisu validni");
                    return;
                }

                MessageBox.Show("Uspesno ste dodali automobil!");
                //upis i ponovno ispisivanje na ekranu

                RadSaDatotekom.Upisi(automobili, "automobili.bin");
                this.AdminDodavanjeAutomobila_Load(this, e);
            }
        }
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            List <Automobil> automobili = RadSaDatotekom.Procitaj <Automobil>("automobili.bin");
            int imaAuta = 0;
            //pravimo automobil za poredjenje
            Automobil autoPom = new Automobil();

            //proveravamo da li podaci iz combobokseva za auto i model poklapaju sa automobilom iz liste
            foreach (Automobil auto in automobili)
            {
                if (auto.Marka == comboBox1.Text && auto.Model == comboBox2.Text)
                {
                    imaAuta++;
                }
            }
            comboBox3.Items.Clear();
            comboBox4.Items.Clear();
            comboBox5.Items.Clear();
            comboBox6.Items.Clear();
            comboBox7.Items.Clear();
            comboBox8.Items.Clear();
            comboBox9.Items.Clear();
            comboBox3.Text = "";
            comboBox4.Text = "";
            comboBox5.Text = "";
            comboBox6.Text = "";
            comboBox7.Text = "";
            comboBox8.Text = "";
            comboBox9.Text = "";

            if (imaAuta == 1)
            {
                foreach (Automobil a in automobili)
                {
                    //prolazimo kroz automobile i ako se porede marka i model iz sa podacima iz comboboxa
                    //autuPom se dodeljuju vrednosti auta koje je pronadjeno
                    if (a.Marka == comboBox1.Text && a.Model == comboBox2.Text)
                    {
                        autoPom = a;
                    }
                }

                //i posle prema tom automobilu popunjavamo ostale comboboksove
                comboBox3.Text = autoPom.Godiste.ToString();
                comboBox4.Text = autoPom.Kubikaza.ToString();
                comboBox5.Text = autoPom.Karoserija.ToString();
                comboBox6.Text = autoPom.BrojVrata.ToString();
                comboBox7.Text = autoPom.Gorivo;
                comboBox8.Text = autoPom.Pogon;
                comboBox9.Text = autoPom.VrstaMenjaca;
            }
            else
            {
                //ako ima vise automobila iste marke i modela
                //ukljucuju se ostali comboboxovi
                foreach (Control c in this.Controls)
                {
                    c.Enabled = true;
                }
                List <Automobil> pomAuta = new List <Automobil>();
                foreach (Automobil auto in automobili)
                {
                    if (auto.Marka == comboBox1.Text && auto.Model == comboBox2.Text)
                    {
                        pomAuta.Add(auto);
                    }
                }

                //ako ima automobila sa istim godistem ispisi ga samo jednom
                if (pomAuta[0].Godiste == pomAuta[1].Godiste)
                {
                    comboBox3.Text = pomAuta[0].Godiste.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox3.Items.Add(pom1.Godiste);
                    }
                }

                //ako ima automobila sa istom kubikazom ispisi je samo jednom
                if (pomAuta[0].Kubikaza == pomAuta[1].Kubikaza)
                {
                    comboBox4.Text = pomAuta[0].Kubikaza.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox4.Items.Add(pom1.Kubikaza);
                    }
                }

                //ako ima automobila sa istom karoserijom ispisi je samo jednom
                if (pomAuta[0].Karoserija == pomAuta[1].Karoserija)
                {
                    comboBox5.Text = pomAuta[0].Karoserija.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox5.Items.Add(pom1.Karoserija);
                    }
                }

                //ako ima automobila sa istim brojem vrata ispisi ih samo jednom
                if (pomAuta[0].BrojVrata == pomAuta[1].BrojVrata)
                {
                    comboBox6.Text = pomAuta[0].BrojVrata.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox6.Items.Add(pom1.BrojVrata);
                    }
                }

                //ako ima automobila sa istim gorivom ispisi ga samo jednom
                if (pomAuta[0].Gorivo == pomAuta[1].Gorivo)
                {
                    comboBox7.Text = pomAuta[0].Gorivo.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox7.Items.Add(pom1.Gorivo);
                    }
                }

                //ako ima automobila sa istim pogom ispisi njegov pogon samo jednom
                if (pomAuta[0].Pogon == pomAuta[1].Pogon)
                {
                    comboBox8.Text = pomAuta[0].Pogon.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox8.Items.Add(pom1.Pogon);
                    }
                }

                //ako ima automobila sa istom vrstom menjaca ispisi vrstu samo jednom
                if (pomAuta[0].VrstaMenjaca == pomAuta[1].VrstaMenjaca)
                {
                    comboBox9.Text = pomAuta[0].VrstaMenjaca.ToString();
                }
                else
                {
                    foreach (Automobil pom1 in pomAuta)
                    {
                        comboBox9.Items.Add(pom1.VrstaMenjaca);
                    }
                }
            }
        }