/// <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> /// 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> /// 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> /// Otvara se nova forma za unos novog materijala samo ako nije izdan račun za projekt, /// prosljeđuje se odabrana faza i lista već dodanog materijala /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dodajMaterijalButton_Click(object sender, EventArgs e) { Faza selektiranaFaza = fazaBindingSource.Current as Faza; Projekt selektiraniProjekt = projektBindingSource.Current as Projekt; BindingList <Materijal> listaMaterijala = (BindingList <Materijal>)materijalBindingSource.DataSource; if (selektiraniProjekt.gotovo != 1) { Faze_projekta selektiranaFazaProjekta = vratiFazuProjekta(1); if (selektiranaFazaProjekta != null) { PopisMaterijalaForm materijaliForma = new PopisMaterijalaForm(selektiranaFazaProjekta, listaMaterijala); materijaliForma.ShowDialog(); PrikaziProjekte(); } } else { MessageBox.Show("Projekt je završen!"); } }
/// <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> /// Prima se prosljeđena faza_projekta i lista već dodanog materijala /// </summary> /// <param name="faze_Projekta"></param> /// <param name="lista"></param> public PopisMaterijalaForm(Faze_projekta faze_Projekta, BindingList <Materijal> lista) { InitializeComponent(); odabranaFazaProjekta = faze_Projekta; listaM = lista; }