private void btnObjekatCreate_Click(object sender, EventArgs e)
        {
            try
            {
                ISession s = DataLayer.GetSession();

                String NazivParka   = "Dečiji park u naselju Stevan Sinđelić";
                String Opstina      = "Crveni krst";
                int    maxRedniBroj = s.Query <Objekat>()
                                      .Where(x => x.Park.Naziv == NazivParka && x.Park.Opstina == Opstina)
                                      .OrderByDescending(x => x.RedniBroj)
                                      .Select(x => x.RedniBroj)
                                      .FirstOrDefault();

                Klupa klupa = new Klupa();
                klupa.RedniBroj = maxRedniBroj + 1;

                Fontana fontana = new Fontana();
                fontana.RedniBroj = maxRedniBroj + 2;

                Svetiljka svetiljka = new Svetiljka();
                svetiljka.RedniBroj = maxRedniBroj + 3;

                Igraliste igraliste = new Igraliste();
                igraliste.RedniBroj     = maxRedniBroj + 4;
                igraliste.Pesak         = "Ne";
                igraliste.StarostDeceOd = 5;
                igraliste.StarostDeceDo = 12;
                igraliste.BrojIgracaka  = 7;

                Park park = s.Query <Park>()
                            .Where(x => x.Naziv == NazivParka && x.Opstina == Opstina)
                            .FirstOrDefault();

                klupa.Park     = park;
                fontana.Park   = park;
                svetiljka.Park = park;
                igraliste.Park = park;

                park.Objekti.Add(klupa);
                park.Objekti.Add(fontana);
                park.Objekti.Add(svetiljka);
                park.Objekti.Add(igraliste);

                s.Update(park);

                s.Flush();
                s.Close();

                MessageBox.Show("Objekti uspešno kreirani");
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }
        private void btnGetParkInfo_Click(object sender, EventArgs e)
        {
            try
            {
                ISession s = DataLayer.GetSession();

                string nazivParka   = "Tvrđava";
                string nazivOpstine = "Crveni krst";

                Park p = s.Query <Park>()
                         .Where(x => x.Naziv == nazivParka && x.Opstina == nazivOpstine)
                         .FirstOrDefault();

                String ispis = "Park " + p.Naziv + " u opštini " + p.Opstina + ":\n\n";
                ispis += "Radnici koji trenutno rade u tom parku:\n";

                List <RadiU> radiU = p.Radnici.Where(x => x.DatumDo == null).ToList();

                foreach (RadiU stavka in radiU)
                {
                    ispis += stavka.Radnik.BrRadneKnjizice + " " + stavka.Radnik.Ime + " ("
                             + stavka.Radnik.ImeRoditelja + ") " + stavka.Radnik.Prezime
                             + " počeo sa radom " + stavka.DatumOd.ToShortDateString() + "\n";
                }

                ispis += "\nŠef parka je ";
                JeSef trenutniSef = p.Sefovi.Where(x => x.DatumDo == null).FirstOrDefault();
                ispis += trenutniSef.Radnik.Ime + " (" + trenutniSef.Radnik.ImeRoditelja + ") "
                         + trenutniSef.Radnik.Prezime + " " + trenutniSef.Radnik.BrRadneKnjizice + "\n\n";

                ispis += "Objekti koji se nalaze u parku:\n";
                List <Objekat> objektiSorted = p.Objekti.OrderBy(x => x.RedniBroj).ToList();

                foreach (Objekat o in objektiSorted)
                {
                    ispis += o.RedniBroj + ": ";
                    if (o.GetType() == typeof(Klupa))
                    {
                        ispis += "Klupa";
                    }
                    else if (o.GetType() == typeof(Fontana))
                    {
                        ispis += "Fontana";
                    }
                    else if (o.GetType() == typeof(Svetiljka))
                    {
                        ispis += "Svetiljka";
                    }
                    else if (o.GetType() == typeof(Igraliste))
                    {
                        Igraliste i = o as Igraliste;
                        ispis += "Igralište " + (i.BrojIgracaka == null ? "" : "sa " + i.BrojIgracaka + " igračaka ")
                                 + "za decu od " + i.StarostDeceOd + " do " + i.StarostDeceDo + " godina";
                    }
                    else if (o.GetType() == typeof(Spomenik))
                    {
                        Spomenik sp        = o as Spomenik;
                        Zasticen spZastita = sp.Zasticen;
                        ispis += "Spomenik, zaštićen datuma " + spZastita.DatumStavljanja.ToShortDateString()
                                 + " od strane institucije \"" + spZastita.Institucija
                                 + "\", uz opis: \"" + spZastita.Opis
                                 + "\". Godišnja novčana naknada za potrebe zaštite ovog spomenika iznosi "
                                 + spZastita.NovcanaNaknada + " dinara.";
                    }
                    else if (o.GetType() == typeof(Skulptura))
                    {
                        Skulptura sk        = o as Skulptura;
                        Zasticen  skZastita = sk.Zasticen;
                        ispis += "Skulptura, zaštićena datuma " + skZastita.DatumStavljanja.ToShortDateString()
                                 + " od strane institucije \"" + skZastita.Institucija
                                 + "\", uz opis: \"" + skZastita.Opis
                                 + "\". Godišnja novčana naknada za potrebe zaštite ove skulpture iznosi "
                                 + skZastita.NovcanaNaknada + " dinara.";
                    }
                    else if (o.GetType() == typeof(Drvo))
                    {
                        Drvo     d        = o as Drvo;
                        Zasticen dZastita = d.Zasticen;

                        ispis += "Drvo, vrste " + d.Vrsta
                                 + (d.ObimDebla == null ? "" : ", obima debla " + d.ObimDebla + " metara")
                                 + (d.PovrsinaPokrivanja == null ? "" : ", površine pokrivanja " + d.PovrsinaPokrivanja + " metara")
                                 + (d.VisinaKrosnje == null ? "" : ", visine krošnje " + d.VisinaKrosnje + " metara")
                                 + (d.DatumSadnje == null ? "" : " , posađeno datuma " + d.DatumSadnje.Value.ToShortDateString()) + ".";
                        if (dZastita != null)
                        {
                            ispis += " Drvo je zaštićeno datuma " + dZastita.DatumStavljanja.ToShortDateString()
                                     + " od strane institucije \"" + dZastita.Institucija
                                     + "\", uz opis: \"" + dZastita.Opis
                                     + "\". Godišnja novčana naknada za potrebe zaštite ovog drveta iznosi "
                                     + dZastita.NovcanaNaknada + " dinara.";
                        }
                    }
                    ispis += "\n";
                }

                s.Close();
                MessageBox.Show(ispis);
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }
        private void btnGetObjekat_Click(object sender, EventArgs e)
        {
            try
            {
                ISession s = DataLayer.GetSession();

                String NazivParka = "Tvrđava";     // ili "Dečiji park u naselju Stevan Sinđelić" ili "Park Čair"
                String Opstina    = "Crveni krst"; // ili "Crveni krst" ili "Medijana"

                List <Objekat> objekti = s.Query <Objekat>()
                                         .Where(o => o.Park.Naziv == NazivParka && o.Park.Opstina == Opstina)
                                         .OrderBy(o => o.RedniBroj)
                                         .ToList();

                String rez = "Objekti u parku " + NazivParka + ", u opštini " + Opstina + "\n\n\n";

                foreach (Objekat o in objekti)
                {
                    rez += o.RedniBroj + ": ";
                    if (o.GetType() == typeof(Klupa))
                    {
                        rez += "Klupa";
                    }
                    else if (o.GetType() == typeof(Fontana))
                    {
                        rez += "Fontana";
                    }
                    else if (o.GetType() == typeof(Svetiljka))
                    {
                        rez += "Svetiljka";
                    }
                    else if (o.GetType() == typeof(Igraliste))
                    {
                        Igraliste i = o as Igraliste;
                        rez += "Igralište " + (i.BrojIgracaka == null ? "" : "sa " + i.BrojIgracaka + " igračaka ")
                               + "za decu od " + i.StarostDeceOd + " do " + i.StarostDeceDo + " godina";
                    }
                    else if (o.GetType() == typeof(Spomenik))
                    {
                        Spomenik sp        = o as Spomenik;
                        Zasticen spZastita = sp.Zasticen;
                        rez += "Spomenik, zaštićen datuma " + spZastita.DatumStavljanja.ToShortDateString()
                               + " od strane institucije \"" + spZastita.Institucija
                               + "\", uz opis: \"" + spZastita.Opis
                               + "\". Godišnja novčana naknada za potrebe zaštite ovog spomenika iznosi "
                               + spZastita.NovcanaNaknada + " dinara.";
                    }
                    else if (o.GetType() == typeof(Skulptura))
                    {
                        Skulptura sk        = o as Skulptura;
                        Zasticen  skZastita = sk.Zasticen;
                        rez += "Skulptura, zaštićena datuma " + skZastita.DatumStavljanja.ToShortDateString()
                               + " od strane institucije \"" + skZastita.Institucija
                               + "\", uz opis: \"" + skZastita.Opis
                               + "\". Godišnja novčana naknada za potrebe zaštite ove skulpture iznosi "
                               + skZastita.NovcanaNaknada + " dinara.";
                    }
                    else if (o.GetType() == typeof(Drvo))
                    {
                        Drvo     d        = o as Drvo;
                        Zasticen dZastita = d.Zasticen;

                        rez += "Drvo, vrste " + d.Vrsta
                               + (d.ObimDebla == null ? "" : ", obima debla " + d.ObimDebla + " metara")
                               + (d.PovrsinaPokrivanja == null ? "" : ", površine pokrivanja " + d.PovrsinaPokrivanja + " metara")
                               + (d.VisinaKrosnje == null ? "" : ", visine krošnje " + d.VisinaKrosnje + " metara")
                               + (d.DatumSadnje == null ? "" : " , posađeno datuma " + d.DatumSadnje.Value.ToShortDateString()) + ".";
                        if (dZastita != null)
                        {
                            rez += " Drvo je zaštićeno datuma " + dZastita.DatumStavljanja.ToShortDateString()
                                   + " od strane institucije \"" + dZastita.Institucija
                                   + "\", uz opis: \"" + dZastita.Opis
                                   + "\". Godišnja novčana naknada za potrebe zaštite ovog drveta iznosi "
                                   + dZastita.NovcanaNaknada + " dinara.";
                        }
                    }
                    rez += "\n\n";
                }

                MessageBox.Show(rez);
                s.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }