Exemple #1
0
        public async Task <IActionResult> DodajKontejner([FromBody] Kontejner kontejner)
        {
            List <Brod> brodovi = await Context.Brodovi.ToListAsync();

            var brod = brodovi.Find(brd => brd.TrenutnaZauzetost + kontejner.Tezina <= brd.MaxKapacitet &&
                                    brd.BrojUpotrebljivihKontejnera > 0);

            if (brod == null)
            {
                return(BadRequest("Ne postoji brod za zadati kontejner!"));
            }
            else
            {
                kontejner.Brod = brod;
                Context.Kontejneri.Add(kontejner);
                brod.TrenutnaZauzetost += kontejner.Tezina;
                brod.BrojUpotrebljivihKontejnera--;
                if (brod.TrenutnaZauzetost == brod.MaxKapacitet)
                {
                    brod.BrojUpotrebljivihKontejnera = 0;
                }
                await Context.SaveChangesAsync();

                return(Ok());
            }
        }
        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            //brisanje kolone
            Button    remove = sender as Button;
            Kontejner kolona = (Kontejner)remove.Tag;

            vm.TrenutniProjekat.TabelaProjekta.IzbrisiFazu(kolona);
            vm.PostaviTrenutniProjekat();
        }
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            //pomeranje u levo
            Button    split  = sender as Button;
            Kontejner kolona = (Kontejner)split.Tag;

            vm.TrenutniProjekat.TabelaProjekta.Pomeri(kolona, true);
            vm.PostaviTrenutniProjekat();
        }
 public KontejnerViewModel(Kontejner a)
 {
     //lista_k = new List<Korisnik>(a.DajSveKorisnike());
     lista_s        = new List <Strazar>(a.DajSveStrazare());
     lista_c        = new List <Cuvar>(a.DajSveCuvare());
     lista_m        = new List <MedicinskiRadnik>(a.DajSveMedicinare());
     lista_u        = new List <Uposlenik>(a.DajSveUposlenike());
     lista_z        = new List <ProfilZatvorenika>(a.DajSveZatvorenike());
     lista_kartoni  = new List <ZdravstveniKarton>(a.DajSveKartone());
     lista_narudzbi = new List <Narudzba>(a.DajSveNarudzbe());
 }
