import json
import random
from datetime import datetime

ksiazki = [
    ("Pan Tadeusz", "Adam Mickiewicz", "PWN", "2019"),
    ("Lalka", "Bolesław Prus", "Wydawnictwo Naukowe PWN", "2020"),
    ("Ferdydurke", "Witold Gombrowicz", "Wydawnictwo Literackie", "2018"),
    ("Mora", "Jacek Dukaj", "Wydawnictwo Mag", "2021"),
    ("Wesele", "Stanisław Wyspiański", "Teatr NApi", "2017"),
    ("Ciemno, prawie noc", "Joanna Bator", "Wydawnictwo W.A.B", "2019"),
    ("Krew i woda", "Jacek Piekara", "Fabryka Słów", "2020"),
    ("Ziemia obiecana", "Władysław Reymont", "Greg", "2018"),
    ("Noce i dnie", "Maria Dąbrowska", "Czarna Owca", "2019"),
    ("Przygody Tomka Sawyera", "Mark Twain", "Meth和外", "2017"),
    ("Hobbit", "J.R.R. Tolkien", "Zysk i S-ka", "2018"),
    ("Władca Pierścieni", "J.R.R. Tolkien", "Zysk i S-ka", "2019"),
    ("1984", "George Orwell", "Muza", "2020"),
    ("Folwark zwierzęcy", "George Orwell", "Muza", "2019"),
    ("Duma i uprzedzenie", "Jane Austen", "Prószyński i S-ka", "2018"),
    ("Zabójca z Laguny", "Katarzyna Bonda", "Muza", "2021"),
    ("Ucho Igielne", "Mariusz Szczygieł", "Wydawnictwo W.A.B", "2020"),
    ("Katedra", "Jacek Żak", "Czarna Owca", "2019"),
    ("Proces", "Franz Kafka", "Znak", "2018"),
    ("Metamorfoza", "Franz Kafka", "Znak", "2017"),
    ("Idiota", "Fiodor Dostojewski", "Wydawnictwo Naukowe PWN", "2019"),
    ("Zbrodnia i kara", "Fiodor Dostojewski", "Wydawnictwo Naukowe PWN", "2020"),
    ("Anna Karenina", "Lew Tołstoj", "Greg", "2018"),
    ("Wojna i pokój", "Lew Tołstoj", "Wydawnictwo Naukowe PWN", "2019"),
    ("Gdzie Pada Światło", "Ariannaort", "Prószyński i S-ka", "2021"),
    ("Muminki", "Tove Jansson", "Nasza Księgarnia", "2018"),
    ("Rok 1984", "George Orwell", "Muza", "2020"),
    ("Chłopi", "Władysław Reymont", "Greg", "2019"),
    ("Potop", "Henryk Sienkiewicz", "Greg", "2018"),
    ("Quo vadis", "Henryk Sienkiewicz", "Greg", "2019"),
    ("Krzyżacy", "Henryk Sienkiewicz", "Greg", "2020"),
    ("Szczęście psuje charakter", "Witold Rybczyński", "Znak", "2019"),
    ("Księgi Jakubowe", "Olga Tokarczuk", "Wydawnictwo W.A.B", "2020"),
    ("Bieguni", "Olga Tokarczuk", "Wydawnictwo W.A.B", "2019"),
    ("Podróże z Herodotem", "Ryszard Kapuściński", "Znak", "2018"),
    ("Imperium", "Ryszard Kapuściński", "Znak", "2019"),
    ("Teksty miłości", "Gombrowicz", "Wydawnictwo Literackie", "2017"),
    ("Poradnik filozofa", "Leszek Kołakowski", "Znak", "2018"),
    ("Historia filozofii", "Władysław Tatarkiewicz", "PWN", "2019"),
    ("Psychologia dla bystrzaków", "S. Smith", "Helion", "2020"),
    ("Python dla bystrzaków", "M. L. Cameron", "Helion", "2021"),
    ("JavaScript - kod doskonały", "E. Brown", "Helion", "2020"),
    ("Algorytmy ilustrowane", "Aditya Y. Bhargava", "Helion", "2019"),
    ("SQL dla Orłów", "B. Desjardins", "Helion", "2018"),
    ("Bazy danych - praktyka", "R. W. Stephens", "Helion", "2019"),
    ("Wprowadzenie do sieci", "J. F. Kurose", "PWN", "2020"),
    ("Matematyka dyskretna", "R. J. Wilson", "PWN", "2018"),
    ("Statystyka dla naukowców", "D. Freedman", "PWN", "2019"),
    ("Sztuka perswazji", "R. Cialdini", "Helion", "2020"),
    ("Myślenie lateralne", "E. de Bono", "MT Biznes", "2018"),
]

