<?php
/**
 * Template: Unterkunft-Detail — [simpbook_unterkunft id="X"]
 *
 * Verfügbare Variablen:
 * - $unterkunft  (object)  — Unterkunft-Zeile
 * - $zimmer      (array)   — Zimmer-Zeilen (leer bei gesamt-Vermietung)
 * - $tags        (array)   — Tag-Zeilen mit name, farbe, icon
 * - $atts        (array)   — Shortcode-Attribute
 *
 * @package PocketBookingPro
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// Waehrung
$waehrung_symbol = '€';
$waehrung = get_option( 'simpbook_vermietung_waehrung', 'EUR' );
$symbole = [ 'EUR' => '€', 'CHF' => 'CHF', 'USD' => '$', 'GBP' => '£' ];
if ( isset( $symbole[ $waehrung ] ) ) {
    $waehrung_symbol = $symbole[ $waehrung ];
}

// Ausstattung
$ausstattung = [];
if ( ! empty( $unterkunft->ausstattung_json ) ) {
    $decoded = json_decode( $unterkunft->ausstattung_json, true );
    if ( is_array( $decoded ) ) {
        $ausstattung = $decoded;
    }
}

// Bilder
$bilder_ids = [];
if ( ! empty( $unterkunft->bilder_json ) ) {
    $decoded = json_decode( $unterkunft->bilder_json, true );
    if ( is_array( $decoded ) ) {
        $bilder_ids = array_map( 'intval', $decoded );
    }
}

// Titelbild
$titelbild_url = '';
if ( ! empty( $unterkunft->titelbild_id ) ) {
    $img = wp_get_attachment_image_url( $unterkunft->titelbild_id, 'large' );
    if ( $img ) {
        $titelbild_url = $img;
    }
}

// Typ-Label
$typ_labels = [
    'ferienwohnung' => __( 'Ferienwohnung', 'simple-appointment-booking' ),
    'ferienhaus'    => __( 'Ferienhaus', 'simple-appointment-booking' ),
    'hotel'         => __( 'Hotel', 'simple-appointment-booking' ),
    'pension'       => __( 'Pension', 'simple-appointment-booking' ),
    'gaestezimmer'  => __( 'Gästezimmer', 'simple-appointment-booking' ),
    'apartment'     => __( 'Apartment', 'simple-appointment-booking' ),
    'chalet'        => __( 'Chalet', 'simple-appointment-booking' ),
    'villa'         => __( 'Villa', 'simple-appointment-booking' ),
    'sonstige'      => __( 'Sonstige', 'simple-appointment-booking' ),
];
$typ_label = isset( $typ_labels[ $unterkunft->unterkunft_typ ] ) ? $typ_labels[ $unterkunft->unterkunft_typ ] : $unterkunft->unterkunft_typ;

// Einstellungen
$default_checkin  = $unterkunft->checkin_uhrzeit  ?: get_option( 'simpbook_vermietung_standard_checkin_zeit', '15:00' );
$default_checkout = $unterkunft->checkout_uhrzeit ?: get_option( 'simpbook_vermietung_standard_checkout_zeit', '11:00' );
$min_naechte      = $unterkunft->min_naechte      ?: (int) get_option( 'simpbook_vermietung_standard_min_naechte', 1 );
$max_gaeste       = $unterkunft->max_gaeste       ?: 99;
$telefon_pflicht  = get_option( 'simpbook_vermietung_telefon_pflicht', 0 );
$agb_link         = get_option( 'simpbook_vermietung_agb_link', '' );
?>

<div class="simpbook-unterkunft-detail">

    <!-- Header -->
    <div class="simpbook-detail-header">
        <h1 class="simpbook-detail-title"><?php echo esc_html( $unterkunft->titel ); ?></h1>
        <?php if ( ! empty( $unterkunft->untertitel ) ) : ?>
            <p class="simpbook-detail-subtitle"><?php echo esc_html( $unterkunft->untertitel ); ?></p>
        <?php endif; ?>
        <p style="color: #666; font-size: 14px;">
            <?php echo esc_html( $typ_label ); ?>
            <?php if ( ! empty( $unterkunft->ort ) ) : ?>
                &nbsp;·&nbsp; <?php echo esc_html( $unterkunft->ort ); ?><?php echo ! empty( $unterkunft->land ) && $unterkunft->land !== 'Deutschland' ? ', ' . esc_html( $unterkunft->land ) : ''; ?>
            <?php endif; ?>
        </p>

        <?php if ( ! empty( $tags ) ) : ?>
            <div style="display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px;">
                <?php foreach ( $tags as $tag ) : ?>
                    <span class="simpbook-card-tag" style="background: <?php echo esc_attr( $tag->farbe ); ?>;">
                        <?php echo esc_html( $tag->name ); ?>
                    </span>
                <?php endforeach; ?>
            </div>
        <?php endif; ?>
    </div>

    <!-- Galerie -->
    <?php if ( $titelbild_url || ! empty( $bilder_ids ) ) : ?>
    <div class="simpbook-detail-galerie">
        <?php if ( $titelbild_url ) : ?>
            <img src="<?php echo esc_url( $titelbild_url ); ?>" alt="<?php echo esc_attr( $unterkunft->titel ); ?>">
        <?php endif; ?>
        <?php
        $galerie_count = 0;
        foreach ( $bilder_ids as $bild_id ) :
            if ( $bild_id === (int) $unterkunft->titelbild_id ) continue;
            $bild_url = wp_get_attachment_image_url( $bild_id, 'medium_large' );
            if ( ! $bild_url ) continue;
            $galerie_count++;
            if ( $galerie_count > 4 ) break;
        ?>
            <img src="<?php echo esc_url( $bild_url ); ?>" alt="<?php echo esc_attr( $unterkunft->titel ); ?>" loading="lazy">
        <?php endforeach; ?>
    </div>
    <?php endif; ?>

    <!-- Info-Grid: Main + Sidebar -->
    <div class="simpbook-detail-info-grid">

        <!-- Hauptbereich -->
        <div class="simpbook-detail-main">

            <!-- Quick-Facts -->
            <div style="display: flex; gap: 24px; flex-wrap: wrap; padding: 20px 0; border-bottom: 1px solid #eee; margin-bottom: 20px; font-size: 15px;">
                <?php if ( ! empty( $unterkunft->max_gaeste ) ) : ?>
                    <span>👥 <?php echo (int) $unterkunft->max_gaeste; ?> <?php esc_html_e( 'Gäste', 'simple-appointment-booking' ); ?></span>
                <?php endif; ?>
                <?php if ( ! empty( $unterkunft->schlafplaetze ) ) : ?>
                    <span>🛏 <?php echo (int) $unterkunft->schlafplaetze; ?> <?php esc_html_e( 'Schlafplätze', 'simple-appointment-booking' ); ?></span>
                <?php endif; ?>
                <?php if ( ! empty( $unterkunft->wohnflaeche ) ) : ?>
                    <span>📐 <?php echo number_format( (float) $unterkunft->wohnflaeche, 0, ',', '.' ); ?> m²</span>
                <?php endif; ?>
                <?php if ( ! empty( $unterkunft->max_zimmer_gesamt ) ) : ?>
                    <span>🚪 <?php echo (int) $unterkunft->max_zimmer_gesamt; ?> <?php esc_html_e( 'Zimmer', 'simple-appointment-booking' ); ?></span>
                <?php endif; ?>
            </div>

            <!-- Beschreibung -->
            <?php if ( ! empty( $unterkunft->objektbeschreibung ) ) : ?>
            <div class="simpbook-detail-beschreibung">
                <h3><?php esc_html_e( 'Beschreibung', 'simple-appointment-booking' ); ?></h3>
                <?php echo wp_kses_post( wpautop( $unterkunft->objektbeschreibung ) ); ?>
            </div>
            <?php endif; ?>

            <!-- Ausstattung -->
            <?php if ( ! empty( $ausstattung ) ) : ?>
            <div class="simpbook-detail-ausstattung">
                <h3><?php esc_html_e( 'Ausstattung', 'simple-appointment-booking' ); ?></h3>
                <ul>
                    <?php foreach ( $ausstattung as $item ) : ?>
                        <li><?php echo esc_html( $item ); ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>
            <?php endif; ?>

            <!-- Zimmer (bei zimmerweiser Vermietung) -->
            <?php if ( $unterkunft->vermietungsart === 'zimmer' && ! empty( $zimmer ) ) : ?>
            <div style="margin-top: 30px;">
                <h3><?php esc_html_e( 'Verfügbare Zimmer', 'simple-appointment-booking' ); ?></h3>
                <?php foreach ( $zimmer as $z ) :
                    if ( ! $z->aktiv ) continue;
                    $z_titelbild = '';
                    if ( ! empty( $z->titelbild_id ) ) {
                        $z_img = wp_get_attachment_image_url( $z->titelbild_id, 'medium' );
                        if ( $z_img ) $z_titelbild = $z_img;
                    }
                ?>
                <div style="display: flex; gap: 16px; padding: 16px; margin-bottom: 12px; border: 1px solid #eee; border-radius: 8px;">
                    <?php if ( $z_titelbild ) : ?>
                        <img src="<?php echo esc_url( $z_titelbild ); ?>" alt="<?php echo esc_attr( $z->name ); ?>" style="width: 120px; height: 90px; object-fit: cover; border-radius: 6px;">
                    <?php endif; ?>
                    <div style="flex: 1;">
                        <h4 style="margin: 0 0 4px;"><?php echo esc_html( $z->name ); ?></h4>
                        <p style="color: #666; font-size: 13px; margin: 0 0 8px;">
                            <?php echo esc_html( ucfirst( $z->zimmer_typ ) ); ?>
                            &nbsp;·&nbsp; <?php echo (int) $z->max_gaeste; ?> <?php esc_html_e( 'Gäste', 'simple-appointment-booking' ); ?>
                            <?php if ( ! empty( $z->zimmergroesse ) ) : ?>
                                &nbsp;·&nbsp; <?php echo number_format( (float) $z->zimmergroesse, 0, ',', '.' ); ?> m²
                            <?php endif; ?>
                        </p>
                        <?php if ( ! empty( $z->beschreibung ) ) : ?>
                            <p style="font-size: 13px; margin: 0;"><?php echo esc_html( $z->beschreibung ); ?></p>
                        <?php endif; ?>
                    </div>
                    <div style="text-align: right; white-space: nowrap;">
                        <?php if ( $z->preis_pro_nacht ) : ?>
                            <strong><?php echo number_format( (float) $z->preis_pro_nacht, 2, ',', '.' ); ?> <?php echo esc_html( $waehrung_symbol ); ?></strong>
                            <small style="display: block; color: #888;">/ <?php esc_html_e( 'Nacht', 'simple-appointment-booking' ); ?></small>
                        <?php endif; ?>
                    </div>
                </div>
                <?php endforeach; ?>
            </div>
            <?php endif; ?>

            <!-- Check-in/out Zeiten -->
            <div style="margin-top: 30px; padding: 16px; background: #f9f9f9; border-radius: 8px;">
                <h3 style="margin-top: 0;"><?php esc_html_e( 'Check-in / Check-out', 'simple-appointment-booking' ); ?></h3>
                <p>
                    <strong><?php esc_html_e( 'Check-in:', 'simple-appointment-booking' ); ?></strong>
                    <?php esc_html_e( 'ab', 'simple-appointment-booking' ); ?> <?php echo esc_html( substr( $default_checkin, 0, 5 ) ); ?> <?php esc_html_e( 'Uhr', 'simple-appointment-booking' ); ?>
                    <br>
                    <strong><?php esc_html_e( 'Check-out:', 'simple-appointment-booking' ); ?></strong>
                    <?php esc_html_e( 'bis', 'simple-appointment-booking' ); ?> <?php echo esc_html( substr( $default_checkout, 0, 5 ) ); ?> <?php esc_html_e( 'Uhr', 'simple-appointment-booking' ); ?>
                </p>
                <?php if ( $min_naechte > 1 ) : ?>
                    <p style="font-size: 13px; color: #666;">
                        <?php
                        printf(
                            /* translators: %d: minimum nights */
                            esc_html__( 'Mindestaufenthalt: %d Nächte', 'simple-appointment-booking' ),
                            $min_naechte
                        );
                        ?>
                    </p>
                <?php endif; ?>
            </div>

            <!-- Lage -->
            <?php if ( ! empty( $unterkunft->lage_beschreibung ) || ( $unterkunft->adresse_anzeigen && ! empty( $unterkunft->strasse ) ) ) : ?>
            <div style="margin-top: 30px;">
                <h3><?php esc_html_e( 'Lage & Anfahrt', 'simple-appointment-booking' ); ?></h3>
                <?php if ( $unterkunft->adresse_anzeigen && ! empty( $unterkunft->strasse ) ) : ?>
                    <p>
                        <?php echo esc_html( $unterkunft->strasse ); ?> <?php echo esc_html( $unterkunft->hausnummer ?? '' ); ?><br>
                        <?php echo esc_html( $unterkunft->plz ?? '' ); ?> <?php echo esc_html( $unterkunft->ort ); ?>
                        <?php if ( ! empty( $unterkunft->land ) ) : ?><br><?php echo esc_html( $unterkunft->land ); ?><?php endif; ?>
                    </p>
                <?php endif; ?>
                <?php if ( ! empty( $unterkunft->lage_beschreibung ) ) : ?>
                    <?php echo wp_kses_post( wpautop( $unterkunft->lage_beschreibung ) ); ?>
                <?php endif; ?>
                <?php if ( $unterkunft->google_maps_anzeigen && ! empty( $unterkunft->latitude ) && ! empty( $unterkunft->longitude ) ) : ?>
                    <div id="simpbook-map" data-lat="<?php echo esc_attr( $unterkunft->latitude ); ?>" data-lng="<?php echo esc_attr( $unterkunft->longitude ); ?>" style="height: 300px; border-radius: 12px; margin-top: 12px; background: #f0f0f1;"></div>
                <?php endif; ?>
            </div>
            <?php endif; ?>

            <?php
            /**
             * Hook: Zusätzliche Inhalte auf der Detail-Seite.
             *
             * @param object $unterkunft
             */
            do_action( 'simpbook_unterkunft_detail_nach_inhalt', $unterkunft );
            ?>

        </div>

        <!-- Sidebar: Buchung -->
        <div>
            <div class="simpbook-buchung-sidebar">
                <div class="simpbook-preis-gross">
                    <?php if ( $unterkunft->preis_auf_anfrage ) : ?>
                        <?php esc_html_e( 'Preis auf Anfrage', 'simple-appointment-booking' ); ?>
                    <?php elseif ( $unterkunft->preis_pro_nacht ) : ?>
                        <?php if ( $unterkunft->rabatt_preis_nacht && (float) $unterkunft->rabatt_preis_nacht < (float) $unterkunft->preis_pro_nacht ) : ?>
                            <span style="text-decoration: line-through; color: #999; font-size: 16px;">
                                <?php echo number_format( (float) $unterkunft->preis_pro_nacht, 2, ',', '.' ); ?> <?php echo esc_html( $waehrung_symbol ); ?>
                            </span>
                            <?php echo number_format( (float) $unterkunft->rabatt_preis_nacht, 2, ',', '.' ); ?> <?php echo esc_html( $waehrung_symbol ); ?>
                        <?php else : ?>
                            <?php echo number_format( (float) $unterkunft->preis_pro_nacht, 2, ',', '.' ); ?> <?php echo esc_html( $waehrung_symbol ); ?>
                        <?php endif; ?>
                        <small>/ <?php esc_html_e( 'Nacht', 'simple-appointment-booking' ); ?></small>
                    <?php endif; ?>
                </div>

                <!-- Kalender -->
                <div class="simpbook-verfuegbarkeit-kalender simpbook-kalender"
                     data-unterkunft-id="<?php echo (int) $unterkunft->id; ?>"
                     data-checkin-input="#simpbook_checkin"
                     data-checkout-input="#simpbook_checkout">
                </div>

                <!-- Buchungsformular -->
                <form class="simpbook-buchung-form" method="post">
                    <input type="hidden" name="simpbook_unterkunft_id" value="<?php echo (int) $unterkunft->id; ?>">

                    <label for="simpbook_checkin"><?php esc_html_e( 'Check-in', 'simple-appointment-booking' ); ?></label>
                    <input type="date" id="simpbook_checkin" name="simpbook_checkin" required>

                    <label for="simpbook_checkout"><?php esc_html_e( 'Check-out', 'simple-appointment-booking' ); ?></label>
                    <input type="date" id="simpbook_checkout" name="simpbook_checkout" required>

                    <?php if ( $unterkunft->vermietungsart === 'zimmer' && ! empty( $zimmer ) ) : ?>
                    <label for="simpbook_zimmer_id"><?php esc_html_e( 'Zimmer', 'simple-appointment-booking' ); ?></label>
                    <select id="simpbook_zimmer_id" name="simpbook_zimmer_id" required>
                        <option value=""><?php esc_html_e( 'Bitte wählen', 'simple-appointment-booking' ); ?></option>
                        <?php foreach ( $zimmer as $z ) :
                            if ( ! $z->aktiv ) continue;
                        ?>
                            <option value="<?php echo (int) $z->id; ?>">
                                <?php echo esc_html( $z->name ); ?>
                                <?php if ( $z->preis_pro_nacht ) : ?>
                                    (<?php echo number_format( (float) $z->preis_pro_nacht, 2, ',', '.' ); ?> <?php echo esc_html( $waehrung_symbol ); ?>/<?php esc_html_e( 'Nacht', 'simple-appointment-booking' ); ?>)
                                <?php endif; ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                    <?php endif; ?>

                    <label for="simpbook_anzahl_gaeste"><?php esc_html_e( 'Gäste', 'simple-appointment-booking' ); ?></label>
                    <select id="simpbook_anzahl_gaeste" name="simpbook_anzahl_gaeste">
                        <?php for ( $g = 1; $g <= $max_gaeste; $g++ ) : ?>
                            <option value="<?php echo $g; ?>"><?php echo $g; ?></option>
                        <?php endfor; ?>
                    </select>

                    <label for="simpbook_gast_name"><?php esc_html_e( 'Name', 'simple-appointment-booking' ); ?> *</label>
                    <input type="text" id="simpbook_gast_name" name="simpbook_gast_name" required>

                    <label for="simpbook_gast_email"><?php esc_html_e( 'E-Mail', 'simple-appointment-booking' ); ?> *</label>
                    <input type="email" id="simpbook_gast_email" name="simpbook_gast_email" required>

                    <label for="simpbook_gast_telefon"><?php esc_html_e( 'Telefon', 'simple-appointment-booking' ); ?><?php echo $telefon_pflicht ? ' *' : ''; ?></label>
                    <input type="tel" id="simpbook_gast_telefon" name="simpbook_gast_telefon" <?php echo $telefon_pflicht ? 'required' : ''; ?>>

                    <label for="simpbook_nachricht"><?php esc_html_e( 'Nachricht (optional)', 'simple-appointment-booking' ); ?></label>
                    <textarea id="simpbook_nachricht" name="simpbook_nachricht" rows="3" style="width: 100%; padding: 8px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px;"></textarea>

                    <label for="simpbook_rabatt_code"><?php esc_html_e( 'Rabattcode', 'simple-appointment-booking' ); ?></label>
                    <input type="text" id="simpbook_rabatt_code" name="simpbook_rabatt_code" placeholder="<?php esc_attr_e( 'Optional', 'simple-appointment-booking' ); ?>">

                    <?php if ( $agb_link ) : ?>
                    <label style="margin-top: 12px;">
                        <input type="checkbox" name="simpbook_agb" value="1" required>
                        <?php
                        printf(
                            /* translators: %s: AGB Link */
                            esc_html__( 'Ich akzeptiere die %s', 'simple-appointment-booking' ),
                            '<a href="' . esc_url( $agb_link ) . '" target="_blank" rel="noopener">' . esc_html__( 'AGB', 'simple-appointment-booking' ) . '</a>'
                        );
                        ?>
                    </label>
                    <?php endif; ?>

                    <!-- Preis-Ergebnis -->
                    <div class="simpbook-preis-ergebnis"></div>

                    <?php
                    /**
                     * Hook: Zahlungsmethoden-Auswahl vor dem Buchen-Button.
                     *
                     * @param object $unterkunft
                     */
                    do_action( 'simpbook_vermietung_buchungsformular_zahlungsmethode', $unterkunft );
                    ?>

                    <button type="submit" class="simpbook-btn-buchen">
                        <?php echo $unterkunft->preis_auf_anfrage ? esc_html__( 'Anfrage senden', 'simple-appointment-booking' ) : esc_html__( 'Jetzt buchen', 'simple-appointment-booking' ); ?>
                    </button>

                    <?php if ( ! empty( $unterkunft->reinigungsgebuehr ) ) : ?>
                        <p style="font-size: 12px; color: #888; text-align: center; margin-top: 8px;">
                            <?php
                            printf(
                                /* translators: %s: cleaning fee */
                                esc_html__( 'zzgl. %s Reinigungsgebühr', 'simple-appointment-booking' ),
                                number_format( (float) $unterkunft->reinigungsgebuehr, 2, ',', '.' ) . ' ' . esc_html( $waehrung_symbol )
                            );
                            ?>
                        </p>
                    <?php endif; ?>
                </form>
            </div>
        </div>

    </div>

</div>
