from datetime import datetime
from decimal import Decimal

from django.core.management.base import BaseCommand

from events.models import Event, HTMLSection, Category

def create_first_event():
    categories = [
        {
            'name': 'RODINA',
            'description': 'Rodinny okruh je pro mix těch, co si chtějí užít pohodový výlet na vybrané trase a těch co zarputile povzbuzují a čekají. Žádná soutěž, nebo registrace, jen radost z pohybu. Na místě si můžete koupit pivko (Fotři), nebo limču (Děti) a i nějaký ten guláš se najde. ',
            'url': 'https://en.frame.mapy.cz/s/modogacace'
        },
        {
            'name': 'JUNIOR',
            'description': 'S rodinou se mu už táhnout nechce, svoji vlastní zatím nemá. A to je vlastne dobře, protože 12 let mu už bylo a do 18 to ještě taky potrvá. Junioři si fláknou okruh //JUNIOR Trasa může být zrádná a proto zvažte doprovod dospělého savce na kole. ',
            'url': 'https://en.frame.mapy.cz/s/modogacace'
        },
        {
            'name': 'BUŠIČ',
            'description': 'Kdo nebuší nejede. Ať z kopce, nebo do kopce, vždy naplno. Odhodlání, ani chuť mu nechybí. Alespoň jeden okruh s věkem nad 18 by měl mít v kapse. // BUŠIČ si vybere, jestli se chce zničit na // FREERIDE okruhu, nebo na // CROSS-COUNTRY. Na vybraném okruhu pak s ostatníma // BUŠIČama soutěží o nejlepší čas. ',
            'url': 'https://en.frame.mapy.cz/s/modogacace'
        },
        {
            'name': 'KALSKÉ BOREC',
            'description': 'Je smetánkou Kalské cyklistiky. Lamač srdcí všech pohlaví s vyrýsovanou postavou, ktéremu žádný kopec není příliš strmý a sjezd dost náročný. Ti, co se pyšní tímhle titulem se poperou se všema okruhama v časovém limitu 6 hodin v následujícím pořadí: // FREERIDE -> // CROSS-COUNTRY -> // JUNIOR. I proto startují v 9:00 a hlásí se na okruh "Kalské Borec". ',
            'url': 'https://en.frame.mapy.cz/s/modogacace'
        }
    ]

    event_html_section = {
        'identifier': 'race',
        'menu': '// ZÁVOD',
        'html': """
        <div class="w3-content w3-container w3-padding-64">
    <h3 class="w3-center">// ZÁVOD</h3>
    <h5>COŽE?</h5>
    <p>Cyklistický závod s názvem "Kalské Borec" pro širokou veřejnost s několika okruhama. Je jedno, jestli jste
        rodinka s malýma dětma, nebo drsný jezdec enduro, který za poslední měsíc nevymyl chuť bahna s úst. Místo na
        poměření sil, nebo jen na pohodovou jízdu si najde každý. Můžete a nemusíte to brát vážně, důležité je si to
        užít.</p>
    <p>Čeká na Vás:</p>
    <ul>
        <li>3 okruhy po cca 10 kilometrech</li>
        <li>Jeden extra dětský / rodinný okruh</li>
        <li>Různé kategorie závodu</li>
        <li>"Kalské Borec"</li>
        <li>Něco pod zub a k pití</li>
        <li>Ceny</li>
    </ul>
    <h5>KDY?</h5>
    <ul>
        <li>Registrace od 1.3. do 27.3.</li>
        <li>
            <ul>
                <li>Bez registrace to nepude a 400,- budem taky potřebovat. Abychom vědeli kolik čeho nachystat</li>
                <li>Změna oproti //24 je v tom, že se Rodinné tímy neregistrují a jen si užijí pohodový výlet.</li>
            </ul>
        </li>
        <li>29.3.2025 je den D</li>
        <li>
            <ul>
                <li>Borci start v 9:00</li>
                <li>Bušiči v 10:00</li>
                <li>Junioři případně po návratu dospělého 12-13:00</li>
            </ul>
        </li>
    </ul>
    <h5>KDE?</h5>
    <p>Tady je mapa, kde se to bude dít:</p>
    <iframe style="border:none" src="https://en.frame.mapy.cz/s/gopevolose" width="100%" height="280"
            frameborder="0"></iframe>

    <h5>JAK?</h5>
    <p>Registrace bude probíhat od 1.3.2025 do 27.3.2025. na této stránce, kde si vyberete okruh, který chcete
        absolvovat. Pokud se chcete zúčastnit všech okruhů, tak si vyberete "Kalské Borec".</p>
    <p>Přispěvek k registraci 400,- Kč</p>
    <p>Příspěvek je použit na občerstvení, ceny a zajištění závodu.</p>

    <h5>CENY?</h5>
    <p>Servis od Ventila, Gripy, lahve, blikačky... </p>
</div>
        """
    }
    try:
        # create the first event if it does not exist
        event = Event.objects.filter(uid='aaaa2f5a-d4ea-470f-81b3-fa5a858695ae')
        if event.exists():
            return


        event = Event(
            uid='aaaa2f5a-d4ea-470f-81b3-fa5a858695ae',
            start=datetime(2025, 3, 29, 8, 0, 0),
            end=datetime(2025, 3, 29, 18, 0, 0),
            name='Kalské Borec //25',
            description='Legendární MTB závod kolem obce Kaly, vrchem i spodem Bránou Vysočiny',
            sub_description='Okruhy pro 2025 se teprve chystají, registrace od 1.3.2025. Jestli by neko chtěl jako dobrovolník pomoct s trasou, nebo ogranizací, volejte Ventilovi.',
            is_public=True,
            is_actual=True,
            registrations_enabled=True,
            registrations_require_confirmation=False,
            bank_account_number='CZ9430300000001262023012',
            bank_account_name='MILAN TOMAN',
            fee=Decimal('400.00'),
            variable_symbol_prefix='KB25',
            color='purple',
        )
        event.save()

        # create categories
        for category in categories:
            new_category, created = Category.objects.get_or_create(name=category['name'])

            # skip if the category already exists
            if not created:
                continue

            new_category.description = category['description']
            new_category.mapy_cz_url = category['url']
            new_category.event = event
            new_category.save()

        # create html section
        new_section, created = HTMLSection.objects.get_or_create(identifier=event_html_section['identifier'])
        if not created:
            return

        new_section.menu = event_html_section['menu']
        new_section.html = event_html_section['html']
        new_section.event = event
        new_section.save()
            

    except Exception as e:
        raise e



class Command(BaseCommand):
    help = 'Fill empty db tables with default data'

    def handle(self, *args, **options):
        try:
            create_first_event()

        except Exception as e:
            raise e
