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;