private void button4_Click(object sender, EventArgs e)
        {
            // PROVERAVA PO IMENU AKO IME NIJE UNIQUE NECE MOCI DVA SA ISTIM IMENOM U SASTAV

            /*if (this.LvIgraci.SelectedItems.Count != 0)
             * {
             *  if(this.LVSastav.Items.Count == 30)
             *  {
             *      MessageBox.Show("Sastav popunjen.");
             *      return;
             *  }
             *  bool postoji = false;
             *  var test = this.LvIgraci.SelectedItems[0];
             *  foreach(ListViewItem item in LVSastav.Items)
             *  {
             *      if(item.Text == test.Text)
             *      {
             *          postoji = true;
             *      }
             *  }
             *  if(!postoji)
             *  {
             *      var klon = test.Clone();
             *      this.LVSastav.Items.Add((ListViewItem)klon);
             *  }
             * }*/

            // Multiple select
            if (this.LvIgraci.SelectedItems.Count > 0)
            {
                foreach (ListViewItem ListItem in this.LvIgraci.Items)
                {
                    if (ListItem.Selected == true)
                    {
                        var klon = ListItem.Clone();;

                        /* if (!LVSastav.Items.Contains((ListViewItem)klon))
                         * {
                         *   this.LVSastav.Items.Add((ListViewItem)klon);
                         * }*/
                        ListViewItem duplikat = LVSastav.FindItemWithText(ListItem.Text);
                        if (duplikat == null)
                        {
                            this.LVSastav.Items.Add((ListViewItem)klon);
                        }
                    }
                }
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(this.tbIme.Text))
            {
                MessageBox.Show("Ime reprezentacije je obavezno!");
                return;
            }
            if (String.IsNullOrWhiteSpace(this.tbSkracenica.Text))
            {
                MessageBox.Show("Skracenica je obavezna!(3 slova)");
                return;
            }
            if (String.IsNullOrWhiteSpace(this.tbSelektor.Text))
            {
                MessageBox.Show("Selektor je obavezan!");
                return;
            }
            if (this.LVSastav.Items.Count < 11)
            {
                MessageBox.Show("Sastav je nepotpun!");
                return;
            }
            if (elKapetano == null)
            {
                MessageBox.Show("Morate izabrati kapitena!");
                return;
            }
            if (elKapetano != null)
            {
                ListViewItem kapitenNijeUlistu = LVSastav.FindItemWithText(elKapetano._id.ToString());
                if (kapitenNijeUlistu == null)
                {
                    MessageBox.Show("Morate izabrati kapitena!");
                    return;
                }
            }
            string temp = this.CheckTeam();

            //provera pozicija tima
            if (temp != "Ok")
            {
                MessageBox.Show(temp);
                return;
            }
            ;

            try
            {
                //database access
                var _client    = new MongoClient();
                var _database  = _client.GetDatabase("test");
                var collection = _database.GetCollection <Reprezentacija>("reprezentacije");
                //filters
                var filterAllCount = new BsonDocument();
                //var filterForUniqueCheck = Builders<BsonDocument>.Filter.Eq("Ime", this.tbIme.Text);
                var filter = new BsonDocument()
                {
                    { "Ime", tbIme.Text }
                };

                //test if reprezentacija exists
                var test = collection.Find(filter).FirstOrDefault();

                var countForID = collection.Count(filterAllCount);

                // model creating
                Reprezentacija forSave = new Reprezentacija();
                forSave.FifaRang = Convert.ToInt32(numFifaRang.Value);

                forSave.id = 777;
                forSave.IgracSaNajviseNastupa = StringCleaner.checkString(this.tbIgracSaNajviseNastupa.Text);
                forSave.Ime                = StringCleaner.checkString(this.tbIme.Text);
                forSave.Kapiten            = StringCleaner.checkString(elKapetano.PunoIme);
                forSave.Nadimak            = StringCleaner.checkString(tbNadimak.Text);
                forSave.NajboljiStrelac    = StringCleaner.checkString(this.tbNajboljiStrelac.Text);
                forSave.NajvecaPobedaPoraz = StringCleaner.checkString(this.tbNajvecaPobedaPoraz.Text);
                forSave.OsvojeneMedalje    = StringCleaner.checkString(this.rtbOsvojeneMedalje.Text);
                foreach (ListViewItem item in this.LVSastav.Items)
                {
                    forSave.Sastav    += item.SubItems[1].Text;
                    forSave.Sastav    += ",";
                    forSave.SastavIDs += item.SubItems[0].Text;
                    forSave.SastavIDs += ",";
                }
                forSave.Sastav             = forSave.Sastav.TrimEnd(',');
                forSave.SastavIDs          = forSave.SastavIDs.TrimEnd(',');
                forSave.Selektor           = StringCleaner.checkString(tbSelektor.Text);
                forSave.Skracenica         = StringCleaner.checkString(tbSkracenica.Text);
                forSave.SportskaBiografija = StringCleaner.checkString(rtbSportskaBiografija.Text);


                //Serialization and BsonDocument creation


                //var document = forSave.ToBsonDocument();


                // insert or update check.
                if (test == null)
                {
                    collection.InsertOne(forSave);
                    AuxLib.UpdateIgracStatus(forSave.SastavIDs.Split(','), true);


                    MessageBox.Show("Reprezentacija :" + forSave.Ime + " uspesno dodata.");
                }
                else
                {
                    forSave._id = test._id;

                    //update za stare ugrace (stavljamo da ne pripadaju vise timu koji se azurira)
                    AuxLib.UpdateIgracStatus(test.SastavIDs.Split(','), false);

                    collection.ReplaceOne(filter, forSave);

                    //update nove igrace
                    AuxLib.UpdateIgracStatus(forSave.SastavIDs.Split(','), true);

                    MessageBox.Show("Reprezentacija :" + forSave.Ime + " uspesno azurirana.");
                }

                //ucitavanje slike iz strima u GridFS
                if (this.PBslikaReprezentacije.Image != null)
                {
                    AuxLib.deleteFromGridFS(forSave.Ime + "zastava");
                    if (!AuxLib.AddImageToGridFS(this.PBslikaReprezentacije.Image, forSave.Ime + "zastava", formatSlika))
                    {
                        MessageBox.Show("Slika nije ucitana uspesno.");
                    }
                    ;
                }
                else
                {
                    MessageBox.Show("Slika nije selektovana zato nije ubacena.");
                }

                //ucitavanje himne iz strima u GridFS
                if (himnaStream != null)
                {
                    AuxLib.deleteFromGridFS(forSave.Ime + "himna");
                    if (AuxLib.AddSoundToGridFS(himnaStream, this.tbIme.Text + "himna", formatHimna))
                    {
                        MessageBox.Show("Uspesno ste dodali mp3 sadrzaja kao himnu reprezentacije.");
                    }
                }
                else
                {
                    MessageBox.Show("Himna nije ubacena.");
                }
                //reset kapetana na null
                elKapetano = null;
                var filterForListView = new BsonDocument()
                {
                    { "PripadaReprezentaciji", false }
                };
                AuxLib.UpdateIgraciListView(this.LvIgraci, filterForListView);
                this.LVSastav.Items.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }