Пример #1
0
        /// <summary>
        /// Metodi joka palauttaa varatut paikat käyttäjän perusteella
        /// </summary>
        /// <param name="kayttaja"></param>
        /// <returns></returns>
        public Dictionary <Näytös, List <Paikka> > VaratutPaikat(Kayttaja kayttaja)
        {
            var res       = new Dictionary <Näytös, List <Paikka> >();
            var naytokset = GetElokuvat().SelectMany(GetElokuvanNaytokset).ToList();

            foreach (var naytos in naytokset)
            {
                var    paikat = new List <Paikka>();
                string sql    = $"SELECT DISTINCT * FROM varaukset WHERE naytosaika='{naytos.Aika.ToShortTimeString()}' AND kayttajantunnus='{kayttaja.Tunnus}' AND elokuva='{naytos.Elokuva.Nimi}' AND elokuvasali='{naytos.Sali.Nimi}' ";
                _sqlkomento = new SQLiteCommand(sql, _kantaYhteys);
                _sqllukija  = _sqlkomento.ExecuteReader();
                if (_sqllukija.FieldCount == 0)
                {
                    continue;                             // Taulu on tyhja
                }
                while (_sqllukija.Read())
                {
                    paikat.Add(new Paikka(naytos.Sali, int.Parse(_sqllukija.GetString(3))));
                }
                if (!res.ContainsKey(naytos) && paikat.Count > 0)
                {
                    res.Add(naytos, paikat);
                }
            }
            return(res);
        }
Пример #2
0
        /// <summary>
        /// Metodi joka kirjaa käyttäjän sisälle järjestelmään ja
        /// ohjaa käyttäjän joko asiakkaan tai ylläpidon näkymään.
        /// Tulostetaan virheilmoitus jos käyttäjää ei löydy järjestelmästä
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btnkirjaudu_Click(object sender, RoutedEventArgs e)
        {
            //Luetaan käyttäjät tietokannasta ja
            //Alustetaan muuttujat tekstilaatikoiden avulla
            _kayttajat        = Tietokanta.GetKayttajat();
            this.kayttajanimi = txt_kayttajaNimi.Text;
            this.salasana     = txt_salasana.Password;

            Kayttaja kayttaja = _kayttajat.SingleOrDefault(n => n.Salasana == salasana && n.Tunnus == kayttajanimi);

            //Toiminnot jos käyttäjänimi ja salasana ovat oikein
            if (kayttaja != null)
            {
                tulostaIlmoitus("Kirjautuminen onnistui. Ladataan...", lbl_ilmoitus, false);
                await Task.Delay(100);

                _rooli = _kayttajat.Any(k => k.Rooli.Equals("Admin") && k.Tunnus == kayttajanimi);
                //Käyttäjän roolin mukaan avataan käyttäjälle tarkoitettu näkymä
                if (!_rooli)
                {
                    new Asiakas(kayttaja).Show();
                    this.Close();
                }
                else if (_rooli)
                {
                    new Yllapito().Show();
                    this.Close();
                }
            }
            //Virheilmoitus jos käyttäjänimi/salasana ovat väärin
            else
            {
                tulostaIlmoitus("Väärä käyttäjänimi tai salasana", lbl_ilmoitus, true);
            }
        }
Пример #3
0
        /// <summary>
        /// Metodi joka ylentää käyttäjän asiakkaasta ylläpitäjäksi
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Ylenna_Kayttaja_Click(object sender, RoutedEventArgs e)
        {
            Kayttaja kayttaja = kayttajat[kayttajaIndeksi];

            tietokanta.Ajasql("UPDATE kayttajat SET rooli = 'Admin' WHERE tunnus='" + kayttaja.Tunnus + "'");
            paivitaKayttajat();
            btn_Ylenna_Kayttaja.IsEnabled = false;
        }
Пример #4
0
        public Asiakas(Kayttaja k)
        {
            kayttaja    = k;
            _tietokanta = new Tietokanta();

            InitializeComponent();

            // välilehdet piiloon
            foreach (TabItem t in tabControl.Items.OfType <TabItem>())
            {
                t.Visibility = Visibility.Collapsed;
            }
        }
Пример #5
0
 /// <summary>
 /// Metodi joka antaa käyttöön tai ottaa käytöstä Ylennä käyttäjä - painikkeen
 /// Käyttäjät - datagridista valitun käyttäjän mukaan
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void dg_kayttajat_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (dg_kayttajat.SelectedIndex != -1)
     {
         kayttajaIndeksi = dg_kayttajat.SelectedIndex;
         Kayttaja kayttaja = kayttajat[kayttajaIndeksi];
         if (kayttaja.Rooli.Equals("User"))
         {
             btn_Ylenna_Kayttaja.IsEnabled = true;
         }
         else
         {
             btn_Ylenna_Kayttaja.IsEnabled = false;
         }
     }
 }
