{% extends 'layouts/app.twig' %}
{% import 'macros/base.twig' as m %}
{% import 'macros/form.twig' as f %}

{% block title %}{{ __('registration.title') }}{% endblock %}

{% block content %}
<div class="container">
    <div class="mb-5">
        <h1>
        {{ has_permission_to('admin_user')
            ? m.button(m.icon('chevron-left'), url('/users'), null, 'sm', __('general.back'))
            : ''
        }}
        {{ __('registration.title') }}
        </h1>
    </div>

    {% include 'layouts/parts/messages.twig' %}

    <form method="post" action="{{ url('/register') }}" novalidate class="mb-5">
        {{ csrf() }}

        <div class="mb-5">
            <h2>{{ __('registration.login_data') }}</h2>
            <div class="row">
                {% if isPronounEnabled %}
                    <div class="col-md-6">
                        {{ f.input(
                            'pronoun',
                            __('settings.profile.pronoun'),
                            {
                                'max_length': 15,
                                'required': isPronounRequired,
                                'required_icon': isPronounRequired,
                                'value': f.formData('pronoun', ''),
                            }
                        ) }}
                    </div>
                {% endif %}

                <div class="col-md-6">
                    {{ f.input(
                        'username',
                        __('general.nick'),
                        {
                            'autocomplete': 'nickname',
                            'max_length': 24,
                            'required': true,
                            'required_icon': true,
                            'value': f.formData('username', ''),
                        }
                    ) }}
                </div>

                {% if not isPronounEnabled %}
                    {# Insert an empty row to keep password / email in line #}
                    <div class="col-md-6"></div>
                {% endif %}

                {% if isPasswordEnabled %}
                    <div class="col-md-6">
                        {{ f.input(
                            'password',
                            __('settings.password'),
                            {
                                'type': 'password',
                                'autocomplete': 'new-password',
                                'required': true,
                                'required_icon': true,
                                'min_length': minPasswordLength,
                                'info': __('password.minimal_length', [minPasswordLength]),
                            }
                        ) }}
                    </div>
                    <div class="col-md-6">
                        {{ f.input(
                            "password_confirmation",
                            __('settings.password.new_password2'),
                            {
                                'type': 'password',
                                'autocomplete': 'new-password',
                                'required': true,
                                'required_icon': true,
                                'min_length': minPasswordLength,
                            }
                        ) }}
                    </div>
                {% endif %}

                <div class="col-md-6">
                    {{ f.input(
                        'email',
                        __('general.email'),
                        {
                            'type': 'email',
                            'max_length': 254,
                            'required': true,
                            'required_icon': true,
                            'value': f.formData('email', ''),
                        }
                    ) }}
                </div>
                <div class="col-md-6">
                    <label class="form-label">{{ __('settings.profile.email-preferences') }}</label>
                    <ul class="list-group">
                        <li class="list-group-item">
                            {# Empty class to prevent the default bottom margin #}
                            {{ f.checkbox(
                                'email_shiftinfo',
                                __(
                                    'settings.profile.email_shiftinfo',
                                    [config('app_name')]
                                ),
                                {
                                    'class': '',
                                    'checked': f.formData('email_shiftinfo', false),
                                },
                            ) }}
                        </li>
                        <li class="list-group-item">
                            {# Empty class to prevent the default bottom margin #}
                            {{ f.checkbox(
                                'email_news',
                                __('settings.profile.email_news'),
                                {
                                    'class': '',
                                    'checked': f.formData('email_news', false),
                                },
                            ) }}
                        </li>
                        <li class="list-group-item">
                            {# Empty class to prevent the default bottom margin #}
                            {{ f.checkbox(
                                'email_messages',
                                __('settings.profile.email_messages'),
                                {
                                    'class': '',
                                    'checked': f.formData('email_messages', false),
                                },
                            ) }}
                        </li>
                        <li class="list-group-item">
                            {# Empty class to prevent the default bottom margin #}
                            {{ f.checkbox(
                                'email_by_human_allowed',
                                __('settings.profile.email_by_human_allowed'),
                                {
                                    'class': '',
                                    'checked': f.formData('email_by_human_allowed', false),
                                },
                            ) }}
                        </li>
                    </ul>
                </div>
            </div>
        </div>

        {% if isFullNameEnabled %}
            <div class="mb-5">
                <h2>{{ __('general.name') }}</h2>
                <div class="row">
                    <div class="col-md-6">
                        {{ f.input(
                            'firstname',
                            __('settings.profile.firstname'),
                            {
                                'autocomplete': 'given-name',
                                'max_length': 64,
                                'required': isFirstnameRequired,
                                'required_icon': isFirstnameRequired,
                                'value': f.formData('firstname', ''),
                            }
                        ) }}
                    </div>
                    <div class="col-md-6">
                        {{ f.input(
                            'lastname',
                            __('settings.profile.lastname'),
                            {
                                'autocomplete': 'family-name',
                                'max_length': 64,
                                'required': isLastnameRequired,
                                'required_icon': isLastnameRequired,
                                'value': f.formData('lastname', ''),
                            }
                        ) }}
                    </div>
                </div>
            </div>
        {% endif %}

        <div class="mb-5">
            <h2>{{ __('registration.event_data') }}</h2>
            <div class="row">
                {% if isGoodieEnabled %}
                    <div class="col-md-6">
                        {% set privacy_email = config('privacy_email') %}
                        {% set email_goody_label = __('settings.profile.email_goody') ~
                            (privacy_email ? ' ' ~ __('settings.profile.privacy', [privacy_email]) : '')
                        %}
                        {{ f.checkbox(
                            'email_goody',
                            email_goody_label,
                            {
                                'raw_label': true,
                                'checked': f.formData('email_goody', false),
                            },
                        ) }}
                    </div>
                    <div class="col-md-6"></div>
                {% endif %}

                {% if isPlannedArrivalDateEnabled %}
                    <div class="col-md-6">
                        {{ f.input(
                            'planned_arrival_date',
                            __('settings.profile.planned_arrival_date'),
                            {
                                'type': 'date',
                                'min': buildUpStartDate,
                                'max': tearDownEndDate,
                                'required': true,
                                'required_icon': true,
                                'value': f.formData('planned_arrival_date', buildUpStartDate),
                            }
                        ) }}
                    </div>
                {% endif %}

                {% if isGoodieTShirt %}
                    <div class="col-md-6">
                        {{ f.select(
                            'tshirt_size',
                            __('settings.profile.shirt_size'),
                            tShirtSizes,
                            {
                                'default_option': __('form.select_placeholder'),
                                'required': isTShirtSizeRequired,
                                'required_icon': isTShirtSizeRequired,
                                'selected': f.formData('tshirt_size', ''),
                                'info': __('settings.profile.shirt_size.hint'),
                                'raw_form_text': true,
                                'form_text': (tShirtLink ? m.icon('info-circle')
                                    ~ ' <a href="'
                                    ~ tShirtLink|escape('html_attr')
                                    ~ '" target="_blank" rel="noopener">'
                                    ~ __('settings.profile.shirt.link')|e
                                    ~ '</a>' : ''),
                            }
                        ) }}
                    </div>
                {% endif %}

                <div class="col-md-6">
                    {{ f.input(
                        'mobile',
                        __('settings.profile.mobile'),
                        {
                            'type': 'tel-national',
                            'max_length': 40,
                            'required': isMobileRequired,
                            'required_icon': isMobileRequired,
                            'value': f.formData('mobile', ''),
                        }
                    ) }}
                    {% if isShowMobileEnabled %}
                        {{ f.checkbox(
                            'mobile_show',
                            __('settings.profile.mobile_show'),
                            {
                                'raw_label': true,
                                'checked': f.formData('mobile_show', false),
                            },
                        ) }}
                    {% endif %}
                </div>

                {% if isDECTEnabled %}
                    <div class="col-md-6">
                        {{ f.input(
                            "dect",
                            __('general.dect'),
                            {
                                'type': 'tel-local',
                                'max_length': 40,
                                'required': isDectRequired,
                                'required_icon': isDectRequired,
                                'value': f.formData('dect', ''),
                            }
                        ) }}
                    </div>
                {% endif %}
            </div>
        </div>

        <div class="mb-5">
            <h2>{{ __('registration.what_todo') }}</h2>
            <div class="row mb-3">
                {% for angelType in angelTypes %}
                    <div class="col-sm-6 col-md-4 col-lg-3 col-xl-2">
                        {{ f.checkbox(
                            'angel_types_' ~ angelType.id,
                            angelType.name|e ~ (angelType.restricted ? ' ' ~ m.icon('mortarboard-fill', 'text-body') : ''),
                            {
                                'value': angelType.id,
                                'raw_label': true,
                                'checked': preselectedAngelTypes['angel_types_' ~ angelType.id] ?? false,
                            }
                        ) }}
                    </div>
                {% endfor %}
            </div>
            <div class="row">
                <div class="col-md-6">
                    <div class="mb-2">
                        {{ m.icon('mortarboard-fill', 'text-body') }}
                        {{ __('angeltypes.restricted.hint') }}
                    </div>
                    <div>
                        {{ m.icon('info-circle', 'text-body') }}
                        {{ __('angeltypes.can-change-later') }}
                    </div>
                </div>
            </div>
        </div>

        {#
            By assigning a name here, some magicâ„¢ will create a session var
            "form-data-register-submit" with the value 1 on submit.
        #}
        {{ f.submit(__('registration.register'), {
            'name': 'register-submit',
        }) }}
    </form>
</div>
{% endblock %}