// funkce 4. a)
        public static bool InsertArtefact(Artefakt artefakt)
        {
            Database db = new Database();

            SqlCommand command = db.CreateCommand(SQL_INSERT_ARTEFAKT);

            PrepareCommand(command, artefakt);

            db.Connect();
            int ret = db.ExecuteNonQuery(command);

            db.Close();

            return(ret > 0 ? true : false);
        }
        // Prepare a command for function 4. a).
        private static void PrepareCommand(SqlCommand command, Artefakt artefakt)
        {
            string nazev = artefakt.Nazev.Substring(0, (artefakt.Nazev.Length > 30 ? 30 : artefakt.Nazev.Length));

            string zeme_nalezu = artefakt.Zeme_nalezu.Substring(0, (artefakt.Zeme_nalezu.Length > 40 ? 40 : artefakt.Zeme_nalezu.Length));

            string zeme_puvodu_artefaktu = artefakt.Zeme_puvodu_artefaktu;

            if (zeme_puvodu_artefaktu != null)
            {
                zeme_puvodu_artefaktu = artefakt.Zeme_puvodu_artefaktu.Substring(0, (zeme_puvodu_artefaktu.Length > 50 ? 50 : zeme_puvodu_artefaktu.Length));
            }

            string vypujceno_od = artefakt.Vypujceno_od;

            if (vypujceno_od != null)
            {
                vypujceno_od = vypujceno_od.Substring(0, (vypujceno_od.Length > 100 ? 100 : vypujceno_od.Length));
            }

            string propujceno_muzeu = artefakt.Propujceno_muzeu;

            if (propujceno_muzeu != null)
            {
                propujceno_muzeu = propujceno_muzeu.Substring(0, (propujceno_muzeu.Length > 100 ? 100 : propujceno_muzeu.Length));
            }


            command.Parameters.AddWithValue("@nazev", nazev ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@datum_nalezeni", artefakt.Datum_nalezeni);
            command.Parameters.AddWithValue("@odhadovane_stari_artefaktu", artefakt.Odhadovane_stari_artefaktu ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@zeme_nalezu", zeme_nalezu ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@zeme_puvodu_artefaktu", zeme_puvodu_artefaktu ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@gps_souradnice_nalezu", artefakt.GPS_souradnice_nalezu ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@popis", string.IsNullOrEmpty(artefakt.Popis) ? DBNull.Value : (object)artefakt.Popis);
            command.Parameters.AddWithValue("@datum_vystaveni", artefakt.Datum_vystaveni ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@je_prozkouman_a_zdokumentovan", artefakt.Je_prozkouman_a_zdokumentovan ? 1 : 0);
            command.Parameters.AddWithValue("@datum_posledni_kontroly", artefakt.Datum_posledni_kontroly ?? (object)DBNull.Value);
            command.Parameters.AddWithValue("@vypujceno_od", string.IsNullOrEmpty(vypujceno_od) ? DBNull.Value : (object)vypujceno_od);
            command.Parameters.AddWithValue("@propujceno_muzeu", string.IsNullOrEmpty(propujceno_muzeu) ? DBNull.Value : (object)propujceno_muzeu);
            command.Parameters.AddWithValue("@archeolog_aid", artefakt.Archeolog_aID);

            // print parametru a jejich nahrad
            foreach (SqlParameter p in command.Parameters)
            {
                Console.WriteLine($"{p.ParameterName} {p.Value} {p.DbType}");
            }
        }
        // read function for func 4. d) and 4. f)
        private static Collection <Artefakt> ReadArtefakt(SqlDataReader reader)
        {
            Collection <Artefakt> artefakt = new Collection <Artefakt>();

            while (reader.Read())
            {
                Artefakt jeden_artefakt = new Artefakt();
                int      i = -1;

                jeden_artefakt.aID = reader.GetInt32(++i);

                jeden_artefakt.Nazev = reader.GetString(++i);

                jeden_artefakt.Datum_nalezeni = reader.GetDateTime(++i);

                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Odhadovane_stari_artefaktu = reader.GetInt32(i);
                }

                jeden_artefakt.Zeme_nalezu = reader.GetString(++i);

                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Zeme_puvodu_artefaktu = reader.GetString(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.GPS_souradnice_nalezu = reader.GetDouble(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Popis = reader.GetString(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Datum_vystaveni = reader.GetDateTime(i);
                }

                jeden_artefakt.Je_prozkouman_a_zdokumentovan = reader.GetBoolean(++i);

                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Datum_posledni_kontroly = reader.GetDateTime(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Vypujceno_od = reader.GetString(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Propujceno_muzeu = reader.GetString(i);
                }
                if (!reader.IsDBNull(++i))
                {
                    jeden_artefakt.Archeolog_aID = reader.GetInt32(i);
                }


                artefakt.Add(jeden_artefakt);
            }
            return(artefakt);
        }