Beispiel #1
0
        private bool validacijaDodavanjaSmera()
        {
            if (!validacijaPraznihPolja())
            {
                return(false);
            }
            else if (racunarskiCentar.Smerovi.ContainsKey(OznakaSmera.Text.Trim()))
            {
                if (racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()].Obrisan)
                {
                    dodavanjeSmeraIzborStarogUnosa = false;
                    Smer smer = racunarskiCentar.Smerovi[OznakaSmera.Text.Trim()];

                    // vec postoji smer sa tom oznakom, ali je logicki obrisan
                    OdlukaDodavanjaSmer odluka = new OdlukaDodavanjaSmer();
                    odluka.Oznaka.Text         = "Oznaka: " + smer.Oznaka;
                    odluka.Naziv.Text          = "Naziv: " + smer.Naziv;
                    odluka.DatumUvodjenja.Text = "Datum uvođenja: " + smer.Datum;
                    odluka.ShowDialog();

                    if (odluka.potvrdaNovogUnosa)
                    {
                        // ukoliko je korisnik potvrdio da zeli da unese nove podatke, gazimo postojeci neaktivan smer
                        racunarskiCentar.Smerovi.Remove(OznakaSmera.Text.Trim());
                    }
                    else
                    {
                        // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                        staroStanje = new StanjeAplikacije();
                        staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                        staroStanje.TipPodataka      = "smer";
                        staroStanje.Kolicina         = 1;
                        staroStanje.TipPromene       = "brisanje";
                        staroStanje.Oznake.Add(smer.Oznaka);

                        // vracamo logicki obrisan smer da bude aktivan
                        smer.Obrisan = false;
                        dodavanjeSmeraIzborStarogUnosa = true;
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        notifierError.ShowError("Smer sa unetom oznakom već postoji!");
                    });
                    OznakaSmera.Focus();
                    return(false);
                }
            }
            return(true);
        }
Beispiel #2
0
        private bool validacijaPraznihPolja()
        {
            if (NazivSmera.Text.Trim() == "" || OznakaSmera.Text.Trim() == "" || OpisSmera.Text.Trim() == "" || DatumUvodjenja.Text.Trim() == "")
            {
                //povera paznih polja kako bi se uokvirila crvenim
                if (OznakaSmera.Text.Trim() == "")
                {
                    OznakaSmera.BorderBrush = System.Windows.Media.Brushes.Red;
                }
                if (NazivSmera.Text.Trim() == "")
                {
                    NazivSmera.BorderBrush = System.Windows.Media.Brushes.Red;
                }
                if (OpisSmera.Text.Trim() == "")
                {
                    OpisSmera.BorderBrush = System.Windows.Media.Brushes.Red;
                }
                if (DatumUvodjenja.Text.Trim() == "")
                {
                    DatumUvodjenja.BorderBrush = System.Windows.Media.Brushes.Red;
                }

                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierError.ShowError("Niste popunili sva polja!!");
                });
                if (OznakaSmera.Text.Trim() == "")
                {
                    OznakaSmera.Focus();
                }
                else if (NazivSmera.Text.Trim() == "")
                {
                    NazivSmera.Focus();
                }
                else if (DatumUvodjenja.Text.Trim() == "")
                {
                    DatumUvodjenja.Focus();
                    DatumUvodjenja.IsDropDownOpen = true;
                }
                else if (OpisSmera.Text.Trim() == "")
                {
                    OpisSmera.Focus();
                }
                return(false);
            }
            return(true);
        }
Beispiel #3
0
        public DodavanjeSmera(RacunarskiCentar racunarskiCentar, ObservableCollection <Smer> smerovi, bool izmena, string oznaka,
                              Notifier notifierMainWindow, UndoRedoStack stack, OrderedDictionary prethodnaStanja)
        {
            notifierError = new Notifier(cfg =>
            {
                cfg.PositionProvider = new WindowPositionProvider(
                    parentWindow: this,
                    corner: Corner.TopRight,
                    offsetX: 20,
                    offsetY: 10);

                cfg.LifetimeSupervisor = new TimeAndCountBasedLifetimeSupervisor(
                    notificationLifetime: System.TimeSpan.FromSeconds(5),
                    maximumNotificationCount: MaximumNotificationCount.FromCount(1));

                cfg.Dispatcher = Application.Current.Dispatcher;
            });

            this.prethodnaStanjaAplikacije = prethodnaStanja;
            this.staroStanje        = null;
            this.potvrdio           = false;
            this.stekStanja         = stack;
            this.notifierMainWindow = notifierMainWindow;
            smer = new Smer();
            this.racunarskiCentar               = racunarskiCentar;
            this.izmena                         = izmena;
            this.unosPrviPut                    = true;
            this.oznakaSmeraZaIzmenu            = oznaka;
            this.dodavanjeSmeraIzborStarogUnosa = false;
            tabelaSmerova                       = smerovi;
            InitializeComponent();
            if (!izmena)
            {
                OznakaSmera.Focus();
            }
        }
