mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
Merge branch 'master' of github.com:FH-Complete/FHC-Core
This commit is contained in:
@@ -201,6 +201,18 @@ class Filters extends FHC_Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Define the navigation menu for the current filter widget
|
||||
*/
|
||||
public function setNavigationMenu()
|
||||
{
|
||||
// Generates the filters structure array
|
||||
$filterMenu = $this->filterslib->generateFilterMenu($this->input->get(FiltersLib::NAVIGATION_PAGE));
|
||||
|
||||
$this->outputJsonSuccess('Success');
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
|
||||
@@ -856,89 +856,30 @@ class InfoCenter extends Auth_Controller
|
||||
*/
|
||||
private function _setNavigationMenuFreigegeben()
|
||||
{
|
||||
// Loads NavigationLib
|
||||
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE));
|
||||
|
||||
$listFilters = array();
|
||||
$listCustomFilters = array();
|
||||
|
||||
$filters = $this->FiltersModel->getFilterList('infocenter', 'freigegeben', '%InfoCenterFreigegeben%');
|
||||
if (hasData($filters))
|
||||
{
|
||||
for ($filtersCounter = 0; $filtersCounter < count($filters->retval); $filtersCounter++)
|
||||
{
|
||||
$filter = $filters->retval[$filtersCounter];
|
||||
|
||||
$listFilters[$filter->filter_id] = $filter->description[0];
|
||||
}
|
||||
}
|
||||
|
||||
$customFilters = $this->FiltersModel->getCustomFiltersList('infocenter', 'freigegeben', $this->_uid);
|
||||
if (hasData($customFilters))
|
||||
{
|
||||
for ($filtersCounter = 0; $filtersCounter < count($customFilters->retval); $filtersCounter++)
|
||||
{
|
||||
$filter = $customFilters->retval[$filtersCounter];
|
||||
|
||||
$listCustomFilters[$filter->filter_id] = $filter->description[0];
|
||||
}
|
||||
}
|
||||
|
||||
$filtersArray = array();
|
||||
$filtersArray['children'] = array();
|
||||
|
||||
$this->_fillFiltersFreigegeben($listFilters, $filtersArray);
|
||||
|
||||
if (count($listCustomFilters) > 0)
|
||||
{
|
||||
$filtersArray['children']['personal'] = $this->navigationlib->oneLevel(
|
||||
'Personal filters', // description
|
||||
'#', // link
|
||||
array(), // children
|
||||
'', // icon
|
||||
true, // expand
|
||||
null, // subscriptDescription
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
15 // sort
|
||||
);
|
||||
|
||||
$this->_fillCustomFilters($listCustomFilters, $filtersArray['children']['personal']);
|
||||
}
|
||||
|
||||
$homeLink = site_url('system/infocenter/InfoCenter/index');
|
||||
// Generate the home link with the eventually loaded filter
|
||||
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
|
||||
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
|
||||
if (isset($prevFilterId))
|
||||
{
|
||||
$homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId;
|
||||
}
|
||||
|
||||
$this->navigationlib->setSessionMenu(
|
||||
array(
|
||||
'freigegeben' => $this->navigationlib->oneLevel(
|
||||
'Home', // description
|
||||
$homeLink, // link
|
||||
null, // children
|
||||
'angle-left', // icon
|
||||
null, // subscriptDescription
|
||||
false, // expand
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
1 // sort
|
||||
),
|
||||
'filters' => $this->navigationlib->oneLevel(
|
||||
'Filter', // description
|
||||
'#', // link
|
||||
(isset($filtersArray['children']) ? $filtersArray['children'] : ''), // children
|
||||
'', // icon
|
||||
true, // expand
|
||||
null, // subscriptDescription
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
10 // sort
|
||||
)
|
||||
$this->navigationlib->setElementSessionMenu(
|
||||
self::FREIGEGEBEN_PAGE,
|
||||
$this->navigationlib->oneLevel(
|
||||
'Home', // description
|
||||
$homeLink, // link
|
||||
null, // children
|
||||
'angle-left', // icon
|
||||
null, // subscriptDescription
|
||||
false, // expand
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
1 // sort
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ class FiltersLib
|
||||
const HIDE_HEADER = 'hideHeader';
|
||||
const HIDE_SAVE = 'hideSave';
|
||||
|
||||
const CUSTOM_MENU = 'customMenu'; // ...to specify if the menu for this filter is custom (true) or not (false)
|
||||
|
||||
// Filter operations values
|
||||
const OP_EQUAL = 'equal';
|
||||
const OP_NOT_EQUAL = 'nequal';
|
||||
@@ -76,6 +78,15 @@ class FiltersLib
|
||||
const PERMISSION_FILTER_METHOD = 'FilterWidget'; // Name for fake method to be checked by the PermissionLib
|
||||
const PERMISSION_TYPE = 'rw';
|
||||
|
||||
// Name and array keys of the filters menu array
|
||||
const NAV_MENU_FILTER_KEY = 'filters';
|
||||
const NAV_MENU_FILTER_NAME = 'Filters';
|
||||
const NAV_MENU_CUSTOM_FILTER_KEY = 'personal_filters';
|
||||
const NAV_MENU_CUSTOM_FILTER_NAME = 'Personal filters';
|
||||
|
||||
// Navigation page parameter name
|
||||
const NAVIGATION_PAGE = 'navigation_page';
|
||||
|
||||
private $_ci; // Code igniter instance
|
||||
private $_filterUniqueId; // unique id for this filter widget
|
||||
|
||||
@@ -668,6 +679,99 @@ class FiltersLib
|
||||
return $removeCustomFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the filters menu structure array and stores it into the session
|
||||
*/
|
||||
public function generateFilterMenu($navigationPage)
|
||||
{
|
||||
// Loads the NavigationLib for the current page (given as parameter)
|
||||
$this->_ci->load->library('NavigationLib', array(FiltersLib::NAVIGATION_PAGE => $navigationPage));
|
||||
|
||||
$filterMenu = null;
|
||||
$currentMenu = $this->_ci->navigationlib->getSessionMenu(); // The navigation menu currently stored in session
|
||||
|
||||
$session = $this->getSession(); // The filter currently stored in session (the one that is currently used)
|
||||
if ($session != null)
|
||||
{
|
||||
// Loads the Fitlers model
|
||||
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
|
||||
|
||||
// Loads all the filters related to this page (same dataset_name and same app name)
|
||||
$filters = $this->_ci->FiltersModel->getFiltersByAppDatasetName(
|
||||
$session[self::APP_PARAMETER], $session[self::DATASET_NAME_PARAMETER]
|
||||
);
|
||||
|
||||
// If filters were loaded
|
||||
if (hasData($filters))
|
||||
{
|
||||
$childrenArray = array(); // contains all the children elements in a menu entry
|
||||
$childrenPersonalArray = array(); // contains all the children elements in menu enty for personal filters
|
||||
|
||||
// Loops through loaded filters
|
||||
foreach ($filters->retval as $filter)
|
||||
{
|
||||
// Generate a menu entry
|
||||
$menuEntry = $this->_ci->navigationlib->oneLevel(
|
||||
$filter->description[0], // description
|
||||
sprintf(
|
||||
'%s?%s=%s',
|
||||
site_url($this->_ci->router->directory.$this->_ci->router->class.'/'.$this->_ci->router->method),
|
||||
self::FILTER_ID,
|
||||
$filter->filter_id
|
||||
) // link
|
||||
);
|
||||
|
||||
// If it is NOT a personal filter
|
||||
if ($filter->person_id == null)
|
||||
{
|
||||
$childrenArray[] = $menuEntry; // adds to filters menu array
|
||||
}
|
||||
else // otherwise
|
||||
{
|
||||
$menuEntry['subscriptDescription'] = 'Remove';
|
||||
$menuEntry['subscriptLinkClass'] = 'remove-custom-filter';
|
||||
$menuEntry['subscriptLinkValue'] = $filter->filter_id;
|
||||
$childrenPersonalArray[] = $menuEntry; // adds to personal filters menu array
|
||||
}
|
||||
}
|
||||
|
||||
// If personal filters are present then add the menu entry for them
|
||||
if (count($childrenPersonalArray) > 0)
|
||||
{
|
||||
$childrenArray[self::NAV_MENU_CUSTOM_FILTER_KEY] = $this->_ci->navigationlib->oneLevel(
|
||||
self::NAV_MENU_CUSTOM_FILTER_NAME, // description
|
||||
'#', // link
|
||||
$childrenPersonalArray, // children
|
||||
'', // icon
|
||||
true, // expand
|
||||
null, // subscriptDescription
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
20 // sort
|
||||
);
|
||||
}
|
||||
|
||||
// Adds menu entry for all the filters
|
||||
$filterMenu = $this->_ci->navigationlib->oneLevel(
|
||||
self::NAV_MENU_FILTER_NAME, // description
|
||||
'#', // link
|
||||
$childrenArray, // children
|
||||
'', // icon
|
||||
true, // expand
|
||||
null, // subscriptDescription
|
||||
null, // subscriptLinkClass
|
||||
null, // subscriptLinkValue
|
||||
'', // target
|
||||
10 // sort
|
||||
);
|
||||
|
||||
// Sets in the session only the element related to the filters menu
|
||||
$this->_ci->navigationlib->setElementSessionMenu(FiltersLib::NAV_MENU_FILTER_KEY, $filterMenu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
|
||||
@@ -170,14 +170,11 @@ class NavigationLib
|
||||
{
|
||||
$session = $this->getSessionMenu();
|
||||
|
||||
if (!isset($session[$this->_navigationPage]))
|
||||
{
|
||||
$session[$this->_navigationPage] = array();
|
||||
}
|
||||
if ($session == null) $session = array();
|
||||
|
||||
$session[$this->_navigationPage][$name] = $value;
|
||||
$session[$name] = $value;
|
||||
|
||||
setElementSession(self::SESSION_NAME, self::SESSION_MENU_NAME, $session); // stores the single value
|
||||
setElementSession(self::SESSION_NAME, self::SESSION_MENU_NAME, array($this->_navigationPage => $session)); // stores the single value
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,14 +184,11 @@ class NavigationLib
|
||||
{
|
||||
$session = $this->getSessionHeader();
|
||||
|
||||
if (!isset($session[$this->_navigationPage]))
|
||||
{
|
||||
$session[$this->_navigationPage] = array();
|
||||
}
|
||||
if ($session == null) $session = array();
|
||||
|
||||
$session[$this->_navigationPage][$name] = $value;
|
||||
$session[$name] = $value;
|
||||
|
||||
setElementSession(self::SESSION_NAME, self::SESSION_HEADER_NAME, $session); // stores the single value
|
||||
setElementSession(self::SESSION_NAME, self::SESSION_HEADER_NAME, array($this->_navigationPage => $session)); // stores the single value
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -17,6 +17,8 @@ class Filters_model extends DB_Model
|
||||
*/
|
||||
public function getFilterList($app, $dataset_name, $filter_kurzbz)
|
||||
{
|
||||
$this->resetQuery(); // reset any previous built query
|
||||
|
||||
$this->addSelect('filter_id, description');
|
||||
$this->addOrder('sort', 'ASC');
|
||||
|
||||
@@ -36,6 +38,8 @@ class Filters_model extends DB_Model
|
||||
*/
|
||||
public function getCustomFiltersList($app, $dataset_name, $uid)
|
||||
{
|
||||
$this->resetQuery(); // reset any previous built query
|
||||
|
||||
$this->addSelect('filter_id, description');
|
||||
$this->addJoin('public.tbl_benutzer', 'person_id');
|
||||
$this->addOrder('sort', 'ASC');
|
||||
@@ -49,4 +53,23 @@ class Filters_model extends DB_Model
|
||||
|
||||
return $this->loadWhere($filterParametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads all filters by their app and dataset_name
|
||||
*/
|
||||
public function getFiltersByAppDatasetName($app, $dataset_name)
|
||||
{
|
||||
$this->resetQuery(); // reset any previous built query
|
||||
|
||||
$this->addSelect('filter_id, person_id, description');
|
||||
$this->addOrder('person_id', 'DESC'); // sort descending on column person_id
|
||||
$this->addOrder('sort', 'ASC'); // sort on column sort
|
||||
|
||||
$filterParametersArray = array(
|
||||
'app' => $app,
|
||||
'dataset_name' => $dataset_name
|
||||
);
|
||||
|
||||
return $this->loadWhere($filterParametersArray);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,202 +10,208 @@
|
||||
$LOGTYPE_KURZBZ = '\'Processstate\'';
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => '
|
||||
WITH currentOrNextStudiensemester AS (
|
||||
SELECT ss.studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester ss
|
||||
WHERE ss.ende > NOW()
|
||||
ORDER BY ss.ende
|
||||
LIMIT 3
|
||||
)
|
||||
$query = '
|
||||
WITH currentOrNextStudiensemester AS (
|
||||
SELECT ss.studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester ss
|
||||
WHERE ss.ende > NOW()
|
||||
ORDER BY ss.ende
|
||||
LIMIT 3
|
||||
)
|
||||
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
p.gebdatum AS "Gebdatum",
|
||||
p.staatsbuergerschaft AS "Nation",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
pd.parkdate AS "ParkDate",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "LastAction",
|
||||
(
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "User/Operator",
|
||||
(
|
||||
SELECT pss.studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "Studiensemester",
|
||||
(
|
||||
SELECT pss.bewerbung_abgeschicktamum
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "SendDate",
|
||||
(
|
||||
SELECT COUNT(*)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgNichtAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.start >= NOW())
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgAktiv"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
tpl.zeitpunkt,
|
||||
tpl.uid AS lockuser
|
||||
FROM system.tbl_person_lock tpl
|
||||
WHERE tpl.app = '.$APP.'
|
||||
) pl USING(person_id)
|
||||
LEFT JOIN (
|
||||
SELECT l.person_id,
|
||||
l.zeitpunkt AS parkdate
|
||||
FROM system.tbl_log l
|
||||
WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
|
||||
AND l.logdata->>\'name\' = '.$LOGDATA_NAME_PARKED.'
|
||||
AND l.zeitpunkt >= NOW()
|
||||
) pd USING(person_id)
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudent sps
|
||||
JOIN public.tbl_studiengang ssg USING(studiengang_kz)
|
||||
WHERE sps.person_id = p.person_id
|
||||
AND ssg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND '.$INTERESSENT_STATUS.' = (
|
||||
SELECT spss.status_kurzbz
|
||||
FROM public.tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
ORDER BY spss.datum DESC, spss.insertamum DESC, spss.ext_id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
AND spss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND spss.bestaetigtam IS NULL
|
||||
AND spss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
)
|
||||
ORDER BY "LastAction" ASC
|
||||
',
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
p.gebdatum AS "Gebdatum",
|
||||
p.staatsbuergerschaft AS "Nation",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
pd.parkdate AS "ParkDate",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "LastAction",
|
||||
(
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "User/Operator",
|
||||
(
|
||||
SELECT pss.studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "Studiensemester",
|
||||
(
|
||||
SELECT pss.bewerbung_abgeschicktamum
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "SendDate",
|
||||
(
|
||||
SELECT COUNT(*)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT cnss.studiensemester_kurzbz FROM currentOrNextStudiensemester cnss)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgNichtAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.start >= NOW())
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = pss.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgAktiv"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
tpl.zeitpunkt,
|
||||
tpl.uid AS lockuser
|
||||
FROM system.tbl_person_lock tpl
|
||||
WHERE tpl.app = '.$APP.'
|
||||
) pl USING(person_id)
|
||||
LEFT JOIN (
|
||||
SELECT l.person_id,
|
||||
l.zeitpunkt AS parkdate
|
||||
FROM system.tbl_log l
|
||||
WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
|
||||
AND l.logdata->>\'name\' = '.$LOGDATA_NAME_PARKED.'
|
||||
AND l.zeitpunkt >= NOW()
|
||||
) pd USING(person_id)
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudent sps
|
||||
JOIN public.tbl_studiengang ssg USING(studiengang_kz)
|
||||
WHERE sps.person_id = p.person_id
|
||||
AND ssg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND '.$INTERESSENT_STATUS.' = (
|
||||
SELECT spss.status_kurzbz
|
||||
FROM public.tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
ORDER BY spss.datum DESC, spss.insertamum DESC, spss.ext_id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = sps.prestudent_id
|
||||
AND spss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND spss.bestaetigtam IS NULL
|
||||
AND spss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
|
||||
)
|
||||
)
|
||||
ORDER BY "LastAction" ASC';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'app' => 'infocenter',
|
||||
'datasetName' => 'overview',
|
||||
'filterKurzbz' => 'InfoCenterSentApplicationAll',
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'customMenu' => true,
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array(
|
||||
@@ -317,10 +323,5 @@
|
||||
}
|
||||
);
|
||||
|
||||
$filterWidgetArray['app'] = 'infocenter';
|
||||
$filterWidgetArray['datasetName'] = 'overview';
|
||||
$filterWidgetArray['filterKurzbz'] = 'InfoCenterSentApplicationAll';
|
||||
$filterWidgetArray['filter_id'] = $this->input->get('filter_id');
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
?>
|
||||
|
||||
@@ -6,110 +6,115 @@
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'New application\'';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => '
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
p.gebdatum AS "Gebdatum",
|
||||
p.staatsbuergerschaft AS "Nation",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "LastAction",
|
||||
(
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "User/Operator",
|
||||
(
|
||||
SELECT pss.studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "Studiensemester",
|
||||
(
|
||||
SELECT pss.bewerbung_abgeschicktamum
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "SendDate",
|
||||
(
|
||||
SELECT COUNT(*)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz)), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
tpl.zeitpunkt,
|
||||
tpl.uid AS lockuser
|
||||
FROM system.tbl_person_lock tpl
|
||||
WHERE tpl.app = '.$APP.'
|
||||
) pl USING(person_id)
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
WHERE pss.prestudent_id = ps.prestudent_id
|
||||
AND pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bestaetigtam IS NOT NULL
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
)
|
||||
$query = '
|
||||
SELECT
|
||||
p.person_id AS "PersonId",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
p.gebdatum AS "Gebdatum",
|
||||
p.staatsbuergerschaft AS "Nation",
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "LastAction",
|
||||
(
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
) AS "User/Operator",
|
||||
(
|
||||
SELECT pss.studiensemester_kurzbz
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "Studiensemester",
|
||||
(
|
||||
SELECT pss.bewerbung_abgeschicktamum
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
|
||||
LIMIT 1
|
||||
) AS "SendDate",
|
||||
(
|
||||
SELECT COUNT(*)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz)), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
tpl.zeitpunkt,
|
||||
tpl.uid AS lockuser
|
||||
FROM system.tbl_person_lock tpl
|
||||
WHERE tpl.app = '.$APP.'
|
||||
) pl USING(person_id)
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE ps.person_id = p.person_id
|
||||
AND sg.typ IN ('.$STUDIENGANG_TYP.')
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
WHERE pss.prestudent_id = ps.prestudent_id
|
||||
AND pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bestaetigtam IS NOT NULL
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
|
||||
)
|
||||
ORDER BY "LastAction" DESC
|
||||
',
|
||||
)
|
||||
ORDER BY "LastAction" DESC';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'app' => 'infocenter',
|
||||
'datasetName' => 'freigegeben',
|
||||
'filterKurzbz' => 'InfoCenterFreigegeben5days',
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
@@ -194,10 +199,5 @@
|
||||
}
|
||||
);
|
||||
|
||||
$filterWidgetArray['app'] = 'infocenter';
|
||||
$filterWidgetArray['datasetName'] = 'freigegeben';
|
||||
$filterWidgetArray['filterKurzbz'] = 'InfoCenterFreigegeben5days';
|
||||
$filterWidgetArray['filter_id'] = $this->input->get('filter_id');
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
?>
|
||||
|
||||
@@ -43,6 +43,8 @@ class FilterWidget extends Widget
|
||||
private $_hideHeader;
|
||||
private $_hideSave;
|
||||
|
||||
private $_customMenu; // if true then method _setFilterMenu is NOT called
|
||||
|
||||
private static $_FilterWidgetInstance; // static property that contains the instance of itself
|
||||
|
||||
/**
|
||||
@@ -60,7 +62,13 @@ class FilterWidget extends Widget
|
||||
|
||||
// Let's start if it's allowed
|
||||
// NOTE: If it is NOT allowed then no data are loaded
|
||||
if ($this->filterslib->isAllowed($this->_requiredPermissions)) $this->_startFilterWidget();
|
||||
if ($this->filterslib->isAllowed($this->_requiredPermissions))
|
||||
{
|
||||
$this->_startFilterWidget();
|
||||
|
||||
// If a custom menu is not used, then default menu is used
|
||||
if ($this->_customMenu != true) $this->_setFilterMenu();
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
@@ -144,6 +152,7 @@ class FilterWidget extends Widget
|
||||
$this->_checkboxes = null;
|
||||
$this->_hideHeader = null;
|
||||
$this->_hideSave = null;
|
||||
$this->_customMenu = null;
|
||||
|
||||
// Retrived the required permissions parameter if present
|
||||
if (isset($args[FiltersLib::REQUIRED_PERMISSIONS_PARAMETER]))
|
||||
@@ -224,6 +233,11 @@ class FilterWidget extends Widget
|
||||
{
|
||||
$this->_hideSave = $args[FiltersLib::HIDE_SAVE];
|
||||
}
|
||||
|
||||
if (isset($args[FiltersLib::CUSTOM_MENU]) && is_bool($args[FiltersLib::CUSTOM_MENU]))
|
||||
{
|
||||
$this->_customMenu = $args[FiltersLib::CUSTOM_MENU];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -364,6 +378,17 @@ class FilterWidget extends Widget
|
||||
$this->filterslib->setElementSession(FiltersLib::REQUIRED_PERMISSIONS_PARAMETER, $this->_requiredPermissions);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _setFilterMenu()
|
||||
{
|
||||
// Generates the filters structure array
|
||||
$filterMenu = $this->filterslib->generateFilterMenu(
|
||||
$this->router->directory.$this->router->class.'/'.$this->router->method
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls the method _markRow and _formatRow to marks rows using markRow and format rowns using formatRow
|
||||
* NOTE: this method operates directly on the retrived dataset: parameter passed by reference
|
||||
|
||||
@@ -9,6 +9,23 @@
|
||||
* @since Version 1.0.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* Global function used by FilterWidget JS to refresh the side menu
|
||||
* NOTE: it is called from the FilterWidget JS therefore must be a global function
|
||||
* It may be overwritten by a custom refreshSideMenuHook included in a javascript which will be loaded after this one
|
||||
* The given parameters, filter_page and navigation_page, are required
|
||||
*/
|
||||
function refreshSideMenuHook()
|
||||
{
|
||||
FHC_NavigationWidget.refreshSideMenuHook(
|
||||
'system/Filters/setNavigationMenu',
|
||||
{
|
||||
filter_page: FHC_FilterWidget.getFilterPage(),
|
||||
navigation_page: FHC_NavigationWidget.getNavigationPage()
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Global function used by NavigationWidget JS to bind events to side menu elements
|
||||
* NOTE: it is called from the NavigationWidget JS therefore must be a global function
|
||||
|
||||
@@ -25,7 +25,7 @@ var FHC_NavigationWidget = {
|
||||
FHC_AjaxClient.ajaxCallGet(
|
||||
'system/Navigation/header',
|
||||
{
|
||||
navigation_page: FHC_NavigationWidget._getNavigationWidgetCalled()
|
||||
navigation_page: FHC_NavigationWidget.getNavigationPage()
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
@@ -54,7 +54,7 @@ var FHC_NavigationWidget = {
|
||||
FHC_AjaxClient.ajaxCallGet(
|
||||
'system/Navigation/menu',
|
||||
{
|
||||
navigation_page: FHC_NavigationWidget._getNavigationWidgetCalled()
|
||||
navigation_page: FHC_NavigationWidget.getNavigationPage()
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
@@ -87,13 +87,20 @@ var FHC_NavigationWidget = {
|
||||
/**
|
||||
* Calls URL to retrive a refreshed menu array
|
||||
*/
|
||||
refreshSideMenuHook: function(url) {
|
||||
refreshSideMenuHook: function(url, params = null) {
|
||||
|
||||
var callParameters = {};
|
||||
|
||||
if (params != null && typeof params == "object")
|
||||
{
|
||||
callParameters = params;
|
||||
}
|
||||
|
||||
callParameters.navigation_page = FHC_NavigationWidget.getNavigationPage();
|
||||
|
||||
FHC_AjaxClient.ajaxCallGet(
|
||||
url,
|
||||
{
|
||||
navigation_page: FHC_NavigationWidget._getNavigationWidgetCalled()
|
||||
},
|
||||
callParameters,
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
FHC_NavigationWidget.renderSideMenu();
|
||||
@@ -105,6 +112,14 @@ var FHC_NavigationWidget = {
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the URI of the caller
|
||||
*/
|
||||
getNavigationPage: function() {
|
||||
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
|
||||
},
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -266,13 +281,6 @@ var FHC_NavigationWidget = {
|
||||
return strLeftMenu;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the URI of the caller
|
||||
*/
|
||||
_getNavigationWidgetCalled: function() {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.called_path + "/" + FHC_JS_DATA_STORAGE_OBJECT.called_method;
|
||||
},
|
||||
|
||||
/**
|
||||
* Generates the menu entry link within the fhc_controller_id if present
|
||||
*/
|
||||
|
||||
@@ -5,10 +5,14 @@
|
||||
/**
|
||||
* Global function used by FilterWidget JS to refresh the side menu
|
||||
* NOTE: it is called from the FilterWidget JS therefore must be a global function
|
||||
* To be called only if the page has a customized menu (currently only index)
|
||||
*/
|
||||
function refreshSideMenuHook()
|
||||
if (FHC_JS_DATA_STORAGE_OBJECT.called_method == 'index')
|
||||
{
|
||||
FHC_NavigationWidget.refreshSideMenuHook('system/infocenter/InfoCenter/setNavigationMenuArrayJson');
|
||||
function refreshSideMenuHook()
|
||||
{
|
||||
FHC_NavigationWidget.refreshSideMenuHook('system/infocenter/InfoCenter/setNavigationMenuArrayJson');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user