mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-22 17:32:18 +00:00
Issues: added possibility to display issues only when user is hauptzustaendig
This commit is contained in:
@@ -12,6 +12,67 @@ class Fehlerzustaendigkeiten_model extends DB_Model
|
||||
$this->pk = 'fehlerzustaendigkeiten_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Fehler for which user is hauptzuständig (is in charge).
|
||||
* @return object success or error
|
||||
*/
|
||||
public function getFehlerForUserHauptzustaendig()
|
||||
{
|
||||
$params = [getAuthPersonId()];
|
||||
|
||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||
|
||||
// get oes of uid for which there is a current funktion
|
||||
$all_funktionen_oe_kurzbz = array();
|
||||
$benutzerfunktionRes = $this->BenutzerfunktionModel->getBenutzerFunktionByUid(getAuthUID(), null, date('Y-m-d'), date('Y-m-d'));
|
||||
|
||||
if (isError($benutzerfunktionRes)) return $benutzerfunktionRes;
|
||||
|
||||
if (hasData($benutzerfunktionRes))
|
||||
{
|
||||
foreach (getData($benutzerfunktionRes) as $benutzerfunktion)
|
||||
{
|
||||
$all_funktionen_oe_kurzbz[$benutzerfunktion->oe_kurzbz][] = $benutzerfunktion->funktion_kurzbz;
|
||||
}
|
||||
}
|
||||
|
||||
$query = "WITH zustaendigkeiten AS (
|
||||
SELECT fehlercode,
|
||||
CASE
|
||||
WHEN zst.person_id = ?";
|
||||
|
||||
if (!isEmptyArray($all_funktionen_oe_kurzbz))
|
||||
{
|
||||
$params[] = array_keys($all_funktionen_oe_kurzbz);
|
||||
$query .= " OR (zst.oe_kurzbz IN ? AND zst.funktion_kurzbz IS NULL) /* if oe is specified in fehler_zustaendigkeiten */";
|
||||
|
||||
// check for each oe for each function if zustaendig
|
||||
foreach ($all_funktionen_oe_kurzbz as $oe_kurzbz => $funktionen_kurzbz)
|
||||
{
|
||||
foreach ($funktionen_kurzbz as $funktion_kurzbz)
|
||||
{
|
||||
$query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$query .= " THEN TRUE
|
||||
ELSE FALSE
|
||||
END AS \"zustaendig\"
|
||||
FROM system.tbl_fehler_zustaendigkeiten zst
|
||||
)
|
||||
SELECT
|
||||
fehler.fehler_kurzbz, fehler.fehlercode
|
||||
FROM
|
||||
system.tbl_fehler fehler
|
||||
LEFT JOIN zustaendigkeiten USING(fehlercode)
|
||||
WHERE
|
||||
zustaendigkeiten.fehlercode IS NULL
|
||||
OR zustaendigkeiten.zustaendig = TRUE";
|
||||
|
||||
return $this->execReadOnlyQuery($query, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets active Mitarbeiter not assigned to a Fehler.
|
||||
* @param $fehlercode
|
||||
|
||||
@@ -20,7 +20,7 @@ class Issue_model extends DB_Model
|
||||
* @param string $fehlercode_extern
|
||||
* @return object success with issues or error
|
||||
*/
|
||||
public function getOpenIssues($fehlercodes, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null)
|
||||
public function getOpenIssues($fehlercodes, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null, $hauptzustaendig = false)
|
||||
{
|
||||
// issue exists for a fehlercode (or fehlercode_extern), person_id, oe_kurzbz, if not verarbeitet yet
|
||||
return $this->_getIssues(
|
||||
@@ -31,7 +31,8 @@ class Issue_model extends DB_Model
|
||||
$ist_verarbeitet = false,
|
||||
$behebung_parameter = null,
|
||||
$fehlercodes,
|
||||
$fehlercode_extern
|
||||
$fehlercode_extern,
|
||||
$hauptzustaendig
|
||||
);
|
||||
}
|
||||
|
||||
@@ -43,8 +44,14 @@ class Issue_model extends DB_Model
|
||||
* @param string $fehlercode_extern if provided, only issues with this external fehlercode are counted (for identifying issues from external systems).
|
||||
* @return Object success with number of issues or error
|
||||
*/
|
||||
public function getOpenIssueCount($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null, $behebung_parameter = null)
|
||||
{
|
||||
public function getOpenIssueCount(
|
||||
$fehlercode,
|
||||
$person_id = null,
|
||||
$oe_kurzbz = null,
|
||||
$fehlercode_extern = null,
|
||||
$behebung_parameter = null,
|
||||
$hauptzustaendig = false
|
||||
) {
|
||||
$params = array($fehlercode);
|
||||
// issue exists for a fehlercode (or fehlercode_extern), person_id, oe_kurzbz, if not verarbeitet yet
|
||||
$qry = 'SELECT count(*) as anzahl_open_issues FROM system.tbl_issue
|
||||
@@ -100,9 +107,20 @@ class Issue_model extends DB_Model
|
||||
$oe_kurzbz = null,
|
||||
$fehlertyp_kurzbz = null,
|
||||
$apps = null,
|
||||
$behebung_parameter = null
|
||||
$behebung_parameter = null,
|
||||
$hauptzustaendig = false
|
||||
) {
|
||||
return $this->_getIssues($person_id, $oe_kurzbz, $fehlertyp_kurzbz, $apps, $ist_verarbeitet = false, $behebung_parameter);
|
||||
return $this->_getIssues(
|
||||
$person_id,
|
||||
$oe_kurzbz,
|
||||
$fehlertyp_kurzbz,
|
||||
$apps,
|
||||
$ist_verarbeitet = false,
|
||||
$behebung_parameter,
|
||||
$fehlercodes = null,
|
||||
$fehlercode_extern = null,
|
||||
$hauptzustaendig
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,7 +143,8 @@ class Issue_model extends DB_Model
|
||||
$ist_verarbeitet = null,
|
||||
$behebung_parameter = null,
|
||||
$fehlercodes = null,
|
||||
$fehlercode_extern = null
|
||||
$fehlercode_extern = null,
|
||||
$hauptzustaendig = false
|
||||
) {
|
||||
$params = array();
|
||||
|
||||
@@ -186,6 +205,23 @@ class Issue_model extends DB_Model
|
||||
}
|
||||
}
|
||||
|
||||
// retrieving only fehler for which user is hauptzuständig
|
||||
if ($hauptzustaendig === true)
|
||||
{
|
||||
$this->load->model('system/Fehlerzustaendigkeiten_model', 'FehlerzustaendigkeitenModel');
|
||||
|
||||
$result = $this->FehlerzustaendigkeitenModel->getFehlerForUserHauptzustaendig();
|
||||
|
||||
|
||||
if (isError($result)) return $result;
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$fehlercodesZust = array_column(getData($result), 'fehlercode');
|
||||
$fehlercodes = isEmptyArray($fehlercodes) ? $fehlercodesZust : array_intersect($fehlercodes, $fehlercodesZust);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isEmptyArray($fehlercodes))
|
||||
{
|
||||
$qry .= ' AND fehlercode IN ?';
|
||||
|
||||
Reference in New Issue
Block a user