public Collection <Kontrola_kvality_spalovani> Select()
        {
            XDocument xDoc = XDocument.Load(ConstantsXml.FilePath);

            List <XElement> elementy = xDoc.Descendants("Kontroly_kvality_spalovani").Descendants("Kontrola_kvality_spalovani").ToList();

            Collection <Kontrola_kvality_spalovani> vsechnyKontroly = new Collection <Kontrola_kvality_spalovani>();
            int      id;
            DateTime datum;
            int      idStavby;

            foreach (XElement element in elementy)
            {
                Kontrola_kvality_spalovani kontrola = new Kontrola_kvality_spalovani();

                int.TryParse(element.Attribute("Id_kontroly").Value, out id);
                DateTime.TryParse(element.Attribute("Datum_kontroly").Value, out datum);
                kontrola.Duvod_kontroly = element.Attribute("Duvod_kontroly").Value;
                int.TryParse(element.Attribute("Id_stavby").Value, out idStavby);

                kontrola.Id_kontroly    = id;
                kontrola.Datum_kontroly = datum;
                kontrola.Id_stavby      = idStavby;

                vsechnyKontroly.Add(kontrola);
                kontrola = null;
            }

            return(vsechnyKontroly);
        }
        /*
         * public static int Sequence(Database Db = null)
         * {
         *  Database db;
         *  if (Db == null)
         *  {
         *      db = new Database();
         *      db.Connect();
         *  }
         *  else
         *  {
         *      db = (Database)Db;
         *  }
         *
         *  OracleCommand command = db.CreateCommand(SQL_SEQUENCE);
         *  OracleDataReader reader = db.Select(command);
         *
         *  int hodnota = 0;
         *  while (reader.Read() != false)
         *  {
         *      hodnota = reader.GetInt32(0);
         *  }
         *
         *  reader.Close();
         *
         *  if (Db == null)
         *  {
         *      db.Close();
         *  }
         *
         *  return hodnota;
         * }*/

        /*
         * public static int Insert(Kontrola_kvality_spalovani kontrola)
         * {
         *  Database db = new Database();
         *  db.Connect();
         *  OracleCommand command = db.CreateCommand(SQL_INSERT);
         *  PrepareCommand(command, kontrola);
         *  int ret = db.ExecuteNonQuery(command);
         *  db.Close();
         *  return ret;
         * }*/

        /*
         * public static int Update(Kontrola_kvality_spalovani kontrola)
         * {
         *  Database db = new Database();
         *  db.Connect();
         *  OracleCommand command = db.CreateCommand(SQL_UPDATE);
         *  PrepareCommand(command, kontrola);
         *  int ret = db.ExecuteNonQuery(command);
         *  db.Close();
         *  return ret;
         * }*/

        /*
         * public static Collection<Kontrola_kvality_spalovani> Select(Database Db = null)
         * {
         *  Database db;
         *  if (Db == null)
         *  {
         *      db = new Database();
         *      db.Connect();
         *  }
         *  else
         *  {
         *      db = (Database)Db;
         *  }
         *
         *  OracleCommand command = db.CreateCommand(SQL_SELECT);
         *  OracleDataReader reader = db.Select(command);
         *
         *  Collection<Kontrola_kvality_spalovani> Kontroly = Read(reader, false);
         *  reader.Close();
         *
         *  if (Db == null)
         *  {
         *      db.Close();
         *  }
         *
         *  return Kontroly;
         * }*/

        /*
         * public static Kontrola_kvality_spalovani Select_id(int idKontroly, Database Db = null)
         * {
         *  Database db = new Database();
         *  db.Connect();
         *  OracleCommand command = db.CreateCommand(SQL_SELECT_ID);
         *
         *  command.Parameters.AddWithValue(":id", idKontroly);
         *  OracleDataReader reader = db.Select(command);
         *
         *  Collection<Kontrola_kvality_spalovani> kontroly = Read(reader, true);
         *  Kontrola_kvality_spalovani kontrola = null;
         *  if (kontroly.Count == 1)
         *  {
         *      kontrola = kontroly[0];
         *  }
         *  reader.Close();
         *  db.Close();
         *  return kontrola;
         * }*/

        private static void PrepareCommand(OracleCommand command, Kontrola_kvality_spalovani Kontrola)
        {
            command.BindByName = true;
            command.Parameters.AddWithValue(":id", Kontrola.Id_kontroly);
            command.Parameters.AddWithValue(":datum_kontroly", Kontrola.Datum_kontroly);
            command.Parameters.AddWithValue(":duvod_kontroly", Kontrola.Duvod_kontroly);
            command.Parameters.AddWithValue(":id_stavby", Kontrola.Id_stavby);
        }
        public void Update(Kontrola_kvality_spalovani kontrola)
        {
            Database db = new Database();

            db.Connect();
            OracleCommand command = db.CreateCommand(SQL_UPDATE);

            PrepareCommand(command, kontrola);
            int ret = db.ExecuteNonQuery(command);

            db.Close();
        }
        public void Insert(Kontrola_kvality_spalovani kontrola)
        {
            XDocument xDoc = XDocument.Load(ConstantsXml.FilePath);

            XElement result = new XElement("Kontrola_kvality_spalovani",
                                           new XAttribute("Id_kontroly", kontrola.Id_kontroly),
                                           new XAttribute("Datum_kontroly", kontrola.Datum_kontroly.ToShortDateString()),
                                           new XAttribute("Duvod_kontroly", kontrola.Duvod_kontroly),
                                           new XAttribute("Id_stavby", kontrola.Id_stavby));

            xDoc.Root.Element("Kontroly_kvality_spalovani").Add(result);
            xDoc.Save(ConstantsXml.FilePath);
        }
        public Kontrola_kvality_spalovani Select_id(int idKontroly)
        {
            Collection <Kontrola_kvality_spalovani> vsechnyKontroly = this.Select();
            Kontrola_kvality_spalovani vybranaKontrola = null;

            foreach (Kontrola_kvality_spalovani kontrola in vsechnyKontroly)
            {
                if (kontrola.Id_kontroly == idKontroly)
                {
                    vybranaKontrola = kontrola;
                }
            }

            return(vybranaKontrola);
        }
        public void Update(Kontrola_kvality_spalovani kontrola)
        {
            XDocument xDoc = XDocument.Load(ConstantsXml.FilePath);

            var q = from node in xDoc.Descendants("Kontroly_kvality_spalovani").Descendants("Kontrola_kvality_spalovani")
                    let attr = node.Attribute("Id_kontroly")
                               where (attr != null && attr.Value == kontrola.Id_kontroly.ToString())
                               select node;

            q.ToList().ForEach(x => {
                x.Attribute("Datum_kontroly").Value = kontrola.Datum_kontroly.ToShortDateString();
                x.Attribute("Duvod_kontroly").Value = kontrola.Duvod_kontroly;
                x.Attribute("Id_stavby").Value      = kontrola.Id_stavby.ToString();
            });

            xDoc.Save(ConstantsXml.FilePath);
        }
        private static Collection <Kontrola_kvality_spalovani> Read(OracleDataReader reader, bool complete)
        {
            Collection <Kontrola_kvality_spalovani> Kontroly = new Collection <Kontrola_kvality_spalovani>();

            while (reader.Read())
            {
                int i = -1;
                Kontrola_kvality_spalovani Kontrola = new Kontrola_kvality_spalovani();
                Kontrola.Id_kontroly    = reader.GetInt32(++i);
                Kontrola.Datum_kontroly = reader.GetDateTime(++i);
                if (complete)
                {
                    Kontrola.Duvod_kontroly = reader.GetString(++i);
                }
                Kontrola.Id_stavby = reader.GetInt32(++i);

                Kontroly.Add(Kontrola);
            }
            return(Kontroly);
        }
        public Kontrola_kvality_spalovani Select_id(int idKontroly)
        {
            Database db = new Database();

            db.Connect();
            OracleCommand command = db.CreateCommand(SQL_SELECT_ID);

            command.Parameters.AddWithValue(":id", idKontroly);
            OracleDataReader reader = db.Select(command);

            Collection <Kontrola_kvality_spalovani> kontroly = Read(reader, true);
            Kontrola_kvality_spalovani kontrola = null;

            if (kontroly.Count == 1)
            {
                kontrola = kontroly[0];
            }

            reader.Close();
            db.Close();

            return(kontrola);
        }