Пример #6
0
        /// <summary>
        /// Metodi joka etsii ja palauttaa käyttäjän tietokannasta käyttäjänimen perusteella
        /// </summary>
        /// <param name="kayttajatunnus"></param>
        /// <returns></returns>
        public Kayttaja GetKayttaja(string kayttajatunnus)
        {
            var    res = new Kayttaja("", "", "", "", "");
            string sql = $"SELECT * FROM kayttajat WHERE tunnus= '{kayttajatunnus}'";

            _sqlkomento = new SQLiteCommand(sql, _kantaYhteys);
            _sqllukija  = _sqlkomento.ExecuteReader();
            if (_sqllukija.FieldCount == 0)
            {
                return(res);                            // Taulu on tyhja
            }
            while (_sqllukija.Read())
            {
                res = new Kayttaja(_sqllukija.GetString(1), _sqllukija.GetString(2), _sqllukija.GetString(3), _sqllukija.GetString(4), _sqllukija.GetString(5));
            }
            return(res);
        }
Пример #7
0
        /// <summary>
        /// Metodi joka lisää rekisteröityvän käyttäjän tietokantaan
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btn_rekisteroi_Click(object sender, RoutedEventArgs e)
        {
            this.kayttajanimi      = txt_kayttajaNimiR.Text;
            this.etunimi           = txt_etunimi.Text;
            this.sukunimi          = txt_sukunimi.Text;
            this.salasana          = txt_salasanaR.Password;
            this.salasanaVarmistus = txt_salasanan_vahvistus.Password;

            if (!kayttajanimi.Equals("") && !etunimi.Equals("") && !sukunimi.Equals("") && !salasana.Equals("") && !salasanaVarmistus.Equals(""))
            {
                //Tarkistetaan onko sama käyttäjänimi jo tietokannassa
                Kayttaja kayttaja = Tietokanta.GetKayttaja(kayttajanimi);

                //Jos käyttäjää ei löydy tietokannasta niin jatketaan rekisteröintiä
                if (kayttaja.Tunnus.Equals(kayttajanimi))
                {
                    tulostaIlmoitus("Tunnus on jo olemassa. Valitse toinen tunnus.", lbl_ilmoitusR, true);
                }
                else
                {
                    if (this.salasana.Equals(this.salasanaVarmistus))
                    {
                        //Rekisteröi käyttäjäjän tietokantaan
                        Kayttaja uusiKayttaja = new Kayttaja(etunimi, sukunimi, kayttajanimi, salasana, "User");

                        Tietokanta.SetKayttaja(uusiKayttaja);

                        //Ilmoitetaan käyttäjälle että rekisteöinti onnistui,
                        //tyhjennetään tekstilaatikot ja siirrytään login-formiin
                        tulostaIlmoitus("Rekisteröinti onnistui. Ladataan...", lbl_ilmoitusR, false);
                        await Task.Delay(200);

                        btn_takaisinR_Click(sender, e);
                    }
                    else
                    {
                        tulostaIlmoitus("Salasanat eivät täsmää!", lbl_ilmoitusR, true);
                    }
                }
            }
            else
            {
                tulostaIlmoitus("Tarvittavia tietoja puuttuu", lbl_ilmoitusR, true);
            }
        }
Пример #8
0
        /// <summary>
        /// Metodi joka palauttaa listan varatuista paikoista käyttäjän ja näytöksen perusteella
        /// </summary>
        /// <param name="n"></param>
        /// <param name="k"></param>
        /// <returns></returns>
        public List <Paikka> VaratutPaikat(Näytös n, Kayttaja k)
        {
            var    res = new List <Paikka>();
            string sql = $"SELECT * FROM varaukset WHERE naytosaika='{n.Aika.ToShortTimeString()}' AND elokuva='{n.Elokuva.Nimi}' AND elokuvasali='{n.Sali.Nimi}'";

            if (k != null)
            {
                sql += $" AND kayttajantunnus='{k.Tunnus}'";
            }

            _sqlkomento = new SQLiteCommand(sql, _kantaYhteys);
            _sqllukija  = _sqlkomento.ExecuteReader();
            if (_sqllukija.FieldCount == 0)
            {
                return(res);                            // Taulu on tyhja
            }
            while (_sqllukija.Read())
            {
                res.Add(new Paikka(n.Sali, int.Parse(_sqllukija.GetString(3))));
            }

            return(res);
        }
Пример #9
0
 /// <summary>
 /// Metodi joka varaa paikan käyttäjälle tietystä näytöksestä
 /// </summary>
 /// <param name="kayttaja"></param>
 /// <param name="naytos"></param>
 /// <param name="paikka"></param>
 public void VaraaPaikka(Kayttaja kayttaja, Näytös naytos, Paikka paikka)
 {
     Ajasql($"INSERT INTO varaukset VALUES (null, '{naytos.Aika.ToShortTimeString()}', '{kayttaja.Tunnus}', {paikka.PaikkaNro}, '{naytos.Sali.Nimi}', '{naytos.Elokuva.Nimi}') ");
 }
Пример #10
0
 /// <summary>
 /// Setkayttaja metodi, jolla luodaan uusi käyttäjä tietokantaan
 /// </summary>
 /// <param name="kayttaja"></param>
 public void SetKayttaja(Kayttaja kayttaja)
 {
     Ajasql($"INSERT INTO kayttajat VALUES (null, '{kayttaja.Etunimi}', '{kayttaja.Sukunimi}', '{kayttaja.Tunnus}', '{kayttaja.Salasana}', '{kayttaja.Rooli}')");
 }