Exemple #5
0
        public async Task <IActionResult> AzurirajKontejner([FromBody] Kontejner kontejner)
        {
            var stariKontejner = await Context.Kontejneri.FindAsync(kontejner.ID);

            if (stariKontejner != null)
            {
                List <Brod> brodovi = await Context.Brodovi.ToListAsync();

                var brod = stariKontejner.Brod;
                brod.TrenutnaZauzetost -= stariKontejner.Tezina;

                if (brod.TrenutnaZauzetost + kontejner.Tezina > brod.MaxKapacitet)
                {
                    brod.TrenutnaZauzetost += stariKontejner.Tezina;
                    return(BadRequest("Izmenjeni kontejner premasuje dozvoljenu tezinu broda!"));
                }
                else
                {
                    brod.TrenutnaZauzetost += kontejner.Tezina;
                }


                stariKontejner.Ime    = kontejner.Ime;
                stariKontejner.Tezina = kontejner.Tezina;
                stariKontejner.Oznaka = kontejner.Oznaka;

                Context.Update <Kontejner>(stariKontejner);
                await Context.SaveChangesAsync();

                return(Ok());
            }
            else
            {
                return(BadRequest("Kontejner koji zelite da azurirate ne postoji u bazi!"));
            }
        }
        //Metoda koja mapira iz Modela(Klase) u ViewModel koji se koristi na View-u
        public static KontejnerViewModel KontejnerMetoda(Kontejner poslan)
        {
            KontejnerViewModel viewModel = new KontejnerViewModel(poslan);

            return(viewModel);
        }
        private void UserControl_Drop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("myZad"))
            {
                //provera da li mozda ima max broja zadataka u koloni gde hocemo da ubacimo novi zadatak
                KontejnerZadGrid kontejner = sender as KontejnerZadGrid;

                //izvuce se KontejnerZadGrid u koji se stavlja
                Border bor1 = (Border)kontejner.Children[1];
                Grid   kolonaContentGrid = (Grid)bor1.Child;

                //izvuce se model podataka kolone zadataka
                Kontejner kz = (Kontejner)(((Grid)kontejner).Tag);

                if (((KontejnerZadataka)kz).Zadaci.Count != ((KontejnerZadataka)kz).MaxBrZadataka)
                {
                    //izvuce se zadatak
                    Zadatak z = e.Data.GetData("myZad") as Zadatak;

                    //zakomentarisi ako necemo otkljucavanje
                    //lock zadatka u bazi
                    if (z.Id != 0)
                    {
                        try
                        {
                            Packages.PZadatak.Otkljucaj(z.Id);
                        }
                        catch (Oracle.ManagedDataAccess.Client.OracleException oraError)
                        {
                            try
                            {
                                System.Windows.MessageBox.Show(Packages.PPoruka.VratiPrevod(oraError.Number.ToString()));
                            }
                            catch (Oracle.ManagedDataAccess.Client.OracleException err)
                            {
                                System.Windows.MessageBox.Show("Error");
                            }
                        }
                    }

                    try
                    {
                        // pomeranje zadatka u drugu fazu i usnimanje promene u bazi
                        // treba sve da se stavi u if ovo ispod jer moze da dodje do slucaja da se
                        // izbrise faza a onda neko pokusa da ubaci nesto u nju
                        // ako se to desi treba da se obradi exception i kaze korisniku da prvo treba da refreshuje
                        if (kz.Id != 0 && z.Id != 0)
                        {
                            Packages.PZadatak.IzmeniFazu(z.Id, kz.Id);
                        }

                        //menjaju se informacije zadataka vezane za njegovu poziciju
                        ((KontejnerZadataka)kz).Zadaci.Add(z);
                        ((KontejnerZadataka)kz).PreurediZadatke();

                        //trebalo bi da se ostali zadaci pomere za mesto unazad da i da im se izmene indeksi
                        //remove bi trebalo to da uradi sama
                        z.Roditelj.Zadaci.Remove(z);
                        z.Roditelj.PreurediZadatke();
                        z.Roditelj = ((KontejnerZadataka)kz);
                        //ovde funkcija koja ce ponovo da namesti indekse zadacima

                        this.vm.PostaviTrenutniProjekat();

                        //!!! ISPITATI SLUCAJ UKOLIKO NEMA DOVOLJNO ROW ILI COLUMN DEFINICIJA
                        //TAKO DA SE UBACI NOVI I TEK ONDA UBACI ZADATAK
                        //u zavisnosti od max sirine za vertical split i obrnuto
                        //odredjuje se indeks zadatka
                    }
                    catch (Oracle.ManagedDataAccess.Client.OracleException oraError)
                    {
                        try
                        {
                            System.Windows.MessageBox.Show(Packages.PPoruka.VratiPrevod(oraError.Number.ToString()));
                        }
                        catch (Oracle.ManagedDataAccess.Client.OracleException err)
                        {
                            System.Windows.MessageBox.Show("Error");
                        }
                    }
                }
            }
        }
