<?php

use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;

/* clients/contrat/_popup_simulateur_tarifs.html.twig */
class __TwigTemplate_d022b0736f28b0799677cc59ed748fd095e216f309a0bbedb8a1385a8103175c extends Template
{
    private $source;
    private $macros = [];

    public function __construct(Environment $env)
    {
        parent::__construct($env);

        $this->source = $this->getSourceContext();

        $this->parent = false;

        $this->blocks = [
        ];
    }

    protected function doDisplay(array $context, array $blocks = [])
    {
        $macros = $this->macros;
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "clients/contrat/_popup_simulateur_tarifs.html.twig"));

        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "clients/contrat/_popup_simulateur_tarifs.html.twig"));

        // line 1
        yield "<div id=\"popup-simulateur-tarifs\" style=\"display:none;\" >
    <div id=\"target-simulateur\">
        ";
        // line 3
        yield Twig\Extension\CoreExtension::include($this->env, $context, "clients/contrat/_popup_simulateur_tarifs_content.html.twig");
        yield "
    </div>
</div>
<script type=\"module\">
    \$(document).ready(function() {
        let lineCounter = 0;
        let optionsCache = {}; // Cache pour les options
        let savePopupTarifs = \$('#target-simulateur').html();

        \$('body').on('click', '#btn-popup-simulateur-tarifs', function(e) {
            \$('#target-simulateur').html(savePopupTarifs);
        });

        // Fonction pour récupérer les options dynamiquement
        function getOptionsForType(equipementTypeId) {
            return new Promise((resolve, reject) => {
                // Vérifier si les options sont déjà en cache
                if (optionsCache[equipementTypeId]) {
                    resolve(optionsCache[equipementTypeId]);
                    return;
                }

                \$.ajax({
                    url: '";
        // line 26
        yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("contrat_get_options_by_type");
        yield "',
                    method: 'POST',
                    data: {
                        equipement_type_id: equipementTypeId
                    },
                    success: function(response) {
                        // Mettre en cache les options
                        optionsCache[equipementTypeId] = response.options;
                        resolve(response.options);
                    },
                    error: function(xhr, status, error) {
                        console.error('Erreur lors de la récupération des options:', error);
                        reject(error);
                    }
                });
            });
        }

        async function addOptionLine() {
            lineCounter++;

            // Récupérer l'ID du type d'équipement sélectionné
            const equipementTypeId = \$('select[name=\"simulateur_equipement_type\"]').val();

            if (!equipementTypeId) {
                alert('Veuillez d\\'abord sélectionner un type d\\'équipement');
                return;
            }

            try {
                // Récupérer les options dynamiquement
                const options = await getOptionsForType(equipementTypeId);

                // Construire les options HTML
                let optionsHtml = '<option value=\"\">Sélectionner une option</option>';
                options.forEach(function(opt) {
                    optionsHtml += `
                        <option value=\"\${opt.id}\"
                                data-prix=\"\${opt.tarif_ht || '0'}\"
                                data-libelle=\"\${opt.libelle_court || opt.libelle}\">
                            \${opt.libelle_court || opt.libelle}
                        </option>
                    `;
                });

                const newRow = `
                    <tr id=\"option-line-\${lineCounter}\" data-line-id=\"\${lineCounter}\">
                        <td class=\"p-0\">
                            <select class=\"form-control option-select\" name=\"simulateur_options_equipement[]\" style=\"width: 100%;\">
                                \${optionsHtml}
                            </select>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                            <div class=\"action-buttons d-flex align-items-center justify-content-center\" style=\"height:20px;\">
                                <i class=\"fa fa-save save_option_line\" style=\"cursor: pointer; margin-right: 5px;\" title=\"Valider la sélection\"></i>
                                <i class=\"fa fa-trash delete_option_line\" style=\"cursor: pointer;\" title=\"Supprimer la ligne\"></i>
                            </div>
                        </td>
                    </tr>
                `;

                if (\$('.empty-row').length > 0) {
                    \$('#simulateur-table-options tbody').html(newRow);
                } else {
                    \$('#simulateur-table-options tbody').append(newRow);
                }

                updateSelectedOptions();
            } catch (error) {
                console.error('Erreur lors de l\\'ajout de la ligne d\\'option:', error);
                alert('Erreur lors de la récupération des options');
            }
        }

        function deleteOptionLine(lineId) {
            \$(`#option-line-\${lineId}`).remove();
            updateSelectedOptions();
        }

        function updateSelectedOptions() {
            const selectedOptions = [];

            // Parcourir toutes les lignes du tableau
            \$('#simulateur-table-options tbody tr').each(function () {
                const \$row = \$(this);
                const optionSelect = \$row.find('.option-select');
                const tvaSelect = \$row.find('.tva-select');
                const prixInput = \$row.find('.prix-ht-input');

                if (optionSelect.val()) {
                    selectedOptions.push({
                        id: optionSelect.val(),
                        libelle: optionSelect.find('option:selected').text(),
                        tva: tvaSelect.val(),
                        prix_ht: prixInput.val()
                    });
                }
            });
            // Mettre à jour le champ caché
            \$('#simulateur_options').val(JSON.stringify(selectedOptions));

            // Optionnel : Ajouter des champs cachés individuels
            \$('input[name=\"simulateur_selected_options[]\"]').remove(); // Supprimer les anciens
            selectedOptions.forEach(function (option, index) {
                \$('<input>').attr({
                    type: 'hidden',
                    name: 'simulateur_selected_options[]',
                    value: option.id
                }).appendTo('#form_simulateur');
            });
        }

        \$(document).on('click', '#add_option_simulation', function () {
            addOptionLine();
        });

        function saveOptionLine(lineId) {
            const \$row = \$(`#option-line-\${lineId}`);
            const \$optionSelect = \$row.find('.option-select');
            const \$tvaSelect = \$row.find('.tva-select');
            const \$prixHTInput = \$row.find('.prix-ht-input');
            const \$prixTTCInput = \$row.find('.prix-ttc-input');
            const \$actionButtons = \$row.find('.action-buttons');

            // Vérifier qu'une option est sélectionnée
            if (!\$optionSelect.val()) {
                alert('Veuillez sélectionner une option avant de valider.');
                return;
            }

            // Récupérer les valeurs
            const selectedOption = \$optionSelect.find('option:selected');
            const optionId = \$optionSelect.val();
            const optionLibelle = selectedOption.data('libelle');

            \$optionSelect.parent().removeClass('p-0');
            \$actionButtons.css('height', 'inherit');

            // Remplacer le select par du texte
            \$optionSelect.replaceWith(`
                <span class=\"option-display\" data-option-id=\"\${optionId}\">\${optionLibelle}</span>
                <input type=\"hidden\" name=\"simulateur_options_equipement[]\" value=\"\${optionId}\" form=\"form-simulateur\">
            `);


            // Remplacer les boutons d'action
            \$actionButtons.html(`
                    <i class=\"fa fa-trash delete_option_line\" style=\"cursor: pointer;\" title=\"Supprimer la ligne\"></i>
            `);

            // Marquer la ligne comme validée
            \$row.attr('data-status', 'saved');

            updateSelectedOptions();
        }

        // Événement pour supprimer une ligne
        \$(document).on('click', '.delete_option_line', function () {
            const \$row = \$(this).closest('tr');
            const lineId = \$row.data('line-id');
            deleteOptionLine(lineId);
        });
        \$(document).on('change', '.option-select', function () {
            const \$row = \$(this).closest('tr');
            const \$option = \$(this).find('option:selected');
            const prix = \$option.data('prix') || '0';

            \$row.find('.prix-ht-input').val(prix + '€');
            updateSelectedOptions();
        });

        \$(document).on('click', '.save_option_line', function () {
            const lineId = \$(this).closest('tr').data('line-id');
            saveOptionLine(lineId);
        });

        // Initialiser avec les options existantes
        updateSelectedOptions();

        // Écouter les changements de type d'équipement pour recharger les options
        \$(document).on('change', 'select[name=\"simulateur_equipement_type\"]', function() {
            // Supprimer toutes les lignes d'options dynamiques
            \$('#simulateur-table-options tbody tr').each(function() {
                const \$row = \$(this);
                // Garder seulement les lignes existantes (non dynamiques)
                if (\$row.find('.option-select').length > 0) {
                    \$row.remove();
                }
            });

            // Réinitialiser le compteur
            lineCounter = 0;

            // Mettre à jour les options sélectionnées
            updateSelectedOptions();
        });
    });


