/// <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); }
/// <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); } }
/// <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; }
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; } }
/// <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; } } }
/// <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); }
/// <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); } }
/// <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); }
/// <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}') "); }
/// <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}')"); }