public static ObservableCollection <ProdajaNamestaja> GetAll()
        {
            var prodaja = new ObservableCollection <ProdajaNamestaja>();

            using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
            {
                conn.Open();

                SqlCommand     cmd = conn.CreateCommand();
                SqlDataAdapter da  = new SqlDataAdapter();
                cmd.CommandText  = "SELECT * FROM ProdajaNamestaja";
                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds, "ProdajaNamestaja"); // izvrsavanje upita

                foreach (DataRow row in ds.Tables["ProdajaNamestaja"].Rows)
                {
                    var pn = new ProdajaNamestaja();
                    pn.Id               = int.Parse(row["Id"].ToString());
                    pn.DatumProdaje     = DateTime.Parse(row["DatumProdaje"].ToString());
                    pn.BrojRacuna       = row["BrojRacuna"].ToString();
                    pn.Kupac            = row["Kupac"].ToString();
                    pn.UkupnaCenaBezPDV = double.Parse(row["UkupnaCenaBezPDV"].ToString());
                    pn.UkupnaCenaSaPDV  = double.Parse(row["UkupnaCenaSaPDV"].ToString());

                    prodaja.Add(pn);
                }
            }
            return(prodaja);
        }
        public static ObservableCollection <ProdajaNamestaja> PretragaProdaje(string unos, TipPretrage tipPretrage, DateTime?poDatumu)
        {
            var prodaja = new ObservableCollection <ProdajaNamestaja>();

            using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
            {
                SqlCommand     cmd = conn.CreateCommand();
                SqlDataAdapter da  = new SqlDataAdapter();

                switch (tipPretrage)
                {
                case TipPretrage.BROJRACUNA:
                    cmd.CommandText = "SELECT * FROM ProdajaNamestaja WHERE BrojRacuna LIKE @unos;";
                    cmd.Parameters.AddWithValue("unos", "%" + unos.Trim() + "%");
                    break;

                case TipPretrage.KUPAC:
                    cmd.CommandText = "SELECT * FROM ProdajaNamestaja  WHERE Kupac LIKE @unos;";
                    cmd.Parameters.AddWithValue("unos", "%" + unos.Trim() + "%");
                    break;

                case TipPretrage.DATUM:
                    cmd.CommandText = "SELECT * FROM ProdajaNamestaja WHERE DatumProdaje = @poDatumu;";
                    cmd.Parameters.AddWithValue("poDatumu", poDatumu);
                    break;
                }

                da.SelectCommand = cmd;
                DataSet ds = new DataSet();
                da.Fill(ds, "ProdajaNamestaja");

                foreach (DataRow row in ds.Tables["ProdajaNamestaja"].Rows)
                {
                    var pn = new ProdajaNamestaja();
                    pn.Id           = int.Parse(row["Id"].ToString());
                    pn.DatumProdaje = DateTime.Parse(row["DatumProdaje"].ToString());
                    pn.Kupac        = row["Kupac"].ToString();
                    pn.BrojRacuna   = row["BrojRacuna"].ToString();

                    prodaja.Add(pn);
                }
            }
            return(prodaja);
        }
        //azuriranje baze
        public static void Update(ProdajaNamestaja pn)
        {
            try
            {
                using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
                {
                    conn.Open();

                    SqlCommand cmd = conn.CreateCommand();

                    cmd.CommandText = "UPDATE ProdajaNamestaja SET DatumProdaje = @DatumProdaje,BrojRacuna = @BrojRacuna,Kupac = @Kupac, UkupnaCenaBezPDV = @UkupnaCenaBezPDV,UkupnaCenaSaPDV = @UkupnaCenaSaPDV WHERE Id = @Id";
                    cmd.Parameters.AddWithValue("Id", pn.Id);
                    cmd.Parameters.AddWithValue("DatumProdaje", pn.DatumProdaje);
                    cmd.Parameters.AddWithValue("BrojRacuna", pn.BrojRacuna);
                    cmd.Parameters.AddWithValue("Kupac", pn.Kupac);
                    cmd.Parameters.AddWithValue("UkupnaCenaBezPDV", pn.UkupnaCenaBezPDV);
                    cmd.Parameters.AddWithValue("UkupnaCenaSaPDV", pn.UkupnaCenaBezPDV);

                    cmd.ExecuteNonQuery();
                }
                //azuriranje modela
                foreach (var prodaja in Projekat.Instance.Prodaja)
                {
                    if (pn.Id == prodaja.Id)
                    {
                        prodaja.DatumProdaje     = pn.DatumProdaje;
                        prodaja.BrojRacuna       = pn.BrojRacuna;
                        prodaja.Kupac            = pn.Kupac;
                        prodaja.UkupnaCenaBezPDV = pn.UkupnaCenaBezPDV;
                        prodaja.UkupnaCenaSaPDV  = pn.UkupnaCenaSaPDV;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Upis u bazu nije uspeo.\n Molim da pokusate ponovo!", "Greska", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        public static ProdajaNamestaja Create(ProdajaNamestaja pn)
        {
            Random random = new Random();

            try
            {
                using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["POP"].ConnectionString))
                {
                    conn.Open();

                    SqlCommand cmd = conn.CreateCommand();

                    cmd.CommandText  = "INSERT INTO ProdajaNamestaja (DatumProdaje,BrojRacuna,Kupac,UkupnaCenaBezPDV,UkupnaCenaSaPDV) VALUES (@DatumProdaje,@BrojRacuna,@Kupac,@UkupnaCenaBezPDV,@UkupnaCenaSaPDV);";
                    cmd.CommandText += "SELECT SCOPE_IDENTITY();";
                    cmd.Parameters.AddWithValue("DatumProdaje", pn.DatumProdaje);
                    cmd.Parameters.AddWithValue("BrojRacuna", pn.BrojRacuna);
                    cmd.Parameters.AddWithValue("Kupac", pn.Kupac);
                    cmd.Parameters.AddWithValue("UkupnaCenaBezPDV", pn.UkupnaCenaBezPDV);
                    cmd.Parameters.AddWithValue("UkupnaCenaSaPDV", pn.UkupnaCenaSaPDV);

                    pn.Id = int.Parse(cmd.ExecuteScalar().ToString()); //executeScalar izvrsava upit

                    for (int i = 0; i < pn.StavkeProdaje.Count; i++)
                    {
                        SqlCommand command = conn.CreateCommand();

                        command.CommandText = "INSERT INTO StavkaProdaje (ProdajaNamestajaId,NamestajId,Kolicina,Cena,Obrisan) VALUES (@ProdajaNamestajaId,@NamestajId,@Kolicina,@Cena,@Obrisan);";

                        command.Parameters.AddWithValue("ProdajaNamestajaId", pn.Id);
                        command.Parameters.AddWithValue("NamestajId", pn.StavkeProdaje[i].Namestaj.Id);
                        command.Parameters.AddWithValue("Kolicina", pn.StavkeProdaje[i].Kolicina);
                        command.Parameters.AddWithValue("Cena", pn.StavkeProdaje[i].Cena);
                        command.Parameters.AddWithValue("Obrisan", pn.StavkeProdaje[i].Obrisan);

                        pn.StavkeProdaje[i].Namestaj.KolicinaUMagacinu = pn.StavkeProdaje[i].Namestaj.KolicinaUMagacinu - pn.StavkeProdaje[i].Kolicina;
                        Namestaj.Update(pn.StavkeProdaje[i].Namestaj);

                        command.ExecuteNonQuery();
                    }

                    for (int i = 0; i < pn.ProdateUsluge.Count; i++)
                    {
                        SqlCommand command = conn.CreateCommand();

                        command.CommandText = "INSERT INTO ProdataUsluga(ProdajaNamestajaId,DodatnaUslugaId,Obrisan) VALUES (@ProdajaNamestajaId,@DodatnaUslugaId,@Obrisan);";

                        command.Parameters.AddWithValue("ProdajaNamestajaId", pn.Id);
                        command.Parameters.AddWithValue("DodatnaUslugaId", pn.ProdateUsluge[i].DodatnaUslugaId);
                        command.Parameters.AddWithValue("Obrisan", pn.ProdateUsluge[i].Obrisan);

                        command.ExecuteNonQuery();
                    }
                }

                Projekat.Instance.Prodaja.Add(pn);
                return(pn);
            }
            catch (Exception)
            {
                MessageBox.Show("Upis u bazu nije uspeo.\n Molim da pokusate ponovo!", "Greska", MessageBoxButton.OK, MessageBoxImage.Warning);
                return(null);
            }
        }