class tarjetaTiradasPrecio {

    constructor(domItem, id, tirada, precio, precio_unidad, envio) {
        this.domItem = domItem;
        this.id = id;
        this.tirada = tirada;
        this.precio = precio;
        this.precio_unidad = precio_unidad;
        this.envio = envio;

        this.card = this.#generateHTML(id, tirada, precio, precio_unidad, envio);
        this.domItem.append(this.card);
    }

    formatNumber(value, digits) {
        return value.toLocaleString("de-DE", { minimumFractionDigits: digits, maximumFractionDigits: digits });
    }

    #generateHTML(id, tirada, precio, precio_unidad, envio) {

        let $html = $('<div>', {
            id: id,
            class: 'list-group mb-2 tarjeta-tiradas-precios'
        });

        let $link = $('<a>', {
            href: 'javascript:void(0);',
            class: 'list-group-item'
        });

        let $liWrapper = $('<div>', {
            class: 'li-wrapper d-flex justify-content-start align-items-center'
        });

        let $listContent = $('<div>', {
            class: 'list-content'
        });

        const formattedPrecio = this.formatNumber(precio, 2);
        const formattedPrecioUnidad = this.formatNumber(precio_unidad, 4);
        

        $listContent.append($('<h7>', {
            id: 'ud_' + id,
            class: 'mb-1 tarjeta-tiradas-precios-tirada',
            text: tirada + ' ud.'
        }).attr('data', tirada));

        $listContent.append($('<h6>', {
            id: 'tot_' + id,
            class: 'mb-1 tarjeta-tiradas-precios-precio',
            text: 'Total: ' + formattedPrecio + '€'
        }).attr('data', precio));

        $listContent.append($('<h7>', {
            id: 'pu_' + id,
            class: 'mb-1 tarjeta-tiradas-precios-precio-unidad',
            text: formattedPrecioUnidad + '€/ud'
        }).attr('data', precio_unidad));

        $listContent.append($('<input>', {
            id: 'envio_' + id,
            type: 'hidden',
            class: 'mb-1 tarjeta-tiradas-precios-envio',
        }).val(envio));

        $liWrapper.append($listContent);
        $link.append($liWrapper);
        $html.append($link);

        return $html;
    }
}

export default tarjetaTiradasPrecio;