All files / src/core proximafechahabil.ts

100% Statements 19/19
100% Branches 4/4
100% Functions 1/1
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39  1x 1x 1x               1x 18x   18x   15x 15x 15x 15x 15x 52x 52x 27x   52x 15x   52x   15x   3x            
import { CodigoFormatoFecha, FormatoFeriados, ErroresComunes } from "../constants";
import { validarFecha } from "./validarfecha";
import { addDias } from "./proximafecha";
import { isHabil } from "./diahabil";
 
/**
 * @param fecha 
 * @param cantidadDiazHabiles 
 * @param listaFeriados
 * Obtiene una nueva fecha hábil, dados una fecha válida y un listado de feriados, al sumar o restar días hábiles.
 */
export function addDiasHabiles( fecha: string, cantidadDiazHabiles: number, listaFeriados: FormatoFeriados[] ): string { 
    try {
 
        validarFecha(fecha);
        
        let siguienteFecha: string = '';
        let habil:boolean = false;
        let sgteDia: number = 1;
        let match: number = 0;
        while(!habil){
            siguienteFecha = addDias(fecha, sgteDia);
            if (isHabil(siguienteFecha, listaFeriados)){
                match += 1;
            }
            if (cantidadDiazHabiles === match){ 
                habil = true; 
            }
            sgteDia += 1;
        }
        return siguienteFecha;
    } catch (error) {
        throw (error)
    }
 
}