Merge branch 'feature-7274/SAPSF_neuer_User_wird_aus_SF_geholt_und_im_FHC_angelegt' into feature-6656/Worker_queue

This commit is contained in:
Andreas Österreicher
2020-06-17 12:25:01 +02:00
4 changed files with 209 additions and 1 deletions
@@ -33,4 +33,97 @@ class Benutzer_model extends DB_Model
return $this->execQuery($sql, array($person_id, $oe_kurzbz));
}
/**
* Checks if alias exists
* @param $alias
*/
public function aliasExists($alias)
{
$this->addSelect('1');
$result = $this->loadWhere(array('alias' => $alias));
if (!isError($result))
{
if (hasData($result))
{
$result = success(array(true));
}
else if (!hasData($result))
{
$result = success(array(false));
}
}
return $result;
}
/**
* Generates alias for a uid.
* @param $uid
* @return array the alias
*/
public function generateAlias($uid)
{
$aliasres = '';
$this->addSelect('vorname, nachname');
$this->addJoin('public.tbl_person', 'person_id');
$nameresult = $this->loadWhere(array('uid' => $uid));
if (hasData($nameresult))
{
$aliasdata = getData($nameresult);
$alias = $this->_sanitizeAliasName($aliasdata[0]->vorname).'.'.$this->_sanitizeAliasName($aliasdata[0]->nachname);
$aliasexists = $this->aliasExists($alias);
if (hasData($aliasexists) && !getData($aliasexists)[0])
$aliasres = $alias;
}
return success($aliasres);
}
// --------------------------------------------------------------------------------------------
// Private methods
/**
* Sanitizes a string used for alias. Replaces special characters, spaces, upper case.
* @param string $str
* @return string
*/
private function _sanitizeAliasName($str)
{
$enc = 'UTF-8';
$acentos = array(
'A' => '/À|Á|Â|Ã|Å/',
'Ae' => '/Ä/',
'a' => '/à|á|â|ã|å/',
'ae'=> '/ä/',
'C' => '/Ç/',
'c' => '/ç/',
'E' => '/È|É|Ê|Ë/',
'e' => '/è|é|ê|ë/',
'I' => '/Ì|Í|Î|Ï/',
'i' => '/ì|í|î|ï/',
'N' => '/Ñ/',
'n' => '/ñ/',
'O' => '/Ò|Ó|Ô|Õ/',
'Oe' => '/Ö/',
'o' => '/ò|ó|ô|õ/',
'oe' => '/ö/',
'U' => '/Ù|Ú|Û/',
'Ue' => '/Ü/',
'u' => '/ù|ú|û/',
'ue' => '/ü/',
'Y' => '/Ý/',
'y' => '/ý|ÿ/',
'a.' => '/ª/',
'o.' => '/º/',
'ss' => '/ß/',
);
$str = preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc));
return mb_strtolower(str_replace(' ','_', $str));
}
}
@@ -10,6 +10,7 @@ class Kontakt_model extends DB_Model
parent::__construct();
$this->dbTable = 'public.tbl_kontakt';
$this->pk = 'kontakt_id';
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
}
public function getWholeKontakt($kontakt_id, $person_id = null, $kontakttyp = null)
@@ -59,4 +60,63 @@ class Kontakt_model extends DB_Model
return $this->execQuery($sql, array($person_id, $kontakttyp));
}
/**
* Laedt einen Kontakt eines Standortes
* Es wird nur der erste Eintrag zurueckgeliefert!
* @param $standort_id
* @param $kontakttyp
*/
public function getFirmaKontakttyp($standort_id, $kontakttyp)
{
if (!is_numeric($standort_id))
{
return error('StandortID ist ungueltig');
}
$qry = "SELECT kontakt, kontakt_id FROM public.tbl_kontakt WHERE standort_id=? AND kontakttyp=? ORDER BY kontakt_id LIMIT 1;";
return $this->execQuery($qry, array('standort_id' => $standort_id, 'kontakttyp' => $kontakttyp));
}
/**
* Gets Firmentelefon for a uid, can be Vorwahl with Telefonklappe or Firmenhandy
* @param $uid
*/
public function getFirmentelefon($uid)
{
$firmentelefon = success(array());
$this->MitarbeiterModel->addSelect('standort_id, telefonklappe, person_id');
$this->MitarbeiterModel->addJoin('public.tbl_benutzer', 'tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid');
$mitarbeiter = $this->MitarbeiterModel->load(array('uid' => $uid));
if (hasData($mitarbeiter))
{
$mitarbeiter = getData($mitarbeiter);
if (isEmptyString($mitarbeiter[0]->telefonklappe))
{
$this->addSelect('kontakt');
$this->addOrder('updateamum, insertamum', 'DESC');
$this->addLimit(1);
$firmenhandy = $this->loadWhere(array('person_id' => $mitarbeiter[0]->person_id, 'kontakttyp' => 'firmenhandy'));
if (hasData($firmenhandy))
{
$firmenhandy = getData($firmenhandy);
$firmentelefon = success(array('kontakt' => $firmenhandy[0]->kontakt, 'telefonklappe' => ''));
}
}
else
{
$firmaKontakttyp = $this->getFirmaKontakttyp($mitarbeiter[0]->standort_id, 'telefon');
if (hasData($firmaKontakttyp))
{
$vorwahl = getData($firmaKontakttyp);
$vorwahl = $vorwahl[0]->kontakt;
$firmentelefon = success(array('kontakt' => $vorwahl, 'telefonklappe' => $mitarbeiter[0]->telefonklappe));
}
}
}
return $firmentelefon;
}
}
@@ -40,4 +40,47 @@ class Mitarbeiter_model extends DB_Model
return success(false);
}
}
/**
* Laedt das Personal
*
* @param $fix wenn true werden nur fixangestellte geladen
* @param $aktiv wenn true werden nur aktive geladen, wenn false dann nur inaktve, wenn null dann alle
* @param $verwendung wenn true werden alle geladen die eine BIS-Verwendung eingetragen haben
* @return array
*/
public function getPersonal($aktiv, $fix, $verwendung)
{
$qry = "SELECT DISTINCT ON(mitarbeiter_uid) *,
tbl_benutzer.aktiv as aktiv,
tbl_mitarbeiter.insertamum,
tbl_mitarbeiter.insertvon,
tbl_mitarbeiter.updateamum,
tbl_mitarbeiter.updatevon
FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid))
JOIN public.tbl_person USING(person_id))
LEFT JOIN public.tbl_benutzerfunktion USING(uid)
WHERE true";
if ($fix === true)
$qry .= " AND fixangestellt=true";
elseif ($fix === false)
$qry .= " AND fixangestellt=false";
if ($aktiv === true)
$qry .= " AND tbl_benutzer.aktiv=true";
elseif ($aktiv === false)
$qry .= " AND tbl_benutzer.aktiv=false";
if ($verwendung === true)
{
$qry.=" AND EXISTS(SELECT * FROM bis.tbl_bisverwendung WHERE (ende>now() or ende is null) AND tbl_bisverwendung.mitarbeiter_uid=tbl_mitarbeiter.mitarbeiter_uid)";
}
elseif ($verwendung === false)
{
$qry.=" AND NOT EXISTS(SELECT * FROM bis.tbl_bisverwendung WHERE (ende>now() or ende is null) AND tbl_bisverwendung.mitarbeiter_uid=tbl_mitarbeiter.mitarbeiter_uid)";
}
return $this->execQuery($qry);
}
}
+13 -1
View File
@@ -4389,6 +4389,18 @@ if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_abschlussbeurteilung LI
echo '<br>lehre.tbl_abschlussbeurteilung: Spalte sort hinzugefuegt!<br>';
}
// Add column iso3166_1_a3 to tbl_nation
if(!$result = @$db->db_query("SELECT iso3166_1_a3 FROM bis.tbl_nation LIMIT 1"))
{
$qry = "ALTER table bis.tbl_nation ADD COLUMN iso3166_1_a3 VARCHAR(3);
COMMENT ON COLUMN bis.tbl_nation.iso3166_1_a3 IS 'ISO 3166-1 alpha-3 country code';";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_nation: '.$db->db_last_error().'</strong><br>';
else
echo '<br>bis.tbl_nation: Spalte iso3166_1_a3 hinzugefuegt';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -4418,7 +4430,7 @@ $tabellen=array(
"bis.tbl_mobilitaet" => array("mobilitaet_id","prestudent_id","mobilitaetstyp_kurzbz","studiensemester_kurzbz","mobilitaetsprogramm_code","gsprogramm_id","firma_id","status_kurzbz","ausbildungssemester","insertvon","insertamum","updatevon","updateamum"),
"bis.tbl_mobilitaetstyp" => array("mobilitaetstyp_kurzbz","bezeichnung","aktiv"),
"bis.tbl_mobilitaetsprogramm" => array("mobilitaetsprogramm_code","kurzbz","beschreibung","sichtbar","sichtbar_outgoing"),
"bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre","nationengruppe_kurzbz", "iso3166_1_a2"),
"bis.tbl_nation" => array("nation_code","entwicklungsstand","eu","ewr","kontinent","kurztext","langtext","engltext","sperre","nationengruppe_kurzbz", "iso3166_1_a2","iso3166_1_a3"),
"bis.tbl_nationengruppe" => array("nationengruppe_kurzbz","nationengruppe_bezeichnung","aktiv"),
"bis.tbl_orgform" => array("orgform_kurzbz","code","bezeichnung","rolle","bisorgform_kurzbz","bezeichnung_mehrsprachig"),
"bis.tbl_verwendung" => array("verwendung_code","verwendungbez"),