/// <summary> /// Metoda koja briše sve postojeće transakcije iz tablice Transakcija i Transakcija_investicija vezane na odabrani bankovni račun. /// </summary> public void ObrisiSveTransakcijeRacuna(Bankovni_racun odabraniRacun) { List <Transakcija> listaTransakcija = new List <Transakcija>(); List <Transakcija_investicije> listaTransakcijaInvesticija = new List <Transakcija_investicije>(); using (var db = new WalletEntities()) { db.Bankovni_racun.Attach(odabraniRacun); listaTransakcija = odabraniRacun.Transakcija.ToList(); listaTransakcijaInvesticija = odabraniRacun.Transakcija_investicije.ToList(); } //brisanje svih povezanih transakcija za odabrani račun foreach (var transakcija in listaTransakcija) { upravljanjeTransakcijom.ObrisiTransakciju(transakcija); } //brisanje svih povezanih transakcija investicije za odabrani račun foreach (var transakcijaInvesticije in listaTransakcijaInvesticija) { using (var db = new WalletEntities()) { if (transakcijaInvesticije.iban == odabraniRacun.iban) { db.Transakcija_investicije.Attach(transakcijaInvesticije); db.Transakcija_investicije.Remove(transakcijaInvesticije); db.SaveChanges(); } } } }
/// <summary> /// Metoda koja vraća binding listu svih vrsta transakcija. /// </summary> public BindingList <Vrsta_transakcije> DohvatiVrsteTransakcija() { BindingList <Vrsta_transakcije> listaVrstaTransakcija = new BindingList <Vrsta_transakcije>(); using (var db = new WalletEntities()) { listaVrstaTransakcija = new BindingList <Vrsta_transakcije>(db.Vrsta_transakcije.ToList()); } return(listaVrstaTransakcija); }
/// <summary> /// Metoda koja vraća binding listu svih vrsta bankovnih računa. /// </summary> public BindingList <Vrsta_racuna> PrikaziVrsteBankovnihRacuna() { BindingList <Vrsta_racuna> listaVrstaRacuna = null; using (var db = new WalletEntities()) { listaVrstaRacuna = new BindingList <Vrsta_racuna>(db.Vrsta_racuna.ToList()); } return(listaVrstaRacuna); }
private void btnRegistracija_Click(object sender, EventArgs e) { // Dohvati sve korisnike iz baze. BindingList <Korisnik> korisnici = null; using (var db = new WalletEntities()) { korisnici = new BindingList <Korisnik>(db.Korisnik.ToList()); } // Provjeri postoji li mail u bazi, ako da postavi bool na true i prikaži warning. bool emailPostoji = false; foreach (var item in korisnici) { if (txtEmail.Text == item.email) { emailPostoji = true; } } if (emailPostoji) { lblWarningEmail.Show(); } if (txtLozinka.TextLength < 8) { lblWarningLozinka.Show(); // Provjera duljine lozinke, ako je < od 8 onda prikaži warning. } else if (txtLozinka.Text != txtPonoviLozinku.Text) { lblWarningPonoviLozinku.Show(); // Provjera jesu li upisane lozinke iste, ako nisu prikaži warning. } else if (!emailPostoji) { Korisnik noviKorisnik = new Korisnik(); // Instanciramo novog korisnika kojeg ćemo unijeti. noviKorisnik.email = txtEmail.Text.ToString(); // Zabilježe se vrijednosti textboxova. noviKorisnik.ime_korisnika = txtIme.Text.ToString(); noviKorisnik.prezime_korisnika = txtPrezime.Text.ToString(); noviKorisnik.lozinka = txtLozinka.Text.ToString(); noviKorisnik.datum_registracije = DateTime.Now; using (WalletEntities db = new WalletEntities()) // Dodaj korisnika u listu korisnika, i to vrati u bazu. { db.Korisnik.Add(noviKorisnik); db.SaveChanges(); } MessageBox.Show("Korisnik " + noviKorisnik.email + " kreiran."); // Potvrda da je korisnik registriran. this.Close(); // Zatvori formu i vrati se na prijavu. } }
/// <summary> /// Metoda koja vraća binding listu svih bankovnih računa odabranog korisnika. /// </summary> public BindingList <Bankovni_racun> PrikaziBankovneRacunePremaKorisniku(Korisnik trenutniKorisnik) { BindingList <Bankovni_racun> listaRacuna = null; using (var db = new WalletEntities()) { db.Korisnik.Attach(trenutniKorisnik); listaRacuna = new BindingList <Bankovni_racun>(trenutniKorisnik.Bankovni_racun.ToList <Bankovni_racun>()); } listaRacuna.OrderBy(x => x.naziv_racuna); return(listaRacuna); }
private void btnPrijava_Click(object sender, EventArgs e) { Korisnik trenutniKorisnik = new Korisnik(); // Instanciranje korisnika koje pri uspješnoj prijavi bilježi točno tog korisnika. /* * Čitanje liste korisnika, tako da možemo provjeriti točnost login podataka. * Vidi skriptu. */ BindingList <Korisnik> korisnici = null; using (var db = new WalletEntities()) { korisnici = new BindingList <Korisnik>(db.Korisnik.ToList()); } bool provjera = false; // Varijabla za provjeru korisnika (da ne ispisuje foreach više puta poruke). foreach (var item in korisnici) { if (txtEmail.Text == item.email) { provjera = true; trenutniKorisnik = item; break; // break da ne ode dalje ako nađe korisnika, pošto je email unique. } else { provjera = false; } } if (provjera == true) { if (txtLozinka.Text == trenutniKorisnik.lozinka) { MessageBox.Show("Prijava uspješna"); FrmGlavniIzbornik glavniIzbornik = new FrmGlavniIzbornik(trenutniKorisnik); // Ako je login dobar onda se pokrene FrmGlavniIzbornik, login je skriven i zatvara se skupa sa izbornikom. this.Hide(); glavniIzbornik.ShowDialog(); this.Close(); } else { MessageBox.Show("Kriva lozinka"); } } else { MessageBox.Show("Nepostojeći korisnik"); } }
/// <summary> /// Metoda koja vraća binding listu kategorija odabranog korisnika. Parametar idVrstaTransakcije određuje dohvaćanje: /// 0 - svih kategorija, 1 - prihodi, 2 - rashodi. /// </summary> public BindingList <Kategorije_transakcije> DohvatiKategorijeKorisnika(Korisnik trenutniKorisnik, int idVrsteTransakcije) { BindingList <Kategorije_transakcije> listaKategorijaKorisnika = new BindingList <Kategorije_transakcije>(); using (var db = new WalletEntities()) { db.Korisnik.Attach(trenutniKorisnik); //Ispituje se je li uzimanje svih kategorija korisnika ili samo prihoda/rashoda if (idVrsteTransakcije == 0) { listaKategorijaKorisnika = new BindingList <Kategorije_transakcije>(trenutniKorisnik.Kategorije_transakcije.ToList()); } else { listaKategorijaKorisnika = new BindingList <Kategorije_transakcije>(); foreach (Kategorije_transakcije kategorija in trenutniKorisnik.Kategorije_transakcije.ToList()) { db.Kategorije_transakcije.Attach(kategorija); if (idVrsteTransakcije == kategorija.id_vrsta_transakcije) { listaKategorijaKorisnika.Add(kategorija); } db.Entry(kategorija).State = System.Data.Entity.EntityState.Detached; } } listaKategorijaKorisnika.OrderBy(x => x.naziv_kategorije); foreach (Kategorije_transakcije kategorija in db.Kategorije_transakcije.ToList()) { db.Kategorije_transakcije.Attach(kategorija); if (idVrsteTransakcije == 0) { if (kategorija.id_kategorije_transakcije == 1 || kategorija.id_kategorije_transakcije == 2) { listaKategorijaKorisnika.Add(kategorija); } } else if (kategorija.id_kategorije_transakcije == idVrsteTransakcije) { listaKategorijaKorisnika.Add(kategorija); } db.Entry(kategorija).State = System.Data.Entity.EntityState.Detached; } } return(listaKategorijaKorisnika); }
/// <summary> /// Metoda koja vraća binding listu svih transakcija investicija prema listi bankovnih računa. /// </summary> public BindingList <Transakcija_investicije> DohvatiSveTransakcijeInvesticija(BindingList <Bankovni_racun> listaBankovnihRacuna) { BindingList <Transakcija_investicije> listaTransakcija = new BindingList <Transakcija_investicije>(); using (var db = new WalletEntities()) { foreach (Bankovni_racun racun in listaBankovnihRacuna) { db.Bankovni_racun.Attach(racun); foreach (Transakcija_investicije transakcija in racun.Transakcija_investicije) { listaTransakcija.Add(transakcija); } db.Entry(racun).State = System.Data.Entity.EntityState.Detached; } } listaTransakcija.OrderBy(x => x.vrijeme_transakcije_investicije); return(listaTransakcija); }
/// <summary> /// Metoda koja briše odabrani račun. /// Također brišemo i sve transakcije povezane na bankovni račun /// kao i sve veze istih transakcija s kategorijama transakcija koje su spremljene u tablici Transakcija_ima_kategorije. /// </summary> public void ObrisiRacun(Bankovni_racun odabraniRacun) { if (odabraniRacun != null) { if (MessageBox.Show("Da li ste sigurni?", "Upozorenje!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) { ObrisiSveTransakcijeRacuna(odabraniRacun); //nakon provjere (i brisanja postojećih) transakcija i transakcija investicija brišemo račun using (var db = new WalletEntities()) { db.Bankovni_racun.Attach(odabraniRacun); db.Bankovni_racun.Remove(odabraniRacun); db.SaveChanges(); } } } else { MessageBox.Show("Morate prvo odabrati postojeći račun da biste ga obrisali."); } }
/// <summary> /// Metoda koja briše odabranu transakciju. /// Također se brišu i sve veze transakcija s kategorijama transakcija koje su spremljene u tablici Transakcija_ima_kategorije. /// Također briše vanjski ključ id_ /// </summary> /// <param name="odabranaTransakcija"></param> public void ObrisiTransakciju(Transakcija odabranaTransakcija) { if (odabranaTransakcija != null) { using (var db = new WalletEntities()) { db.Transakcija.Attach(odabranaTransakcija); Transakcija vlastitaTransakcija = odabranaTransakcija.Transakcija2; //Ako se radi o računu na koji smo izvršili prijenos novca if (vlastitaTransakcija != null) { odabranaTransakcija.Transakcija2 = null; db.Transakcija.Attach(vlastitaTransakcija); vlastitaTransakcija.Transakcija2 = null; } db.SaveChanges(); db.Entry(odabranaTransakcija).State = System.Data.Entity.EntityState.Detached; if (vlastitaTransakcija != null) { db.Entry(vlastitaTransakcija).State = System.Data.Entity.EntityState.Detached; } db.Database.ExecuteSqlCommand("DELETE from Transakcija_ima_kategorije WHERE id_transakcije = " + odabranaTransakcija.id_transakcije); db.SaveChanges(); db.Transakcija.Attach(odabranaTransakcija); db.Transakcija.Remove(odabranaTransakcija); db.SaveChanges(); } } else { MessageBox.Show("Transakcija nije odabrana. Brisanje nije moguće."); } }
/// <summary> /// Metoda koja dodaje transakciju u bazu, te sukladno vrsti transakcije mijenja iznos na računu. /// Potrebno joj je proslijediti vrijednosti sa kontrola na formi, listu kategorija i ID vrste transakcije (1 - prihod, 2 - rashod). /// Vraća istu tu transakciju koja se dodala. /// </summary> /// <param name="idVrstaTransakcije"></param> /// <param name="bankovniRacun"></param> /// <param name="iznosTransakcije"></param> /// <param name="vrijemeTransakcije"></param> /// <param name="opisTransakcije"></param> /// <param name="kategorijeTransakcije"></param> public Transakcija DodajTransakciju(int idVrstaTransakcije, BindingSource bankovniRacun, string iznosTransakcije, DateTime vrijemeTransakcije, string opisTransakcije, List <string> kategorijeTransakcije, string lokacijaSlike) { Transakcija novaTransakcija = null; using (WalletEntities db = new WalletEntities()) { // Dohvati bankovni račun preko proslijeđenog binding sourcea. db.Bankovni_racun.Attach(bankovniRacun.Current as Bankovni_racun); novaTransakcija = new Transakcija { Bankovni_racun = bankovniRacun.Current as Bankovni_racun, iznos_transakcije = decimal.Parse(iznosTransakcije), vrijeme_transakcije = vrijemeTransakcije, opis_transakcije = opisTransakcije }; if (lokacijaSlike != null) { novaTransakcija.lokacija_slike_racuna = lokacijaSlike; } // Spoji odabrane kategorije na transakciju. foreach (var item in kategorijeTransakcije) { Kategorije_transakcije dodajKategoriju = (from t in db.Kategorije_transakcije where t.naziv_kategorije == item.ToString() && t.id_vrsta_transakcije == idVrstaTransakcije select t).First(); novaTransakcija.Kategorije_transakcije.Add(dodajKategoriju); } // Spoji novu transakciju sa kategorijama koje su označene na formi. foreach (var item in kategorijeTransakcije) { foreach (var kategorija in db.Kategorije_transakcije.ToList()) { if (kategorija.naziv_kategorije.ToString() == item.ToString()) { kategorija.Transakcija.Add(novaTransakcija); } } } // Ovisno o vrsti transakcije, promijeni iznos bankovnog računa na kojeg je vezana transakcija. if (idVrstaTransakcije == 1) { foreach (Bankovni_racun racun in db.Bankovni_racun) { if (racun == bankovniRacun.Current) { racun.stanje_racuna += novaTransakcija.iznos_transakcije; } } } else if (idVrstaTransakcije == 2) { foreach (Bankovni_racun racun in db.Bankovni_racun) { if (racun == bankovniRacun.Current) { racun.stanje_racuna -= novaTransakcija.iznos_transakcije; } } } db.Transakcija.Add(novaTransakcija); db.SaveChanges(); } return(novaTransakcija); }