from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Row, Column, Fieldset, Field, ButtonHolder
from django.utils.translation import gettext_lazy as _

from utils.buttons import ButtonSubmit, ButtonAElement


class UserRoleFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(
                Fieldset(
                    _('Update user roles, normally one role is sufficient for each user. '
                      'But you can select multiple roles'),
                    Field('roles', wrapper_class='auto-multi-column'),
                ),
            ),
        ),
        Row(
            # ButtonReset('', '', content=_('Reset roles'), css_class='btn-secondary mdi mdi-account-convert dim'),
            ButtonSubmit('submit', _('Update roles'), css_class='btn-primary mdi mdi-account-key'),
            css_class='button-group columns',
        )
    )


class UserListFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('is_active'), css_class='col'),
            Column(Field('role'), css_class='col'),
            Column(Field('role_not'), css_class='col'),
            css_class='row row-cols-sm-1 row-cols-md-3 my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),

    )


class FifaAccountsFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('user_name'), css_class='col'),
            Column(Field('account_played_games'), css_class='col'),
            Column(Field('pre_console'), css_class='col'),
            Column(Field('console'), css_class='col'),
            Column(Field('exc_deleted'), css_class='col'),
            # Column(Field('delete_club_renewal'), css_class='col'),
            # Column(Field('delete_club_number'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),

    )


class PlayerCardListFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('asset_id'), css_class='col'),
            Column(Field('rating'), css_class='col'),
            Column(Field('rare'), css_class='col'),
            Column(Field('team'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),

    )


class FifaAccountLogsFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('des_contains'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),

    )


class FifaAccountUpdateFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('run_force_discharge'), css_class='col-lg-2 col'),
            Column(Field('console'), css_class='col'),
            Column(Field('password'), css_class='col'),
            Column(Field('xbox_pass'), css_class='col'),
            Column(Field('proxy'), css_class='col'),
            Column(Field('credit'), css_class='col'),
            Column(Field('platform'), css_class='col'),
            Column(Field('name_in_console'), css_class='col'),
            Column(Field('use_request_login'), css_class='col'),
            Column(Field('use_special_squad'), css_class='col'),
            Column(Field('special_squad_ready_to_play'), css_class='col'),
            Column(Field('allowed_play_game'), css_class='col'),
            Column(Field('allowed_play_game_day'), css_class='col'),
            Column(Field('squad_special_game_one'), css_class='col'),
            Column(Field('squad_special_game_two'), css_class='col'),
            Column(Field('need_captcha'), css_class='col'),
            Column(Field('stop_for_update_game'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Update'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class MuleAccountFileCreateFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('mule_file'), css_class='col'),
            Column(Field('investors'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Update'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class ConsoleListFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('range_number'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),
    )


class ConsoleFileListFilterHelper(FormHelper):
    form_method = 'POST'

    layout = Layout(
        Row(
            Column(Field('range_number_min'), css_class='col'),
            Column(Field('range_number_max'), css_class='col'),
            Column(Field('upload_file'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),
    )


class DailyCreditGeneratedReportFilterSetHelper(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', data_clear_button=True), css_class='col'),
            Column(Field('end_date', data_clear_button=True), css_class='col'),
            Column('quality_name', css_class='col'),
            Column('period_time', 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 MuleAccountsListFilterHelper(FormHelper):
    form_method = 'GET'
    layout = Layout(
        Row(
            Column(Field('exclude_investor'), css_class='col-2'),
            Column(Field('is_deleted'), css_class='col-2'),
            Column(Field('fifa_account_platform'), css_class='col-2'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Search'), css_class='btn btn-green'),
            ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),
    )


class FifaProxyCreateFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('proxy_file'), css_class='col-2'),
            Column(Field('type_name'), css_class='col-2'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Update'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class FifaAccountSpecialProxyFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('accounts_file'), css_class='col-2'),
            Column(Field('type_name'), css_class='col-2'),
            Column(Field('remove_old_proxy'), css_class='col-2'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Update'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class FifaAccountWorkErrorListFilterSetHelper(FormHelper):
    form_method = 'GET'

    layout = Layout(
        Row(
            Column('console', css_class='col'),
            Column('fifa_account', css_class='col'),
            Column('solve_status_f', 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='row-cols-2 row-cols-lg-4 my-1',
        ),
    )


class FifaAccountDetailWorkerErrorListFilterSetHelper(FormHelper):
    form_method = 'GET'

    layout = Layout(
        Row(
            Column('solve_status_f', 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='row-cols-2 row-cols-lg-4 my-1',
        ),
    )


class ConsoleUpdateFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('allowed_play_game_day'), css_class='col'),
            Column(Field('need_games_update'), css_class='col'),
            Column(Field('allowed_account_work_day'), css_class='col'),
            Column(Field('turn_off_after_work'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Update'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class SimpleFileUploadFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('upload_file'), css_class='col-2'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Upload'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class AddAccountsViewFormHelper(FormHelper):
    layout = Layout(
        Row(
            Column(Field('upload_file'), css_class='col-2'),
            Column(Field('delete_console_reason'), css_class='col-2'),
            Column(Field('console_user_mode'), css_class='col-2'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Upload'), css_class='btn btn-green'),
            css_class='col-sm-12 my-1',
        ),
    )


class ConsoleAccountManagementFormHelper(FormHelper):
    form_method = 'POST'

    layout = Layout(
        Row(
            Column(Field('upload_file'), css_class='col'),
            Column(Field('action'), css_class='col'),
            css_class='row row-cols-2 row-cols-lg-auto my-1',
        ),
        ButtonHolder(
            ButtonSubmit('submit', _('Upload'), css_class='btn btn-green'),
            # ButtonAElement(_('Clear'), href='?', css_class='btn btn-primary'),
            css_class='col-sm-12 my-1',
        ),
    )
