Created
September 4, 2017 11:38
-
-
Save rastermanden/92fd0dcb6687bd24e0cf21189a63cdff to your computer and use it in GitHub Desktop.
tinglysning_func.sql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| DROP function IF EXISTS get_tinglysning_uuid(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text); | |
| CREATE OR REPLACE FUNCTION get_tinglysning_uuid(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text) | |
| RETURNS json AS | |
| $BODY$ | |
| from urllib2 import urlopen | |
| #from simplejson import loads | |
| import urllib | |
| ## need to set inputarguments as global variables | |
| global doer | |
| global etage | |
| if doer =='%20': | |
| etage=' ' | |
| #plpy.info(" ========= EXTRA-module result: ===",doer) | |
| ###urlparams ### | |
| host='https://www.tinglysning.dk/rest/soeg/{}%20{}%20{}%20{}%20{}%20{}?'.format(vejnavn, husnummer, etage, doer, postnummer, supplerendebynavn) | |
| host=host.replace(' ', '%20') | |
| f = (host) | |
| f = urllib.quote_plus(f, safe="%/:=&?~#+!$,;'@()*[]") | |
| #plpy.info(" ========= EXTRA-module result: ===",f) | |
| try: | |
| json = urlopen(f).read() | |
| except: | |
| return | |
| ### all went pretty well with basic http and start parsing response values### | |
| #a =json.loads(json) | |
| return json | |
| $BODY$ | |
| LANGUAGE plpythonu VOLATILE | |
| COST 100; | |
| DROP function IF EXISTS get_tinglysning(uuid text, bog text); | |
| CREATE OR REPLACE FUNCTION get_tinglysning(uuid text, bog text ) | |
| RETURNS json AS | |
| $BODY$ | |
| from urllib2 import urlopen | |
| #from simplejson import loads | |
| import urllib | |
| ## need to set inputarguments as global variables | |
| global bog | |
| ###urlparams ### | |
| if bog == 'Tingbog': | |
| host='https://www.tinglysning.dk/rest/ejendom/{}?'.format(uuid) | |
| if bog == 'Andelsboligbog': | |
| host='https://www.tinglysning.dk/rest/andelsbolig/{}?'.format(uuid) | |
| f = (host) | |
| f = urllib.quote_plus(f, safe="%/:=&?~#+!$,;'@()*[]") | |
| #plpy.info(" ========= EXTRA-module result: ===",f) | |
| try: | |
| json = urlopen(f).read() | |
| except: | |
| return | |
| ### all went pretty well with basic http and start parsing response values### | |
| return json | |
| $BODY$ | |
| LANGUAGE plpythonu VOLATILE | |
| COST 100; | |
| DROP FUNCTION IF EXISTS tinglysning(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text) ; | |
| CREATE OR REPLACE FUNCTION tinglysning(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text) | |
| RETURNS TABLE(tinglysnings_id uuid, bog text, statuskode integer, adresse text,ejendomstype text,landsejerlavskode text, matrikelnummer text, ejendomsnummer integer, ejendomsvaerdi integer, grundvaerdi integer, vurderingsdato date, ejer_andel text,ejer text, haeftelse_id uuid, dato date, haeftelsestype text, hovedstol text,rente text, fastvariabel text,kreditorer text,url text) | |
| AS | |
| $$ | |
| DECLARE | |
| has_id uuid := NULL; | |
| has_ejd integer:= NULL; | |
| bog text:= NULL; | |
| jsonresp json:=NULL; | |
| has_ejd_resp json:=NULL; | |
| BEGIN | |
| --has_id= (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), replace($3, ' ', '%20'),replace($4, ' ', '%20'),replace($5, ' ', '%20'),replace($6, ' ', '%20'))::json->'items'->0->>'uuid'); | |
| jsonresp=(SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), replace($3, ' ', '%20'),replace($4, ' ', '%20'),replace($5, ' ', '%20'),replace($6, ' ', '%20'))::json); | |
| has_id=(select jsonresp->'items'->0->>'uuid'); | |
| bog=(select jsonresp->'items'->0->>'bog'); | |
| ---Statuskode 8: for mange foresprøgsler skal håndteres | |
| --RAISE NOTICE 'has_i:%', has_id; | |
| --RAISE NOTICE 'bog % ', ejd_type; | |
| --RAISE NOTICE 'Calling cs_create_job(%)', jsonresp; | |
| IF has_id IS NULL THEN | |
| --RETURN QUERY SELECT '','',''; | |
| RETURN QUERY SELECT * FROM (SELECT NULL::uuid, NULL::text,NULL::integer,NULL::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text) foo; | |
| RETURN; | |
| END IF; | |
| --has_ejd= (SELECT ((SELECT get_tinglysning(has_id::text,bog))->>'statuskode')::integer as statuskode); | |
| has_ejd_resp= (SELECT get_tinglysning(has_id::text,bog)); | |
| has_ejd =((select has_ejd_resp->>'statuskode')::integer); | |
| RAISE NOTICE 'resp % ', has_ejd_resp; | |
| RAISE NOTICE 'has ejendom % ', has_ejd; | |
| IF has_ejd=1 THEN | |
| RETURN QUERY SELECT * FROM (SELECT NULL::uuid,1::integer,bog,'Ejendom kan ikke findes i tinglysning'::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text,'IKKE FUNDET'::text) foo; | |
| RETURN; | |
| END IF; | |
| --has_id= (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid'); | |
| --RAISE EXCEPTION 'Exception notice: %', has_id; | |
| --INSERT INTO has_id (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid'); | |
| --IF (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid') IS NULL THEN | |
| -- RETURN QUERY SELECT NULL::uuid,NULL::integer,NULL::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text; | |
| --END IF; | |
| --Hvad skal retuneres hvis andelsbolig og ingen hæftelser m.m. ???? | |
| RETURN QUERY | |
| WITH res AS ( | |
| --SELECT get_tinglysning((SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid')) as json | |
| SELECT has_ejd_resp as json | |
| ) | |
| SELECT | |
| (res.json->>'uuid')::uuid as tinglysnings_id, | |
| bog, | |
| (res.json->>'statuskode')::integer as statuskode, | |
| (res.json->>'adresse') as adresse, | |
| res.json->>'ejendomstype' as ejendomstype, | |
| -- json_array_elements(res.json->'matrikler')::json->>'landsejerlavkode' as landsejerlavskode, | |
| (json_array_elements(res.json->'matrikler')::json->>'landsejerlavkode') as landsejerlavkode, | |
| --json_array_elements(res.json->'matrikler')::json->>'matrikelnummer' as matrikelnummer, | |
| (json_array_elements(res.json->'matrikler')::json->>'matrikelnummer') , | |
| (res.json->'vurdering'->>'ejendomsnummer')::integer as ejendomsnummer, | |
| (res.json->'vurdering'->>'ejendomsvaerdi')::integer as ejendomsvaerdi, | |
| (res.json->'vurdering'->>'grundvaerdi')::integer as grundvaerdi, | |
| (res.json->'vurdering'->>'vurderingsdato')::date as vurderingsdato, | |
| -- json_array_elements(res.json->'ejere')::json->>'andel' as ejer_andel, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE (json_array_elements(res.json->'haeftelser')::json->>'ejer_andel') | |
| END as ejer_andel, | |
| --json_array_elements(res.json->'ejere')::json->>'navn' as ejer, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE (json_array_elements(res.json->'haeftelser')::json->>'ejer') | |
| END as ejer, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE (json_array_elements(res.json->'haeftelser')::json->>'uuid')::uuid | |
| END as haeftelse_id, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE to_date(json_array_elements(res.json->'haeftelser')::json->>'alias','DD.MM.YYYY') | |
| END as dato, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE json_array_elements(res.json->'haeftelser')::json->>'haeftelsestype' | |
| END as haeftelsestype, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE json_array_elements(res.json->'haeftelser')::json->>'hovedstol' | |
| END as hovedstol, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE json_array_elements(res.json->'haeftelser')::json->>'rente' | |
| END as rente, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE json_array_elements(res.json->'haeftelser')::json->>'fastvariabel' | |
| END as fastvariabel, | |
| CASE | |
| WHEN (res.json->'haeftelser')::text ='null' THEN NULL | |
| ELSE json_array_elements(res.json->'haeftelser')::json->>'kreditorer' | |
| END as kreditorer, | |
| 'https://www.tinglysning.dk/m/#/ejendomme/'|| has_id::text as url | |
| FROM res; | |
| END; | |
| $$ | |
| LANGUAGE 'plpgsql' VOLATILE; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment