Esempio n. 1
0
        private void btnPrimiPorudzibnu_Click(object sender, EventArgs e)
        {
            if (listOperater.SelectedItems.Count == 0 || listKupac.SelectedItems.Count == 0 || sadrzi.Count == 0 || comboNacinPlacanja.SelectedItem == null)
            {
                MessageBox.Show("Morate izbrati jednog operatera,dostavaljaca,nacin placanja i popuniti sadrzaj bar jedne porudzbine");
                return;
            }
            ISession     s = DataLayer.GetSession();
            ITransaction t = s.BeginTransaction();

            Kupac k    = s.Load <Kupac>(((Kupac)listKupac.SelectedItem).Id);
            int   suma = 0;

            Operater o = s.Load <Operater>(((Operater)listOperater.SelectedItem).Id);
            NeisporucenaPorudzbina p = new NeisporucenaPorudzbina()
            {
                NacinPlacanja       = comboNacinPlacanja.Text,
                IdKupca             = k,
                IdOperater          = o,
                DatumVremeKreiranja = DateTime.Now
            };

            s.Save(p);
            k.Porudzbine.Add(p);
            o.PrimljenePorudzbine.Add(p);
            foreach (var x in sadrzi)
            {
                x.PorudzbinaId = p;
                s.Save(x);
                p.Sadrzaj.Add(x);
                suma += x.VelicinaId.Bodovi;
            }
            //  k = (Ucesnik)k;
            if (k.GetType() == typeof(Ucesnik))
            {
                ISession     sesija      = DataLayer.GetSession();
                ITransaction transakcija = sesija.BeginTransaction();

                sesija.Delete(k);
                transakcija.Commit();

                listOperater.Items.Clear();
                listKupac.Items.Clear();

                Ucesnik novi = new Ucesnik();
                novi.DatumPrvePorudzbine = novi.DatumPrvePorudzbine;

                novi.SakupljeniBodovi = ((Ucesnik)k).SakupljeniBodovi + suma;
                novi.Porudzbine       = k.Porudzbine;
                novi.LicniBroj        = k.LicniBroj;
                sesija.Save(novi);

                sesija.Close();

                sesija      = DataLayer.GetSession();
                transakcija = sesija.BeginTransaction();
                foreach (Porudzbina porudzbina in k.Porudzbine)
                {
                    Porudzbina por;
                    if (porudzbina.GetType() == typeof(NeisporucenaPorudzbina))
                    {
                        por = new NeisporucenaPorudzbina();
                    }
                    else
                    {
                        por = new IsporucenaPorudzbina();
                    }
                    por         = porudzbina;
                    por.IdKupca = novi;
                    sesija.Save(por);
                }
                foreach (Poklon nagrada in ((Ucesnik)k).Pokloni)
                {
                    Poklon pok;
                    if (nagrada.GetType() == typeof(PoklonPopust))
                    {
                        pok = new PoklonPopust();
                    }
                    else
                    {
                        pok = new PoklonPizza();
                    }
                    pok         = nagrada;
                    pok.IdKupca = novi;
                    sesija.Save(pok);
                }
                transakcija.Commit();
                sesija.Close();
                //            k = novi;
            }
            t.Commit();
            s.Close();
            DialogResult = DialogResult.OK;
            Close();
        }