Beispiel #4
0
        private void izmeniSmer()
        {
            string novaOznaka = OznakaSmera.Text.Trim();

            if (novaOznaka != oznakaSmeraZaIzmenu && racunarskiCentar.Smerovi.ContainsKey(novaOznaka))
            {
                notifierError.ShowError("Smer sa unetom oznakom već postoji u bazi!");
                OznakaSmera.Focus();
                return;
            }

            if (validacijaPraznihPolja())
            {
                // pamtimo stanje alikacije pre nego sto uradimo dodavanje novog
                staroStanje = new StanjeAplikacije();
                staroStanje.RacunarskiCentar = DeepClone(racunarskiCentar);
                staroStanje.TipPodataka      = "smer";
                staroStanje.Kolicina         = 1;
                staroStanje.TipPromene       = "izmena";
                staroStanje.Oznake.Add(oznakaSmeraZaIzmenu);

                Smer   smerIzmena      = racunarskiCentar.Smerovi[oznakaSmeraZaIzmenu];
                string staraOznaka     = smerIzmena.Oznaka;
                bool   oznakaIzmenjena = false;

                if (!staraOznaka.Equals(OznakaSmera.Text.Trim()))
                {
                    oznakaIzmenjena = true;
                }

                smerIzmena.Oznaka = OznakaSmera.Text.Trim();
                smerIzmena.Naziv  = NazivSmera.Text.Trim();
                smerIzmena.Opis   = OpisSmera.Text.Trim();
                string datum = DateTime.Parse(DatumUvodjenja.Text.Trim()).ToString("dd/MM/yyyy");
                smerIzmena.Datum = datum;

                if (smerIzmena.Predmeti.Count > 0)
                {
                    foreach (string predmet in smerIzmena.Predmeti)
                    {
                        racunarskiCentar.Predmeti[predmet].Smer        = smerIzmena.Oznaka;
                        racunarskiCentar.Predmeti[predmet].SmerDetalji = "Oznaka: " + smerIzmena.Oznaka + "\nNaziv: " + smerIzmena.Naziv;
                    }
                }

                if (oznakaIzmenjena)
                {
                    foreach (KalendarPolje polje in racunarskiCentar.PoljaKalendara.Values)
                    {
                        if (polje.NazivPolja.Split('-')[1].Trim().Equals(staraOznaka))
                        {
                            polje.NazivPolja = polje.NazivPolja.Split('-')[0].Trim() + '-' + smerIzmena.Oznaka;
                        }
                    }
                    racunarskiCentar.Smerovi.Remove(staraOznaka);
                    racunarskiCentar.Smerovi.Add(smerIzmena.Oznaka, smerIzmena);
                }

                tabelaSmerova[indeks] = smerIzmena;
                Application.Current.Dispatcher.Invoke(() =>
                {
                    notifierMainWindow.ShowSuccess("Uspešno ste izmenili smer!");
                });

                // na undo stek treba da upisemo staro stanje aplikacije
                // generisemo neki novi kljuc pod kojim cemo cuvati prethodno stanje na steku
                string kljuc = Guid.NewGuid().ToString();
                // proveravamo da li vec ima 10 koraka za undo operaciju, ako ima, izbacujemo prvi koji je ubacen kako bismo
                // i dalje imali 10 mogucih koraka, ali ukljucujuci i ovaj novi
                if (prethodnaStanjaAplikacije.Count >= 10)
                {
                    prethodnaStanjaAplikacije.RemoveAt(0);
                }
                prethodnaStanjaAplikacije.Add(kljuc, staroStanje);
                stekStanja.GetUndo().Push(kljuc);

                // postavljamo flag na true, da bismo mogli da omogucimo klik na dugme za undo operaciju
                potvrdio = true;

                this.Close();
            }
        }