const clientId = 'OBsKQN1l61';
const current_roll = { value: null };

const TabelaEntradas = { branco: null, entrada: null, valor: null }


async function sleep(ms){ return new Promise(resolve => setTimeout(resolve, ms)) };

function valorBanca(value) { var i = parseFloat(value); var i = Math.floor(i * 100) / 100; return i.toFixed(2); };






function UserWallet(data){

    const saldo = valorBanca(data.real_balance);

    document.querySelector('.saldo > div').innerText = 'R$ ' + saldo;

};


function horario( menus, dataISO, explit) {
    const data = new Date(dataISO);

    data.setHours(data.getHours() - menus);

    const horario = data.toTimeString().split(' ')[0];
    
    if (explit == true){ const minutos = horario.split(':')[1]; return minutos; };
    
    return horario;
};


function AtuConfig(data){

    if ( data.status == true ){

        document.querySelector('.barra-config .bloco-2 .config .num').innerText = data.valor;
        document.querySelector('.barra-config .bloco-3 .config .num').innerText = data.white;
        document.querySelector('.barra-config .bloco-4 .config .num').innerText = data.entradas;

        TabelaEntradas.entrada = data.entradas;
        TabelaEntradas.branco = data.white;
        TabelaEntradas.valor = data.valor;

    };
};


function criete_div_roll(num, cor, hora){

    return resp = `<div class="roll ${cor}">${num}</div>\n<div class="horario">${hora}</div>`;

};


function verificar_coll(num, chave) {

    return chave == 1 ? num * 2 : num * 2 + 1;
    
};


function inseri_roll(cel){

    var cor_num = '';
    var hora = horario(0, cel.created_at).split(':').slice(0, 2).join(':');

    if (parseInt(cel.color) == 0){cor_num = 'num-branco'};
    if (parseInt(cel.color) == 1){cor_num = 'num-red'};
    if (parseInt(cel.color) == 2){cor_num = 'num-black'};

    if (horario(0, cel.created_at, true)[1] == '0' && parseInt(horario(0, cel.created_at).split(':')[2]) <= 29){ criete_coll('roll-resut-historic')};

    if (parseInt(horario(0, cel.created_at).split(':')[2]) >= 30){

        var num_table = verificar_coll(horario(0, cel.created_at).split(':')[1][1], 2);

        const rollResut = document.querySelector('.historic_roll > div');

        const primeiroItem = rollResut.children[num_table];

        primeiroItem.innerHTML = criete_div_roll(cel.roll, cor_num, hora);

    } else {

        var num_table = verificar_coll(horario(0, cel.created_at).split(':')[1][1], 1);

        const rollResut = document.querySelector('.historic_roll > div');

        const primeiroItem = rollResut.children[num_table];

        primeiroItem.innerHTML = criete_div_roll(cel.roll, cor_num, hora);

    };

};


function inseri_roll_valide(current){

    function addRoll(roll, cor_num, hora, index){

        const rollResut = document.querySelector('.valide-roll');

        const ultimoRoll = rollResut.lastElementChild;

        const primeiroItem = ultimoRoll.children[index];

        primeiroItem.innerHTML = criete_div_roll(roll, cor_num, hora);

    }

    function createRoll(index, cel){

        var cor_num = '';
        var hora = horario(0, cel.created_at).split(':').slice(0, 2).join(':');

        if (parseInt(cel.color) == 0){cor_num = 'num-branco'};
        if (parseInt(cel.color) == 1){cor_num = 'num-red'};
        if (parseInt(cel.color) == 2){cor_num = 'num-black'};

        addRoll(cel.roll, cor_num, hora, index);

    };
    

    if (current[19].color == 0){

        if (current[17].color != 0 && current[18].color != 0){

            const result = current.slice(-3);

            for (var [index, cel] of result.entries()){

                createRoll(index, cel);
                
            };

            criete_coll_valide();

        };

    } else  if (current[18].color != 0 && current[19].color != 0){

        const result = current.slice(-2);

        for (var [index, cel] of result.entries()){

            createRoll(index, cel);
            
        };

        addRoll('?', 'num-null', '....', 2);

    };

};


