from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Row, Column, Field, ButtonHolder
from django.utils.translation import gettext_lazy as _

from trade.consts import ConsoleTradeOneQualityName
from utils.buttons import ButtonSubmit, ButtonAElement


class StartSinglePlayerTradeFormHelper(FormHelper):
    form_method = 'POST'
    layout = Layout(
        Row(
            Column(Field('player_card'), css_class='col'),
            Column(Field('fifa_accounts'), css_class='col'),
            Column(Field('max_bid_price'), css_class='col'),
            Column(Field('sell_start_price'), css_class='col'),
            Column(Field('start_sell_now_price'), css_class='col'),
            Column(Field('end_sell_now_price'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Submit'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),

    )


class ConsoleTradeOneSetQualityFormHelper(FormHelper):
    form_method = 'POST'
    layout = Layout(
        Row(
            Column(Field('start_number'), css_class='col'),
            Column(Field('end_number'), css_class='col'),
            Column(Field('quality_name'), css_class='col'),
            Column(Field('stock_greater'), css_class='col'),
            Column(Field('stock_less'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Submit'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),

    )


class ConsoleTradeOneChangeQualityFormHelper(FormHelper):
    form_method = 'POST'
    layout = Layout(
        Row(
            Column(Field('pre_quality'), css_class='col'),
            Column(Field('new_quality'), css_class='col'),
            Column(Field('stock_greater'), css_class='col'),
            Column(Field('stock_less'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Submit'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),

    )


class ConsoleTradeQualityReportFilterSetHelper(FormHelper):
    form_method = 'GET'

    layout = Layout(
        Row(
            Column(Field('start_date'), css_class='col'),
            Column(Field('end_date'), css_class='col'),
            # spacer_column,
            # spacer_column,
            # filter_buttons_column,
            ButtonHolder(
                ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
                ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
                css_class='col-sm-12 my-1',
            ),

            css_class='expanded small-up-2 medium-up-5 large-up-5 align-justify',
        ),
    )


class WebTradeAddAccountFormHelper(FormHelper):
    form_method = 'POST'
    layout = Layout(
        Row(
            Column(Field('accounts_file'), css_class='col'),
            Column(Field('quality'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Submit'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),

    )


class DailyInvestTradeGenerateReportFilterSetHelper(FormHelper):
    form_method = 'GET'

    layout = Layout(
        Row(
            Column('investor', css_class='col'),
            Column('exclude_investor', css_class='col'),
            Column('previous_console', css_class='col'),
            Column('console', css_class='col'),
            Column('fifa_account', css_class='col'),
            Column(Field('start_date'), css_class='col'),
            Column(Field('end_date'), css_class='col'),
            Column('quality', css_class='col'),
            # spacer_column,
            # spacer_column,
            # filter_buttons_column,
            ButtonHolder(
                ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
                ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
                css_class='col-sm-12 my-1',
            ),

            css_class='expanded row-cols-2 row-cols-lg-6 align-justify',
        ),
    )


class ConsoleInvestTradeFilterSetHelper(FormHelper):
    form_method = 'GET'

    layout = Layout(
        Row(
            Column('console', css_class='col-2'),
            Column('fifa_account', css_class='col-2'),
            Column('quality_name', css_class='col-2'),
            Column('completed', css_class='col-2'),
            # spacer_column,
            # spacer_column,
            # filter_buttons_column,
            ButtonHolder(
                ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
                ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
                css_class='col-sm-12 my-1',
            ),

            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
    )


class ConsoleInvestChangeQualityFilterSetHelper(FormHelper):
    form_method = 'GET'

    def __init__(self):
        super().__init__()
        list_fields = []
        for quality_item in ConsoleTradeOneQualityName:
            list_fields.append(Row(
                    Column(f'stock_{quality_item[0]}_less', css_class='col-2'),
                    Column(f'stock_{quality_item[0]}_greater', css_class='col-2'),
                ))
        self.layout = Layout(
            Row(
                Column('current_quality', css_class='col-2'),
                Row(
                    Column('console_start_number', css_class='col-2'),
                    Column('console_end_number', css_class='col-2'),
                ),
                *list_fields,
                # Row(
                #     Column('stock_bronze1_less', css_class='col-2'),
                #     Column('stock_bronze1_greater', css_class='col-2'),
                # ),
                # Row(
                #     Column('stock_silver0_less', css_class='col-2'),
                #     Column('stock_silver0_greater', css_class='col-2'),
                # ),
                # Row(
                #     Column('stock_silver1_less', css_class='col-2'),
                #     Column('stock_silver1_greater', css_class='col-2'),
                # ),
                # Row(
                #     Column('stock_gold0_less', css_class='col-2'),
                #     Column('stock_gold0_greater', css_class='col-2'),
                # ),
                # Row(
                #     Column('stock_gold1_less', css_class='col-2'),
                #     Column('stock_gold1_greater', css_class='col-2'),
                # ),
                # Row(
                #     Column('stock_position_modifier_less', css_class='col-2'),
                #     Column('stock_position_modifier_greater', css_class='col-2'),
                # ),
                # spacer_column,
                # spacer_column,
                # filter_buttons_column,
                ButtonHolder(
                    ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
                    ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
                    css_class='col-sm-12 my-1',
                ),

                css_class='row my-1',
            ),
        )


class ConsoleInvestChangeQualityFormHelper(FormHelper):
    form_method = 'POST'
    layout = Layout(
        Row(
            Column(Field('new_quality'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Submit'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),

    )
