private void DodavanjePolaznika_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { Func <string, string[]> parser = s => { string[] result = new string[3]; var splittedString = s.Split(' '); if (splittedString.Length >= 3) { result[2] = splittedString[splittedString.Length - 1].Substring(1, splittedString[splittedString.Length - 1].Length - 2); result[1] = splittedString[splittedString.Length - 2]; result[0] = splittedString.Take(splittedString.Length - 2).Aggregate("", (acc, x) => acc + x);; } return(result); }; if (flag) { using (ErsteModel ersteModel = new ErsteModel()) { if (e.AddedItems.Count > 0) { string text = e.AddedItems[0].ToString(); var p = parser(text); string ime = p[0]; string prezime = p[1]; string email = p[2]; polaznik polaznik = ersteModel.polaznici.First(g => g.osoba.Ime == ime && g.osoba.Prezime == prezime && g.osoba.Email == email); grupa grupica = ersteModel.grupe.Where(gr => gr.Id == grupa.Id).ToList().First(); grupica.polaznici.Add(polaznik); polaznik.grupe.Add(grupica); string odabraniNivo = NivoKursa.Text; string odabraniJezik = jezikKursa.Text; polaznik_na_cekanju p_na_c = polaznik.polaznik_na_cekanju; kurs kurs_za_p_na_c = p_na_c.kursevi.First(k => k.Nivo.Equals(odabraniNivo) && k.jezik.Naziv.Equals(odabraniJezik)); kurs_za_p_na_c.polaznici_na_cekanju.Remove(p_na_c); p_na_c.kursevi.Remove(kurs_za_p_na_c); p_na_c.polaznik.polaznik_na_cekanju = null; ersteModel.SaveChanges(); Init(); NazivGrupeCombo.Text = text; } } } }
private void Apply_Btn_Click(object sender, RoutedEventArgs e) { ResetBorderColors(); string odabraniJezik = (string)chb_Jezik.SelectedItem; string odabraniNivo = (string)chb_Nivo.SelectedItem; if (string.IsNullOrEmpty(textBox_Ime.Text) || string.IsNullOrEmpty(textBox_Prezime.Text) || string.IsNullOrEmpty(textBox_Email.Text) || string.IsNullOrEmpty(textBox_BrojTelefona.Text) || string.IsNullOrEmpty(odabraniJezik) || string.IsNullOrWhiteSpace(odabraniNivo)) { MessageBox.Show("Sva polja za unos moraju biti popunjena."); var textBoxes = grid.Children.OfType <TextBox>(); foreach (var t in textBoxes) { if (String.IsNullOrEmpty(t.Text)) { t.BorderBrush = Brushes.Red; } } if (string.IsNullOrEmpty(odabraniJezik)) { chb_Jezik.BorderBrush = Brushes.Red; } else if (string.IsNullOrWhiteSpace(odabraniNivo)) { chb_Nivo.BorderBrush = Brushes.Red; } return; } if (!GrupeDataGrid.Items.IsEmpty && (GrupeDataGrid.SelectedItems == null || GrupeDataGrid.SelectedItems.Count == 0)) { MessageBox.Show("Izaberite grupu iz tabele."); return; } var ersteModel = new ErsteModel(); osoba o = new osoba(); o.Ime = textBox_Ime.Text; o.Prezime = textBox_Prezime.Text; o.BrojTelefona = textBox_BrojTelefona.Text; o.Email = textBox_Email.Text; polaznik p = new polaznik(); p.osoba = o; if (!GrupeDataGrid.Items.IsEmpty) { GrupaKursZapis zapis = (GrupaKursZapis)GrupeDataGrid.SelectedItem; grupa zapisGrupa = (from g in ersteModel.grupe where g.Id == zapis.Grupa.Id select g).First(); p.grupe.Add(zapisGrupa); zapisGrupa.polaznici.Add(p); MessageBox.Show("Uspjesno dodan polaznik."); ersteModel.SaveChanges(); ersteModel.Dispose(); } else { polaznik_na_cekanju pnc = new polaznik_na_cekanju(); pnc.polaznik = p; pnc.Id = p.Id; // RAZMISLI O OVOME, KAKO MAPIRATI POLAZNIKE PO KURSEVIMA RAZLICITIH DATUMA var kursLista = (from k in ersteModel.kursevi join j in ersteModel.jezici on k.JezikId equals j.Id where k.Nivo.Equals(odabraniNivo) && j.Naziv.Equals(odabraniJezik) && k.DatumDo.CompareTo(DateTime.Now) > 0 orderby k.DatumDo descending select k).ToList(); kurs kurs = kursLista.First(); IEnumerable <polaznik_na_cekanju> polazniciNaCekanjuZaTrazeniKurs = kursLista.SelectMany(k => k.polaznici_na_cekanju).ToList(); //List<polaznik_na_cekanju> polazniciNaCekanjuZaTrazeniKurs = new List<polaznik_na_cekanju>(); //foreach (kurs k in kursLista) //{ // polazniciNaCekanjuZaTrazeniKurs.AddRange(k.polaznici_na_cekanju); //} if (polazniciNaCekanjuZaTrazeniKurs.Count() >= 2) { //nova grupa grupa g = new grupa { KursId = kurs.Id, BrojClanova = 0, }; ersteModel.SaveChanges(); //unos podataka o novoj grupi UpisTerminaGrupe upisTermina = new UpisTerminaGrupe(g, ersteModel); upisTermina.ShowDialog(); if (g.Naziv == null) { Task.Run(() => MessageBox.Show("Unesite naziv grupe.")); upisTermina = new UpisTerminaGrupe(g, ersteModel); upisTermina.ShowDialog(); } g = (from gr in ersteModel.grupe where gr.Id == g.Id select gr).First(); //dobijanje ref na polaznike i polaznika na cekanju List <polaznik> polazniciNoveGrupe = new List <polaznik>(); polazniciNoveGrupe.Add(p); foreach (polaznik_na_cekanju p_na_c in polazniciNaCekanjuZaTrazeniKurs) { polazniciNoveGrupe.Add(p_na_c.polaznik); } //brisanje korisnika na cekanju i veza s kursevima foreach (polaznik_na_cekanju p_na_c in polazniciNaCekanjuZaTrazeniKurs) { kurs kurs_za_p_na_c = p_na_c.kursevi.First(k => k.Nivo.Equals(odabraniNivo) && k.jezik.Naziv.Equals(odabraniJezik)); kurs_za_p_na_c.polaznici_na_cekanju.Remove(p_na_c); p_na_c.kursevi.Remove(kurs_za_p_na_c); p_na_c.polaznik.polaznik_na_cekanju = null; } //dodavanje polaznika u grupu foreach (polaznik p_u_g in polazniciNoveGrupe) { p_u_g.grupe.Add(g); g.polaznici.Add(p_u_g); } //dodavanje grupe u tabelu //ersteModel.grupe.Add(g); MessageBox.Show("Polaznik uspjesno ubacen u grupu.Polaznici na cekanju za odabrani kurs i nivo su takodje uspjesno ubaceni u grupu."); ersteModel.SaveChanges(); ersteModel.Dispose(); } else { kurs.polaznici_na_cekanju.Add(pnc); pnc.kursevi.Add(kurs); MessageBox.Show("Polaznik dodat na listu cekanja za odabrani kurs i jezik."); ersteModel.SaveChanges(); ersteModel.Dispose(); } } }