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:

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:

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$;