private void btnSil_Click(object sender, EventArgs e)
        {
            if (dgvRezerveEdenler.SelectedRows.Count == 0)
            {
                MessageBox.Show("Silme işlemi için önce silinecek kişi seçilmelidir.", "Dikkat");
                return;
            }

            int rezerveEdenID = (int)dgvRezerveEdenler.SelectedRows[0].Cells[0].Value;

            DialogResult result = MessageBox.Show("Seçilen kişi silinecektir, emin misiniz?", "Onay", MessageBoxButtons.YesNo);

            if (result != DialogResult.Yes)
            {
                return;
            }

            try
            {
                RezerveEden rezerveEden = _db.RezerveEden.Find(rezerveEdenID);
                rezerveEden.Silindi = true;
                _db.SaveChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Bir hata nedeniyle silme işlemi gerçekleştirilemedi.", "Hata");
            }
            finally
            {
                DgvRezerveEdenlerYukle();
            }
        }
        private void btnGuncelle_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Seçilen kişi güncellenecektir, emin misiniz?", "Onay", MessageBoxButtons.YesNo);

            if (result != DialogResult.Yes)
            {
                return;
            }
            DataGridViewRow row = dgvRezerveEdenler.CurrentRow;

            if (dgvRezerveEdenler.SelectedRows.Count != 1)
            {
                MessageBox.Show("Güncelleme için bir kişi seçiniz.", "Dikkat");
                return;
            }
            int rezerveEdenID = (int)row.Cells["ID"].Value;

            if (!_db.RezerveEden.Any(r => r.RezerveEdenID == rezerveEdenID))
            {
                MessageBox.Show("Seçtiğiniz kişi silinmiş.", "Hata");
                DgvRezerveEdenlerYukle();
                return;
            }

            secilenRezerveEdenID = Convert.ToInt32(row.Cells["ID"].Value);
            RezerveEden rezerveEden = _db.RezerveEden.Find(secilenRezerveEdenID);

            rezerveEden.TcKimlikNo = txtTcKimlikNo.Text;
            rezerveEden.Ad         = txtAd.Text;
            rezerveEden.Soyad      = txtSoyad.Text;
            rezerveEden.Telefon    = txtTelefon.Text;

            #region E-mail Regex
            Regex rx = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");

            if (rx.IsMatch(txtEmail.Text))
            {
                rezerveEden.Email = txtTelefon.Text;
                try
                {
                    _db.SaveChanges();
                    MessageBox.Show("Güncelleme başarılı.", "Başarılı");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Bir hata nedeniyle güncelleme işlemi gerçekleştirilemedi.", "Hata");
                }
                finally
                {
                    DgvRezerveEdenlerYukle();
                    Helper.ControlTemizle(this);
                }
            }

            else
            {
                MessageBox.Show("Geçerli bir mail adresi giriniz!");
            }
            #endregion
        }
        private void btnEkle_Click(object sender, EventArgs e)
        {
            string      hataMesaji  = "";
            RezerveEden rezerveEden = new RezerveEden();

            if (string.IsNullOrWhiteSpace(txtTcKimlikNo.Text))
            {
                hataMesaji += "T.C. Kimlik Numarası boş olamaz.\n";
            }
            if (txtTcKimlikNo.Text.Length != 11)
            {
                hataMesaji += "T.C. Kimlik Numarası 11 haneli olmalıdır.\n";
            }
            if (_db.RezerveEden.Any(r => r.TcKimlikNo == txtTcKimlikNo.Text && r.Silindi == true))
            {
                MessageBox.Show("Bu kişi önceden eklenmiş, kişi verilerinin yeniden getirilmesini istiyor musunuz?");
                return;
            }
            if (_db.RezerveEden.Any(r => r.TcKimlikNo == txtTcKimlikNo.Text))
            {
                MessageBox.Show("Bu kişi önceden eklenmiş, güncelleme için güncelle butonunu kullanınız.");
                return;
            }


            if (string.IsNullOrWhiteSpace(txtAd.Text))
            {
                hataMesaji += "Ad boş olamaz.\n";
            }
            if (txtAd.Text.Length > 30)
            {
                hataMesaji += "Ad 30 karakteri geçemez.\n";
            }

            if (string.IsNullOrWhiteSpace(txtSoyad.Text))
            {
                hataMesaji += "Soyad boş olamaz.\n";
            }
            if (txtSoyad.Text.Length > 30)
            {
                hataMesaji += "Soyad 30 karakteri geçemez.\n";
            }

            if (string.IsNullOrWhiteSpace(txtTelefon.Text))
            {
                hataMesaji += "Telefon boş olamaz.\n";
            }
            if (txtTelefon.Text.Length != 10)
            {
                hataMesaji += "Telefon 10 haneli olmalıdır.\n";
            }

            if (txtEmail.Text.Length > 50)
            {
                hataMesaji += "Email 50 karakteri geçemez.";
            }

            if (hataMesaji.Length > 0)
            {
                MessageBox.Show(hataMesaji, "Dikkat");
                return;
            }

            DialogResult result = MessageBox.Show(txtAd.Text + " " + txtSoyad.Text + " isimli kişi eklenecektir, emin misiniz?", "Onay", MessageBoxButtons.YesNo);

            if (result != DialogResult.Yes)
            {
                return;
            }

            rezerveEden.TcKimlikNo = txtTcKimlikNo.Text;
            rezerveEden.Ad         = txtAd.Text;
            rezerveEden.Soyad      = txtSoyad.Text;
            rezerveEden.Telefon    = txtTelefon.Text;

            #region E-mail Regex
            Regex rx = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");

            if (rx.IsMatch(txtEmail.Text))
            {
                rezerveEden.Email   = txtTelefon.Text;
                rezerveEden.Silindi = false;
                try
                {
                    _db.RezerveEden.Add(rezerveEden);
                    _db.SaveChanges();
                    eklenenRezerveEdenID = rezerveEden.RezerveEdenID;
                    DgvRezerveEdenlerYukle();
                    //todo:diğer formlarda ControlTemizle'nin doğru kullanımı kontrol edilecek.
                    Helper.ControlTemizle(this);
                    MessageBox.Show("Kayıt başarılı.", "Başarılı");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Bir hata nedeniyle ekleme işlemi gerçekleştirilemedi.", "Hata");
                    return;
                }
            }

            else
            {
                MessageBox.Show("Geçerli bir mail adresi giriniz!");
            }
            #endregion
        }
        private void btnEkle_Click(object sender, EventArgs e)
        {
            #region Validation

            string      hataMesaji  = "";
            RezerveEden rezerveEden = new RezerveEden();

            if (string.IsNullOrWhiteSpace(txtTcKimlikNo.Text))
            {
                hataMesaji += "T.C. Kimlik Numarası boş olamaz.";
            }
            if (txtTcKimlikNo.Text.Length != 11)
            {
                hataMesaji += "T.C. Kimlik Numarası 11 haneli olmalıdır.";
            }
            if (string.IsNullOrWhiteSpace(txtAd.Text))
            {
                hataMesaji += "Ad boş olamaz.";
            }
            if (txtAd.Text.Length > 30)
            {
                hataMesaji += "Ad 30 karakteri geçemez.";
            }
            if (string.IsNullOrWhiteSpace(txtSoyad.Text))
            {
                hataMesaji += "Soyad boş olamaz.";
            }
            if (txtSoyad.Text.Length > 30)
            {
                hataMesaji += "Soyad 30 karakteri geçemez.";
            }
            if (string.IsNullOrWhiteSpace(txtTelefon.Text))
            {
                hataMesaji += "Telefon boş olamaz.";
            }
            if (txtTelefon.Text.Length != 10)
            {
                hataMesaji += "Telefon 10 haneli olmalıdır.";
            }
            if (hataMesaji.Length > 0)
            {
                MessageBox.Show(hataMesaji);
                return;
            }

            #endregion


            Konaklayan konaklayan = new Konaklayan();
            konaklayan.TcKimlikNo   = txtTcKimlikNo.Text;
            konaklayan.Ad           = txtAd.Text;
            konaklayan.Soyad        = txtSoyad.Text;
            konaklayan.Telefon      = txtTelefon.Text;
            konaklayan.CinsiyetEnum = (byte)(int)cmbCinsiyet.SelectedValue;
            konaklayan.DogumTarihi  = dtpDogumTarihi.Value.Date;

            try
            {
                _db.Konaklayan.Add(konaklayan);
                _db.SaveChanges();
            }
            catch (Exception)
            {
                MessageBox.Show("Bu Tc Kimlik No zaten var.", "Geçersiz İşlem", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            KonaklayanListesiGetir();

            foreach (Control item in this.Controls)
            {
                Helper.ControlTemizle(item);
            }

            MessageBox.Show("Kayıt başarılı.");

            //int konakID = _db.Konaklayan.LastOrDefault().KonaklayanID;
        }