Closed aursog closed 2 years ago
//Función para transformat el input de fecha a tipo fecha con base el año actual
function convertToDate(inputDateString) {
const arrayInputDateString = inputDateString.split('/');
const date = new Date();
date.setFullYear(
date.getFullYear(),
parseInt(arrayInputDateString[1], 10) - 1,
parseInt(arrayInputDateString[2], 10)
);
date.setHours(0, 0, 0, 0);
return date;
}
//Funcion para convertir la fecha de cumpleaños a una fecha con base el año actual.
function matchThisYear(dateString) {
const arrayDateString = dateString.split('-');
const date = new Date();
date.setFullYear(
date.getFullYear(),
parseInt(arrayDateString[1], 10) - 1,
parseInt(arrayDateString[2], 10)
);
date.setHours(0, 0, 0, 0);
return date;
}
//Modificacion en la funcion para que la fecha de cumpleaños desde el archivo se guarda en el objeto como tipo fecha
function dataToObject(data) {
const dataFormated = data
.split('\n')
.splice(1)
.map(row => {
if (row === '') {
throw new Error('Existe una fila sin información. Favor eliminarla del archivo.');
}
const workerData = row.split(',');
const worker = {
name: workerData[1].replace('"', '').trim(),
lastname: workerData[0].replace('"', ''),
email: workerData[2],
birthday: matchThisYear(workerData[3]),
company: workerData[4],
};
return worker;
});
return dataFormated;
}
Se adicionan estas dos funciones en el archivo de converter.js, para llevar la fecha a año actual. Adicionalmente se define ya al momento de crear el objeto que la fecha de cumpleaños se guarde en el objeto como tipo fecha.
//Funcion que compara cual de las dos fechas es menor.
function biggerDate(firstDate, secondDate) {
const differenceDate = secondDate - firstDate;
return differenceDate >= 0;
}
//Funcion que filtra los cumpleaños segun las fechas establecidas
function filteredBirthdays(firstDate, secondDate, workersData) {
return workersData.filter(
worker => worker.birthday >= firstDate && worker.birthday <= secondDate
);
}
La funcion al final la dividimos en estas cuatro minifunciones, una para transformar los datos a objetos fechas, tanto el input como la que viene del archivo, para traer las fechas a este año, otra para comparar que fecha es menor y la ultima para filtrar los cumpleaños segun las fechas
Actualmente la comparación de las fechas en la rama main es:
Este código podría ser refactorizado tomando el día del año o llevando las fechas a año actual y haciendo un diff de ambas fechas.