tytuly_czasopism = [
    ("Gazeta Wyborcza", "dziennik", "2025-01-15"),
    ("Polityka", "tygodnik", 3, 2025),
    ("Newsweek", "tygodnik", 4, 2025),
    ("Wprost", "tygodnik", 5, 2025),
    ("Do Rzeczy", "tygodnik", 6, 2025),
    ("Niedziela", "tygodnik", 7, 2025),
    ("Focus", "miesięcznik", 1, 2025),
    ("National Geographic", "miesięcznik", 2, 2025),
    ("Wiedza i Życie", "miesięcznik", 3, 2025),
    ("Świat Nauki", "miesięcznik", 4, 2025),
    ("Polski Przegląd Medyczny", "miesięcznik", 5, 2025),
    ("Komputer Świat", "miesięcznik", 1, 2025),
    ("GameStar", "miesięcznik", 2, 2025),
    ("Playboy", "miesięcznik", 3, 2025),
    ("Auto Świat", "tygodnik", 8, 2025),
    ("Motoryzacja", "miesięcznik", 6, 2025),
    ("Podróże", "miesięcznik", 7, 2025),
    ("Kuchnia", "miesięcznik", 1, 2025),
    ("Ogród", "miesięcznik", 2, 2025),
    ("Dom i Wnętrze", "miesięcznik", 3, 2025),
]

multimedia = [
    ("Abbey Road - The Beatles", "CD", 1969),
    ("The Dark Side of the Moon - Pink Floyd", "CD", 1973),
    ("Back in Black - AC/DC", "CD", 1980),
    ("Thriller - Michael Jackson", "CD", 1982),
    ("The Bodyguard - Soundtrack", "CD", 1992),
    ("Amarone - Vasco Rossi", "CD", 2011),
    ("Maturalnie - Lady Pank", "CD", 2020),
    ("Matrix", "DVD", 1999),
    ("Władca Pierścieni: Drużyna Pierścienia", "DVD", 2001),
    ("Władca Pierścieni: Dwie Wieże", "DVD", 2002),
    ("Władca Pierścieni: Powrót Króla", "DVD", 2003),
    ("Incepcja", "DVD", 2010),
    ("Interstellar", "DVD", 2014),
    ("Skazany na bluszcz", "DVD", 1999),
    ("Terminator 2", "DVD", 1991),
    ("Pulp Fiction", "DVD", 1994),
    ("Czarna Kobra - Pink Floyd", "Kaseta", 1983),
    ("We Don't Need No Education - Pink Floyd", "Kaseta", 1979),
    ("The Wall - Pink Floyd", "Kaseta", 1979),
    ("The Dark Side of the Moon - Pink Floyd", "Kaseta", 1973),
]

imiona = ["Jan", "Anna", "Piotr", "Katarzyna", "Michał", "Agnieszka", "Tomasz", "Monika", 
          "Paweł", "Magdalena", "Marcin", "Joanna", "Krzysztof", "Karolina", "Andrzej",
          "Natalia", "Jacek", "Dorota", "Sławomir", "Ewa", "Adam", "Barbara", "Wojciech",
          "Alicja", "Marek", "Grażyna", "Zbigniew", "Hanna", "Ryszard", "Lidia"]
          
nazwiska = ["Kowalski", "Nowak", "Wiśniewski", "Lewandowski", "Woźniak", "Mazur", "Krawczyk",
            "Piotrowski", "Nowicki", "Adamiec", "Kowalczyk", "Jasiński", "Zieliński", "Szymański",
            "Wróbel", "Dąbrowski", "Kozłowski", "Jankowski", "Mazurkiewicz", "Krajewski",
            "Kwiatkowski", "Czarnecki", "Kucharski", "Sobczak", "Wilk", "Suchocki", "Kaczmarek",
            "Leśniewski", "Bąk", "Górski", "Kaźmierczak", "Wasilewski", "Chmielewski", "Andrus",
            "Klimek", "Czech", "Jóźwiak", "Konieczny", "Urbański", "Zawadzki", "Mróz", "Wojcik",
            "Błaszczyk", "Kurowski", "Przybylski", "Kaczyński", "Stępień", "Makowski", "Kania",
            "Czechowski", "Brzeziński", "Dudek", "Jabłoński"]

