/// <summary> /// Briše se materijal sa odabrane faze odabranog projekta ako ta faza nije zaključana ili /// ako za projekt nije izdan račun /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void brisiMaterijalButton_Click(object sender, EventArgs e) { Faza_ima_materijal selektiranaFazaImaMaterijal = fazaimamaterijalBindingSource.Current as Faza_ima_materijal; Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; if (selektiraniProjekt.gotovo != 1) { if (selektiranaFazaImaMaterijal != null) { if (selektiranaFazaImaMaterijal.Faze_projekta.zakljucano == 0) { using (var db = new UpravljanjeProjektimaEntities()) { db.Faza_ima_materijal.Attach(selektiranaFazaImaMaterijal); db.Faza_ima_materijal.Remove(selektiranaFazaImaMaterijal); db.SaveChanges(); } PrikaziMaterijal(); } else { MessageBox.Show("Materijal pripada zaključanoj fazi, nije moguće brisati"); } } } else { MessageBox.Show("Projekt je završen!"); } }
/// <summary> /// Metoda koja vraća fazu_projekta prema označenom projektu i fazi /// koristi parametar za kontrolu povratne informacije, 1 vraća prvi pronađeni element /// 0 vraća zadnji pronađeni element. Koriste se lista faza_projekta dobivenih iz /// navigacijskog svojstva projekta i lista od navigacijskog od faze /// traže se zajedničke faze_projekta, a važno je koja se vraća zbog /// mogućnosti postojanja istih faza na jednom projektu, /// ako se briše šalje se 0, a ako se dodaje i prikazuje materijal 1 /// </summary> /// <param name="kontroler"></param> /// <returns></returns> private Faze_projekta vratiFazuProjekta(int kontroler) { Faza selektiranaFaza = fazaBindingSource.Current as Faza; Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; Faze_projekta vrati = null; if (selektiranaFaza != null && selektiraniProjekt != null) { using (var db = new UpravljanjeProjektimaEntities()) { db.Projekt.Attach(selektiraniProjekt); db.Faza.Attach(selektiranaFaza); List <Faze_projekta> listaOdProjekta = new List <Faze_projekta>(selektiraniProjekt.Faze_projekta.ToList()); List <Faze_projekta> listaOdFaze = new List <Faze_projekta>(selektiranaFaza.Faze_projekta.ToList()); foreach (var P in listaOdProjekta) { foreach (var F in listaOdFaze) { if (P.id == F.id) { vrati = P; if (kontroler == 1) { return(vrati); } } } } } } return(vrati); }
/// <summary> /// Briše se faza samo ako nije zaključana i ako za projekt nije izdan račun /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void brisiFazuButton_Click(object sender, EventArgs e) { Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; if (MessageBox.Show("Da li ste sigurni?", "Upozorenje!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { if (selektiraniProjekt.gotovo != 1) { Faze_projekta selektiranaFazaProjekta = vratiFazuProjekta(0); if (selektiranaFazaProjekta.zakljucano == 0) { using (var db = new UpravljanjeProjektimaEntities()) { db.Faze_projekta.Attach(selektiranaFazaProjekta); db.Faze_projekta.Remove(selektiranaFazaProjekta); db.SaveChanges(); } MessageBox.Show("Uspješno obrisana faza"); } else { MessageBox.Show("Faza je zaključana, nije moguće brisati zaključane faze"); } PrikaziFaze(projektBindingSource.Current as Projekt); } else { MessageBox.Show("Projekt je završen!"); } } }
/// <summary> /// Ako se potvri poruka pokreće se projekt, postavlja se datum početka na trenutni datum, /// ažurira se datum završetka prema potrebnom vremenu i datumu početka, postavlja se aktivan na 1 /// Projekt se neć pokrenuti ako nema faza na sebi /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void pokreniProjektButton_Click(object sender, EventArgs e) { Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; if (selektiraniProjekt != null) { if (MessageBox.Show("Da li ste sigurni?", "Upozorenje!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { using (var db = new UpravljanjeProjektimaEntities()) { db.Projekt.Attach(selektiraniProjekt); if (selektiraniProjekt.aktivan == 0 && selektiraniProjekt.Faze_projekta.Count > 0) { selektiraniProjekt.aktivan = 1; selektiraniProjekt.datum_pocetka = DateTime.Today; DateTime datum = DateTime.Today; selektiraniProjekt.datum_zavrsetka = datum.AddDays((double)selektiraniProjekt.potrebno_vrijeme); db.SaveChanges(); PrikaziProjekte(); } else { MessageBox.Show("Projekt je već pokrenut ili nema postavljenih faza"); } } } } }
/// <summary> /// Briše se projekt ako nema dodijeljenih faza, osvježavaju se datagridview-ovi /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void brisiProjektButton_Click(object sender, EventArgs e) { Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; if (selektiraniProjekt != null) { if (MessageBox.Show("Da li ste sigurni?", "Upozorenje!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { using (var db = new UpravljanjeProjektimaEntities()) { db.Projekt.Attach(selektiraniProjekt); if (selektiraniProjekt.Faze_projekta.Count == 0) { db.Projekt.Remove(selektiraniProjekt); db.SaveChanges(); } else { MessageBox.Show("Nije moguće obrisati projekt koji sadrži faze"); } } PrikaziProjekte(); PrikaziFaze(projektBindingSource.Current as Projekt); } } }
/// <summary> /// Provjerava se ako označeni materijal nije u listi već dodanog materijala /// dodaje se u listu materijala faze(kako se opet ne bi mogao dodati) i /// ako je odabrana količina manja od one na skladištu stvara se stavka materijala /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dodajMaterijalButton_Click(object sender, EventArgs e) { Materijal selektiranMaterijal = materijalBindingSource.Current as Materijal; if (selektiranMaterijal != null && listaM.SingleOrDefault(x => x.materijalId == selektiranMaterijal.materijalId) == null) { if (selektiranMaterijal.kolicina > (int)numKolicina.Value) { listaM.Add(selektiranMaterijal); using (var db = new UpravljanjeProjektimaEntities()) { Faza_ima_materijal noviMaterijalFaza = new Faza_ima_materijal { id = odabranaFazaProjekta.id, materijalId = selektiranMaterijal.materijalId, kolicina = (int)numKolicina.Value, }; db.Faza_ima_materijal.Add(noviMaterijalFaza); db.SaveChanges(); } MessageBox.Show("Uspješno dodan materijal"); } else { MessageBox.Show("Nema toliko traženog materijala na skladištu"); } } else { MessageBox.Show("Taj materijal je već dodan na fazu!"); } PrikaziMaterijal(); }
//private void zamijeniQRKod(string sifra) //{ // generirajQRKod(sifra); // if (File.Exists(staroImeFaze + ".jpeg")) // { // File.Delete(staroImeFaze + ".jpeg"); // } //} /// <summary> /// Ako je novi unos onda se stvara novi objekt i generira se QR kod, /// ako je izmjena onda se mijenjaju podaci /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dodajFazuButton_Click(object sender, EventArgs e) { if (odabranaFaza == null) { string sifra; using (var db = new UpravljanjeProjektimaEntities()) { Faza novaFaza = new Faza { naziv = tboxNaziv.Text, cijena = numCijena.Value, trajanje = (int)numTrajanje.Value, }; db.Faza.Add(novaFaza); db.SaveChanges(); sifra = novaFaza.fazaId.ToString(); } generirajQRKod(sifra); } else { using (var db = new UpravljanjeProjektimaEntities()) { db.Faza.Attach(odabranaFaza); odabranaFaza.naziv = tboxNaziv.Text.ToString(); odabranaFaza.cijena = numCijena.Value; odabranaFaza.trajanje = (int)numTrajanje.Value; db.SaveChanges(); } Close(); } }
/// <summary> /// Pretražuju se projekti prema datumu početka /// </summary> private void PretraziPoDatumu() { projektiDataGridView.Rows.Clear(); BindingList <Projekt> listaProjekta = null; BindingList <Projekt> bindingListaProjekta = new BindingList <Projekt>(); BindingList <Korisnik> listaKorisnika = new BindingList <Korisnik>(); BindingList <Partner> listaPartnera = new BindingList <Partner>(); using (var db = new UpravljanjeProjektimaEntities()) { listaProjekta = new BindingList <Projekt>(db.Projekt.ToList()); foreach (var P in listaProjekta) { if (P.datum_pocetka > dtProjekti1.Value && P.datum_pocetka < dtProjekti2.Value) { bindingListaProjekta.Add(P); listaKorisnika.Add(P.Korisnik as Korisnik); listaPartnera.Add(P.Partner as Partner); } } } projektBindingSource.DataSource = bindingListaProjekta; korisnikBindingSource.DataSource = listaKorisnika; partnerBindingSource.DataSource = listaPartnera; }
/// <summary> /// Dodaje se faza na prosljeđeni projekt ako za projekt nije izdan račun /// stvara se novi objekt faza_projekta /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dodajFazuButton_Click(object sender, EventArgs e) { Faza selektiranaFaza = fazaBindingSource.Current as Faza; if (odabraniProjekt.gotovo != 1) { using (var db = new UpravljanjeProjektimaEntities()) { //db.Faza.Attach(selektiranaFaza); //db.Projekt.Attach(odabraniProjekt); Faze_projekta novaFazaProjekta = new Faze_projekta { fazaId = selektiranaFaza.fazaId, projektId = odabraniProjekt.projektId, zakljucano = 0, }; db.Faze_projekta.Add(novaFazaProjekta); db.SaveChanges(); } MessageBox.Show("Uspješno dodana faza"); } else { MessageBox.Show("Projekt je završen!"); } }
/// <summary> /// Pretražuju se projekti prema nazivu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tboxPretrazi_TextChanged(object sender, EventArgs e) { projektiDataGridView.Rows.Clear(); BindingList <Projekt> listaProjekta = null; BindingList <Projekt> bindingListaProjekta = new BindingList <Projekt>(); BindingList <Korisnik> listaKorisnika = new BindingList <Korisnik>(); BindingList <Partner> listaPartnera = new BindingList <Partner>(); using (var db = new UpravljanjeProjektimaEntities()) { listaProjekta = new BindingList <Projekt>(db.Projekt.ToList()); foreach (var P in listaProjekta) { if (P.ime.ToLower().Contains(tboxPretrazi.Text)) { bindingListaProjekta.Add(P); listaKorisnika.Add(P.Korisnik as Korisnik); listaPartnera.Add(P.Partner as Partner); } } } projektBindingSource.DataSource = bindingListaProjekta; korisnikBindingSource.DataSource = listaKorisnika; partnerBindingSource.DataSource = listaPartnera; }
/// <summary> /// Briše se odabrana faza ako se potvrdi poruka i ako baza ne vrati iznimku /// zbog referencijalnog integriteta koja se obrađuje sa try catch /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void obrisiFazuButton_Click(object sender, EventArgs e) { Faza selektiranaFaza = fazaBindingSource.Current as Faza; if (selektiranaFaza != null) { if (MessageBox.Show("Da li ste sigurni?", "Upozorenje!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { using (var db = new UpravljanjeProjektimaEntities()) { db.Faza.Attach(selektiranaFaza); db.Faza.Remove(selektiranaFaza); try { db.SaveChanges(); } catch (Exception) { MessageBox.Show("Nije moguće izbrisati fazu koja se koristis"); } } PrikaziFaze(); } } }
/// <summary> /// Metoda za prikazivanje svih materijala /// </summary> private void PrikaziMaterijal() { BindingList <Materijal> listaMaterijala = null; using (var db = new UpravljanjeProjektimaEntities()) { listaMaterijala = new BindingList <Materijal>(db.Materijal.ToList()); } materijalBindingSource.DataSource = listaMaterijala; }
/// <summary> /// Metoda za prikaz svih faza /// </summary> private void PrikaziFaze() { BindingList <Faza> listaFaza = null; using (var db = new UpravljanjeProjektimaEntities()) { listaFaza = new BindingList <Faza>(db.Faza.ToList()); } fazaBindingSource.DataSource = listaFaza; }
/// <summary> /// Dohvaćaju se partneri koji su tipa klijent za ispis u padajućem izborniku /// ako se radi o izmjeni projekta ispinjuju se polja podacima projekta /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void NoviProjektForm_Load(object sender, EventArgs e) { BindingList <Partner> listaPartnera = null; using (var db = new UpravljanjeProjektimaEntities()) { listaPartnera = new BindingList <Partner>(db.Partner.Where(x => x.tip_partnera == "k").ToList()); } partnerBindingSource.DataSource = listaPartnera; if (odabraniProjekt != null) { tboxNaziv.Text = odabraniProjekt.ime.ToString(); dtDatum.Text = odabraniProjekt.datum_pocetka.ToString(); cboxPartner.Text = odabraniProjekt.Partner.ime; } }
/// <summary> /// Pretraživanje faza prema nazivu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tboxPretrazi_TextChanged(object sender, EventArgs e) { BindingList <Faza> listaFaza = null; BindingList <Faza> bindingListaFaza = new BindingList <Faza>(); using (var db = new UpravljanjeProjektimaEntities()) { listaFaza = new BindingList <Faza>(db.Faza.ToList()); foreach (var F in listaFaza) { if (F.naziv.ToLower().Contains(tboxPretrazi.Text)) { bindingListaFaza.Add(F); } } } fazaBindingSource.DataSource = bindingListaFaza; }
/// <summary> /// Pretraživanje materijala prema nazivu /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tboxPretrazi_TextChanged(object sender, EventArgs e) { BindingList <Materijal> listaMaterijala = null; BindingList <Materijal> bindingListaMaterijala = new BindingList <Materijal>(); using (var db = new UpravljanjeProjektimaEntities()) { listaMaterijala = new BindingList <Materijal>(db.Materijal.ToList()); foreach (var M in listaMaterijala) { if (M.naziv.ToLower().Contains(tboxPretrazi.Text)) { bindingListaMaterijala.Add(M); } } } materijalBindingSource.DataSource = bindingListaMaterijala; }
/// <summary> /// Mateoda za prikazivanje faza označenog projekta, radi se preko faza_projekta(veza između projekta i faze) /// </summary> /// <param name="projekt"></param> private void PrikaziFaze(Projekt projekt) { fazeDataGridView.Rows.Clear(); if (projekt != null) { List <Faze_projekta> listaFaze_projekta = null; BindingList <Faza> listaFaza = new BindingList <Faza>(); using (var db = new UpravljanjeProjektimaEntities()) { db.Projekt.Attach(projekt); listaFaze_projekta = new List <Faze_projekta>(projekt.Faze_projekta.ToList()); foreach (var F in listaFaze_projekta) { listaFaza.Add(F.Faza as Faza); } } fazaBindingSource.DataSource = listaFaza; } }
/// <summary> /// Metoda za prikazivanje svih projekata na datagridviewu /// dohvaća se iz korisnici i partneri za prikazivanje naziva /// umjesto id-eva /// </summary> private void PrikaziProjekte() { projektiDataGridView.Rows.Clear(); BindingList <Projekt> listaProjekta = null; BindingList <Korisnik> listaKorisnika = new BindingList <Korisnik>(); BindingList <Partner> listaPartnera = new BindingList <Partner>(); using (var db = new UpravljanjeProjektimaEntities()) { listaProjekta = new BindingList <Projekt>(db.Projekt.ToList()); foreach (var P in listaProjekta) { listaKorisnika.Add(P.Korisnik as Korisnik); listaPartnera.Add(P.Partner as Partner); } } projektBindingSource.DataSource = listaProjekta; korisnikBindingSource.DataSource = listaKorisnika; partnerBindingSource.DataSource = listaPartnera; }
/// <summary> /// Metoda za prikazivanje materijala na datagridviewu prema označenom projektu i fazi /// koristi metodu vratifazuProjekta za dohvaćanje faze_projekta i preko toga dohvaća faza_ima_materijal /// i pripadajući materijal /// </summary> private void PrikaziMaterijal() { materijalDataGridView.Rows.Clear(); Faze_projekta materijal = vratiFazuProjekta(1); BindingList <Faza_ima_materijal> listaMaterijala = null; BindingList <Materijal> listaMaterijalId = new BindingList <Materijal>(); if (materijal != null) { using (var db = new UpravljanjeProjektimaEntities()) { db.Faze_projekta.Attach(materijal); listaMaterijala = new BindingList <Faza_ima_materijal>(materijal.Faza_ima_materijal.ToList()); foreach (Faza_ima_materijal M in listaMaterijala) { listaMaterijalId.Add(M.Materijal as Materijal); } } fazaimamaterijalBindingSource.DataSource = listaMaterijala; materijalBindingSource.DataSource = listaMaterijalId; } }
/// <summary> /// Ako je novi projekt, stvara se objekt i dodaijeljuju se početne vrijednosti /// ako je izmjena mijenjaju se samo vrijednosti za koje postoje kontrole na formi /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void spremiButton_Click(object sender, EventArgs e) { if (odabraniProjekt == null) { using (var db = new UpravljanjeProjektimaEntities()) { Projekt noviProjekt = new Projekt { ime = tboxNaziv.Text, datum_pocetka = dtDatum.Value, partnerId = int.Parse(cboxPartner.SelectedValue.ToString()), aktivan = 0, gotovo = 0, ukupna_cijena = 0, cijena_bez_pdv = 0, iznos_pdv = 0, datum_zavrsetka = null, korisnikId = idKorisnik, potrebno_vrijeme = 0, kod = GenerirajKod(6), }; db.Projekt.Add(noviProjekt); db.SaveChanges(); } } else { using (var db = new UpravljanjeProjektimaEntities()) { db.Projekt.Attach(odabraniProjekt); odabraniProjekt.ime = tboxNaziv.Text; odabraniProjekt.datum_pocetka = dtDatum.Value; odabraniProjekt.partnerId = int.Parse(cboxPartner.SelectedValue.ToString()); db.SaveChanges(); } } MessageBox.Show("Uspješno dodan projekt"); }