Change the view public.vw_msg_vars to have the values for the colums Studiengang DE and Studiengang EN from the table tbl_studienordnung

In case the values are null as fallback still use the values from the table tbl_studiengang
This commit is contained in:
Paolo
2022-06-02 12:53:35 +02:00
parent 3803c72a97
commit 0093836ccd
+206 -10
View File
@@ -767,7 +767,7 @@ if(!$result = @$db->db_query("SELECT studiengang_kz FROM testtool.vw_auswertung_
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -2363,7 +2363,7 @@ if($result = $db->db_query("SELECT view_definition FROM information_schema.views
tbl_studiensemester.start,
tbl_studiensemester.ende,
tbl_studiensemester.studienjahr_kurzbz,
substr(tbl_studiensemester.studiensemester_kurzbz::text, 3) || lower(substr(tbl_studiensemester.studiensemester_kurzbz::text, 1, 1)) AS studiensemester,
substr(tbl_studiensemester.studiensemester_kurzbz::TEXT, 3) || lower(substr(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 1)) AS studiensemester,
CASE
WHEN tbl_studiengang.typ = 'b'::bpchar AND tbl_prestudent.zgv_code IS NOT NULL OR tbl_studiengang.typ = 'm'::bpchar AND tbl_prestudent.zgvmas_code IS NOT NULL OR tbl_studiengang.typ = 'd'::bpchar AND tbl_prestudent.zgvdoktor_code IS NOT NULL THEN true
ELSE false
@@ -2372,13 +2372,13 @@ if($result = $db->db_query("SELECT view_definition FROM information_schema.views
WHEN tbl_prestudentstatus.prestudent_id IS NULL THEN false
ELSE true
END AS student,
date_part('week'::text, prestudentstatus.datum) AS kw
date_part('week'::TEXT, prestudentstatus.datum) AS kw
FROM public.tbl_person
JOIN public.tbl_prestudent USING (person_id)
JOIN public.tbl_prestudentstatus prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
LEFT JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = prestudentstatus.prestudent_id AND tbl_prestudentstatus.studiensemester_kurzbz::text = prestudentstatus.studiensemester_kurzbz::text AND tbl_prestudentstatus.status_kurzbz::text = 'Student'::text;
LEFT JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = prestudentstatus.prestudent_id AND tbl_prestudentstatus.studiensemester_kurzbz::TEXT = prestudentstatus.studiensemester_kurzbz::TEXT AND tbl_prestudentstatus.status_kurzbz::TEXT = 'Student'::TEXT;
GRANT SELECT ON public.vw_prestudentstatus TO vilesci;
GRANT SELECT ON public.vw_prestudentstatus TO web;
@@ -2608,14 +2608,14 @@ if(!$result = @$db->db_query("SELECT updateaktivam FROM campus.vw_mitarbeiter LI
tbl_benutzer.aktivierungscode,
( SELECT tbl_kontakt.kontakt
FROM tbl_kontakt
WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::text = 'email'::text
WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::TEXT = 'email'::TEXT
ORDER BY tbl_kontakt.zustellung DESC
LIMIT 1) AS email_privat,
tbl_benutzer.updateaktivam,
tbl_benutzer.updateaktivvon,
greatest(tbl_person.updateamum, tbl_benutzer.updateamum, tbl_mitarbeiter.updateamum) as lastupdate
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text
JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::TEXT = tbl_benutzer.uid::TEXT
JOIN public.tbl_person USING (person_id);
";
@@ -2891,12 +2891,12 @@ if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars_perso
kt.kontakt AS "Telefon",
( SELECT tbl_studiensemester.bezeichnung
FROM tbl_studiensemester
WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::text, 1, 2) = \'WS\'::text AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 2) = \'WS\'::TEXT AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
ORDER BY tbl_studiensemester.start
LIMIT 1) AS "WS naechstes",
( SELECT tbl_studiensemester.bezeichnung
FROM tbl_studiensemester
WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::text, 1, 2) = \'WS\'::text AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
WHERE "substring"(tbl_studiensemester.studiensemester_kurzbz::TEXT, 1, 2) = \'WS\'::TEXT AND (tbl_studiensemester.start >= now() AND tbl_studiensemester.ende >= now() OR tbl_studiensemester.start <= now() AND tbl_studiensemester.ende >= now())
ORDER BY tbl_studiensemester.start
OFFSET 1
LIMIT 1) AS "WS uebernaechstes",
@@ -4021,7 +4021,7 @@ if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung_ab
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -4075,7 +4075,7 @@ if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung LI
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
upper(tbl_studiengang.typ::CHARACTER VARYING(1)::TEXT || tbl_studiengang.kurzbz::TEXT) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
@@ -6154,6 +6154,202 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
// Change Studiengang DE and Studiengang EN
if ($result = @$db->db_query("SELECT definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'vw_msg_vars';"))
{
// Get the view description
if ($row = $db->db_fetch_object($result))
{
// If the view is still declared in the old way
if (strpos($row->definition, 's.bezeichnung AS "Studiengang DE"') !== false
|| strpos($row->definition, 's.english AS "Studiengang EN"') !== false)
{
$qry = '
-- The view must be dropped because the data type of columns Studiengang DE and Studiengang EN has been changed from CHARACTER VARYING to TEXT
DROP VIEW public.vw_msg_vars;
-- Create the view
CREATE OR REPLACE VIEW public.vw_msg_vars AS (
SELECT DISTINCT ON (p.person_id, pr.prestudent_id) p.person_id,
pr.prestudent_id,
p.nachname AS "Nachname",
p.vorname AS "Vorname",
p.anrede AS "Anrede",
a.strasse AS "Strasse",
a.ort AS "Ort",
a.plz AS "PLZ",
a.gemeinde AS "Gemeinde",
a.langtext AS "Nation",
ke.kontakt AS "Email",
kt.kontakt AS "Telefon",
COALESCE(so.studiengangbezeichnung::TEXT, s.bezeichnung::TEXT) AS "Studiengang DE",
COALESCE(so.studiengangbezeichnung_englisch::TEXT, s.english::TEXT) AS "Studiengang EN",
st.bezeichnung AS "Typ",
last_prestudent_status.orgform_kurzbz AS "Orgform",
p.zugangscode AS "Zugangscode",
bk.iban AS "IBAN Studiengang",
bk.bic AS "BIC Studiengang",
s.studiengang_kz AS "Studiengangskennzahl",
first_prestudent_status.ausbildungssemester AS "Einstiegssemester",
first_prestudent_status.studiensemester AS "Einstiegsstudiensemester",
ass.vorname AS "Vorname Studiengangsassistenz",
ass.nachname AS "Nachname Studiengangsassistenz",
ass.telefonklappe AS "Durchwahl Studiengangsassistenz",
ass.alias AS "Alias Studiengangsassistenz",
last_prestudent_status.orgform_bezeichnung_de AS "Orgform DE",
last_prestudent_status.orgform_bezeichnung_en AS "Orgform EN",
(
SELECT COUNT(*) AS count
FROM (
SELECT
pss.prestudent_id,
pss.person_id,
pss.priorisierung,
(
SELECT tbl_prestudentstatus_1.status_kurzbz
FROM tbl_prestudentstatus tbl_prestudentstatus_1
WHERE tbl_prestudentstatus_1.prestudent_id = pss.prestudent_id
ORDER BY tbl_prestudentstatus_1.datum DESC, tbl_prestudentstatus_1.insertamum DESC
LIMIT 1
) AS laststatus
FROM tbl_prestudent pss
JOIN tbl_prestudentstatus USING (prestudent_id)
WHERE pss.person_id = (
(
SELECT tbl_prestudent.person_id
FROM tbl_prestudent
WHERE tbl_prestudent.prestudent_id = pr.prestudent_id
)
)
AND tbl_prestudentstatus.studiensemester_kurzbz::TEXT = (
(
(
SELECT tbl_prestudentstatus_1.studiensemester_kurzbz
FROM tbl_prestudentstatus tbl_prestudentstatus_1
WHERE tbl_prestudentstatus_1.prestudent_id = pr.prestudent_id
AND tbl_prestudentstatus_1.status_kurzbz::TEXT = \'Interessent\'::TEXT
LIMIT 1
)
)::TEXT
)
AND tbl_prestudentstatus.status_kurzbz::TEXT = \'Interessent\'::TEXT
) prest
WHERE (prest.laststatus::TEXT <> ALL (ARRAY[\'Abbrecher\'::CHARACTER VARYING::TEXT, \'Abgewiesener\'::CHARACTER VARYING::TEXT, \'Absolvent\'::CHARACTER VARYING::TEXT]))
AND prest.priorisierung <= pr.priorisierung
) AS "Relative Prio"
FROM tbl_person p
LEFT JOIN (
SELECT tbl_kontakt.person_id,
tbl_kontakt.kontakt
FROM tbl_kontakt
WHERE tbl_kontakt.zustellung = TRUE
AND tbl_kontakt.kontakttyp::TEXT = \'email\'::TEXT
ORDER BY tbl_kontakt.kontakt_id DESC
) ke USING (person_id)
LEFT JOIN (
SELECT tbl_kontakt.person_id,
tbl_kontakt.kontakt
FROM tbl_kontakt
WHERE tbl_kontakt.zustellung = TRUE
AND (tbl_kontakt.kontakttyp::TEXT = ANY (ARRAY[\'telefon\'::CHARACTER VARYING::TEXT, \'mobil\'::CHARACTER VARYING::TEXT]))
ORDER BY tbl_kontakt.kontakt_id DESC
) kt USING (person_id)
LEFT JOIN (
SELECT tbl_adresse.person_id,
tbl_adresse.strasse,
tbl_adresse.ort,
tbl_adresse.plz,
tbl_adresse.gemeinde,
tbl_nation.langtext
FROM tbl_adresse
LEFT JOIN bis.tbl_nation ON (tbl_nation.nation_code::TEXT = tbl_adresse.nation::TEXT)
WHERE tbl_adresse.heimatadresse = true
ORDER BY tbl_adresse.adresse_id DESC
) a USING (person_id)
LEFT JOIN tbl_prestudent pr USING (person_id)
JOIN tbl_studiengang s USING (studiengang_kz)
JOIN tbl_studiengangstyp st USING (typ)
LEFT JOIN lehre.tbl_studienordnung so USING(studiengang_kz)
LEFT JOIN (
SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id,
tbl_studienplan.orgform_kurzbz,
tbl_orgform.bezeichnung_mehrsprachig[
(
(
SELECT tbl_sprache.index
FROM tbl_sprache
WHERE tbl_sprache.content = TRUE
AND tbl_sprache.sprache::TEXT = \'German\'::TEXT
LIMIT 1
)
)
] AS orgform_bezeichnung_de,
tbl_orgform.bezeichnung_mehrsprachig[
(
(
SELECT tbl_sprache.index
FROM tbl_sprache
WHERE tbl_sprache.content = TRUE
AND tbl_sprache.sprache::TEXT = \'English\'::TEXT
LIMIT 1
)
)
] AS orgform_bezeichnung_en
FROM tbl_prestudent ps
JOIN tbl_prestudentstatus ON (ps.prestudent_id = tbl_prestudentstatus.prestudent_id)
JOIN lehre.tbl_studienplan USING (studienplan_id)
LEFT JOIN bis.tbl_orgform ON (tbl_studienplan.orgform_kurzbz::TEXT = tbl_orgform.orgform_kurzbz::TEXT)
ORDER BY ps.prestudent_id DESC, tbl_prestudentstatus.datum DESC, tbl_prestudentstatus.insertamum DESC, tbl_prestudentstatus.ext_id DESC
) last_prestudent_status ON (pr.prestudent_id = last_prestudent_status.prestudent_id)
LEFT JOIN (
SELECT DISTINCT ON (ps.prestudent_id) ps.prestudent_id,
tbl_prestudentstatus.ausbildungssemester,
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_studiensemester.bezeichnung AS studiensemester,
tbl_studienordnung.studiengang_kz
FROM tbl_prestudent ps
JOIN tbl_prestudentstatus ON (ps.prestudent_id = tbl_prestudentstatus.prestudent_id)
JOIN tbl_studiensemester USING (studiensemester_kurzbz)
JOIN lehre.tbl_studienplan USING (studienplan_id)
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
WHERE tbl_prestudentstatus.status_kurzbz::TEXT = \'Interessent\'::TEXT
ORDER BY ps.prestudent_id, tbl_prestudentstatus.datum, tbl_prestudentstatus.insertamum, tbl_prestudentstatus.ext_id
) first_prestudent_status ON (pr.prestudent_id = first_prestudent_status.prestudent_id)
LEFT JOIN (
SELECT DISTINCT ON (tbl_benutzerfunktion.oe_kurzbz) tbl_person.vorname,
tbl_person.nachname,
tbl_benutzerfunktion.oe_kurzbz,
tbl_mitarbeiter.telefonklappe,
tbl_benutzer.alias
FROM tbl_benutzerfunktion
JOIN tbl_benutzer USING (uid)
JOIN tbl_person USING (person_id)
JOIN tbl_mitarbeiter ON (tbl_benutzer.uid::TEXT = tbl_mitarbeiter.mitarbeiter_uid::TEXT)
WHERE tbl_benutzerfunktion.funktion_kurzbz::TEXT = \'ass\'::TEXT
AND NOW() >= COALESCE(tbl_benutzerfunktion.datum_von::TIMESTAMP with time zone, NOW())
AND NOW() <= COALESCE(tbl_benutzerfunktion.datum_bis::TIMESTAMP with time zone, NOW())
ORDER BY tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerfunktion.insertamum DESC NULLS LAST, tbl_benutzerfunktion.datum_von DESC NULLS LAST
) ass ON (s.oe_kurzbz::TEXT = ass.oe_kurzbz::TEXT)
LEFT JOIN (
SELECT DISTINCT ON (tbl_bankverbindung.oe_kurzbz, tbl_bankverbindung.orgform_kurzbz) tbl_bankverbindung.oe_kurzbz,
tbl_bankverbindung.orgform_kurzbz,
tbl_bankverbindung.iban,
tbl_bankverbindung.bic
FROM tbl_bankverbindung
WHERE tbl_bankverbindung.oe_kurzbz IS NOT NULL
ORDER BY tbl_bankverbindung.oe_kurzbz, tbl_bankverbindung.orgform_kurzbz, tbl_bankverbindung.insertamum DESC, tbl_bankverbindung.iban
) bk ON (s.oe_kurzbz::TEXT = bk.oe_kurzbz::TEXT AND (last_prestudent_status.orgform_kurzbz::TEXT = bk.orgform_kurzbz::TEXT OR bk.orgform_kurzbz IS NULL))
WHERE p.aktiv = true
ORDER BY p.person_id, pr.prestudent_id
);';
if(!$db->db_query($qry))
echo '<strong>public.vw_msg_vars: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.vw_msg_vars changed Studiengang DE and Studiengang EN';
}
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';