﻿import React from 'react';
import { Route } from 'react-router-dom';


export const play= (url) => {
    return new Promise(function (resolve, reject) { // return a promise
        var audio = new Audio();                     // create audio wo/ src
        audio.preload = "auto";                      // intend to play through
        audio.autoplay = true;                       // autoplay when loaded
        audio.onerror = reject;                      // on error, reject
        audio.onended = resolve;                
        audio.src = url
    });
}

//pResponse = Respuesta desde negocio
export const Response = (pResponse) => { //Then     
    NProgress.done()
    $("#overlay").hide();    
    if (pResponse.data == null) {        
        return { data: [], isError: false }; //No hay datos
    } else
        if (Array.isArray(pResponse.data)) {            
            return { data: pResponse.data, isError: false };
        } else
            if ((typeof pResponse.data === "object") && (pResponse.data !== null) && pResponse.data.Errores == undefined) {                
                return { data: pResponse.data, isError: false };
            } else
                if (pResponse.data.Errores != undefined) {                    
                    return { data: pResponse.data.Errores[0].MensajeError, isError: true };
                } else
                    if (pResponse.data.indexOf('Error') !== -1) { //Entra a Exception                        
                        return { data: pResponse.data, isError: true };
                    } else {                        
                        return { data: pResponse.data, isError: false };
                    }    
}
//pError = Mensaje de la exception desde negocio
export const Error = (pError) => { //Catch       
    NProgress.done();
    $("#overlay").hide();        
    return { data: pError, isError: true };
}

//agregar cantidad de ceros
export const PadString = (n, l) => {
    var s = '' + n;
    while (s.length < l) {
        s = '0' + s;
    }    
    return s;
}

export const ErrorBeep = () => {
    document.getElementById("error-beep").play();        
    //play("Public/sounds/error-beep.mp3");
}

export const SuccessBeep = () => {
    document.getElementById("success-beep").play();
    //play("Public/sounds/success-beep.mp3");
}

//n= numero float, d=cantidad de decimales
export const round = (n, d) => {
    if (d == 0) {
        return Math.round(n)
    } else
        if (d == 1) {
            return Math.round(n * 10) / 10;
        } else
            return Math.round(n * 100) / 100;
}

//s= cantidad de segundos
export const toHHMMSS = (s) => {  

    var fm = [
        Math.floor(s / 60 / 60 / 24), // DAYS
        Math.floor(s / 60 / 60) % 24, // HOURS
        Math.floor(s / 60) % 60, // MINUTES
        s % 60 // SECONDS
    ];

    return fm.map((v, i) => {
        if (i == 0 && v == 0) { // Si no tiene dias se omite el 00:
            return '';
        } else {
            if (i == 3) {
                return (((v < 10) ? '0' : '') + v.toString());
            } else {
                return (((v < 10) ? '0' : '') + v.toString()) + ":";
            }
        }
    });    
}

export const  toAMPM = (time)=> {
    time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];
    if (time.length > 1) { 
        time = time.slice(1);  
        time[5] = +time[0] < 12 ? ' AM' : ' PM';
        time[0] = +time[0] % 12 || 12; 
    }
    return time.join(''); 
}

export function RouteWithSubRoutes(route, validarMenuOpcion) {
    return (
        <Route
            path={route.path}
            render={props => (
                <route.component {...props} routes={route.routes} validarMenuOpcion={validarMenuOpcion}/>
            )}
        />
    );
}

