//Metodi, joka hakee elokuvaan liittyvät näytökset tietokannasta ja täyttää
        //näytökset - datagridin niillä sekä antaa elokuvan poisto, muokkaus sekä näytösten
        //muokkaus - painikkeet käytettäväksi
        private void dg_Elokuvat_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            dg_Naytokset.Items.Clear();
            if (dg_Elokuvat.SelectedIndex != -1)
            {
                elokuvaIndeksi = dg_Elokuvat.SelectedIndex;

                Elokuva elokuva = kaikkiElokuvat[elokuvaIndeksi];
                elokuvanNaytokset = tietokanta.GetElokuvanNaytokset(elokuva);

                foreach (Näytös naytos in elokuvanNaytokset)
                {
                    dg_Naytokset.Items.Add(new
                    {
                        Teatteri = naytos.Teatteri.Nimi,
                        Sali     = naytos.Sali.Nimi,
                        Pvm      = naytos.Aika.ToShortDateString(),
                        Klo      = naytos.Aika.ToShortTimeString()
                    });
                }

                btn_Avaa_Elokuvan_Muokkaus.IsEnabled = true;
                btn_Muokkaa_Naytokset.IsEnabled      = true;
                btn_Poista_Elokuva.IsEnabled         = true;
            }
            else
            {
                dg_Elokuvat.Items.Clear();

                btn_Avaa_Elokuvan_Muokkaus.IsEnabled = false;
                btn_Muokkaa_Naytokset.IsEnabled      = false;
                btn_Poista_Elokuva.IsEnabled         = false;
            }
        }
        /// <summary>
        /// Metodi joka luo uuden Elokuva - olion elokuvan lisäystä varten.
        /// Metodi tarkistaa myös että käyttäjä on antanut kaikki elokuvan tiedot sekä sen
        /// jos elokuva on jo olemassa järjestelmässä. Käyttäjä myös ohjataan Näytösten lisäys - sivulle
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Lisaa_Elokuvan_Perustiedot_Click(object sender, RoutedEventArgs e)
        {
            if (txt_Elokuvan_Nimi.Text.Equals("") || txt_Vuosi.Text.Equals("") || txt_Kesto.Text.Equals("") || txt_Kuvaus.Text.Equals(""))
            {
                tulostaIlmoitus("Vaadittavia tietoja puuttuu! Tarkista tiedot", lbl_lisays_ilmoitus, true);
            }
            else
            {
                Elokuva elokuva = tietokanta.GetElokuva(txt_Elokuvan_Nimi.Text);

                if (!elokuva.Nimi.Equals(""))
                {
                    tulostaIlmoitus("Elokuva on jo olemassa. Valitse toinen nimi elokuvalle", lbl_lisays_ilmoitus, true);
                }
                else
                {
                    elokuvanNimi   = txt_Elokuvan_Nimi.Text;
                    elokuvanVuosi  = Int32.Parse(txt_Vuosi.Text);
                    elokuvanKesto  = Int32.Parse(txt_Kesto.Text);
                    elokuvanKuvaus = txt_Kuvaus.Text;

                    lisattavaElokuva = new Elokuva(elokuvanNimi, elokuvanVuosi, elokuvanKesto, elokuvanKuvaus, "Kylla");

                    Perustiedot_Grid.Visibility      = Visibility.Collapsed;
                    Naytokset_Lisays_Grid.Visibility = Visibility.Visible;
                }
            }
        }
        /// <summary>
        /// Metodi joka päivittää elokuvan tiedot järjestelmään
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btn_Paivita_Elokuvan_Perustiedot_Click(object sender, RoutedEventArgs e)
        {
            if (txt_Elokuvan_NimiP.Text.Equals("") || txt_KestoP.Text.Equals("") || txt_VuosiP.Text.Equals("") || txt_KuvausP.Text.Equals(""))
            {
                tulostaIlmoitus("Tarvittavia tietoja puuttuu! Tarkista elokuvan tiedot", lbl_Paivitys_ilmoitus, true);
            }
            else
            {
                Elokuva elokuva = tietokanta.GetElokuva(txt_Elokuvan_NimiP.Text);

                paivitettavaElokuva.Nimi   = txt_Elokuvan_NimiP.Text;
                paivitettavaElokuva.Vuosi  = int.Parse(txt_VuosiP.Text);
                paivitettavaElokuva.Kesto  = int.Parse(txt_KestoP.Text);
                paivitettavaElokuva.Teksti = txt_KuvausP.Text;

                tietokanta.UpdateElokuva(paivitettavaElokuva, elokuvanVanhaNimi);
                tietokanta.Ajasql($"UPDATE naytokset SET elokuvannimi='{paivitettavaElokuva.Nimi}' WHERE elokuvannimi='{elokuvanVanhaNimi}'");

                tulostaIlmoitus("Elokuvan päivitys onnistui. Ladataan...", lbl_Paivitys_ilmoitus, false);
                await Task.Delay(1000);

                paivitettavaElokuva            = null;
                this.toimintoKesken            = false;
                Perustiedot_Grid.Visibility    = Visibility.Visible;
                YllapidonEtusivuTab.IsSelected = true;
            }
        }
