<?php

include_once __DIR__.'/init.php';

$varianti_esistenti = $database->fetchArray('SELECT GROUP_CONCAT(`variazioni`.`id_valore`) AS variante
FROM (SELECT `mg_articolo_attributo`.`id_valore`, `mg_articolo_attributo`.`id_articolo`
        FROM `mg_articolo_attributo`
            INNER JOIN `mg_valori_attributi` ON `mg_valori_attributi`.`id` = `mg_articolo_attributo`.`id_valore`
            INNER JOIN `mg_attributi` ON `mg_attributi`.`id` = `mg_valori_attributi`.`id_attributo`

            INNER JOIN `mg_articoli` ON `mg_articoli`.`id` = `mg_articolo_attributo`.`id_articolo`
            INNER JOIN `mg_combinazioni` ON `mg_combinazioni`.`id` = `mg_articoli`.`id_combinazione`
            INNER JOIN `mg_attributo_combinazione` ON `mg_attributo_combinazione`.`id_combinazione` = `mg_combinazioni`.`id` AND `mg_attributo_combinazione`.`id_attributo` = `mg_attributi`.`id`
        WHERE `mg_articoli`.`deleted_at` IS NULL AND `mg_articoli`.`id_combinazione` = '.prepare($combinazione->id).'
        ORDER BY `mg_attributo_combinazione`.`order`
    ) AS variazioni
GROUP BY `variazioni`.`id_articolo`');
$varianti_esistenti = array_column($varianti_esistenti, 'variante');

echo '
<form action="" method="post" id="form-variante">
    <input type="hidden" name="op" value="add-variante">
    <input type="hidden" name="backto" value="record-edit">

    <p>'.tr('Completa le informazioni dei diversi Attributi per generare una variante della Combinazione').'.</p>

    <div class="row">';

$attributi = $combinazione->attributi;
foreach ($attributi as $key => $attributo) {
    echo '
        <div class="col-md-4">
			{[ "type": "select", "label": "'.$attributo->nome.'", "name": "attributo['.$key.']", "values": "query=SELECT id, nome AS descrizione FROM mg_valori_attributi WHERE id_attributo = '.prepare($attributo->id).' AND deleted_at IS NULL", "required": 1 ]}
		</div>';
}

// Scelta articolo esistente
echo '
        <div class="col-md-4">
			{[ "type": "select", "label": "'.tr('Collega articolo esistente').' ('.tr('facoltativo').')", "name": "id_articolo", "ajax-source": "articoli", "select-options": {"solo_non_varianti": 1, "permetti_movimento_a_zero": 1} ]}
		</div>';

echo '
    </div>

    <div class="alert alert-info hidden" id="variante-esistente">
        <i class="fa fa-info-circle"></i> '.tr('La variante indicata è già presente per la combinazione corrente').'.
    </div>

    <!-- PULSANTI -->
    <div class="row">
        <div class="col-md-12 text-right">
            <button type="submit" class="btn btn-primary">
                <i class="fa fa-plus"></i> '.tr('Aggiungi').'
            </button>
        </div>
    </div>
</form>

<script>
var varianti_esistenti = '.json_encode($varianti_esistenti).';
var form = $("#form-variante");

form.find("select").on("change", function () {
    const inputs = form.serializeArray();

    // Individuazione variante e completezza
    let incompleto = false;
    let valori = [];
    for (const {name, value} of inputs) {
        if (name.startsWith("attributo")){
            valori.push(value);
            incompleto |= !value;
        }
    }

    // Completamento informazioni
    const variante = valori.join(",");
    const variante_esistente = varianti_esistenti.includes(variante);

    // Disabilitazione/abilitazione pulsante di aggiunta
    const button = form.find("button");
    if (variante_esistente || incompleto){
        button.addClass("disabled").attr("disabled", true);
    } else {
        button.removeClass("disabled").attr("disabled", false);
    }

    // Messaggio informativo
    const info = form.find("#variante-esistente");
    if (variante_esistente) {
        info.removeClass("hidden");
    } else {
        info.addClass("hidden");
    }
});

$(document).ready(init);
</script>';
