using System.Collections.Generic;
using MovieApp.Web.Models;
using System.Linq;

namespace MovieApp.Web.Data
{
    public class MovieRepository
    {
        private static readonly List<Movie> _movies = null;
        static MovieRepository()
        {
            _movies = new List<Movie>()
            {
                new Movie
                {
                MovieId=1,
                Title="Joker",
                Description="Joker, 2019 yapımı Amerikan psikolojik gerilim filmidir ve Todd Phillips tarafından yönetilmiş, senaryosu Scott Silver ile birlikte yazılmıştır. DC Comics karakterlerine dayanan film, başarısız bir palyaço ve hedefi stand-up komedyeni olmak olan Arthur Fleck'i, 1981'de geçen bir hikâyede ele alır.",
                Director="Todd Phillips",
                Players=new string[] {"Ed Helms", "Justin Bartha"},
                ImageUrl="1.jpg",
                GenreId=4
                },
                new Movie
                {
                MovieId=2,
                Title="Titanic",
                Description="Titanik (İngilizce: Titanic), James Cameron'ın yönetmenlik, senaristlik, ortak yapımcılık ve ortak kurgu yönetmenliğini yaptığı, 1997 yılı Amerikan yapımı epik, felaket ve romantizm temalı sinema filmi.",
                Director="James Cameron",
                Players=new string[] {"Kate Winslet", "Arnold Schwarzenegger"},
                ImageUrl="2.jpg",
                GenreId=3
                },
                new Movie
                {
                MovieId=3,
                Title="Black Swan",
                Description="açıklama 1",
                Director="Darren Aronofsky",
                Players=new string[] {"Natalia Portman", "Daniel Craig"},
                ImageUrl="3.jpg",
                GenreId=1
                },
                 new Movie
                {
                MovieId=4,
                Title="The Godfather",
                Description="Baba (İngilizce: The Godfather), Mario Puzo'nun yazdığı aynı adlı romandan uyarlanan, Francis Ford Coppola'nın yönettiği, Marlon Brando ve Al Pacino'nun başrollerini paylaştığı filmdir. Filmde ayrıca yardımcı rollerde James Caan, Robert Duvall, Diane Keaton, John Cazale vardır. Filmin hikâyesi, II.",
                Director="Francis Ford Coppola",
                Players=new string[] {"Sofia Capolla", "Talia Shire"},
                ImageUrl="4.jpg",
                GenreId=3
                },
                new Movie
                {
                MovieId=5,
                Title="Pianist",
                Description="Piyanist, ya da orijinal ismiyle The Pianist, Roman Polanski'nin 2002 yapımı uzun metrajlı dramatik ve biyografik savaş filmidir.",
                Director="Roman Polanski",
                Players=new string[] { "Sharon Tate", "Patricia Tate"},
                ImageUrl="5.jpg",
                GenreId=1
                },
                 new Movie
                {
                MovieId=6,
                Title="Shawshank",
                Description="Stephen King'in 1982 tarihli öyküsünden uyarlanan ve Frank Darabont'un yönettiği Esaretin Bedeli'nde Robbins, eşiyle yasak aşkını öldürmekle haksız yere suçlandıktan sonra Shawshank Hapishanesi'nde müebbet hapis cezasına çarptırılan Andy Dufresne'i canlandırıyordu.",
                Director="Frank Darabont",
                Players=new string[] { "Robert Kirkman", "Laurie Holden"},
                ImageUrl="6.jpg",
                GenreId=3
                 }

            };
        }
        public static List<Movie> Movies
        {
            get
            {
                return _movies;
            }
        }
        public static void Add(Movie movie)
        {
            movie.MovieId = _movies.Count() + 1;
            _movies.Add(movie);
        }

        public static Movie GetById (int id) 
        {
            // ilgili liste üzerinde bütün elemanlara tek tek döngü şeklinde bakar
            // m yukarıdaki listenin her bir elemanını ifade eder
            return _movies.FirstOrDefault(m => m.MovieId == id);
        }
        public static void Edit (Movie m)
        {
            foreach (var movie in _movies)
            {
                if(movie.MovieId ==m.MovieId)
                {
                    movie.Title = m.Title;
                    movie.Description = m.Description;
                    movie.Director = m.Director;
                    movie.ImageUrl = m.ImageUrl;
                    movie.GenreId = m.GenreId;
                    break;
                }
            }
        }
        public static void Delete(int MovieId)
        {
            var movie = GetById(MovieId);
            if(movie!=null)
            {
                _movies.Remove(movie);
            }
        }
    }
}