示例#4
0
 public Näytös(Elokuva elokuva, DateTime aika, Elokuvasali sali, Teatteri teatteri)
 {
     this.Elokuva  = elokuva;
     this.Aika     = aika;
     this.Sali     = sali;
     this.Teatteri = teatteri;
 }
        //käyttäjä voi muokata valitsemaansa varausta.
        //
        private void Button_Muokkaa(object sender, RoutedEventArgs e)
        {
            //selectedItem edustaa varausta, jota käyttäjä haluaa muokata. Luomalla siitä uusi
            //Dictionary, voidaan elokuvan nimen perusteella luoda uusi varaustapahtuma
            //
            var           selectedItem   = (KeyValuePair <Näytös, List <Paikka> >)Varaukset.SelectedItem;
            Elokuva       valittuElokuva = _tietokanta.GetElokuva(selectedItem.Key.Elokuva.Nimi);
            List <Näytös> näytökset      = _tietokanta.GetElokuvanNaytokset(valittuElokuva);

            TulevatNäytökset.ItemsSource = näytökset;

            //loopataan valitun näytöksen paikat läpi, luodaan niistä Paikka- luokan instanssi
            //ja poistetaan valittu varaus tietokannasta.
            //
            var paikat = selectedItem.Value.Count;

            for (int i = 0; i < paikat; i++)
            {
                Paikka poistettava = selectedItem.Value[i] as Paikka;
                Console.WriteLine(poistettava.PaikkaNro);
                _tietokanta.PoistaPaikkaVaraus(poistettava, selectedItem.Key);
            }

            Siirry("varaa_näytös");
        }
示例#6
0
 /// <summary>
 /// Päivittää elokuvaan liittyvät näytökset
 /// </summary>
 /// <param name="elokuva"></param>
 /// <param name="naytokset"></param>
 public void MuokkaaNaytokset(Elokuva elokuva, List <Näytös> naytokset)
 {
     // Tyhjennä aikaisemmat näytökset
     DelElokuvanNaytos(elokuva);
     foreach (var naytos in naytokset)
     {
         SetElokuvanNaytos(elokuva, naytos);
     }
 }
 /// <summary>
 /// Metodi joka tyhjentää kaikki UI elementit Elokuvan päivitys - sivulta
 /// </summary>
 private void clearElokuvanPaivitys()
 {
     paivitettavaElokuva = null;
     txt_Elokuvan_NimiP.Clear();
     txt_VuosiP.Clear();
     txt_KestoP.Clear();
     txt_KuvausP.Clear();
     txt_Elokuvan_NimiP.Clear();
 }
        private void Button_VaraaNäytös(object sender, RoutedEventArgs e)
        {
            // tietokanta: Hae näytökset listausta varten sellaisiin esityksiin jotka ovat tulevaisuudessa

            Elokuva       valittu_elokuva = Ohjelmisto.SelectedItem as Elokuva;
            List <Näytös> näytökset       = _tietokanta.GetElokuvanNaytokset(valittu_elokuva);

            TulevatNäytökset.ItemsSource = näytökset;
            Siirry("varaa_näytös");
        }
 //Metodi joka avaa Elokuvan lisäys - sivun
 private void btn_Avaa_Elokuvan_Lisays_Click(object sender, RoutedEventArgs e)
 {
     paivitettavaElokuva                    = null;
     Perustiedot_Grid.Visibility            = Visibility.Visible;
     Naytokset_Lisays_Grid.Visibility       = Visibility.Collapsed;
     Perustietojen_Paivitys_Grid.Visibility = Visibility.Collapsed;
     Naytosten_Paivitys_Grid.Visibility     = Visibility.Collapsed;
     this.toimintoKesken                    = true;
     Lisaa_Elokuva_Tab.IsSelected           = true;
 }