async function fazerAposta(){

    console.log(1);



    const valo = await fetch(`http://localhost:3100/api/user/aposta?chave=${clientId}&branco=${TabelaEntradas.branco}&entrada=${TabelaEntradas.entrada}&valor=${TabelaEntradas.valor}`);

    const data = await valo.json();

    console.log(data);

};


async function veriNumBranco(config, valor){

    const valo = await fetch(`http://localhost:3100/api/atualiza/${config}?valor=${valor}`);
    
    const data = await valo.json();

    AtuConfig(data); fazerApostar()

};


async function criete_coll(){

    var div = document.getElementById('roll-resut-historic');

    const tempDiv = document.createElement('div'); 

    tempDiv.innerHTML = lista_roll_historic;
    tempDiv.setAttribute("class", `roll-resut`);

    // const listaRoll = tempDiv.firstElementChild;

    div.insertBefore(tempDiv, div.children[0]);
};


async function criete_coll_valide(){

    var div = document.getElementById('roll-resut-valide');

    const tempDiv = document.createElement('div'); 

    tempDiv.innerHTML = lista_roll_valide;
    tempDiv.setAttribute("class", `roll-resut`);

    // const listaRoll = tempDiv.firstElementChild;

    div.insertBefore(tempDiv, div.children[-1]);

    div.scrollTop = div.scrollHeight;

};


async function criar_tabela(resutado){

    // console_msg(resutado);

    var inicio = true; current_roll.value = resutado;

    for (var cel of resutado){

        if (inicio == true){
            
            if (horario(0, cel.created_at, true)[1] == '0' && parseInt(horario(0, cel.created_at).split(':')[2]) <= 29){

                inicio = false;
                var cor_num = '';
                var hora = horario(0, cel.created_at).split(':').slice(0, 2).join(':');

                await criete_coll();

                if (parseInt(cel.color) == 0){cor_num = 'num-branco'};
                if (parseInt(cel.color) == 1){cor_num = 'num-red'};
                if (parseInt(cel.color) == 2){cor_num = 'num-black'};

                // console.log(true, cel.color);

                const rollResut = document.querySelector('.roll-resut');

                const primeiroItem = rollResut.children[0];

                primeiroItem.innerHTML = criete_div_roll(cel.roll, cor_num, hora);

                // console.log(primeiroItem);

            };

        } else {

            inseri_roll(cel);

        };

    };


    const rollZero = resutado.map((item, index) => (item.roll === 0 ? index : -1)).filter((index, i, arr) => index !== -1 && (i === 0 || index !== arr[i - 1] + 1));

    const results = rollZero.map(index => { return index > 1 ? resutado.slice(index - 2, index + 1) : resutado.slice(0, index + 1); });
    
    for ( var result of results ){

        if ( result[0].color != 0 && result[1].color != 0 ){ 

            criete_coll_valide();

            for (var [index, cel] of result.entries()){

                var cor_num = '';
                var hora = horario(0, cel.created_at).split(':').slice(0, 2).join(':');

                if (parseInt(cel.color) == 0){cor_num = 'num-branco'};
                if (parseInt(cel.color) == 1){cor_num = 'num-red'};
                if (parseInt(cel.color) == 2){cor_num = 'num-black'};

                // console.log(index, cel.roll);

                const rollResut = document.querySelector('.valide-roll');

                const ultimoRoll = rollResut.lastElementChild;

                const primeiroItem = ultimoRoll.children[index];

                primeiroItem.innerHTML = criete_div_roll(cel.roll, cor_num, hora);
                
            };
            
        };

    };

    criete_coll_valide();
    
    var ultRoll = resutado.slice(-20); if (ultRoll[18].color != 0 && ultRoll[19].color != 0 ){ inseri_roll_valide(ultRoll); };

};



UserWallet();