using _28_1_DemoFilmlerClassLibrary.Data;
using _28_1_DemoFilmlerClassLibrary.Entities;
using _28_1_DemoFilmlerClassLibrary.Repositories;
using System.Globalization;
namespace _28_3_DemoFilmlerWindowsFormsApp
{
public partial class FilmDuzenleForm : Form
{
FilmRepo filmRepo = new FilmRepo();
YonetmenRepo yonetmenRepo = new YonetmenRepo();
TurRepo turRepo = new TurRepo();
public FilmDuzenleForm()
{
InitializeComponent();
}
private void FilmDuzenleForm_Load(object sender, EventArgs e)
{
lMesaj.Text = "";
FillYonetmenler();
FillTurler();
}
void FillYonetmenler()
{
List<Yonetmen> yonetmenler = yonetmenRepo.YonetmenleriGetir().ToList();
yonetmenler.Insert(0, new Yonetmen()
{
Id = -1,
Adi = "-- Yönetmen Seçiniz --"
});
ddlYonetmen.DataSource = yonetmenler;
ddlYonetmen.ValueMember = "Id";
ddlYonetmen.DisplayMember = "AdiSoyadi";
}
void FillTurler()
{
List<Tur> turler = turRepo.TurleriGetir();
lbTurler.DataSource = turler;
lbTurler.ValueMember = "Id";
lbTurler.DisplayMember = "Adi";
lbTurler.ClearSelected();
}
private void bGoster_Click(object sender, EventArgs e)
{
int filmId;
if (!int.TryParse(tbId.Text, out filmId))
{
lMesaj.Text = "ID sayısal olmalıdır!";
return;
}
Show(filmId);
}
void Show(int filmId)
{
Film film = filmRepo.KayitGetir(filmId) as Film;
if (film == null)
{
lMesaj.Text = Veriler.KayitBulunamadiMesaji;
return;
}
tbAdi.Text = film.Adi;
nudYapimYili.Value = film.YapimYili;
tbGisesi.Text = film.Gisesi.ToString(new CultureInfo("tr-TR"));
ddlYonetmen.SelectedValue = film.Yonetmeni.Id;
Tur turItem;
for (int i = 0; i < lbTurler.Items.Count; i++)
{
turItem = (Tur)lbTurler.Items[i];
foreach (Tur tur in film.Turleri)
{
if (turItem.Id == tur.Id)
{
lbTurler.SetSelected(i, true);
break;
}
}
}
dtpGosterimTarihi.Value = film.GosterimTarihi;
rbSinema.Checked = film.Platform == Platformlar.Sinema;
rbNetflix.Checked = film.Platform == Platformlar.Netflix;
rbAmazon.Checked = film.Platform == Platformlar.Amazon;
cbYerli.Checked = film.YerliMi;
}
private void bGuncelle_Click(object sender, EventArgs e)
{
int filmId;
if (!int.TryParse(tbId.Text, out filmId))
{
lMesaj.Text = "ID sayısal olmalıdır!";
return;
}
Update(filmId);
}
void Update(int filmId)
{
try
{
string adi = tbAdi.Text;
if (string.IsNullOrWhiteSpace(adi))
{
lMesaj.Text = "Ad girilmelidir!";
return;
}
short yapimYili = Convert.ToInt16(nudYapimYili.Value);
decimal gisesi;
if (!decimal.TryParse(tbGisesi.Text, NumberStyles.Any, new CultureInfo("tr-TR"), out gisesi))
{
lMesaj.Text = "Gişe sayısal olmalıdır!";
return;
}
int yonetmenId = Convert.ToInt32(ddlYonetmen.SelectedValue);
if (yonetmenId == -1)
{
lMesaj.Text = "Yönetmen seçilmelidir!";
return;
}
if (lbTurler.SelectedItems.Count == 0)
{
lMesaj.Text = "En az bir tür seçilmelidir!";
return;
}
List<int> turIdleri = new List<int>();
Tur seciliTur;
foreach (var selectedItem in lbTurler.SelectedItems)
{
seciliTur = selectedItem as Tur;
turIdleri.Add(seciliTur.Id);
}
Film film = new Film()
{
Id = filmId,
Adi = adi,
YapimYili = yapimYili,
Gisesi = gisesi,
Yonetmeni = yonetmenRepo.KayitGetir(yonetmenId) as Yonetmen,
Turleri = turRepo.TurleriGetir(turIdleri),
GosterimTarihi = dtpGosterimTarihi.Value,
Platform = rbSinema.Checked ? Platformlar.Sinema : rbNetflix.Checked ? Platformlar.Netflix : Platformlar.Amazon,
YerliMi = cbYerli.Checked
};
lMesaj.Text = filmRepo.FilmGuncelle(film);
}
catch
{
lMesaj.Text = Veriler.HataMesaji;
}
}
private void bKapat_Click(object sender, EventArgs e)
{
this.Close();
}
}
}