示例#10
0
        /// <summary>
        /// Metodi joka lisää elokuvan tietokantaan ja
        /// palauttaa true jos onnistuu
        /// </summary>
        /// <param name="elokuva"></param>
        /// <param name="naytokset"></param>
        /// <returns></returns>
        private bool lisaaElokuvaTietokantaan(Elokuva elokuva, List <Näytös> naytokset)
        {
            tietokanta.SetElokuva(elokuva);

            foreach (Näytös naytos in naytokset)
            {
                tietokanta.Ajasql("INSERT INTO naytokset(elokuvannimi, aika, sali, teatteri) VALUES ('" + elokuva.Nimi + "', '" + naytos.Aika + "', '" + naytos.Sali.Nimi + "', '" + naytos.Teatteri.Nimi + "')");
            }

            return(true);
        }
示例#11
0
        /// <summary>
        /// Metodi joka päivittää elokuvan näytökset järjestelmään
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btn_Paivita_Naytokset_Click(object sender, RoutedEventArgs e)
        {
            tietokanta.MuokkaaNaytokset(paivitettavaElokuva, paivitettavatNaytokset);
            tulostaIlmoitus("Näytökset päivitetty. Ladataan...", lbl_Naytokset_Paivitys_Ilmoitus, false);
            await Task.Delay(1000);

            paivitettavaElokuva            = null;
            paivitettavatNaytokset         = null;
            this.toimintoKesken            = false;
            YllapidonEtusivuTab.IsSelected = true;
        }
示例#12
0
 //Metodi joka avaa Elokuvan muokkaus - sivun
 private void btn_Avaa_Elokuvan_Muokkaus_Click(object sender, RoutedEventArgs e)
 {
     if (elokuvaIndeksi != -1)
     {
         paivitettavaElokuva                    = kaikkiElokuvat[elokuvaIndeksi];
         Perustiedot_Grid.Visibility            = Visibility.Collapsed;
         Naytokset_Lisays_Grid.Visibility       = Visibility.Collapsed;
         Perustietojen_Paivitys_Grid.Visibility = Visibility.Visible;
         this.toimintoKesken                    = true;
         Lisaa_Elokuva_Tab.IsSelected           = true;
     }
 }
示例#13
0
 /// <summary>
 /// Metodi joka tyhjentää kaikki UI elementit Elokuvan lisays - sivulta
 /// </summary>
 private void clearElokuvanLisays()
 {
     lisattavaElokuva = null;
     txt_Elokuvan_Nimi.Clear();
     txt_Vuosi.Clear();
     txt_Kesto.Clear();
     txt_Kuvaus.Clear();
     cmb_Elokuvateatteri.SelectedIndex = -1;
     cmb_Salit.SelectedIndex           = -1;
     datep_Naytoksen_aika.Text         = "";
     lisattavatNaytokset.Clear();
     dg_Lisattavat_Naytokset.Items.Clear();
 }
