let userData = "";

$(document).ready(function () {
    userData = JSON.parse(localStorage.getItem("userData"));
    FastClick.attach(document.body);
    setView();
    setEvents();
});

function setEvents() {

    $(".btnSalir").on("click", function () {
        cerrar();
    });

    $(".in").on("click", function () {
        fichar('in');
    });
    
    $(".inMiddle").on("click", function () {
        fichar('middle');
    });

    $(".outMiddle").on("click", function () {
        fichar('middle');
    });

    $(".out").on("click", function () {
        fichar('out');
    });

    setTimeout(function () {
        cerrar();
    }, 5000);
}

function setView() {
    $(".footer").hide();
    $("#txtNombre").text(userData["name"] + " " + userData["surname"]);
    getInfo();
    $("." + userData["button1"]).show();
    $("." + userData["button2"]).show();
}

function fichar(direction) {
    const data = {
        workerFk: userData['userFk'],
        direction
    }

    $.post({
        urlPath: 'WorkerTimeControls/clockIn',
        jsonData: data,
        processData: false,
        success: function (msg) {
            if (msg.error){
                printErrores(msg);
                setTimeout(function () {
                    cerrar();
                }, 2000);
            }else {
                $(".confirm").fadeIn(200);
                $(".txtConfirm").append('Fichada registrada correctamente');
                setTimeout(function () {
                    cerrar();
                }, 1000);
            }
        }
    });
}    

function setView() {
    $(".footer").hide();
    $(".in").hide();
    $(".inMiddle").hide();
    $(".outMiddle").hide();
    $(".out").hide();
    $("#txtNombre").text(userData["name"] + " " + userData["surname"]);
    getInfo();
    if(userData["button1"] === null && userData["button2"] === null ) {
        printError ("Contacta con tu responsable")
    } else {
        $("." + userData["button1"]).show();
        $("." + userData["button2"]).show();
    }
}

function getInfo() {
    const queryString = $.param({ workerFk: userData['userFk'] });
    
    $.get({
        urlPath: `WorkerTimeControls/getClockIn?${queryString}`,
        processData: false,
        success: function (data) {
            $('.footer').show();
            printTimetable(data);
        }
    });
}

function printTimetable(timetable) {
    const listWeekName = [
        'Domingo',
        'Lunes',
        'Martes',
        'Miércoles',
        'Jueves',
        'Viernes',
        'Sábado'
    ];;
    let dated = new Date();
    dated.setDate(dated.getDate() - 6);

    for (let i = 0; i < 6;  i++) {
        $(".listHorario").append('<label>' + listWeekName[dated.getDay()] +'</label>');
        dated.setDate(dated.getDate() + 1);
    }
   $(".listHorario").append('<label class="hoy">HOY</label>');
   $(".listHorario").append('<li class="hrTop"></li>');
   
    for (let i = 0; i < timetable.length; i++) {
         
        $(".listHorario").append(
            '<li>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["6daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["6daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["6daysAgo"]) + '</p>' +
                    '</div>' +
                '</div>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["5daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["5daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["5daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["4daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["4daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["4daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["3daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["3daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["3daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["2daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["2daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["2daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' + 
                '<div class="time ' + ifIsEmpty(timetable[i]["1daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["1daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["1daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' +
                '<div class="time ' + ifIsEmpty(timetable[i]["0daysAgo"]) + '">' +
                    '<div>' +
                        '<img src="' + ifIsEmptyImage(timetable[i]["0daysAgoDirection"]) + '" />' +
                        '<p>' + ifIsEmptyText(timetable[i]["0daysAgo"]) + '</p>'+
                    '</div>' +
                '</div>' +
            '</li>'
        );
    }
    printTotalHours(timetable);
}

function printTotalHours(timetable) {
    if(timetable.length > 0) {

        $(".listHorario").append('<hr>');
        $(".listHorario").append('<li><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["6daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["5daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["4daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["3daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["2daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["1daysAgoTotal"]))
                + ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["0daysAgoTotal"]))
                + ' h</div></li>');
    
        $(".total").text('Total: ' + 
            secondsToHm(
                Number(timetable[0]["6daysAgoTotal"] == null) +
                Number(timetable[0]["5daysAgoTotal"]) +            
                Number(timetable[0]["4daysAgoTotal"]) +
                Number(timetable[0]["3daysAgoTotal"]) +
                Number(timetable[0]["2daysAgoTotal"]) +
                Number(timetable[0]["1daysAgoTotal"]) +
                Number(timetable[0]["0daysAgoTotal"]) 
            ) + ' h');
    } else{
        $(".total").text('Total: 0h');     
    }

}

function printErrores(errores) {
    let error = '';
    for (let i = 0; i < errores.length; i++) {
        if (errores[i].error) {
           error += errores[i].error + "<br>";
        }
    }
    printError(error);
}

function ifIsEmpty(value) {
    if (value.trim().length === 0) {
        return "hide";
    } else {
        return "show";
    }
}

function ifIsEmptyImage(value) {
    if (value.trim().length === 0) {
        return "img/in.svg";
    } else {
        return "img/" + value + ".svg";
    }
}

function ifIsEmptyText(value = 0) {
    return value;
}

function cerrar(){
    localStorage.removeItem("userData");
    setTimeout(function () {
    window.location='index.html';
    }, 200);
}

function secondsToHm(seconds) {
    seconds = Number(seconds);
    let hours = Math.floor(seconds / 3600);
    let minutes = Math.floor(seconds % 3600 / 60);
    return hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0'); 
}