NisumCL / proyecto_calendario

0 stars 0 forks source link

DT - Normalizar idioma del código #17

Closed KiraElric closed 2 years ago

KiraElric commented 2 years ago
const fechaInicio = process.argv[2];
const fechaFin = process.argv[3];

const fecha1 = new Date(fechaInicio);
const fecha2 = new Date(fechaFin);

const cumpleanios = [];

function isValidDate(date) {
    let regex = new RegExp(
        /^([12]\d{3}\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01]))$/
    );
    let dateOk = regex.test(date);
    return dateOk;
}
if (isValidDate(fechaInicio) && isValidDate(fechaFin)) {
    console.log("Formato correcto");
} else if (!isValidDate(fechaInicio)) {
    console.log("Formato incorrecto de la primera fecha ingresada");
    return false;
} else if (!isValidDate(fechaFin)) {
    console.log("Formato incorrecto de la segunda fecha ingresada");
    return false;
} else {
    console.log("Formato de ambas fechas es invalido");
    return false;
}
const mostrar = (datos) => {
    for (i in datos) {
        const a = parseInt(i) + 1;
        console.log(a, ".- ", datos[i].cumpleanios, datos[i].apellido_y_nombre);
    }
};
const compararFecha = (fecha1, fecha2, cumple) => {
    mesCumple = parseInt(cumple[1]);
    diaCumple = parseInt(cumple[2]);
    if (
        mesCumple == fecha1.getMonth() + 1 &&
        mesCumple == fecha2.getMonth() + 1
    ) {
        if (diaCumple >= fecha1.getDate() && diaCumple <= fecha2.getDate()) {
            return true;
        }
    } else if (mesCumple === fecha1.getMonth() + 1) {
        if (diaCumple >= fecha1.getDate()) {
            return true;
        }
    } else if (mesCumple === fecha2.getMonth() + 1) {
        if (diaCumple <= fecha2.getDate()) {
            return true;
        }
    } else if (
        mesCumple > fecha1.getMonth() + 1 &&
        mesCumple < fecha2.getMonth() + 1
    ) {
        return true;
    }
    return false;
};
fs.createReadStream("mails_y_cumples_03.csv")
    .pipe(
        parse({
            delimiter: ",",
        })
    )
    .on("data", (dataRow) => {
        if (compararFecha(fecha1, fecha2, dataRow.cumpleanios.split("-"))) {
            cumpleanios.push(dataRow);
        }
    })
    .on("end", () => {
        mostrar(cumpleanios);
    });

Posibilidad de normalizar el idioma de las variables, para dejarlas todas en inglés.

KiraElric commented 2 years ago
function isValidDate(date) {
  const regex = /^([12]\d{3}\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01]))$/;
  const dateOk = regex.test(date);
  if (!dateOk) {
    // eslint-disable-next-line no-console
    console.log('Formato incorrecto', date);
  }
  return dateOk;
}

function dataFile(fileName) {
  // eslint-disable-next-line consistent-return
  const data = fs.readFileSync(fileName, 'utf-8', (err, file) => {
    if (err) {
      // eslint-disable-next-line no-console
      console.error(err);
    } else {
      return file;
    }
  });
  return data;
}

function formatedDataToObject(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: workerData[3],
        company: workerData[4],
      };
      return worker;
    });
  return dataFormated;
}

function show(data) {
  data.forEach(person => {
    // eslint-disable-next-line no-console
    console.log(`${person.birthday} => ${person.name} ${person.lastname}`);
  });
}

function dateComparison(date1, date2, birthday) {
  const birthdayMonth = parseInt(birthday[1], 10);
  const birthdayDay = parseInt(birthday[2], 10);
  if (birthdayMonth === date1.getMonth() + 1 && birthdayMonth === date2.getMonth() + 1) {
    if (birthdayDay >= date1.getDate() && birthdayDay <= date2.getDate()) {
      return true;
    }
  } else if (birthdayMonth === date1.getMonth() + 1) {
    if (birthdayDay >= date1.getDate()) {
      return true;
    }
  } else if (birthdayMonth === date2.getMonth() + 1) {
    if (birthdayDay <= date2.getDate()) {
      return true;
    }
  } else if (birthdayMonth > date1.getMonth() + 1 && birthdayMonth < date2.getMonth() + 1) {
    return true;
  }
  return false;
}

const startDate = process.argv[2];
const endDate = process.argv[3];

const date1 = new Date(startDate);
const date2 = new Date(endDate);

const filteredBirthdays = [];

try {
  if (isValidDate(startDate) && isValidDate(endDate)) {
    // Se va a trabajar la data ya leida y transformada en un objecto.
    const fileInfo = dataFile('./mails_y_cumples_03.csv');
    const workersData = formatedDataToObject(fileInfo);
    // eslint-disable-next-line no-console
    show(workersData);
  }
} catch (e) {
  // eslint-disable-next-line no-console
  console.log(e.message);
}

Normalización de idioma en el código.