"""
Модуль является результатом выполнения практической
домашней работы по теме 
"Логические и условные операторы"

:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""


import os


def cls():
    os.system("cls" if os.name == "nt" else "clear")


def get_ticket(**kwargs) -> str:
    rates = {
        0: "Полная стоимость билета",
        1: "Билет со скидкой",
        2: "Бесплатный билет",
    }
    rate = 0
    if kwargs.get("age") in range(0, 12):
        rate = 2
    elif kwargs.get("age") in range(12, 18) and kwargs.get("escort", False):
        rate = 1

    return rates.get(rate, "Error")


def add_buyer():
    cls()

    print("#" * 25)
    print("#".ljust(23), "#")
    print("#", "\033[32m{}\033[0m  ".format("Купить билет в кино").center(21), "#")
    print("#".ljust(23), "#")
    print("#" * 25)

    name = input("Ваше имя?: ")
    city = input("Ваш город?: ")

    try:
        age = int(input("Сколько вам полных лет?: "))
        if age not in range(0, 150):
            raise ValueError
    except ValueError:
        print("Введен некорректный возраст. ")
        age = -1

    if age <= 12:
        escort = True
    elif age < 18:
        escort = (
            True
            if input("Вы с сопровождающим? (Да/Нет): ") in ("д", "Д", "Да", "да")
            else False
        )
    else:
        escort = False

    cls()
    print("#" * 30)
    for i in range(11):
        if i in (1, 3, 5, 7, 9):
            print("#".ljust(28), "#")
        if i == 0:
            print("#", "Билет".center(26), "#")
        if i == 2:
            print("#", name.ljust(26), "#")
        if i == 4:
            print("#", city.ljust(26), "#")
        if i == 6:
            print("#", ("Возраст: " + str(age)).ljust(26), "#")
        if i == 8:
            print(
                "#",
                ("С сопровождающим" if escort else "Без сопровождения").ljust(26),
                "#",
            )

        if i == 10:
            print(
                "#",
                get_ticket(name=name, city=city, age=age, escort=escort).center(26),
                "#",
            )
    print("#" * 30)


add_buyer()

while True:
    if input("Купить еще билет? (Да/Нет): ") in ("д", "Д", "Да", "да"):
        add_buyer()
    else:
        break
