<!--
 SPDX-FileCopyrightText: 2023 jordi fita mas <jordi@tandem.blog>
 SPDX-FileCopyrightText: 2023 Oriol Carbonell <info@oriolcarbonell.cat>
 SPDX-License-Identifier: AGPL-3.0-only
-->
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.adminBookingForm*/ -}}
<input type="hidden" name="{{ .PaymentSlug.Name }}" value="{{ .PaymentSlug.Val }}">
{{ if .Error -}}
    <p class="error">{{ .Error }}</p>
{{- end }}
{{ with .CampsiteType -}}
    <label>
        {{( pgettext "Accommodation" "title" )}}<br>
        <select name="{{ .Name }}"
                required
                data-hx-get="{{ $.URL }}" data-hx-trigger="change"
                {{ template "error-attrs" . }}
        >
            <option value="">{{( gettext "Choose an accommodation" )}}</option>
            {{ template "list-options" . }}
        </select><br>
        {{ template "error-message" . }}
    </label>
{{- end }}
{{ with .Dates -}}
    <fieldset class="booking-period"
              data-hx-get="{{ $.URL }}"
              data-hx-trigger="change delay:500ms"
    >
        {{ with .ArrivalDate -}}
            <label>
                {{( pgettext "Arrival date" "input" )}}<br>
                <input type="date" required
                       min="{{ formatDateAttr .MinDate }}"
                       max="{{ formatDateAttr .MaxDate }}"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .DepartureDate -}}
            <label>
                {{( pgettext "Departure date" "input" )}}<br>
                <input type="date" required
                       min="{{ formatDateAttr .MinDate }}"
                       max="{{ formatDateAttr .MaxDate }}"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
    </fieldset>
{{- end }}
{{ with .Options -}}
    {{ with .ZonePreferences -}}
        <label>{{( pgettext "Area preferences (optional)" "input" )}}<br>
            <input type="text"
                   name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
            ><br>
            <a href="/{{ currentLocale }}/campground?zones" target="_blank">{{( gettext "Campground map" )}}</a><br>
            {{ template "error-message" . }}
        </label>
    {{- end }}
{{- end }}
{{ with $guests := .Guests -}}
    {{ $draft := $.Cart.Draft }}
    <fieldset class="booking-items"
              data-hx-get="{{ $.URL }}" data-hx-trigger="change"
    >
        <table>
            <thead>
            <tr>
                <th scope="col">{{( pgettext "Units" "header" )}}</th>
                <th scope="col">{{( pgettext "Decription" "header" )}}</th>
                <th scope="col" class="numeric">{{( pgettext "Total" "header" )}}</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>{{ $draft.NumNights }}</td>
                <td>{{( pgettext "Night" "cart" )}}</td>
                <td class="numeric">{{ formatPrice $draft.Nights }}</td>
            </tr>
            {{ with .NumberAdults -}}
                <tr>
                    <td><input id="adults" type="number" required
                               name="{{ .Name }}" value="{{ .Val }}"
                               min="1"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests }}"{{ end }}
                                {{ template "error-attrs" . }}
                        >
                    </td>
                    <td>
                        <label for="adults">{{( pgettext "Adults aged 17 or older" "input" )}}</label><br>
                        {{ template "error-message" . }}
                    </td>
                    <td class="numeric">{{ formatPrice $draft.Adults }}</td>
                </tr>
            {{- end }}
            {{ with .NumberTeenagers -}}
                <tr>
                    <td>
                        <input id="teenagers" type="number" required
                               name="{{ .Name }}" value="{{ .Val }}"
                               min="0"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests | dec }}"{{ end }}
                                {{ template "error-attrs" . }}
                        >
                    </td>
                    <td>
                        <label for="teenagers">{{( pgettext "Teenagers from 11 to 16 years old" "input" )}}</label><br>
                        {{ template "error-message" . }}
                    </td>
                    <td class="numeric">{{ formatPrice $draft.Teenagers }}</td>
                </tr>
            {{- end }}
            {{ with .NumberChildren -}}
                <tr>
                    <td>
                        <input id="children" type="number" required
                               name="{{ .Name }}" value="{{ .Val }}"
                               min="0"{{if not $guests.OverflowAllowed }} max="{{ $guests.MaxGuests | dec }}"{{ end }}
                                {{ template "error-attrs" . }}
                        >
                    </td>
                    <td>
                        <label for="children">{{( pgettext "Children from 2 to 10 years old" "input" )}}</label><br>
                        {{ template "error-message" . }}
                    </td>
                    <td class="numeric">{{ formatPrice $draft.Children }}</td>
                </tr>
            {{- end }}
            {{ with .NumberDogs -}}
                <tr>
                    <td>
                        <input id="dogs" type="number" required
                               name="{{ .Name }}" value="{{ .Val }}" min="0"
                                {{ template "error-attrs" . }}
                        >
                    </td>
                    <td>
                        <label for="dogs">{{( pgettext "Dogs" "input" )}}</label><br>
                        {{ template "error-message" . }}
                    </td>
                    <td class="numeric">{{ formatPrice $draft.Dogs }}</td>
                </tr>
            {{- end }}
            {{ with $.Options -}}
                {{ range .Options -}}
                    <tr>
                        <td>
                            <input id="{{ .Input.Name }}" type="number" required
                                   name="{{ .Input.Name }}" value="{{ .Input.Val }}"
                                   min="{{ .Min }}" max="{{ .Max }}"
                                    {{ template "error-attrs" .Input }}
                            >

                        </td>
                        <td>
                            <label for="{{ .Input.Name }}">{{ .Label }}</label><br>
                            {{ template "error-message" .Input }}
                        </td>
                        <td class="numeric">{{ formatPrice .Subtotal }}</td>
                    </tr>
                {{- end }}
            {{- end }}
            <tr>
                <td>{{ $draft.NumAdults }}</td>
                <td>{{( pgettext "Tourist tax" "cart" )}}</td>
                <td class="numeric">{{ formatPrice $draft.TouristTax }}</td>
            </tr>
            </tbody>
            <tfoot>
            <tr>
                <th scope="row" colspan="2" class="numeric">{{( pgettext "Total" "header" )}}</th>
                <td class="numeric">{{ formatPrice $draft.Total }}</td>
            </tr>
            </tfoot>
        </table>
        {{ if not .NumberDogs -}}
            <small>{{( gettext "Note: This accommodation does <strong>not</strong> allow dogs.") | raw }}</small>
        {{- end }}
        {{ if .Error -}}
            <p class="error">{{ .Error }}</p>
        {{- end }}
    </fieldset>
{{- end }}
{{ with .Customer -}}
    <fieldset class="customer-details">
        <legend>{{( pgettext "Customer Details" "title" )}}</legend>
        {{ with .FullName -}}
            <label>
                {{( pgettext "Full name" "input" )}}<br>
                <input type="text" required minlength="2"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .Country -}}
            <label>
                {{( pgettext "Country (optional)" "input" )}}<br>
                <select name="{{ .Name }}"
                        {{ template "error-attrs" . }}
                >
                    <option value="">{{( gettext "Choose a country" )}}</option>
                    {{ template "list-options" . }}
                </select><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .Address -}}
            <label class="colspan">
                {{( pgettext "Address (optional)" "input" )}}<br>
                <input type="text"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .PostalCode -}}
            <label>
                {{( pgettext "Postcode (optional)" "input" )}}<br>
                <input type="text"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .City -}}
            <label>
                {{( pgettext "Town or village (optional)" "input" )}}<br>
                <input type="text"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .Email -}}
            <label>
                {{( pgettext "Email (optional)" "input" )}}<br>
                <input type="email"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with .Phone -}}
            <label>
                {{( pgettext "Phone (optional)" "input" )}}<br>
                <input type="tel"
                       name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
                ><br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
        {{ with $.Guests.ACSICard -}}
            <label class="colspan" data-hx-get="{{ $.URL }}" data-hx-trigger="change">
                <input type="checkbox" name="{{ .Name }}" {{ if .Checked}}checked{{ end }}
                        {{ template "error-attrs" . }}
                > {{( pgettext "ACSI card? (optional)" "input" )}}<br>
                {{ template "error-message" . }}
            </label>
        {{- end }}
    </fieldset>
{{- end }}
{{ if .Campsites -}}
    <h3>{{( pgettext "Campsites" "title" )}}</h3>
    {{ template "grid.gohtml" . }}
    {{ if .Error -}}
        <p class="error">{{ .Error }}</p>
    {{- end }}
{{- end }}

{{ define "campsite-heading" -}}
    {{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.CampsiteEntry*/ -}}
    <label>
        <input type="checkbox"
               name="campsite"
               value="{{ .ID }}"
                {{- if .Selected }} checked="checked"{{ end -}}
        > {{ .Label }}</label>
{{- end }}
