Clear        


                
                    using _28_1_DemoFilmlerClassLibrary.Data;
using _28_1_DemoFilmlerClassLibrary.Entities;
using _28_1_DemoFilmlerClassLibrary.Entities.Bases;
using _28_1_DemoFilmlerClassLibrary.Repositories.Bases;

namespace _28_1_DemoFilmlerClassLibrary.Repositories
{
    public class FilmRepo : IRepo
    {
        public List<Film> FilmleriGetir()
        {
            return Veriler.Filmler;
        }

        public List<Film> FilmleriGetir(string adi)
        {
            List<Film> filmler = new List<Film>();
            List<Film> mevcutFilmler = FilmleriGetir();
            foreach (Film mevcutFilm in mevcutFilmler)
            {
                if (!string.IsNullOrWhiteSpace(adi) && mevcutFilm.Adi.Contains(adi, StringComparison.OrdinalIgnoreCase))
                    filmler.Add(mevcutFilm);
            }
            return filmler;
        }

        public Kayit KayitGetir(int id)
        {
            Film film = null;
            List<Film> mevcutFilmler = FilmleriGetir();
            foreach (Film mevcutFilm in mevcutFilmler)
            {
                if (mevcutFilm.Id == id)
                {
                    film = mevcutFilm;
                    break;
                }
            }
            return film;
        }

        private Film FilmGetir(string adi, int id = 0) // id 0: yeni film ekleme, diğer: film güncelleme
        {
            Film film = null;
            List<Film> mevcutFilmler = FilmleriGetir();
            foreach (Film mevcutFilm in mevcutFilmler)
            {
                if (id == 0 && mevcutFilm.Adi.Equals(adi, StringComparison.OrdinalIgnoreCase)) // yeni film ekleme
                {
                    film = mevcutFilm;
                    break;
                }
                else if (mevcutFilm.Id != id && mevcutFilm.Adi.Equals(adi, StringComparison.OrdinalIgnoreCase)) // film güncelleme
                {
                    film = mevcutFilm;
                    break;
                }
            }
            return film;
        }

        public string FilmEkle(Film film)
        {
            if (film.Turleri is null || film.Turleri.Count == 0)
                return "Filmin türleri girilmemiştir!";
            Film mevcutFilm = FilmGetir(film.Adi);
            if (mevcutFilm is not null)
                return "Girilen ada sahip film bulunmaktadır!";
            film.Id = Veriler.EnSonId++;
            Veriler.Filmler.Add(film);
            return "Film başarıyla eklendi.";
        }

        public string FilmGuncelle(Film film)
        {
            if (film.Turleri is null || film.Turleri.Count == 0)
                return "Filmin türleri girilmemiştir!";
            if (FilmGetir(film.Adi, film.Id) is not null)
                return "Girilen ada sahip film bulunmaktadır!";
            Kayit mevcutKayit = KayitGetir(film.Id);
            if (mevcutKayit is null)
                return Veriler.KayitBulunamadiMesaji;
            Film mevcutFilm = mevcutKayit as Film;
            mevcutFilm.Adi = film.Adi;
            mevcutFilm.YapimYili = film.YapimYili;
            mevcutFilm.Gisesi = film.Gisesi;
            mevcutFilm.Yonetmeni = film.Yonetmeni;
            mevcutFilm.Turleri = film.Turleri;
            mevcutFilm.GosterimTarihi = film.GosterimTarihi;
            mevcutFilm.Platform = film.Platform;
            mevcutFilm.YerliMi = film.YerliMi;
            return "Film başarıyla güncellendi.";
        }

        public string FilmSil(int id)
        {
            Kayit mevcutFilm = KayitGetir(id);
            if (mevcutFilm is null)
                return Veriler.KayitBulunamadiMesaji;
            Veriler.Filmler.Remove((Film)mevcutFilm);
            return "Film başarıyla silindi.";
        }
    }
}