示例#14
0
 //Metodi joka poistaa elokuvan järjestelmästä
 private void btn_Poista_Elokuva_Click(object sender, RoutedEventArgs e)
 {
     if (elokuvaIndeksi != -1)
     {
         Elokuva          elokuva   = kaikkiElokuvat[elokuvaIndeksi];
         MessageBoxResult varmistus = Xceed.Wpf.Toolkit.MessageBox.Show("Haluatko varmasti poistaa elokuvan: " + elokuva.Nimi, "Elokuvan poistaminen", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
         if (varmistus == MessageBoxResult.OK)
         {
             dg_Elokuvat.Items.RemoveAt(elokuvaIndeksi);
             tietokanta.DelElokuvanNaytos(elokuva);
             tietokanta.DelElokuva(elokuva);
             paivitaElokuvatDG();
         }
     }
 }
示例#15
0
        /// <summary>
        /// Etsii ja palauttaa halutun elokuvan tietokannasta
        /// </summary>
        /// <param name="elokuvaNimi"></param>
        /// <returns></returns>
        public Elokuva GetElokuva(string elokuvaNimi)
        {
            var    res = new Elokuva("", 1, 1, "", "");
            string sql = $"SELECT * FROM elokuvat WHERE elokuvannimi='{elokuvaNimi}'";

            _sqlkomento = new SQLiteCommand(sql, _kantaYhteys);
            _sqllukija  = _sqlkomento.ExecuteReader();
            if (_sqllukija.FieldCount == 0)
            {
                return(res);                            // Taulu on tyhja
            }
            while (_sqllukija.Read())
            {
                res = new Elokuva(_sqllukija.GetString(1), int.Parse(_sqllukija.GetString(2)), int.Parse(_sqllukija.GetString(3)), _sqllukija.GetString(4), _sqllukija.GetString(5));
            }
            return(res);
        }
示例#16
0
        /// <summary>
        /// Palauttaa elokuvaan kuuluvat näytökset
        /// </summary>
        /// <param name="elokuva"></param>
        /// <returns></returns>
        public List <Näytös> GetElokuvanNaytokset(Elokuva elokuva)
        {
            var    res   = new List <Näytös>();
            var    salit = GetElokuvasalit();
            string sql   = $"SELECT * FROM naytokset WHERE elokuvannimi='{elokuva.Nimi}'";

            _sqlkomento = new SQLiteCommand(sql, _kantaYhteys);
            _sqllukija  = _sqlkomento.ExecuteReader();
            if (_sqllukija.FieldCount == 0)
            {
                return(res);                            // Taulu on tyhja
            }
            while (_sqllukija.Read())
            {
                res.Add(new Näytös(elokuva, DateTime.Parse(_sqllukija.GetString(2)), HaeElokuvasali(salit, _sqllukija.GetString(3)), HaeTeatteri(salit, _sqllukija.GetString(4))));
            }
            return(res);
        }
示例#17
0
 /// <summary>
 /// Poistaa näytökset elokuvalta
 /// </summary>
 /// <param name="elokuva"></param>
 public void DelElokuvanNaytos(Elokuva elokuva)
 {
     Ajasql($"DELETE FROM naytokset WHERE elokuvannimi='{elokuva.Nimi}'");
 }
示例#18
0
 /// <summary>
 /// Luo uuden näytöksen elokuvalle
 /// </summary>
 /// <param name="elokuva"></param>
 /// <param name="naytos"></param>
 public void SetElokuvanNaytos(Elokuva elokuva, Näytös naytos)
 {
     Ajasql($"INSERT INTO naytokset VALUES (null, '{elokuva.Nimi}', '{naytos.Aika}', '{naytos.Sali.Nimi}', '{naytos.Teatteri.Nimi}')");
 }
示例#19
0
 /// <summary>
 /// Metodi joka poistaa elokuvan tietokannasta
 /// </summary>
 /// <param name="elokuva"></param>
 public void DelElokuva(Elokuva elokuva)
 {
     Ajasql($"DELETE FROM elokuvat WHERE elokuvannimi='{elokuva.Nimi}'");
 }
示例#20
0
 /// <summary>
 /// Metodi joka päivittää elokuvan nimen
 /// </summary>
 /// <param name="elokuva"></param>
 /// <param name="vanhaNimi"></param>
 public void UpdateElokuva(Elokuva elokuva, string vanhaNimi)
 {
     Ajasql($"UPDATE elokuvat SET elokuvannimi='{elokuva.Nimi}',vuosi='{elokuva.Vuosi}', kesto='{elokuva.Kesto}', kuvaus='{elokuva.Teksti}', ohjelmistossa='{elokuva.Ohjelmistossa}' WHERE elokuvannimi='{vanhaNimi}'");
 }
示例#21
0
 /// <summary>
 /// SetElokuva metodi joka luo tietokantaan uuden elokuvan
 /// </summary>
 /// <param name="elokuva"></param>
 public void SetElokuva(Elokuva elokuva)
 {
     Ajasql($"INSERT INTO elokuvat VALUES (null, '{elokuva.Nimi}', '{elokuva.Vuosi}','{elokuva.Kesto}', '{elokuva.Teksti}', '{elokuva.Ohjelmistossa}')");
 }