using _28_1_DemoFilmlerClassLibrary.Data;
using _28_1_DemoFilmlerClassLibrary.Entities;
using _28_1_DemoFilmlerClassLibrary.Entities.Bases;
using _28_1_DemoFilmlerClassLibrary.Repositories;
using System.Globalization;
namespace _28_2_DemoFilmlerConsoleApp
{
public class Program
{
static FilmRepo filmRepo = new FilmRepo();
static YonetmenRepo yonetmenRepo = new YonetmenRepo();
static TurRepo turRepo = new TurRepo();
public static void Main(string[] args)
{
string giris = MenuGetir();
while (giris != "0")
{
switch (giris)
{
case "1":
FilmleriListele();
break;
case "2":
AdaGoreFilmleriListele();
break;
case "3":
IdyeGoreFilmiGoster();
break;
case "4":
FilmEkle();
break;
case "5":
FilmGuncelle();
break;
case "6":
FilmSil();
break;
default:
Console.WriteLine("Geçersiz işlem!");
break;
}
giris = MenuGetir();
}
}
static string MenuGetir()
{
Console.WriteLine("\nİşlem seçiniz\n" +
"0: Çıkış\n" +
"1: Tüm filmleri listele\n" +
"2: Ada göre filmleri listele\n" +
"3: ID'ye göre filmi göster\n" +
"4: Film ekle\n" +
"5: Film güncelle\n" +
"6: Film sil");
return Console.ReadLine().Trim();
}
static void Yazdir(Film film)
{
string filmText;
string yonetmenText;
string turlerText;
filmText = $"\nFilm\n" +
$"ID: {film.Id}\n" +
$"Oluşturulma Tarihi: {film.OlusturulmaTarihi.ToString("dd.MM.yyyy HH:mm:ss")}\n" +
$"Adı: {film.Adi}\n" +
$"Yapım Yılı: {film.YapimYili}\n" +
$"Gişesi: {film.Gisesi.ToString("N2", new CultureInfo("tr-TR"))} TL\n" +
$"Gösterim Tarihi: {film.GosterimTarihi.ToString("dd.MM.yyyy")}\n" +
$"Platform: {film.Platform}\n" +
$"Yerli / Yabancı: {(film.YerliMi ? "Yerli" : "Yabancı")}";
yonetmenText = $"\nYönetmen\n" +
$"Adı Soyadı: {film.Yonetmeni.AdiSoyadi}\n" +
$"Doğum Tarihi: {film.Yonetmeni.DogumTarihi.ToString("dd.MM.yyyy")}\n" +
$"Durumu: {(film.Yonetmeni.EmekliMi ? "Emekli" : "Çalışıyor")}";
turlerText = "\nTürleri: ";
foreach (Tur tur in film.Turleri)
{
turlerText += tur.Adi + ", ";
}
turlerText = turlerText.Substring(0, turlerText.Length - 2);
Console.WriteLine(filmText + turlerText + yonetmenText);
}
static void Yazdir(List<Film> filmler)
{
Console.WriteLine("\n" + Veriler.KayitSayisiMesajiGetir(filmler.Count));
foreach (Film film in filmler)
{
Yazdir(film);
}
}
static void Yazdir(List<Yonetmen> yonetmenler)
{
string yonetmenText;
foreach (Yonetmen yonetmen in yonetmenler)
{
yonetmenText = $"\nYönetmen\n" +
$"ID: {yonetmen.Id}\n" +
$"Oluşturulma Tarihi: {yonetmen.OlusturulmaTarihi.ToString("dd.MM.yyyy HH:mm:ss")}\n" +
$"Adı Soyadı: {yonetmen.AdiSoyadi}\n" +
$"Doğum Tarihi: {yonetmen.DogumTarihi.ToString("dd.MM.yyyy")}\n" +
$"Durumu: {(yonetmen.EmekliMi ? "Emekli" : "Çalışıyor")}";
Console.WriteLine(yonetmenText);
}
}
static void Yazdir(List<Tur> turler)
{
string turText;
foreach (Tur tur in turler)
{
turText = $"\nTür\n" +
$"ID: {tur.Id}\n" +
$"Oluşturulma Tarihi: {tur.OlusturulmaTarihi.ToString("dd.MM.yyyy HH:mm:ss")}\n" +
$"Adı: {tur.Adi}";
Console.WriteLine(turText);
}
}
static void FilmleriListele()
{
Yazdir(filmRepo.FilmleriGetir());
}
static void AdaGoreFilmleriListele()
{
Console.Write("\nFilm Adı: ");
string adi = Console.ReadLine().Trim();
Yazdir(filmRepo.FilmleriGetir(adi));
}
static void IdyeGoreFilmiGoster()
{
try
{
Console.Write("\nFilm ID: ");
int filmId = Convert.ToInt32(Console.ReadLine());
Kayit film = filmRepo.KayitGetir(filmId);
if (film != null)
Yazdir((Film)film);
else
Console.WriteLine(Veriler.KayitBulunamadiMesaji);
}
catch
{
Console.WriteLine(Veriler.HataMesaji);
}
}
static Film FilmOlustur(int id = 0) // id 0: yeni film ekleme, diğer: film güncelleme
{
if (id > 0) // film güncelleme ise parametre olarak gönderilen id'ye sahip film var mı kontrol et
{
Kayit mevcutFilm = filmRepo.KayitGetir(id);
if (mevcutFilm == null)
{
Console.WriteLine(Veriler.KayitBulunamadiMesaji);
return null;
}
}
Console.Write("\nAdı: ");
string adi = Console.ReadLine();
Console.Write("Yapım Yılı: ");
short yapimYili = Convert.ToInt16(Console.ReadLine());
Console.Write("Gişesi: ");
decimal gisesi = decimal.Parse(Console.ReadLine(), new CultureInfo("tr-TR"));
Console.Write("Gösterim Tarihi (gün.ay.yıl): ");
DateTime gosterimTarihi = DateTime.Parse(Console.ReadLine(), new CultureInfo("tr-TR"));
Console.Write("Platform (1: Sinema, 2: Netflix, 3: Amazon): ");
Platformlar platform = (Platformlar)Convert.ToInt32(Console.ReadLine());
Console.Write("Yerli (1) / Yabancı (2): ");
bool yerliMi = Console.ReadLine() == "1" ? true : false;
Yazdir(yonetmenRepo.YonetmenleriGetir());
Console.Write("Yönetmen ID: ");
int yonetmenId = int.Parse(Console.ReadLine());
Kayit mevcutYonetmen = yonetmenRepo.KayitGetir(yonetmenId);
if (mevcutYonetmen == null)
{
Console.WriteLine(Veriler.KayitBulunamadiMesaji);
return null;
}
Yazdir(turRepo.TurleriGetir());
Console.WriteLine("Tür ID'leri (girişi sonlandırmak için 0): ");
List<int> turIdleri = new List<int>();
int turId;
Kayit tur;
bool turHata = false;
do
{
turId = Convert.ToInt32(Console.ReadLine());
if (turId != 0)
{
tur = turRepo.KayitGetir(turId);
if (tur == null)
{
Console.WriteLine(Veriler.KayitBulunamadiMesaji);
turHata = true;
break;
}
turIdleri.Add(turId);
}
} while (turId != 0);
if (turHata)
turIdleri.Clear();
return new Film()
{
Id = id,
Adi = adi.Trim(),
YapimYili = yapimYili,
Gisesi = gisesi,
GosterimTarihi = gosterimTarihi,
Platform = platform,
YerliMi = yerliMi,
Yonetmeni = mevcutYonetmen as Yonetmen,
Turleri = turRepo.TurleriGetir(turIdleri)
};
}
static void FilmEkle()
{
try
{
Console.WriteLine("\nFilm Ekleme");
Film film = FilmOlustur();
Console.WriteLine(filmRepo.FilmEkle(film));
}
catch
{
Console.WriteLine(Veriler.HataMesaji);
}
}
static void FilmGuncelle()
{
try
{
Console.WriteLine("\nFilm Güncelleme");
Yazdir(filmRepo.FilmleriGetir());
Console.Write("\nFilm ID: ");
int filmId = int.Parse(Console.ReadLine());
Film film = FilmOlustur(filmId);
Console.WriteLine(filmRepo.FilmGuncelle(film));
}
catch
{
Console.WriteLine(Veriler.HataMesaji);
}
}
static void FilmSil()
{
try
{
Console.WriteLine("\nFilm Silme");
Yazdir(filmRepo.FilmleriGetir());
Console.Write("\nFilm ID: ");
int filmId = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(filmRepo.FilmSil(filmId));
}
catch
{
Console.WriteLine(Veriler.HataMesaji);
}
}
}
}