nas-denar/routes/api.js
2017-09-14 20:06:51 +02:00

428 lines
17 KiB
JavaScript

var express = require('express');
var router = express.Router();
/*
* Postgres
*/
//var pg = require('pg');
var Pool = require('pg').Pool;
var config = {
user: 'matjaz',
password: 'mesnjak',
database: 'supervizor',
host: 'server.dev',
port: 5432,
max: 10,
idleTimeoutMillis: 30000,
};
var pool = new Pool(config);
var options = require('./dbconfig');
/* GET home page. */
router.get('/getprs/:davcna', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
pool.query('SELECT * FROM prs WHERE DAVCNA = $1 LIMIT 1', [req.params.davcna], function(err, odgovor) {
var vrniodgovor = {};
if(err) {
console.log('Napaka pri poizvedbi');
}
vrniodgovor.MATICNA = odgovor.rows[0].ma;
vrniodgovor.DAVCNA = odgovor.rows[0].davcna;
vrniodgovor.POPOLNO_IME = odgovor.rows[0].popolnoime;
vrniodgovor.OBLIKA = odgovor.rows[0].oblika;
vrniodgovor.ORGAN = odgovor.rows[0].organ;
vrniodgovor.POSTNA_STEVILKA = odgovor.rows[0].po;
vrniodgovor.HISNA_STEVILKA = odgovor.rows[0].hs;
vrniodgovor.DODATEK = odgovor.rows[0].dodatek || '';
vrniodgovor.UPRAVNA_ENOTA = odgovor.rows[0].upravnaenota;
vrniodgovor.REGIJA = odgovor.rows[0].regija;
vrniodgovor.OBCINA = odgovor.rows[0].obcina;
vrniodgovor.NASELJE = odgovor.rows[0].naselje;
vrniodgovor.ULICA = odgovor.rows[0].ulica;
vrniodgovor.POSTA = odgovor.rows[0].posta;
vrniodgovor.STATUS = odgovor.rows[0].status;
res.send(vrniodgovor);
})
});
router.get('/getrpu/:sifrapu', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
var vrniodgovor = {};
pool.query('SELECT * FROM rpu WHERE sifra_pu = $1 LIMIT 1', [req.params.sifrapu], function(err, odgovor) {
vrniodgovor.TIP = odgovor.rows[0].tip || 'Ni podatka';
vrniodgovor.SKUPINA = odgovor.rows[0].skupina || 'Ni podatka';
vrniodgovor.USTANOVITELJ = odgovor.rows[0].ustanovitelj || 'Ni podatka';
vrniodgovor.NAZIV = odgovor.rows[0].naziv || 'Ni podatka';
vrniodgovor.PODSKUPINA = odgovor.rows[0].podskupina || 'Ni podatka';
vrniodgovor.SIFRA_PU = odgovor.rows[0].sifra_pu || 'Ni podatka';
vrniodgovor.MATICNA = odgovor.rows[0].maticna || 'Ni podatka';
vrniodgovor.DAVCNA = odgovor.rows[0].davcna || 'Ni podatka';
vrniodgovor.KRAJ = odgovor.rows[0].kraj || 'Ni podatka';
vrniodgovor.OBCINA = odgovor.rows[0].obcina || 'Ni podatka';
vrniodgovor.SKD = odgovor.rows[0].skd || 'Ni podatka';
vrniodgovor.NASLOV = odgovor.rows[0].naslov || 'Ni podatka';
vrniodgovor.POSTNA_STEVILKA = odgovor.rows[0].postna_stevilka || 'Ni podatka';
vrniodgovor.POSTA = odgovor.rows[0].posta || 'Ni podatka';
vrniodgovor.EZR = odgovor.rows[0].ezr || 'Ni podatka';
vrniodgovor.SIFRA_PRORACUNA = odgovor.rows[0].sifra_proracuna || 'Ni podatka';
res.send(vrniodgovor);
})
});
router.get('/getlocation/:davcna', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
var vrniodgovor = {};
pool.query('SELECT * FROM lokacija WHERE davcna_stevilka = $1 LIMIT 1', [req.params.davcna], function(err, odgovor) {
vrniodgovor.DAVCNA = odgovor.rows[0].davcna_stevilka.toString();
vrniodgovor.LONGITUDE = odgovor.rows[0].longitude.toString();
vrniodgovor.LATITUDE = odgovor.rows[0].latitude.toString();
res.send(vrniodgovor);
})
});
router.get('/getdupu/organ/:sifrapu/podj/:davcna', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
pool.query('SELECT sum(vsota_prejemkov) STOLPIC, leto, mesec FROM dupu WHERE sifra_pu = $1 AND davcna_stevilka = $2 GROUP BY leto, mesec', [req.params.sifrapu, req.params.davcna], function (err, transResult) {
var date = new Date();
var mesec = date.getMonth() + 1;
var leto = date.getFullYear();
var vsehMesecev = (leto - 2003) * 12 + mesec;
var stolpci = [];
for (var i = 0; i < vsehMesecev; i++) {
stolpci.push(0);
}
for (var j = 0; j < transResult.rows.length; j++) {
stolpci[((transResult.rows[j].leto - 2003) * 12 + transResult.rows[j].mesec) - 1] = transResult.rows[j].stolpic;
}
res.send(stolpci);
})
});
router.get('/getsums/organ/:sifrapu/podj/:davcna', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
pool.query('SELECT sum(vsota_prejemkov) STOLPIC, leto, mesec FROM dupu WHERE sifra_pu = $1 AND davcna_stevilka = $2 GROUP BY leto, mesec', [req.params.sifrapu, req.params.davcna], function (err, transResult) {
var date = new Date();
var mesec = date.getMonth() + 1;
var leto = date.getFullYear();
var vsehMesecev = (leto - 2003) * 12 + mesec;
var stolpci = [];
for (var i = 0; i < vsehMesecev; i++) {
stolpci.push(0);
}
for (var j = 0; j < transResult.rows.length; j++) {
indexStolpca = (((transResult.rows[j].leto) - 2003) * 12 + transResult.rows[j].mesec) - 1;
stolpci[indexStolpca] = transResult.rows[j].stolpic;
}
res.send(stolpci);
})
});
router.get('/getujp/organ/:sifrapu/podj/:davcna', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
pool.query('SELECT ujp.podracun_v_breme, (extract(day FROM ujp.datum_transakcije) || \'.\' || extract(month FROM ujp.datum_transakcije) || \'.\' || extract(year FROM ujp.datum_transakcije)) DATUM, ujp.znesek_transakcije, ujp.oznaka_valute_transakcije, ujp.racun_v_dobro, ujp.kratko_ime, ujp.davcna_stevilka, ujp.davcna_stevilka, ujp.sifra_pu, ujp.identifikator, ujp.maticna_stevilka, ujp.namen, rpu.naziv NAZIV_JS, prs.popolnoime NAZIV_ZS FROM ujp LEFT JOIN rpu ON ujp.sifra_pu = rpu.sifra_pu LEFT JOIN prs ON ujp.davcna_stevilka = prs.davcna WHERE ujp.sifra_pu = $1 and ujp.davcna_stevilka = $2 ORDER BY ujp.datum_transakcije DESC;', [req.params.sifrapu, req.params.davcna], function (err, result) {
if(err) {
console.log('Napaka ...'+err);
}
var odgovor = {}
odgovor.data = result.rows
res.send(odgovor);
});
});
function daysInMonth(month, year) {
return new Date(year, month, 0).getDate();
}
router.get('/getujp/organ/:sifrapu/podj/:davcna/mesec/:mesecid', function (req, res, next) {
if(!req.params.id) req.params.id = 0;
var leto = Math.round((req.params.mesecid - (req.params.mesecid%12)) / 12);
var mesec = req.params.mesecid - (12 * leto)+1; //ker dobimo 0 based vrednost, rabimo pa številko meseca
leto = leto+2003;
pool.query('SELECT ujp.podracun_v_breme, (extract(day FROM ujp.datum_transakcije) || \'.\' || extract(month FROM ujp.datum_transakcije) || \'.\' || extract(year FROM ujp.datum_transakcije)) DATUM, ujp.znesek_transakcije, ujp.oznaka_valute_transakcije, ujp.racun_v_dobro, ujp.kratko_ime, ujp.davcna_stevilka, ujp.sifra_pu, ujp.identifikator, ujp.maticna_stevilka, ujp.namen, rpu.naziv NAZIV_JS, prs.popolnoime NAZIV_ZS FROM ujp LEFT JOIN rpu ON CAST(ujp.sifra_pu AS TEXT) = rpu.sifra_pu LEFT JOIN prs ON CAST(ujp.davcna_stevilka AS TEXT) = prs.davcna WHERE ujp.sifra_pu = $1 and ujp.davcna_stevilka = $2 AND extract(month FROM datum_transakcije) = $3 AND extract(year FROM datum_transakcije) = $4 ORDER BY ujp.datum_transakcije DESC', [req.params.sifrapu, req.params.davcna, mesec, leto], function (err, result) {
if(err) {
console.log('Napaka ...');
}
var odgovor = {}
odgovor.data = result.rows
res.send(odgovor);
});
});
router.get('/getdupu/podj/:davcna', function(req, res, next) {
pool.query('SELECT dupu.sifra_pu, rpu.naziv NAZIV_JS, dupu.davcna_stevilka, prs.popolnoime NAZIV_ZS, sum(vsota_prejemkov) VSOTA_PREJEMKOV, sum(nepovratna_sredstva) NEPOVRATNA_SREDSTVA, sum(fiduciarni_posli) FIDUCIARNI_POSLI FROM dupu LEFT JOIN rpu ON dupu.sifra_pu = rpu.sifra_pu LEFT JOIN prs ON CAST(dupu.davcna_stevilka AS TEXT) = prs.davcna WHERE dupu.davcna_stevilka = $1 GROUP BY dupu.sifra_pu, dupu.davcna_stevilka, NAZIV_JS, NAZIV_ZS ORDER BY VSOTA_PREJEMKOV DESC;', [req.params.davcna], function (err, result) {
if(err) {
throw err;
}
var odgovor = {}
odgovor.data = result.rows
res.send(odgovor)
});
});
router.get('/getdupu/organ/:sifrapu', function(req, res, next) {
pool.query('SELECT dupu.sifra_pu, naziv NAZIV_JS, dupu.davcna_stevilka, prs.popolnoime NAZIV_ZS, sum(vsota_prejemkov) VSOTA_PREJEMKOV, sum(nepovratna_sredstva) NEPOVRATNA_SREDSTVA, sum(fiduciarni_posli) FIDUCIARNI_POSLI FROM dupu LEFT JOIN rpu ON dupu.sifra_pu = rpu.sifra_pu LEFT JOIN prs ON CAST(dupu.davcna_stevilka AS TEXT) = prs.davcna WHERE dupu.sifra_pu = $1 GROUP BY dupu.davcna_stevilka, dupu.sifra_pu, NAZIV_JS, NAZIV_ZS ORDER BY VSOTA_PREJEMKOV DESC;', [req.params.sifrapu], function (err, result) {
if(err) {
throw err;
}
var odgovor = {}
odgovor.data = result.rows
res.send(odgovor)
});
});
router.get('/getskis/podj/:davcna', function (req, res, next) {
pool.query('SELECT skis.skis, skis_sifrant.deskriptor_si FROM skis LEFT JOIN skis_sifrant ON skis.skis = skis_sifrant.skis WHERE maticna = (SELECT prs.ma FROM prs WHERE prs.davcna = $1 LIMIT 1) LIMIT 1', [req.params.davcna], function (err, skis) {
if(err) {
throw err;
}
res.send(skis.rows)
});
});
router.get('/getskis/organ/:sifra_pu', function (req, res, next) {
pool.query('SELECT skis.skis, skis_sifrant.deskriptor_si FROM skis LEFT JOIN skis_sifrant ON skis.skis = skis_sifrant.skis WHERE maticna = (SELECT rpu.maticna FROM rpu WHERE rpu.şifra_pu = $1 LIMIT 1) LIMIT 1', [req.params.sifra_pu], function (err, skis) {
if(err){
throw err;
}
res.send(skis.rows)
});
});
router.get('/priljubljenaPodj/:davcne', function (req, res, next) {
var davcneStevilke = req.params.davcne
davcneStevilke = ("'"+davcneStevilke.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
poizvedba = 'SELECT popolnoime, davcna from prs where davcna in ('+davcneStevilke+') order by davcna asc;'
console.log(poizvedba)
pool.query(poizvedba, function (err, result) {
if(err) {
throw err;
}
var odgovor = {}
odgovor.data = result.rows;
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/priljubljenaPodjSums/:davcne', function (req, res, next) {
var davcneStevilke = req.params.davcne
davcneStevilke = ("'"+davcneStevilke.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
poizvedba = 'SELECT davcna_stevilka, sum(vsota_prejemkov) STOLPIC, leto, mesec FROM dupu WHERE davcna_stevilka in ('+davcneStevilke+') GROUP BY davcna_stevilka, leto, mesec;'
poizvedbaImenaPodjetja = 'SELECT davcna, popolnoime FROM prs WHERE davcna IN ('+davcneStevilke+') ORDER BY davcna ASC;'
console.log(poizvedba)
console.log(poizvedbaImenaPodjetja)
pool.query(poizvedba, function (err, transResult) {
if(err) {
throw err;
}
//console.log(transResult.rows)
var date = new Date();
var mesec = date.getMonth() + 1;
var leto = date.getFullYear();
var vsehMesecev = (leto - 2003) * 12 + mesec;
var davcne = davcneStevilke.split(',')
//davcne.sort('asc');
var rezultati = []
var imena = []
for (var k = 0; k < davcne.length; k++) {
var stolpci = [];
for (var i = 0; i < vsehMesecev; i++) {
stolpci.push(0);
}
for (var j = 0; j < transResult.rows.length; j++) {
if(transResult.rows[j].davcna_stevilka.toString().replace(/'/g, '').replace(/"/g, '') == davcne[k].toString().replace(/'/g, '').replace(/"/g, '')) {
stolpci[(transResult.rows[j].leto - 2003) * 12 + transResult.rows[j].mesec-1] = transResult.rows[j].stolpic;
}
}
rezultati.push(stolpci);
}
var odgovor = {}
odgovor.data = rezultati;
odgovor.seti = davcne.length;
odgovor.davcne = davcne;
pool.query(poizvedbaImenaPodjetja, function(err, imena) {
if(err) {
throw err;
}
odgovor.imena = imena.rows
res.send(odgovor)
})
})
})
router.get('/priljubljeniOrgani/:sifrepu', function (req, res, next) {
var sifrePU = req.params.sifrepu
sifrePU = ("'"+sifrePU.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
poizvedba = 'SELECT naziv, sifra_pu from rpu where sifra_pu in ('+sifrePU+') order by sifra_pu asc;'
console.log(poizvedba)
pool.query(poizvedba, function (err, result) {
if(err) {
throw err;
}
var odgovor = {}
odgovor.data = result.rows;
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/priljubljeniOrganiSums/:sifrepu', function (req, res, next) {
var sifrePU = req.params.sifrepu
sifrePU = ("'"+sifrePU.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
console.log('sifrePU: '+sifrePU)
poizvedba = 'SELECT sifra_pu, sum(vsota_prejemkov) STOLPIC, leto, mesec FROM dupu WHERE sifra_pu in ('+sifrePU+') GROUP BY sifra_pu, leto, mesec;'
poizvedbaImena = 'SELECT sifra_pu, naziv FROM rpu WHERE sifra_pu IN ('+sifrePU+') ORDER BY sifra_pu ASC;'
console.log(poizvedba)
pool.query(poizvedba, function (err, transResult) {
if(err) {
throw err;
}
//console.log(transResult.rows)
var date = new Date();
var mesec = date.getMonth() + 1;
var leto = date.getFullYear();
var vsehMesecev = (leto - 2003) * 12 + mesec;
var sifre = sifrePU.split(',')
//sifre.sort('asc');
var rezultati = []
var imena = []
for (var k = 0; k < sifre.length; k++) {
var stolpci = [];
for (var i = 0; i < vsehMesecev; i++) {
stolpci.push(0);
}
for (var j = 0; j < transResult.rows.length; j++) {
if(transResult.rows[j].sifra_pu.toString().replace(/'/g, '').replace(/"/g, '') == sifre[k].toString().replace(/'/g, '').replace(/"/g, '')) {
stolpci[(transResult.rows[j].leto - 2003) * 12 + transResult.rows[j].mesec-1] = transResult.rows[j].stolpic;
}
}
rezultati.push(stolpci);
}
var odgovor1 = {}
odgovor1.data = rezultati;
odgovor1.seti = sifre.length;
odgovor1.sifrepu = sifre;
pool.query(poizvedbaImena, function(err, imena) {
if(err) {
throw err;
}
odgovor1.imena = imena.rows
res.send(odgovor1)
})
})
})
router.get('/statistike/prsporegijah', function (req, res, next) {
pool.query('select count(*) stevilo, regija from prs where status = \'aktivno\' group by regija order by 1 desc;', function (err, result) {
if(err) {
throw err;
}
var odgovor = {}
odgovor.data = result.rows;
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/statistike/prsporegijahgraf', function (req, res, next) {
pool.query('select count(*) stevilo from prs where status = \'aktivno\' and regija is not null group by regija order by regija asc;', function (err, result) {
if(err) {
throw err;
}
var odgovor = []
for(var i = 0; i < result.rows.length; i++) {
odgovor.push(result.rows[i].stevilo)
}
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/statistike/ljseindex', function (req, res, next) {
pool.query('select (extract(day from datum) || \'.\' || extract(month from datum) || \'.\' || extract(year from datum)) moj_datum, cast(value as text) from ljse_index where datum is not null and value is not null order by datum asc limit 300;', function (err, result) {
if(err) {
throw err;
}
var odgovor = {
datumi: [],
vrednosti: []
}
for(var i = 0; i < result.rows.length; i++) {
odgovor.datumi.push(result.rows[i].moj_datum)
odgovor.vrednosti.push(result.rows[i].value)
}
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/priljubljenaPodjSestevki/:davcne', function (req, res, next) {
var davcneStevilke = req.params.davcne
davcneStevilke = ("'"+davcneStevilke.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
poizvedba = 'select davcna_stevilka, sum(vsota_prejemkov) vsota, popolnoime from dupu left join prs on cast(davcna_stevilka as varchar) = davcna where davcna_stevilka in ('+davcneStevilke+') group by davcna_stevilka, popolnoime;'
console.log(poizvedba)
pool.query(poizvedba, function (err, result) {
if(err) {
throw err;
}
var odgovor = {
podjetje: [],
znesek: [],
davcna: []
}
for(var i = 0; i < result.rows.length; i++) {
odgovor.podjetje.push(result.rows[i].popolnoime)
odgovor.znesek.push(result.rows[i].vsota)
odgovor.davcna.push(result.rows[i].davcna_stevilka)
}
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/priljubljeniOrganiSestevki/:sifrepu', function (req, res, next) {
var sifrePU = req.params.sifrepu
sifrePU = ("'"+sifrePU.toString().replace(/,/g, "','")+"'").replace(/[^\d,\']/g, '')
poizvedba = 'select dupu.sifra_pu, sum(vsota_prejemkov) vsota, naziv from dupu left join rpu on cast(dupu.sifra_pu as varchar) = rpu.sifra_pu where dupu.sifra_pu in ('+sifrePU+') group by dupu.sifra_pu, naziv;'
console.log(poizvedba)
pool.query(poizvedba, function (err, result) {
if(err) {
throw err;
}
var odgovor = {
organ: [],
znesek: [],
sifrapu: []
}
for(var i = 0; i < result.rows.length; i++) {
odgovor.organ.push(result.rows[i].naziv)
odgovor.znesek.push(result.rows[i].vsota)
odgovor.sifrapu.push(result.rows[i].sifra_pu)
}
res.send(odgovor)
console.log(result.rows[0])
})
})
router.get('/delnice/:davcna', function(req, res, next) {
pool.query('SELECT * FROM delnice WHERE davcna = $1', [req.params.davcna], function(err, result) {
if(err) {
throw(err)
}
if(typeof(result.rows) != 'undefined') {
res.send(result.rows[0])
}
})
})
module.exports = router;