//detalji racuna -> dohvacanje ukupnog iznosa i ispis te oslobađanje parcele
        public void KreirajStavke(racun kreiraniRacun)
        {
            decimal ukupniIznos       = 0;
            int     brOsobaUSmjestaju = 0;

            using (KampiralisteEntiteti kontekst = new KampiralisteEntiteti())
            {
                kontekst.smjestajs.Attach(odabraniSmjestaj);
                brOsobaUSmjestaju   = odabraniSmjestaj.prijavas.Count;
                ukupniIznos        += UkupniIznosRacuna(kreiraniRacun, kontekst);
                ispisRacuna.Text    = Convert.ToString(ukupniIznos) + " kn";
                kreiraniRacun.iznos = ukupniIznos;
                kontekst.SaveChanges();
            }
            OslobodiParcelu(brOsobaUSmjestaju);
        }
        //poziv funkcije za kreiranje računa, osvjezavanje parcela, prikaza iznosa i gostiju
        private void akcijaKreirajRacun_Click(object sender, EventArgs e)
        {
            if (ispisOdabraniGosti.Items.Count > 0)
            {
                racun kreiraniRacun = KreirajRacun();
                KreirajStavke(kreiraniRacun);
                MessageBox.Show("Račun je kreiran!");
                ispisOdabraniGosti.Items.Clear();
                ispisRacuna.Text = null;
                PrikaziParcele();
            }

            else
            {
                MessageBox.Show("Niste odabrali goste za koje želite izdati račun!");
            }
        }
        //racun -> izracun ukupnog iznosa prema statusu osobe, broju dana, vrsti smjestaja i broju osoba
        private decimal UkupniIznosRacuna(racun kreiraniRacun, KampiralisteEntiteti kontekst)
        {
            decimal ukupniIznos = 0;

            kontekst.smjestajs.Attach(odabraniSmjestaj);
            List <prijava> listaStavki       = ispisOdabraniGosti.Items.Cast <prijava>().ToList();
            int            brOsobaUSmjestaju = odabraniSmjestaj.prijavas.Count;

            foreach (var item in listaStavki)
            {
                int razlikaDatuma = (item.datum_odjave - item.datum_prijave).Days;
                if (kreiraniRacun != null)
                {
                    item.racun = kreiraniRacun;
                }
                ukupniIznos += item.status_osobe.iznos * razlikaDatuma + ((item.smjestaj.vrsta_smjestaja.iznos) / brOsobaUSmjestaju) * razlikaDatuma;
            }
            return(ukupniIznos);
        }
        //kreiranje računa
        private racun KreirajRacun()
        {
            racun noviRacun = null;

            using (KampiralisteEntiteti kontekst = new KampiralisteEntiteti())
            {
                kontekst.smjestajs.Attach(odabraniSmjestaj);

                noviRacun = new racun()
                {
                    smjestaj                = odabraniSmjestaj as smjestaj,
                    smjestaj_id             = odabraniSmjestaj.id,
                    zaposlenik_id           = prijavljeniZaposlenik.id,
                    JIR                     = RandomString(),
                    ZIR                     = RandomString(),
                    iznos                   = 0,
                    datum_vrijeme_izdavanja = DateTime.Now
                };
                kontekst.racuns.Add(noviRacun);
                kontekst.SaveChanges();
            }
            return(noviRacun);
        }
Ejemplo n.º 5
0
        // storniranje racuna -> dohvacanje prijava, postavljanje racuna na null i ponovno zauzimanje parcele
        private void akcijaStornirajRacun_Click(object sender, EventArgs e)
        {
            BindingList <prijava> listaPrijava = new BindingList <prijava>();
            racun odabraniRacun = racunBindingSource.Current as racun;

            if (odabraniRacun != null)
            {
                if (MessageBox.Show("Sigurno želite stornirati odabrani račun?", "Upozorenje!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    using (var baza = new KampiralisteEntiteti())
                    {
                        baza.racuns.Attach(odabraniRacun);

                        var upit = from prijava in baza.prijavas
                                   where prijava.racun.id == odabraniRacun.id
                                   select prijava;

                        listaPrijava = new BindingList <prijava>(upit.ToList());

                        foreach (var item in listaPrijava)
                        {
                            item.racun_id = null;
                        }
                        odabraniSmjestaj = odabraniRacun.smjestaj as smjestaj;
                        ZauzmiParcelu();

                        baza.racuns.Remove(odabraniRacun);
                        baza.SaveChanges();
                    }
                }
            }
            else
            {
                MessageBox.Show("Potrebno je odabrati račun koji se želi stornirati!");
            }
            PrikaziRacune();
        }