ixamy / RF_dailyBonuses

// ==UserScript==
// @name         RF_dailyBonuses
// @namespace    none
// @version      1.0
// @description  Brinda informacion util y resumida en el historial de tu portal Rainforest
// @author       ixamy
// @match        http*://portal.rainforestqa.com/jobs*
// @grant        GM_notification
// @updateURL    https://openuserjs.org/meta/ixamy/RF_dailyBonuses.meta.js
// @license      MIT
// ==/UserScript==

(function() {
    var idioma="navigator.language"; //reservado del lenguaje para determinar idioma del navegador.
    var tabla;
    var tbody;
    var fila;
    var celda;
    var celda5;
    var celda6;
    var prueba1;
    var prueba2;
    var dato;
    var i = 0;
    var fechaHoy;
    var nuevaFecha = new Date();
    var nuevaHora = new Date();
    var bonus = 0;
    var texto;
    var titulo;
    var dia;
    var diaAyer;
    var mes;
    var x;
    var z = 0;
    var url = window.location.href;
    var totalBono;
    var training = 0;
    var fila2;
    var celda2;
    var celda3;
    var dato3;
    var g=0;
    var total = 0;
    var recuento;
    var dato5;

    //Establece 100 filas en la hoja actual
    if(!url.includes("&page_size=100")) {
        var url_cien = url + "&page_size=100";
        window.location.href = url_cien;
        return;
    }

    //Determina la hora actual con formato UTC
    var hora = nuevaHora.getUTCHours();
    var minutos = nuevaHora.getUTCMinutes();

    //Determina la fecha actual con el formato correcto de la columna "Job Date"
    fechaHoy = nuevaFecha.getUTCFullYear();
    //fechaHoy += (nuevaFecha.getUTCMonth() + 1) + "-";
    dia = nuevaFecha.getUTCDate();
    /*diaAyer = dia;
    if(dia == 1 && ( mes == 1 || mes == 2 || mes == 4 || mes == 6 || mes == 8 || mes == 9 || mes == 11)){
        diaAyer = 31;
    }
    if(dia == 1 && ( mes == 5 || mes == 7 || mes == 10 || mes == 12)){
        diaAyer = 30;
    }
    if(dia == 1 && mes == 3){
        diaAyer = 28;
    }else {
        diaAyer -= 1;} << Implementar mas adelante historial de un dia para atras */

    mes = nuevaFecha.getUTCMonth() + 1;

    //Corrige el formato del día xx-xx-01, xx-xx-02...
    for(x = 1; x < 10; x++){
        if(dia == x){
            dia = "0" + x;
            break;
        }
    }

    /*//Corrige el formato del día (ayer) xx-xx-01, xx-xx-02...
    for(x = 1; x < 10; x++){
        if(diaAyer == x){
            diaAyer = "0" + x;
            break;
        }
    }*/

    //Corrige el formato del mes xx-01-xx, xx-02-xx...
    for(m = 1; m < 10; m++){
        if(mes == m){
            mes = "0" + m;
            break;
        }
    }

    //Fecha actual almacenada en variable "dia"
    fechaHoy = fechaHoy + "-" + mes + "-" + dia;
    //fechaAyer = nuevaFecha.getUTCFullYear() + "-" + mes + "-" + diaAyer;

    tabla = document.getElementsByTagName("table")[1];
    tbody = tabla.getElementsByTagName("tbody")[0];
    //Lee cada fila de la tabla buscando los HITs de la fecha actual
    while(i < 100){ //Cada pagina tiene 100 lineas
        fila = tbody.getElementsByTagName("tr")[i];
        celda = fila.getElementsByTagName("td")[1];
        celda2 = fila.getElementsByTagName("td")[6];//Extrae los cents pagados (ultima fila)
        celda3 = fila.getElementsByTagName("td")[5];//Verifica si existe saldo pendiente
        dato = celda.firstChild.nodeValue;
        dato5 = celda3.firstChild.nodeValue;
        dato3 = (celda2.firstChild.nodeValue);
        recuento = dato3.split("c");
        dato3 = dato3.split("");//Esta linea convirte el dato de la ultima fila en array (ej: 24c = 2,4,c,)
        dato3 = [dato3];
        if(dato == fechaHoy){//Si el HIT es de hoy
            bonus += 1;
            tmp = dato3[0].length - 2;
            tmp = dato3[0][tmp];
            if(tmp != "c" && dato5[1] == "—"){//Si es training job
                training += 1;
            }
            if(tmp == "c"){//Si NO es Training Job
                recuento = parseInt(recuento);
                recuento = ((recuento-(recuento*0.25))/100);
                total += recuento;
            }
        }
        i += 1;
    }
    total = total.toFixed(2);//Almacena la ganacia total del día

    if(bonus >= 10 && bonus < 100){
        totalBono = (total*0.10).toFixed(2);//Calcula el 10% de la ganacia total
        if(idioma == "en"){
            texto = "Bonus: 10% reaching, $" + totalBono + ".\nUntil now you have " + (bonus-training) + " HITs & " +  training + " tests.\nGain: $" + total + "\n\nNext restart in " + (23 - hora) + " hours and " + (60 - minutos) + " minutes.";
        } else {
            texto = "Bono: 10% alcanzado, $" + totalBono + ".\nHasta ahora tienes " + (bonus-training) + " HITs y " +  training + " pruebas.\nGanancia: $" + total + "\n\nProximo reinicio en " + (23 - hora) + " horas y " + (60 - minutos) + " minutos.";
        }
    }
    if(bonus >= 100){
        totalBono = (total*0.20).toFixed(2);//Calcula el 20% de la ganacia total
        if(idioma == "en"){
            texto = "Bonus: 20% reaching, $" + totalBono + ".\nUntil now you have " + (bonus-training) + " HITs & " +  training + " tests.\nGain: $" + total + "\n\nNext restart in " + (23 - hora) + " hours and " + (60 - minutos) + " minutes.";
        } else {
            texto = "Bono: 20% alcanzado, $" + totalBono + ". \nHasta ahora tienes " + (bonus-training) + " HITs y " +  training + " pruebas.\nGanancia: $" + total + "\n\nProximo reinicio en " + (23 - hora) + " horas y " + (60 - minutos) + " minutos.";
        }
    }
    if(bonus < 100 && bonus < 10 ){
        if(idioma == "en"){
            texto = "HITs: " + (bonus-training) + " | Just " + (10 - bonus) + " to reaching the 10% bonus.\nTests: " + training + " | Gain: $" + total + "\n\nNext restart in " + (23 - hora) + " hours and " + (60 - minutos) + " minutes.";
        } else {
            texto = "HITs: " + (bonus-training) + " | Restan " + (10 - bonus) + " para el bono de 10%\nPruebas: " + training + " | Ganancia: $" + total + "\n\nProximo reinicio en " + (23 - hora) + " horas y " + (60 - minutos) + " minutos.";
        }
    }
    if(idioma == "en"){
        titulo = "Daily Bonuses for ";
    } else {
        titulo = "Bono diario para el ";
    }

    GM_notification({
        title: titulo + fechaHoy,
        text: texto,
        image: "http://image.prntscr.com/image/2fc8f4257d86482681223bdcfb4170fd.png",
        timeout: 100100
    });
})();