Exemple #8
0
        //mora da se prodje kroz celo stablo i da se izracuna max broj zadataka u deci i na osnovu toga odredi velicina svake kolone
        public static void Nacrtaj(Kontejner kolona, IKontejnerGrid parentGrid, ApplicationViewModel vm)
        {
            bool           isKontejnerFaza = false;
            IKontejnerGrid kolonaGrid;
            Border         bor1;
            Border         bor2;

            if (kolona.GetType() == typeof(KontejnerFaza))
            {
                kolonaGrid = new KontejnerGrid(vm);
                bor1       = (Border)((Grid)kolonaGrid).Children[1];
            }
            else
            {
                kolonaGrid = new KontejnerZadGrid(vm);
                bor1       = (Border)((KontejnerZadGrid)kolonaGrid).Children[1];
            }

            if (parentGrid.GetType() == typeof(KontejnerGrid))
            {
                bor2            = (Border)((KontejnerGrid)parentGrid).Children[1];
                isKontejnerFaza = true;
            }
            else
            {
                bor2            = (Border)((KontejnerZadGrid)parentGrid).Children[1];
                isKontejnerFaza = false;
            }
            //stavlja se pokazivac na model podataka kolonu koja stoji iza kontrole
            ((Grid)kolonaGrid).Tag = kolona;
            //vvranic - treba da se testira da li ovo radi
            ((Grid)kolonaGrid).DataContext = vm.TrenutniProjekat;

            Grid kolonaContentGrid = (Grid)bor1.Child;
            Grid parentContentGrid = (Grid)bor2.Child;

            ((Grid)kolonaGrid).HorizontalAlignment = System.Windows.HorizontalAlignment.Center;

            IEnumerable <Label> tekst = FindVisualChildren <Label>((Grid)kolonaGrid);

            tekst.ElementAt(0).Content = kolona.Ime;

            int index = 0;

            //trazi index u listi dece na kom se nalazi trenutna kolona
            if (kolona.Roditelj != null)
            {
                // 10.06.2018. mstankovic
                //index = ((KontejnerFaza)kolona.Roditelj).Deca.IndexOf(kolona);
                index = (kolona.Roditelj).Deca.IndexOf(kolona);

                if (kolona.Roditelj.IsVerticalSplit)
                {
                    parentContentGrid.Children.Add((Grid)kolonaGrid);
                    ((Grid)kolonaGrid).SetValue(Grid.ColumnProperty, index);
                }
                else //deli se horizontalno
                {
                    parentContentGrid.Children.Add((Grid)kolonaGrid);
                    ((Grid)kolonaGrid).SetValue(Grid.RowProperty, index);
                }
            }

            //najpre se ispita da li trenutna kolona sadrzi kolone ili zadatke
            //jer se crtaju razlicito
            if (kolona.GetType() == typeof(KontejnerFaza))
            {
                //ako se deli vertikalno dodaju se definicije za kolone u zavisnosti od toga koliko ima dece
                if (((KontejnerFaza)kolona).IsVerticalSplit == true)
                {
                    for (int i = 0; i < ((KontejnerFaza)kolona).Deca.Count; i++)
                    {
                        ColumnDefinition c = new ColumnDefinition();
                        c.Width = System.Windows.GridLength.Auto;
                        kolonaContentGrid.ColumnDefinitions.Add(c);
                    }
                }
                else
                {
                    //ako se deli vertikalno dodaju se definicije za vrste u zavisnosti od toga koliko ima dece
                    for (int i = 0; i < ((KontejnerFaza)kolona).Deca.Count; i++)
                    {
                        RowDefinition r = new RowDefinition();
                        r.Height = System.Windows.GridLength.Auto;
                        kolonaContentGrid.RowDefinitions.Add(r);
                    }
                }

                foreach (Kontejner d in ((KontejnerFaza)kolona).Deca)
                {
                    //za svaku podfazu odradi ovo
                    Nacrtaj(d, kolonaGrid, vm);
                }
            }
            else //ako je KontejnerZadataka
            {
                // dodavanje Column definicija
                for (int i = 0; i < ((KontejnerZadataka)kolona).SirinaPoZadacima; i++)
                {
                    ColumnDefinition c = new ColumnDefinition();
                    c.Width = GridLength.Auto;
                    kolonaContentGrid.ColumnDefinitions.Add(c);
                }

                // dodavanje Row definicija
                for (int i = 0; i < ((KontejnerZadataka)kolona).VisinaPoZadacima; i++)
                {
                    RowDefinition r = new RowDefinition();
                    r.Height = GridLength.Auto;
                    kolonaContentGrid.RowDefinitions.Add(r);
                }

                // smestanje zadataka u matricu (tj. u grid)
                for (int i = 0; i < ((KontejnerZadataka)kolona).Zadaci.Count; i++)
                {
                    ZadatakGrid zad = new ZadatakGrid(vm);

                    //stavlja se data context kontroli
                    zad.DataContext = ((KontejnerZadataka)kolona).Zadaci[i];

                    kolonaContentGrid.Children.Add(zad);
                    zad.SetValue(Grid.RowProperty, ((KontejnerZadataka)kolona).Zadaci[i].Row);
                    zad.SetValue(Grid.ColumnProperty, ((KontejnerZadataka)kolona).Zadaci[i].Column);
                }
            }
        }
