====== Regeln für die Veröffentlichung von Plänen ====== Im folgenden wird beschrieben nach welchen Regeln die Pläne und darin enthaltenden Dokument im Dienst des Servers für Bauleitpläne und im Bau- und Planungsportal veröffentlicht werden. ====== Veröffentlichungsdatum ====== Folgende Pläne (mit oder ohne anhängenden Dokumenten) werden veröffentlicht: * Pläne, die kein Veröffentlichungsdatum haben (in der Datenbank NULL) * Pläne, deren Veröffentlichungsdatum gleich oder kleiner als das aktuelle Datum ist. In SQL lautet die Regel: CASE WHEN veroeffentlichungsdatum IS NULL THEN false ELSE veroeffentlichungsdatum <= (now() at time zone 'Europe/Berlin')::date END AS veroeffentlicht Die in den veröffentlichten Plänen enthaltenden Dokumente werden nach folgenden Regeln veröffentlicht: * Alle Dokumente bei denen das nurzurauslegung false oder NULL ist werden veröffentlicht. * Wenn bei einem Dokument das Attribut nurzurauslegung=true gesetzt gilt folgendes * Laut XPlanung-Standard können kein, ein oder mehrere Datumsangaben in dem Feld auslegungsstartdatum und auslegungsenddatum angegeben werden. Im Bauleitplanserver wird für die Entscheidung über die Veröffentlung des Planes nur der erste Zeitraum der beiden Datumsangaben verwendet. * Ein Dokument wird veröffentlicht, wenn es im Auslegungszeitraum liegt. Das ist der Fall wenn: * auslegungsstartdatum und auslegungsenddatum leer sind * auslegungsstartdatum in der Vergangenheit liegt oder gleich dem aktuellem Tag ist und auslegungsenddatum leer ist. * auslegungsenddatum in der Zukunft oder gleich dem aktuellem Tag ist und auslegungsstartdatum leer ist. * auslegungsstartdatum in der Vergangenheit liegt oder gleich dem aktuellem Tag ist und auslegungsenddatum in der Zukunft oder gleich dem aktuellem Tag ist. In Postgres wird diese Regel mit folgender Funktion umgesetzt: CREATE OR REPLACE FUNCTION xplankonverter.filter_nurzurauslegung( auslegungsstartdatum date[], auslegungsenddatum date[], externereferenzen_mit_nurzurauslegung xplankonverter.xp_spezexternereferenzauslegung[]) RETURNS xplan_gml.xp_spezexternereferenz[] LANGUAGE 'plpgsql' COST 100 STABLE PARALLEL UNSAFE AS $BODY$ DECLARE _sql text; _result xplan_gml.xp_spezexternereferenz[]; i integer = 0; n integer = array_length(externereferenzen_mit_nurzurauslegung, 1); today date = (now() at time zone 'Europe/Berlin')::date; is_in_date_range boolean = false; BEGIN IF(externereferenzen_mit_nurzurauslegung IS NULL) THEN RETURN NULL; END IF; FOR i IN 1..n LOOP is_in_date_range = (today BETWEEN auslegungsstartdatum[i] AND auslegungsenddatum[i]); EXIT WHEN is_in_date_range; END LOOP; SELECT ARRAY_AGG(xplankonverter.to_spezexternereferenz(e)) FROM ( SELECT unnest(externereferenzen_mit_nurzurauslegung) AS e ) foo WHERE (e).nurzurauslegung IS NULL OR NOT (e).nurzurauslegung OR ( (e).nurzurauslegung AND is_in_date_range ) INTO _result; RETURN _result; END; $BODY$;