# Esercizione
# Creare un sistema per gestire le prenotazioni aeree per una compagnia aerea.
#
# 1. Il programma inizia chiedendo all'utente se vuole effettuare una nuova prenotazione o
#    modificare/cancellare una prenotazione esistente.
#    Risposte ammesse: "nuova", "modifica", "cancella". Risposte diverse causano la terminazione del
#    programma con un messaggio di errore.
#
# 2. Se l'utente sceglie "nuova":
#    - Chiedere la destinazione (es: "Roma", "Milano", "New York").
#    - Chiedere la classe di viaggio ("economica", "business", "prima classe").
#    - Chiedere se desidera aggiungere extra come "bagaglio extra" o "pasto speciale". Rispondere
#      con "sì" o "no".
#    - Calcolare il prezzo base del biglietto: 200€ per economica, 500€ per business, 1000€ per
#      prima classe.
#    - Aggiungere costi aggiuntivi se necessario: 50€ per bagaglio extra, 30€ per pasto speciale.
#    - Stampare il costo totale del biglietto.
#
# 3. Se l'utente sceglie "modifica":
#    - Chiedere il numero di prenotazione.
#    - Verificare che il numero di prenotazione esista (le prenotazioni esistenti sono indicate nel
#      database sottostante). Se non esiste, stampare un messaggio di errore e terminare.
#    - Chiedere quale aspetto della prenotazione desidera modificare ("destinazione", "classe",
#      "extra").
#    - Permettere all'utente di inserire il nuovo valore per l'opzione scelta e stampare un 
#      messaggio di conferma della modifica. Le opzioni modificabili sono le stesse della creazione.
#
# 4. Se l'utente sceglie "cancella":
#    - Chiedere il numero di prenotazione.
#    - Verificare che il numero di prenotazione esista (vedi database sottostante).
#    - Se esiste, confermare la cancellazione e terminare il programma. Se non esiste, stampare un
#      messaggio di errore.
#    - Nota: ovviamente in questo esercizio non è possibile cancellare le prenotazioni, dal momento
#      che i dati sono fissi nel database. Quindi è sufficiente verificare che la prenotazione
#      esista e stampare un messaggio di conferma di cancellazione.
#
# Note e consigli:
# - Risolvere l'esercizio in modo generale, senza utilizzare i dati specifici delle prenotazioni, che
#   sono forniti solo a titolo di esempio.
# - Assicurarsi che tutti gli input siano validati adeguatamente.
# - Utilizzare if-elif-else annidati per gestire le varie opzioni e sotto-opzioni.
# - Commentare il codice per chiarire la logica e le decisioni di progettazione.
# - Mantenere una struttura chiara e leggibile, nonostante la complessità delle operazioni richieste.

# DATABASE:
# - Prenotazione 1:
numero_prenotazione_1 = 1001
destinazione_1 = "New York"
classe_1 = "economica"
extra_bagaglio_1 = "sì"
extra_pasto_1 = "no"

# - Prenotazione 2:
numero_prenotazione_2 = 1002
destinazione_2 = "Tokyo"
classe_2 = "prima classe"
extra_bagaglio_2 = "no"
extra_pasto_2 = "sì"

# Soluzione:
operazione = input("Vuoi effettuare una nuova prenotazione, modificarne una esistente o cancellarne una? (nuova/modifica/cancella): ")

if operazione == "nuova":
    destinazione = input("Inserisci la destinazione del volo: ")
    classe = input("Inserisci la classe di viaggio (economica/business/prima classe): ")
    extra_bagaglio = input("Desideri aggiungere un bagaglio extra? (sì/no): ")
    extra_pasto = input("Desideri aggiungere un pasto speciale? (sì/no): ")

    prezzo_eco = 200
    prezzo_bus = 500
    prezzo_prima = 1000
    costo_extra_bagaglio = 50
    costo_extra_pasto = 30

    if classe != "economica" and classe != "business" and classe != "prima classe":
        print("Classe di viaggio non valida.")
    else:
        costo = 0
        if classe == "economica":
            costo = prezzo_eco
        elif classe == "business":
            costo = prezzo_bus
        else:
            costo = prezzo_prima

        if extra_bagaglio == "sì":
            costo += costo_extra_bagaglio
        elif extra_bagaglio == "no":
            print("Bagaglio extra non aggiunto.")
        else:    
            print("Risposta non valida. Il bagaglio extra non è stato aggiunto.")

        if extra_pasto == "sì":
            costo += costo_extra_pasto
        elif extra_pasto == "no":
            print("Pasto speciale non aggiunto.")
        else:
            print("Risposta non valida. Il pasto speciale non è stato aggiunto.")

        print(f"Il costo totale del biglietto per {destinazione} in classe {classe} è di {costo}€.")

