<?php
/**
 * Sidebar Template
 *
 * @package Immowp_Gestion_Immobiliere
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

$immowp_sidebar_coordinates        = get_option( 'immowp_sidebar_coordinates' );
$immowp_sidebar_coordinates_name   = get_option( 'immowp_sidebar_coordinates_name' );
$immowp_sidebar_coordinates_adress = get_option( 'immowp_sidebar_coordinates_adress' );
$immowp_sidebar_coordinates_tel    = get_option( 'immowp_sidebar_coordinates_tel' );
$immowp_sidebar_coordinates_cp     = get_option( 'immowp_sidebar_coordinates_cp' );
$immowp_sidebar_coordinates_city   = get_option( 'immowp_sidebar_coordinates_city' );
$immowp_sidebar_coordinates_email  = get_option( 'immowp_sidebar_coordinates_email' );
$immowp_sidebar_coordinates_form   = get_option( 'immowp_sidebar_coordinates_form' );
$immowp_sidebar_agence_image       = absint( get_option( 'immowp_agence_sidebar_image' ) );
$immowp_default_logo_alt                  = $immowp_sidebar_coordinates_name ? $immowp_sidebar_coordinates_name : get_bloginfo( 'name' );

?>
<div class="iwp__property-sidebar">
            <div class="iwp__price-card">
                <div class="iwp__price-card-label">PRIX DU BIEN</div>
                <div class="iwp__price-card-price">
                    <?php 
                    if ( ! empty( $immowp_prix ) && $immowp_prix > 0 ) {
                        echo esc_html( number_format( $immowp_prix, 0, ',', ' ' ) . ' €' ); 
                        if ( strtolower( $immowp_offre_slug ) == 'location' ) {
                             echo ' <span class="period">' . ($immowp_loyerPeriod ? '/ ' . esc_html($immowp_loyerPeriod) : '/ mois') . '</span>';
                        }
                    } else {
                        echo 'Nous consulter';
                    }
                    ?>
                </div>
                
                <div class="iwp__price-separator"></div>
                
                <div class="iwp__sidebar-agent">

                        <div class="iwp__sidebar-agent__header">
                            <div class="iwp__sidebar-agent__image">
                            <?php if ( $immowp_sidebar_agence_image ) : ?>
                                <?php echo wp_get_attachment_image( $immowp_sidebar_agence_image, 'thumbnail', false, array( 'alt' => $immowp_default_logo_alt ) ); ?>
                            <?php endif; ?>
                            </div>
                            <div class="iwp__sidebar-agent__content">
                                <h3><?php echo esc_html( $immowp_sidebar_coordinates_name ); ?></h3>
                                <div class="iwp__contact-line">
                                    <span class="iwp__contact-icon"><?php echo immowp_single_sidebar_icon( 'location' ); // phpcs:ignore ?></span>
                                    <span class="iwp__contact-text"><?php echo esc_html( $immowp_sidebar_coordinates_adress ); ?><br><?php echo esc_html( $immowp_sidebar_coordinates_cp ) . ' ' . esc_html( $immowp_sidebar_coordinates_city ); ?></span>
                                </div>
                                <div class="iwp__contact-line">
                                    <span class="iwp__contact-icon"><?php echo immowp_single_sidebar_icon( 'mail' ); // phpcs:ignore ?></span>
                                    <a class="agent-email" href="mailto:<?php echo esc_attr( $immowp_sidebar_coordinates_email ); ?>"><?php echo esc_html( $immowp_sidebar_coordinates_email ); ?></a>
                                </div>
                                <div class="iwp__contact-line">
                                    <span class="iwp__contact-icon"><?php echo immowp_single_sidebar_icon( 'phone' ); // phpcs:ignore ?></span>
                                    <a class="agent-tel" href="tel:<?php echo esc_attr( $immowp_sidebar_coordinates_tel ); ?>"><?php echo esc_html( $immowp_sidebar_coordinates_tel ); ?></a>
                                </div>
                            </div>
                        </div>
                        <?php if ( $immowp_sidebar_coordinates_form ) : ?>
                            <div class="iwp__sidebar-agent__form">
                                <hr>
                                <?php echo do_shortcode( $immowp_sidebar_coordinates_form ); ?>
                            </div>
                        <?php endif; ?>
                </div>
            </div>

			<?php
				$immowp_nombre_annonces = 3;

				$immowp_tax_query = $immowp_meta_query = array();

                if ( ! empty( $immowp_offre ) || ! empty( $immowp_offre_slug ) ) {
                    $immowp_tax_query[] = array(
                        'taxonomy' => 'immowp_offre',
                        'field'    => 'slug',
                        'terms'    => ! empty( $immowp_offre_slug ) ? $immowp_offre_slug : sanitize_title( $immowp_offre ),
                    );
                }

                if ( ! empty( $immowp_type ) || ! empty( $immowp_type_slug ) ) {
                    $immowp_tax_query[] = array(
                        'taxonomy' => 'immowp_type',
                        'field'    => 'slug',
                        'terms'    => ! empty( $immowp_type_slug ) ? $immowp_type_slug : sanitize_title( $immowp_type ),
                    );
                }

				$immowp_prix_meta = get_post_meta( get_the_ID(), 'prixMetaNum', true );
                if ( $immowp_prix_meta ) {
                    $immowp_min          = $immowp_prix_meta - $immowp_prix_meta * 20 / 100;
                    $immowp_max          = $immowp_prix_meta + $immowp_prix_meta * 20 / 100;
                    $immowp_meta_query[] = array(
                        'key'     => 'prixMetaNum',
                        'value'   => array( $immowp_min, $immowp_max ),
                        'compare' => 'BETWEEN',
                        'type'    => 'NUMERIC',
                    );
                }

				$immowp_posts_to_query = max( $immowp_nombre_annonces * 2, $immowp_nombre_annonces + 1 );
				$immowp_args           = array(
					'post_type'      => 'immowp_gestion_immo',
					'posts_per_page' => $immowp_posts_to_query,
					'orderby'        => 'rand',
					'tax_query'      => $immowp_tax_query, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query -- filters keep related properties relevant.
					'meta_query'     => $immowp_meta_query, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query -- price proximity is part of related logic.
				);

				$immowp_query            = new WP_Query( $immowp_args );
				$immowp_current_post_id  = get_the_ID();
				$immowp_rendered_items   = '';
				$immowp_displayed        = 0;

				if ( $immowp_query->have_posts() ) {
					ob_start();
					while ( $immowp_query->have_posts() && $immowp_displayed < $immowp_nombre_annonces ) {
						$immowp_query->the_post();

						if ( get_the_ID() === $immowp_current_post_id ) {
							continue;
						}

						$immowp_displayed++;
						include dirname( __DIR__, 2 ) . '/archive/archive-parts/property-item.php';
					}
					$immowp_rendered_items = ob_get_clean();
				}

				wp_reset_postdata();

				if ( $immowp_rendered_items ) :
					?>
					<div class="iwp__sidebar-others">
						<h4><?php esc_html_e( 'Annonces similaires', 'immowp-gestion-immobiliere' ); ?></h4>
						<div class="iwp__items">
							<?php echo $immowp_rendered_items; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- already escaped inside template ?>
						</div>
					</div>
					<?php
				endif;
				?>