/// <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);
        }
示例#4
0
        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);
        }
示例#6
0
        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);
        }