namespace PiattaformaStreaming;

class Program
{
    static void Main(string[] args)
    {
        Libreria libreria = new Libreria();
        
        // Aggiungi film
        libreria.Aggiungi("Inception", 148, 2010, 9);
        libreria.Aggiungi("Good Luck, Have Fun, Don't Die", 134, 2026, 10);

        // Aggiungi serie tv
        try
        {
            Episodio ep1 = new Episodio("Pilota", 50, 2008, 8, 1);
            Episodio ep2 = new Episodio("Questione di chimica", 48, 2008, 9, 2);
            libreria.Aggiungi("Breaking Bad", 2008, 10, ep1, ep2);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.WriteLine("Stato della Libreria");
        Console.WriteLine($"Numero Film: {libreria.NumeroFilm()}");
        Console.WriteLine($"Numero Serie TV: {libreria.NumeroSerieTv()}");

        // Riproduzione
        Console.WriteLine("\nTest Riproduzione");
        Console.WriteLine(libreria.Riproduci(1));
        Console.WriteLine(libreria.Riproduci(2));

        // Ordina per durata
        Console.WriteLine("\nMedia ordinati per Durata");
        Console.WriteLine(libreria.OrdinaPerDurata());

        try
        {
            Console.WriteLine($"\nValutazione media catalogo: {libreria.MediaValutazioni():F2}/10");
        }
        catch (DivideByZeroException ex)
        {
            Console.WriteLine(ex.Message);
        }

        // Salvataggio
        try
        {
            //libreria.SalvaFileTesto("../../../");
            //libreria.SalvaFileBinario("../../../")
            libreria.SalvaFileJson("../../../");
            Console.WriteLine("\nFile salvato correttamente.");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        // Lettura
        try
        {
            //libreria.LeggiFileTesto("../../../");
            //libreria.LeggiFileBinario("../../../");
            libreria.LeggiFileJson("../../../");
            Console.WriteLine("\nFile letto correttamente.");
            Console.WriteLine($"Numero Film: {libreria.NumeroFilm()}");
            Console.WriteLine($"Numero Serie TV: {libreria.NumeroSerieTv()}");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}