ulice = ["ul. Kwiatowa", "ul. Słoneczna", "ul. Leśna", "ul. Polna", "ul. Spacerowa",
         "ul. Parkowa", "ul. Ogrodowa", "ul. Wiosenna", "ul. Długa", "ul. Krótka",
         "Plac Wolności", "ul. Kościuszki", "ul. Piłsudskiego", "ul. Dąbrowskiego",
         "ul. Mickiewicza", "ul. Sienkiewicza", "ul. Chopina", "ul. Wyszyńskiego"]

stanowiska = ["Bibliotekarz", "Kierownik", "Magazynier", "Katalogujący", "Doradca czytelnika",
              "Specjalista ds. multimediów", "Administrator", "Ankieter", "Archiwista", 
              "Konserwator zbiorów"]

def generuj_isbn():
    return f"978-83-{random.randint(1, 999):03d}-{random.randint(10000, 99999):05d}"

def generuj_pesel():
    return f"{random.randint(10, 99)}{random.randint(1, 12):02d}{random.randint(1, 28):02d}{random.randint(10000, 99999)}"

def generuj_telefon():
    return f"+48 {random.randint(500, 999)} {random.randint(100, 999)} {random.randint(100, 999)}"

from biblioteka import Biblioteka

b = Biblioteka()

print("Generowanie 50 książek...")
for i, (tytul, autor, wydawnictwo, rok) in enumerate(ksiazki):
    kod = f"BIB-{i+1:03d}"
    b.dodaj_ksiazke(tytul, autor, wydawnictwo, rok, generuj_isbn(), kod)

b.dodaj_ksiazke("W pustyni i w puszczy", "Henryk Sienkiewicz", "Greg", "2020", generuj_isbn(), "BIB-051")

for i in range(52, 101):
    tytul = f"Książka numer {i-51}"
    b.dodaj_ksiazke(tytul, f"Autor {i-51}", "Wydawnictwo ABC", "2020", generuj_isbn(), f"BIB-{i:03d}")

print("Generowanie 20 czasopism...")
for i, dane in enumerate(tytuly_czasopism):
    kod = f"CZAS-{i+1:03d}"
    if dane[1] == "dziennik":
        b.dodaj_dziennik(dane[0], kod, dane[2])
    elif dane[1] == "tygodnik":
        b.dodaj_tygodnik(dane[0], kod, dane[2], dane[3])
    else:
        b.dodaj_miesiecznik(dane[0], kod, dane[2], dane[3])

print("Generowanie 20 multimediów...")
for i, (tytul, typ, rok) in enumerate(multimedia):
    kod = f"MULT-{i+1:03d}"
    if typ == "CD":
        b.dodaj_cd(tytul, "Various", rok, kod)
    elif typ == "DVD":
        b.dodaj_dvd(tytul, "Reżyser", rok, kod)
    else:
        b.dodaj_kasete(tytul, "Various", rok, kod)

print("Generowanie 50 czytelników...")
for i in range(50):
    imie = random.choice(imiona)
    nazwisko = random.choice(nazwiska)
    adres = f"{random.choice(ulice)} {random.randint(1, 100)}"
    telefon = generuj_telefon()
    email = f"{imie.lower()}.{nazwisko.lower()}{i}@gmail.com"
    b.dodaj_czytelnika(imie, nazwisko, adres, telefon, email)

print("Generowanie 15 pracowników...")
for i in range(15):
    imie = random.choice(imiona)
    nazwisko = random.choice(nazwiska)
    stanowisko = random.choice(stanowiska)
    data = f"20{random.randint(15, 23)}-{random.randint(1, 12):02d}-{random.randint(1, 28):02d}"
    pesel = generuj_pesel()
    telefon = generuj_telefon()
    b.dodaj_pracownika(imie, nazwisko, stanowisko, data, pesel, telefon)

print("\nZapisywanie do plików JSON...")

print(b.zapisz_pozycje("pozycje.json"))
print(b.zapisz_czytelnikow("czytelnicy.json"))
print(b.zapisz_pracownikow("pracownicy.json"))

print("\n--- Podsumowanie ---")
print(f"Książki: {len([p for p in b.pozycje if p.get_typ() == 'Książka'])}")
print(f"Czasopisma: {len([p for p in b.pozycje if p.get_typ() in ['Dziennik', 'Tygodnik', 'Miesięcznik']])}")
print(f"Multimedia: {len([p for p in b.pozycje if p.get_typ() in ['CD', 'DVD', 'Kaseta']])}")
print(f"Czytelnicy: {len(b.czytelnicy)}")
print(f"Pracownicy: {len(b.pracownicy)}")
print("\nGotowe! Pliki zostały utworzone.")