elif operazione == "modifica":
    numero_prenotazione = int(input("Inserisci il numero di prenotazione: "))

    if numero_prenotazione == numero_prenotazione_1:
        aspetto = input("Cosa desideri modificare? (destinazione/classe/extra): ")

        if aspetto == "destinazione":
            destinazione_1 = input("Inserisci la nuova destinazione: ")
            print(f"La destinazione è stata modificata in: {destinazione_1}")
        elif aspetto == "classe":
            classe = input("Inserisci la nuova classe di viaggio (economica/business/prima classe): ")

            if classe != "economica" and classe != "business" and classe != "prima classe":
                print("Classe di viaggio non valida.")
            else:
                classe_1 = classe
                print(f"La classe di viaggio è stata modificata in: {classe_1}")
        elif aspetto == "extra":
            nuovo_extra_bagaglio = input("Desideri aggiungere un bagaglio extra? (sì/no): ")

            if nuovo_extra_bagaglio == "sì":
                extra_bagaglio_1 = "sì"
            elif nuovo_extra_bagaglio == "no":
                extra_bagaglio_1 = "no"
            else:
                print("Aspetto non valido. L'extra bagaglio non è stato modificato.")

            nuovo_extra_pasto = input("Desideri aggiungere un pasto speciale? (sì/no): ")

            if nuovo_extra_pasto == "sì":
                extra_pasto_1 = "sì"
            elif nuovo_extra_pasto == "no":
                extra_pasto_1 = "no"
            else:
                print("Aspetto non valido. L'extra pasto non è stato modificato.")

            print(f"Gli extra sono stati modificati. Ora sono:\nBagaglio extra: {extra_bagaglio_1}\nPasto speciale: {extra_pasto_1}")
        else:
            print("Aspetto non valido. Nessuna modifica effettuata.")
    elif numero_prenotazione == numero_prenotazione_2:
        aspetto = input("Cosa desideri modificare? (destinazione/classe/extra): ")

        if aspetto == "destinazione":
            destinazione_2 = input("Inserisci la nuova destinazione: ")
            print(f"La destinazione è stata modificata in: {destinazione_2}")
        elif aspetto == "classe":
            classe = input("Inserisci la nuova classe di viaggio (economica/business/prima classe): ")

            if classe != "economica" and classe != "business" and classe != "prima classe":
                print("Classe di viaggio non valida.")
            else:
                classe_2 = classe
                print(f"La classe di viaggio è stata modificata in: {classe_2}")
        elif aspetto == "extra":
            nuovo_extra_bagaglio = input("Desideri aggiungere un bagaglio extra? (sì/no): ")

            if nuovo_extra_bagaglio == "sì":
                extra_bagaglio_2 = "sì"
            elif nuovo_extra_bagaglio == "no":
                extra_bagaglio_2 = "no"
            else:
                print("Aspetto non valido. L'extra bagaglio non è stato modificato.")

            nuovo_extra_pasto = input("Desideri aggiungere un pasto speciale? (sì/no): ")

            if nuovo_extra_pasto == "sì":
                extra_pasto_2 = "sì"
            elif nuovo_extra_pasto == "no":
                extra_pasto_2 = "no"
            else:
                print("Aspetto non valido. L'extra pasto non è stato modificato.")

            print(f"Gli extra sono stati modificati. Ora sono:\nBagaglio extra: {extra_bagaglio_2}\nPasto speciale: {extra_pasto_2}")
        else:
            print("Aspetto non valido. Nessuna modifica effettuata.")
    else:
        print("Numero di prenotazione non valido.")

elif operazione == "cancella":
    numero_prenotazione = int(input("Inserisci il numero di prenotazione: "))

    if numero_prenotazione == numero_prenotazione_1:
        print("La prenotazione è stata cancellata.")
    elif numero_prenotazione == numero_prenotazione_2:
        print("La prenotazione è stata cancellata.")
    else:
        print("Numero di prenotazione non valido.")
else:
    print("Operazione non valida.")
