Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const mysql = require("mysql");
- var pdf = require('html-pdf');
- function connectDB(options){
- return new Promise(function (resolve, reject){
- const conn = mysql.createConnection(options);
- conn.connect(function (err){
- if(err){
- reject(err);
- }
- resolve(conn);
- });
- });
- }
- function queryDB(conn, sql, data=null){
- return new Promise(function (resolve, reject){
- conn.query(sql, data, function(err, result){
- if(err){
- reject(err);
- }
- resolve(result);
- });
- });
- }
- function getAge(DOB) {
- var today = new Date();
- var birthDate = new Date(DOB);
- var age = today.getFullYear() - birthDate.getFullYear();
- var m = today.getMonth() - birthDate.getMonth();
- if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
- age = age - 1;
- }
- return age;
- }
- async function program(empId){
- const conn = await connectDB({
- host: "*.*.*.*",
- user: "",
- database: "",
- password: ""
- });
- let sql=`select *
- from employees
- join dept_emp
- on employees.emp_no = dept_emp.emp_no
- join departments
- on dept_emp.dept_no = departments.dept_no
- where employees.emp_no=?;`;
- let params = [empId];
- const [record] = await queryDB(conn, sql, params);
- if(!record){
- res.status(400).send({
- error: true,
- message: "NO existe el empleado..."
- });
- }
- //Número
- var numero = "Número de empleado: "+record.emp_no;
- //Nombre
- var nombre = "Nombre: "+record.last_name+", "+record.first_name;
- //Titulos
- var infoTitulos = "Títulos: <br>";
- query = 'SELECT * FROM titles WHERE emp_no=?;';
- const titulos = await queryDB(conn, query, params);
- titulos.forEach(titulo => {
- infoTitulos += "<br>"+titulo["title"]+" - Del "+titulo["from_date"].toISOString().slice(0,10)+" al "+titulo["to_date"].toISOString().slice(0,10);
- });
- //Departamento
- var departamento = "Departamento: "+record.dept_name;
- //Edad
- const age = getAge(record.birth_date);
- var edad = "Edad: " + age + " años";
- //Salarios
- var infoSalario = "Salarios: <br>";
- sql=`select * from salaries where emp_no=?;`;
- const salarios = await queryDB(conn, sql, params);
- conn.end();
- if(!salarios){
- res.status(400).send({
- error: true,
- message: "Nada en tabla salarios..."
- });
- return;
- }
- salarios.forEach(sal => {
- infoSalario += "<br>"+sal["from_date"].toISOString().slice(0,10)+" "+sal["to_date"].toISOString().slice(0,10)+" $"+sal["salary"], infoSalario;
- });
- const min = salarios.reduce(function(p,c){
- return p<c.salary?p:c.salary;
- }, Infinity);
- const max = salarios.reduce(function(p,c){
- return p>c.salary?p:c.salary;
- }, 0);
- var numSalarios = "Count: "+salarios.length;
- var minMax = "Min: $"+min+" \nMax: $"+max;
- var contenido = `
- <h1>REPORTE DE EMPLEADO</h1>
- <p>` + numero + `</p>
- <hr>
- <p>` + nombre + `</p>
- <hr>
- <p>` + infoTitulos + `</p>
- <hr>
- <p>` + departamento + `</p>
- <hr>
- <p>` + edad + `</p>
- <hr>
- <p>` + infoSalario + `</p>
- <p>` + numSalarios + `</p>
- <hr>
- <p>` + minMax + `</p>
- `;
- pdf.create(contenido).toFile('./reporte.pdf', function(err, res) {
- if (err){
- console.log(err);
- } else {
- console.log(res);
- }
- });
- }
- const empId = process.argv[2];
- program(empId);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement