mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 00:42:15 +00:00
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:
+206
-10
@@ -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>';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user