public void InsertZajeciaPojedyncze(TheConjuring_dbEntities1 conjuring, SqlConnection connection, Zajecia zajecia)
        {
            DateTime semestr_letni  = new DateTime(DateTime.Now.Year, 6, 30);
            DateTime semestr_zimowy = new DateTime(DateTime.Now.Year + 1, 1, 30);
            DateTime datyZajec      = (DateTime)zajecia.Czas;

            if (zajecia.Czas < semestr_letni)
            {
                while (datyZajec < semestr_letni)
                {
                    Zajecia_pojedyncze zajecia_Pojedyncze = new Zajecia_pojedyncze
                    {
                        Id_Zajec   = zajecia.Id_Zajec,
                        Data_zajec = datyZajec
                    };
                    connection.Open();
                    conjuring.Zajecia_pojedyncze.Add(zajecia_Pojedyncze);
                    conjuring.SaveChanges();
                    connection.Close();
                    if (zajecia.Tydzien == false)
                    {
                        datyZajec = datyZajec.AddDays(7);
                    }
                    else
                    {
                        datyZajec = datyZajec.AddDays(14);
                    }
                }
            }
            else
            {
                while (datyZajec < semestr_zimowy)
                {
                    Zajecia_pojedyncze zajecia_Pojedyncze = new Zajecia_pojedyncze
                    {
                        Id_Zajec   = zajecia.Id_Zajec,
                        Data_zajec = datyZajec
                    };
                    connection.Open();
                    conjuring.Zajecia_pojedyncze.Add(zajecia_Pojedyncze);
                    conjuring.SaveChanges();
                    connection.Close();
                    if (zajecia.Tydzien == false)
                    {
                        datyZajec = datyZajec.AddDays(7);
                    }
                    else
                    {
                        datyZajec = datyZajec.AddDays(14);
                    }
                }
            }
        }
        public void InsertObecnosc(TheConjuring_dbEntities1 conjuring, SqlConnection connection, StudentInfo studentInfo, Zajecia_pojedyncze zajecia)
        {
            connection.Open();
            int studentIndex   = Convert.ToInt32(studentInfo.index);
            var isThereStudent = conjuring.Student.Where(s => s.Indeks == studentIndex).FirstOrDefault();

            connection.Close();
            if (isThereStudent == null)
            {
                Student student = new Student
                {
                    Indeks   = Convert.ToInt32(studentInfo.index),
                    Imie     = studentInfo.firstName,
                    Nazwisko = studentInfo.lastName,
                };

                Obecnosc obecnosc = new Obecnosc
                {
                    Indeks = Convert.ToInt32(studentInfo.index),
                    Id_Zajec_pojedynczych = zajecia.Id_Zajec_pojedynczych,

                    Data       = zajecia.Data_zajec,
                    Spoznienie = studentInfo.late,

                    notatka = studentInfo.note
                };
                connection.Open();
                conjuring.Student.Add(student);
                conjuring.Obecnosc.Add(obecnosc);
                conjuring.SaveChanges();
                connection.Close();
            }
            else
            {
                Obecnosc obecnosc = new Obecnosc
                {
                    Indeks = Convert.ToInt32(studentInfo.index),
                    Id_Zajec_pojedynczych = zajecia.Id_Zajec_pojedynczych,

                    Data       = zajecia.Data_zajec,
                    Spoznienie = studentInfo.late,

                    notatka = studentInfo.note
                };
                connection.Open();
                conjuring.Obecnosc.Add(obecnosc);
                conjuring.SaveChanges();
                connection.Close();
            }
        }
        public void Edytuj_Zaj_poj(TheConjuring_dbEntities1 conjuring, Zajecia_pojedyncze zajecia_Pojedyncze, DateTime NowaDataZajec, DateTime NowaGodzinaZajec, Wykladowca wyk)
        {
            try
            {
                var x = (from zp in conjuring.Zajecia_pojedyncze
                         join z in conjuring.Zajecia on zp.Id_Zajec equals z.Id_Zajec
                         join w in conjuring.Wykladowca on z.Id_Wykladowcy equals w.Id_Wykladowcy
                         where zp.Id_Zajec_pojedynczych == zajecia_Pojedyncze.Id_Zajec_pojedynczych && w.Id_Wykladowcy == wyk.Id_Wykladowcy
                         select zp).FirstOrDefault();
                String rec = x.Id_Zajec_pojedynczych + " | " + x.Data_zajec;


                DateTime pom = new DateTime(NowaDataZajec.Year, NowaDataZajec.Month, NowaDataZajec.Day, NowaGodzinaZajec.Hour, NowaGodzinaZajec.Minute, 0, 0);

                x.Data_zajec = pom;

                String recafter = x.Id_Zajec_pojedynczych + " | " + x.Data_zajec;

                DialogResult dr = MessageBox.Show("Czy napewno chcesz zmienić rekord z\n" + rec + "\nna\n" + recafter + " ?", "Potwierdzenie", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
                    conjuring.SaveChanges();
                    MessageBox.Show("Wiadomość: Zmieniono rekordu.");
                }
                else
                {
                    MessageBox.Show("Wiadomość: Nie zmieniono rekordu.");
                }
            }
            catch (NullReferenceException ex)
            {
                MessageBox.Show("Wyjątek: Rekord nie istnieje w bazie danych.");
            }
        }
        //Dodawanie nowych zajęć
        public void InsertZajecia(TheConjuring_dbEntities1 conjuring, SqlConnection connection, Wykladowca wykladowca, Przedmiot przedmiot, Sala sala, DateTime data, bool tydzien)
        {
            connection.Open();
            var query = conjuring.Zajecia.Where(o => (o.Id_Przedmiotu == przedmiot.Id_Przedmiotu && o.Id_Sali == sala.Id_Sali && o.Id_Wykladowcy == wykladowca.Id_Wykladowcy && o.Tydzien == tydzien && o.Czas == data)).FirstOrDefault();

            if (query != null)
            {
                MessageBox.Show("Takie zajecia juz istnieja w bazie");
                connection.Close();
                return;
            }

            Zajecia zajecia = new Zajecia()
            {
                Id_Przedmiotu = przedmiot.Id_Przedmiotu,
                Id_Sali       = sala.Id_Sali,
                Czas          = data,
                Tydzien       = tydzien,
                Id_Wykladowcy = wykladowca.Id_Wykladowcy
            };

            conjuring.Zajecia.Add(zajecia);
            conjuring.SaveChanges();
            connection.Close();
            MessageBox.Show("Dodano poprawnie zajecia przedmiot - " + przedmiot.Nazwa + " w sali " + sala.Numer + " w budynku " + sala.Budynek);

            this.InsertZajeciaPojedyncze(conjuring, connection, zajecia);
        }
        public void UpdateObecnosc(TheConjuring_dbEntities1 conjuring, SqlConnection connection, int indeks, int id_zajec, DateTime data)
        {
            connection.Open();
            var query = conjuring.Obecnosc.Where(o => (o.Indeks == indeks && o.Data == data)).FirstOrDefault();

            query.Id_Zajec_pojedynczych = id_zajec;
            conjuring.SaveChanges();
            connection.Close();
        }
        public void DeleteObecnosc(TheConjuring_dbEntities1 conjuring, SqlConnection connection, int indeks, int id_zajec, DateTime data)
        {
            connection.Open();
            List <Obecnosc> delete = conjuring.Obecnosc.Where(o => (o.Indeks == indeks && o.Id_Zajec_pojedynczych == id_zajec && o.Data == data)).ToList();

            foreach (var o in delete)
            {
                conjuring.Obecnosc.Remove(o);
            }
            conjuring.SaveChanges();
            connection.Close();
        }
        private void Zarejestrujbutton_Click(object sender, EventArgs e)
        {
            SqlConnection            connection = new SqlConnection(@"Data Source=conjuringserv.database.windows.net;Initial Catalog=TheConjuring_db;Integrated Security=False;User ID=Kierownik;Password=KieraS_246;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            TheConjuring_dbEntities1 conjuring  = new TheConjuring_dbEntities1();

            string         login = LoginTextBox.Text.Trim();
            string         log   = "Select  Id_wykladowcy from Wykladowca Where Login_uz='" + login + "'";
            SqlDataAdapter sda   = new SqlDataAdapter(log, connection);
            DataTable      table = new DataTable();

            sda.Fill(table);
            if (table.Rows.Count >= 1)
            {
                MessageBox.Show("Uzytkownik o takiej nazwie już istnieje");
                return;
            }
            string haslo, haslo_pon;

            haslo     = HasloTextBox.Text.Trim();
            haslo_pon = Haslo2TextBox.Text.Trim();

            if (haslo_pon != haslo || haslo == "" || haslo_pon == "")
            {
                MessageBox.Show("Hasła różnią się");
                return;
            }

            string imie     = ImieTextBox.Text.Trim();
            string nazwisko = NazwiskoTextBox.Text.Trim();

            haslo = SHA2.GenerateSHA256String(haslo);

            Wykladowca wy = new Wykladowca
            {
                Imie     = imie,
                Nazwisko = nazwisko,
                Login_uz = login,
                Haslo    = haslo
            };

            connection.Open();
            conjuring.Wykladowca.Add(wy);
            conjuring.SaveChanges();
            connection.Close();

            MessageBox.Show("Rejestracja powiodła się");
            this.Close();
        }
        public void Usun_Zaj_poj(TheConjuring_dbEntities1 conjuring, Zajecia_pojedyncze zajecia_Pojedyncze, Wykladowca wyk)
        {
            try
            {
                var x = (from zp in conjuring.Zajecia_pojedyncze
                         where zp.Id_Zajec_pojedynczych == zajecia_Pojedyncze.Id_Zajec_pojedynczych
                         join z in conjuring.Zajecia on zp.Id_Zajec equals z.Id_Zajec
                         join w in conjuring.Wykladowca on z.Id_Wykladowcy equals w.Id_Wykladowcy
                         where zp.Id_Zajec_pojedynczych == zajecia_Pojedyncze.Id_Zajec_pojedynczych && w.Id_Wykladowcy == wyk.Id_Wykladowcy
                         select zp).FirstOrDefault();
                String rec = x.Data_zajec.ToString();

                DialogResult dr = MessageBox.Show("Czy napewno chcesz usunąć zajecia pojedyncze odbywajace się w podanej dacie ?\n" + rec, "Potwierdzenie", MessageBoxButtons.YesNo);
                if (dr == DialogResult.Yes)
                {
                    int c = (from zp in conjuring.Zajecia_pojedyncze
                             join o in conjuring.Obecnosc on zp.Id_Zajec_pojedynczych equals o.Id_Zajec_pojedynczych
                             join z in conjuring.Zajecia on zp.Id_Zajec equals z.Id_Zajec
                             join w in conjuring.Wykladowca on z.Id_Wykladowcy equals w.Id_Wykladowcy
                             where zp.Id_Zajec_pojedynczych == zajecia_Pojedyncze.Id_Zajec_pojedynczych && w.Id_Wykladowcy == wyk.Id_Wykladowcy
                             select o).Distinct().Count();

                    if (c == 0)
                    {
                        conjuring.Zajecia_pojedyncze.Remove(x);
                        conjuring.SaveChanges();
                        MessageBox.Show("Usunieto rekord");
                    }

                    else
                    {
                        MessageBox.Show("Nie można usunąć danych zajęć pojedyńczych, ze względu na to że studenci mają na nich obecność"); return;
                    }
                }
            }
            catch (NullReferenceException ex)
            {
                MessageBox.Show("Wyjątek: Rekord nie istnieje w bazie danych.");
            }
        }
        //Dodawanie nowego przedmiotu
        public void InsertPrzedmiot(TheConjuring_dbEntities1 conjuring, SqlConnection connection, String nazwa)
        {
            connection.Open();
            var query = conjuring.Przedmiot.Where(o => (o.Nazwa == nazwa)).FirstOrDefault();

            if (query != null)
            {
                MessageBox.Show("Taki przedmiot już istnieje w bazie");
                connection.Close();
                return;
            }

            Przedmiot przedmiot = new Przedmiot
            {
                Nazwa = nazwa
            };

            conjuring.Przedmiot.Add(przedmiot);
            conjuring.SaveChanges();
            connection.Close();
            MessageBox.Show("Dodano poprawnie przedmiot - " + nazwa);
        }
        //Dodawanie nowej sali
        public void InsertSala(TheConjuring_dbEntities1 conjuring, SqlConnection connection, String numer, String budynek)
        {
            connection.Open();
            var query = conjuring.Sala.Where(o => (o.Numer == numer && o.Budynek == budynek)).FirstOrDefault();

            if (query != null)
            {
                MessageBox.Show("Taka sala już istnieje w bazie");
                connection.Close();
                return;
            }

            Sala sala = new Sala()
            {
                Budynek = budynek,
                Numer   = numer
            };

            conjuring.Sala.Add(sala);
            conjuring.SaveChanges();
            connection.Close();
            MessageBox.Show("Dodano poprawnie sale numer - " + numer + " w budynku - " + budynek);
        }