Exemple #9
0
        /// <summary>
        /// Snimanje projekta u bazu nakon kreiranja
        /// </summary>
        /// <param name="p">Projekat koji se snima</param>
        /// mozda da stavim da se u p.id ucita id mada mislim da nije potrebno
        /// jer svejedno osvezavamo listu projekata nakon kreiranja
        public static void KreirajProjekat(Projekat p)
        {
            try
            {
                //snima se projekat u bazu
                //kad se pozove funkcija da se doda projekat treba da vrati id
                p.Id = PProjekat.DodajProjekat(p.Ime, p.Opis);

                //dodavanje kreatora
                PRadiNa.DodajVezu(Korisnik.KorisnickoIme, p.Id, "KREATOR");

                Korisnik.Projekti = PProjekat.VratiSveProjekte(Korisnik.KorisnickoIme);                   // osvezava listu projekata korisnika

                //dodavanje radnika
                foreach (RadnikNaProjektu r in p.RadniciNaProjektu)
                {
                    PRadiNa.DodajVezu(r.Ime, p.Id, r.Uloga);
                }

                Queue <Kontejner> queue = new Queue <Kontejner>();
                foreach (Kontejner k in p.TabelaProjekta.RootKolona.Deca)
                {
                    queue.Enqueue(k);
                }

                // Ostali elementi se ulancavaju po ugledu na algoritam obilaska stabla po sirini (Breadth First)
                while (queue.Count > 0)
                {
                    Kontejner k = queue.Dequeue();
                    // Za svaki kontejner faza je potrebno da se pronadju njegova deca
                    // u ostatku liste, da se ulancaju i ubace u red

                    if (k.GetType() == typeof(KontejnerFaza))
                    {
                        if (k.Roditelj == p.TabelaProjekta.RootKolona)
                        {
                            //ako je jedna od prvih kolona projekta onda nema roditelja(tj. roditelj joj je sama tabela) tako da se ubacuje za id nula
                            k.Id = PFaza.Dodaj_FK(k.Ime, k.Opis, ((KontejnerFaza)k).IsVerticalSplit, null, null, null, p.Id);
                        }
                        else
                        {
                            //ubacuje se id roditelja tako da on mora biti procitan u prethodno
                            k.Id = PFaza.Dodaj_FK(k.Ime, k.Opis, ((KontejnerFaza)k).IsVerticalSplit, null, null, k.Roditelj.Id, p.Id);
                        }

                        foreach (Kontejner dete in ((KontejnerFaza)k).Deca)
                        {
                            queue.Enqueue(dete);
                        }
                    }
                    else if (k.GetType() == typeof(KontejnerZadataka))
                    {
                        if (k.Roditelj == p.TabelaProjekta.RootKolona)
                        {
                            k.Id = PFaza.Dodaj_FZ(k.Ime, k.Opis, ((KontejnerZadataka)k).MaxBrZadataka, null, null, null, ((KontejnerZadataka)k).SirinaPoZadacima, ((KontejnerZadataka)k).VisinaPoZadacima, p.Id);
                        }
                        else
                        {
                            k.Id = PFaza.Dodaj_FZ(k.Ime, k.Opis, ((KontejnerZadataka)k).MaxBrZadataka, null, null, k.Roditelj.Id, ((KontejnerZadataka)k).SirinaPoZadacima, ((KontejnerZadataka)k).VisinaPoZadacima, p.Id);
                        }
                        foreach (Zadatak z in ((KontejnerZadataka)k).Zadaci)
                        {
                            //treba i da se dodaju svi komentari i checkpointi zajedno sa zadatkom
                            z.Id = PZadatak.Dodaj(z.Ime, z.Opis, z.PocetakIzrade, z.KrajIzrade, z.Tip, k.Id);
                            foreach (Komentar kom in z.Komentari)
                            {
                                kom.Id = PZadatak.DodajKomentar(kom.Tekst, z.Id);
                            }

                            foreach (KontrolnaTacka kt in z.KontrolneTacke)
                            {
                                kt.Id = PZadatak.DodajKontrolnuTacku(kt.Naziv, z.Id);
                            }
                        }
                    }
                }
            }
            catch (OracleException oraError)
            {
                try
                {
                    System.Windows.MessageBox.Show(PPoruka.VratiPrevod(oraError.Number.ToString()));
                }
                catch (OracleException err)
                {
                    System.Windows.MessageBox.Show("Greska pri kreiranju projekta");
                }
            }
        }