</script>";
        
        $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);

        
        $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);

        return; yield '';
    }

    /**
     * @codeCoverageIgnore
     */
    public function getTemplateName()
    {
        return "clients/contrat/_popup_simulateur_tarifs.html.twig";
    }

    /**
     * @codeCoverageIgnore
     */
    public function isTraitable()
    {
        return false;
    }

    /**
     * @codeCoverageIgnore
     */
    public function getDebugInfo()
    {
        return array (  74 => 26,  48 => 3,  44 => 1,);
    }

    public function getSourceContext()
    {
        return new Source("<div id=\"popup-simulateur-tarifs\" style=\"display:none;\" >
    <div id=\"target-simulateur\">
        {{ include('clients/contrat/_popup_simulateur_tarifs_content.html.twig') }}
    </div>
</div>
<script type=\"module\">
    \$(document).ready(function() {
        let lineCounter = 0;
        let optionsCache = {}; // Cache pour les options
        let savePopupTarifs = \$('#target-simulateur').html();

        \$('body').on('click', '#btn-popup-simulateur-tarifs', function(e) {
            \$('#target-simulateur').html(savePopupTarifs);
        });

        // Fonction pour récupérer les options dynamiquement
        function getOptionsForType(equipementTypeId) {
            return new Promise((resolve, reject) => {
                // Vérifier si les options sont déjà en cache
                if (optionsCache[equipementTypeId]) {
                    resolve(optionsCache[equipementTypeId]);
                    return;
                }

                \$.ajax({
                    url: '{{ path(\"contrat_get_options_by_type\") }}',
                    method: 'POST',
                    data: {
                        equipement_type_id: equipementTypeId
                    },
                    success: function(response) {
                        // Mettre en cache les options
                        optionsCache[equipementTypeId] = response.options;
                        resolve(response.options);
                    },
                    error: function(xhr, status, error) {
                        console.error('Erreur lors de la récupération des options:', error);
                        reject(error);
                    }
                });
            });
        }

        async function addOptionLine() {
            lineCounter++;

            // Récupérer l'ID du type d'équipement sélectionné
            const equipementTypeId = \$('select[name=\"simulateur_equipement_type\"]').val();

            if (!equipementTypeId) {
                alert('Veuillez d\\'abord sélectionner un type d\\'équipement');
                return;
            }

            try {
                // Récupérer les options dynamiquement
                const options = await getOptionsForType(equipementTypeId);

                // Construire les options HTML
                let optionsHtml = '<option value=\"\">Sélectionner une option</option>';
                options.forEach(function(opt) {
                    optionsHtml += `
                        <option value=\"\${opt.id}\"
                                data-prix=\"\${opt.tarif_ht || '0'}\"
                                data-libelle=\"\${opt.libelle_court || opt.libelle}\">
                            \${opt.libelle_court || opt.libelle}
                        </option>
                    `;
                });

                const newRow = `
                    <tr id=\"option-line-\${lineCounter}\" data-line-id=\"\${lineCounter}\">
                        <td class=\"p-0\">
                            <select class=\"form-control option-select\" name=\"simulateur_options_equipement[]\" style=\"width: 100%;\">
                                \${optionsHtml}
                            </select>
                        </td>
                        <td>
                        </td>
                        <td>
                        </td>
                        <td>
                            <div class=\"action-buttons d-flex align-items-center justify-content-center\" style=\"height:20px;\">
                                <i class=\"fa fa-save save_option_line\" style=\"cursor: pointer; margin-right: 5px;\" title=\"Valider la sélection\"></i>
                                <i class=\"fa fa-trash delete_option_line\" style=\"cursor: pointer;\" title=\"Supprimer la ligne\"></i>
                            </div>
                        </td>
                    </tr>
                `;

                if (\$('.empty-row').length > 0) {
                    \$('#simulateur-table-options tbody').html(newRow);
                } else {
                    \$('#simulateur-table-options tbody').append(newRow);
                }

                updateSelectedOptions();
            } catch (error) {
                console.error('Erreur lors de l\\'ajout de la ligne d\\'option:', error);
                alert('Erreur lors de la récupération des options');
            }
        }

        function deleteOptionLine(lineId) {
            \$(`#option-line-\${lineId}`).remove();
            updateSelectedOptions();
        }

        function updateSelectedOptions() {
            const selectedOptions = [];

            // Parcourir toutes les lignes du tableau
            \$('#simulateur-table-options tbody tr').each(function () {
                const \$row = \$(this);
                const optionSelect = \$row.find('.option-select');
                const tvaSelect = \$row.find('.tva-select');
                const prixInput = \$row.find('.prix-ht-input');

                if (optionSelect.val()) {
                    selectedOptions.push({
                        id: optionSelect.val(),
                        libelle: optionSelect.find('option:selected').text(),
                        tva: tvaSelect.val(),
                        prix_ht: prixInput.val()
                    });
                }
            });
            // Mettre à jour le champ caché
            \$('#simulateur_options').val(JSON.stringify(selectedOptions));

            // Optionnel : Ajouter des champs cachés individuels
            \$('input[name=\"simulateur_selected_options[]\"]').remove(); // Supprimer les anciens
            selectedOptions.forEach(function (option, index) {
                \$('<input>').attr({
                    type: 'hidden',
                    name: 'simulateur_selected_options[]',
                    value: option.id
                }).appendTo('#form_simulateur');
            });
        }

        \$(document).on('click', '#add_option_simulation', function () {
            addOptionLine();
        });

        function saveOptionLine(lineId) {
            const \$row = \$(`#option-line-\${lineId}`);
            const \$optionSelect = \$row.find('.option-select');
            const \$tvaSelect = \$row.find('.tva-select');
            const \$prixHTInput = \$row.find('.prix-ht-input');
            const \$prixTTCInput = \$row.find('.prix-ttc-input');
            const \$actionButtons = \$row.find('.action-buttons');

            // Vérifier qu'une option est sélectionnée
            if (!\$optionSelect.val()) {
                alert('Veuillez sélectionner une option avant de valider.');
                return;
            }

            // Récupérer les valeurs
            const selectedOption = \$optionSelect.find('option:selected');
            const optionId = \$optionSelect.val();
            const optionLibelle = selectedOption.data('libelle');

            \$optionSelect.parent().removeClass('p-0');
            \$actionButtons.css('height', 'inherit');

            // Remplacer le select par du texte
            \$optionSelect.replaceWith(`
                <span class=\"option-display\" data-option-id=\"\${optionId}\">\${optionLibelle}</span>
                <input type=\"hidden\" name=\"simulateur_options_equipement[]\" value=\"\${optionId}\" form=\"form-simulateur\">
            `);


            // Remplacer les boutons d'action
            \$actionButtons.html(`
                    <i class=\"fa fa-trash delete_option_line\" style=\"cursor: pointer;\" title=\"Supprimer la ligne\"></i>
            `);

            // Marquer la ligne comme validée
            \$row.attr('data-status', 'saved');

            updateSelectedOptions();
        }

        // Événement pour supprimer une ligne
        \$(document).on('click', '.delete_option_line', function () {
            const \$row = \$(this).closest('tr');
            const lineId = \$row.data('line-id');
            deleteOptionLine(lineId);
        });
        \$(document).on('change', '.option-select', function () {
            const \$row = \$(this).closest('tr');
            const \$option = \$(this).find('option:selected');
            const prix = \$option.data('prix') || '0';

            \$row.find('.prix-ht-input').val(prix + '€');
            updateSelectedOptions();
        });

        \$(document).on('click', '.save_option_line', function () {
            const lineId = \$(this).closest('tr').data('line-id');
            saveOptionLine(lineId);
        });

        // Initialiser avec les options existantes
        updateSelectedOptions();

        // Écouter les changements de type d'équipement pour recharger les options
        \$(document).on('change', 'select[name=\"simulateur_equipement_type\"]', function() {
            // Supprimer toutes les lignes d'options dynamiques
            \$('#simulateur-table-options tbody tr').each(function() {
                const \$row = \$(this);
                // Garder seulement les lignes existantes (non dynamiques)
                if (\$row.find('.option-select').length > 0) {
                    \$row.remove();
                }
            });

            // Réinitialiser le compteur
            lineCounter = 0;

            // Mettre à jour les options sélectionnées
            updateSelectedOptions();
        });
    });


</script>", "clients/contrat/_popup_simulateur_tarifs.html.twig", "/builds/dev/refonte_sav/templates/clients/contrat/_popup_simulateur_tarifs.html.twig");
    }
}
