using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace _2025._01._30
{
    public class BookManager
    {
        public List<Book> Konyvek()
        {
            List<Book> books = new List<Book>();
            StreamReader sr = new StreamReader("konyvek.txt");
            string line = sr.ReadLine();
            while (line != null)
            {
                string[] line_splitted = line.Split(";");
                Book book = new Book(line_splitted[0], line_splitted[1], int.Parse(line_splitted[2]), int.Parse(line_splitted[3]));
                books.Add(book);
                line = sr.ReadLine();
            }

            sr.Close();
            return books;
        }

        public void Felvetel(List<Book> books)
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Választásod: Új könyv felvétele.");
            Console.WriteLine("Kérlek, add meg a könyv adatait!");

            try
            {
                Console.Write("Cím: ");
                string cim = Console.ReadLine();

                Console.Write("Szerző: ");
                string szerzo = Console.ReadLine();

                Console.Write("Kiadás éve: ");
                int kiadas_eve = int.Parse(Console.ReadLine());

                Console.Write("Darabszám: ");
                int darabszam = int.Parse(Console.ReadLine());


                if (cim == null || szerzo == null || kiadas_eve == null || darabszam == null)
                {
                    Console.WriteLine("Minden érték megadása kötelező");
                }

                else
                {
                    FileStream fs = new FileStream("konyvek.txt", FileMode.Append, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(fs);
                    sw.WriteLine($"{cim};{szerzo};{kiadas_eve};{darabszam}");
                    sw.Close();
                    fs.Close();

                    Console.WriteLine("Új könyv sikeresen felvéve!");
                }
            }

            catch (Exception e)
            {
                Console.WriteLine($"Hiba történt: {e}");
            }
        }

        public void Kereses(List<Book> books)
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Választásod: Könyv keresése cím alapján.");
            Console.WriteLine("Kérlek, add meg a könyv címét!");

            string cim = Console.ReadLine();
            if (cim != null)
            {
                foreach (Book book in books)
                {
                    if (book.Cim.ToLower() == cim.ToLower())
                    {
                        Console.WriteLine("-------------------------------------");
                        Console.WriteLine($"Cím: {book.Cim}");
                        Console.WriteLine($"Szerző: {book.Szerzo}");
                        Console.WriteLine($"Kiadás éve: {book.Kiadas_eve}");
                        Console.WriteLine($"Darabszám: {book.Darabszam}");
                        Console.WriteLine("-------------------------------------");
                        break;
                    }
                }
            }

            else
            {
                Console.WriteLine("A cím megadása kötelező!");
            }
        }

        public void Listazas(List<Book> books)
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Választásod: Könyvek listázása.");

            foreach (Book book in books)
            {
                Console.WriteLine($"Cím: {book.Cim}");
                Console.WriteLine($"Szerző: {book.Szerzo}");
                Console.WriteLine($"Kiadás éve: {book.Kiadas_eve}");
                Console.WriteLine($"Darabszám: {book.Darabszam}");
                Console.WriteLine("-------------------------------------");
            }
        }

        public void Modositas(List<Book> books)
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Választásod: Könyv módosítása.");
            Console.WriteLine("Add meg a könyv adatait, amit módosítani szeretnél!");

            Console.Write("A könyv címe, aminek az adatait módosítani akarod: ");
            string selected_book = Console.ReadLine();


            try
            {
                if (selected_book == null)
                {
                    Console.WriteLine("Könyvcím megadása kötelező!");
                }

                else
                {
                    Console.Write("Cím: ");
                    string cim = Console.ReadLine();

                    Console.Write("Szerző: ");
                    string szerzo = Console.ReadLine();

                    Console.Write("Kiadás éve: ");
                    int kiadas_eve = int.Parse(Console.ReadLine());

                    Console.Write("Darabszám: ");
                    int darabszam = int.Parse(Console.ReadLine());


                    foreach (Book book in books)
                    {
                        if (book.Cim.ToLower() == selected_book.ToLower())
                        {
                            book.Cim = cim;
                            book.Szerzo = szerzo;
                            book.Kiadas_eve = kiadas_eve;
                            book.Darabszam = darabszam;
                            break;
                        }
                    }

                    FileStream fs = new FileStream("konyvek.txt", FileMode.Create, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(fs);
                    foreach (Book book in books)
                    {
                        sw.WriteLine($"{book.Cim};{book.Szerzo};{book.Kiadas_eve};{book.Darabszam}");
                    }

                    sw.Close();
                    fs.Close();

                    Console.WriteLine("Könyv módosítása sikeres!");
                }
            }

            catch (Exception e)
            {
                Console.WriteLine($"Hiba történt: {e}");
            }
        }

        public void Torles(List<Book> books)
        {
            Console.WriteLine("-------------------------------------");
            Console.WriteLine("Választásod: Könyv törlése.");
            Console.WriteLine("Add meg a könyv címét, amit törölni szeretnél!");
            string cim = Console.ReadLine();
            int books_length = books.Count;

            foreach (Book book in books)
            {
                if (book.Cim.ToLower() == cim.ToLower())
                {
                    books.Remove(book);
                    break;
                }
            }

            if (books.Count < books_length)
            {
                FileStream fs = new FileStream("konyvek.txt", FileMode.Create, FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs);
                foreach (Book book in books)
                {
                    sw.WriteLine($"{book.Cim};{book.Szerzo};{book.Kiadas_eve};{book.Darabszam}");
                }

                sw.Close();
                fs.Close();

                Console.WriteLine("Könyv törlése sikeres!");
            }
        }
    }
}
