, * Andreas Oesterreicher and * Rudolf Hangl . */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/datum.class.php'); class preinteressent extends basis_db { public $new; // boolean public $result = array(); //Tabellenspalten public $preinteressent_id; // serial public $person_id; public $studiensemester_kurzbz; // varchar(16) public $aufmerksamdurch_kurzbz; // varchar(16) public $firma_id; // integer public $anmerkung; // text public $erfassungsdatum; // date public $einverstaendnis; // boolean public $absagedatum; // timestamp public $insertamum; // timestamp public $insertvon; // varchar(16) public $updateamum; // timestamp public $updatevon; // varchar(16) public $maturajahr; // numeric(4,0) public $infozusendung; // date public $kontaktmedium_kurzbz; // varchar(32) public $studiengang_kz; public $prioritaet; // smallint public $prioritaet_arr = array('1'=>'niedrg', '2'=>'mittel', '3'=>'hoch'); public $freigabedatum; // timestamp public $uebernahmedatum; // timestamp /** * Konstruktor * @param preinteressent_id ID des zu ladenden Datensatzes */ public function __construct($preinteressent_id=null) { parent::__construct(); if($preinteressent_id != null) $this->load($preinteressent_id); } /** * Laedt einen Datensatz * @param preinteressent_id ID des zu ladenden Datensatzes */ public function load($preinteressent_id) { //id auf Gueltigkeit pruefen if(!is_numeric($preinteressent_id) || $preinteressent_id == '') { $this->errormsg = 'preinteressent_id muss eine gueltige Zahl sein'; return false; } //laden des Datensatzes $qry = "SELECT * FROM public.tbl_preinteressent WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER).";"; if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { $this->preinteressent_id = $row->preinteressent_id; $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; $this->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; $this->firma_id = $row->firma_id; $this->anmerkung = $row->anmerkung; $this->erfassungsdatum = $row->erfassungsdatum; $this->einverstaendnis = $this->db_parse_bool($row->einverstaendnis); $this->maturajahr = $row->maturajahr; $this->infozusendung = $row->infozusendung; $this->absagedatum = $row->absagedatum; $this->person_id = $row->person_id; $this->updateamum = $row->updateamum; $this->updatevon = $row->updatevon; $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->kontaktmedium_kurzbz = $row->kontaktmedium_kurzbz; return true; } else { $this->errormsg = 'Fehler bei der Datenbankabfrage'; return false; } } else { $this->errormsg = 'Fehler bei der Datenbankabfrage'; return false; } } /** * Loescht einen Datensatz, erstellt einen UNDO Befehl * und einen LOG Eintrag * @param preinteressent_id ID des zu loeschenden Datensatzes * @return true wenn ok, false im Fehlerfall */ public function delete($preinteressent_id) { //id auf Gueltigkeit pruefen if(!is_numeric($preinteressent_id) || $preinteressent_id == '') { $this->errormsg = 'preinteressent_id muss eine gueltige Zahl sein'; return false; } $undo=''; //UNDO Befehl zusammenbauen $this->db_query('BEGIN;'); $qry = "SELECT * FROM public.tbl_preinteressent WHERE preinteressent_id = ".$this->db_add_param($preinteressent_id, FHC_INTEGER); if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { $undo.=" INSERT INTO public.tbl_preinteressent(preinteressent_id, person_id, studiensemester_kurzbz, aufmerksamdurch_kurzbz, firma_id, erfassungsdatum, einverstaendnis, absagedatum, anmerkung, insertamum, insertvon, updateamum, updatevon, maturajahr, infozusendung, kontaktmedium_kurzbz) VALUES (". $this->db_add_param($row->preinteressent_id, FHC_INTEGER).', '. $this->db_add_param($row->person_id, FHC_INTEGER).', '. $this->db_add_param($row->studiensemester_kurzbz).', '. $this->db_add_param($row->aufmerksamdurch_kurzbz).', '. $this->db_add_param($row->firma_id, FHC_INTEGER).', '. $this->db_add_param($row->erfassungsdatum).', '. $this->db_add_param($this->db_parse_bool($row->einverstaendnis), FHC_BOOLEAN).', '. $this->db_add_param($row->absagedatum).', '. $this->db_add_param($row->anmerkung).', '. $this->db_add_param($row->insertamum).', '. $this->db_add_param($row->insertvon).','. $this->db_add_param($row->updateamum).', '. $this->db_add_param($row->updatevon).', '. $this->db_add_param($row->maturajahr).', '. $this->db_add_param($row->infozusendung).', '. $this->db_add_param($row->kontaktmedium_kurzbz).');'; } } else { $this->errormsg = 'Fehler beim Erstellen des UNDO Befehls'; $this->db_query('ROLLBACK'); return false; } $qry = "SELECT * FROM public.tbl_preinteressentstudiengang WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER); if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $undo.=" INSERT INTO public.tbl_preinteressentstudiengang(studiengang_kz, preinteressent_id, prioritaet, freigabedatum, uebernahmedatum, insertamum, insertvon, updateamum, updatevon) VALUES(". $this->db_add_param($row->studiengang_kz, FHC_INTEGER).','. $this->db_add_param($row->preinteressent_id, FHC_INTEGER).','. $this->db_add_param($row->prioritaet).','. $this->db_add_param($row->freigabedatum).','. $this->db_add_param($row->uebernahmedatum).','. $this->db_add_param($row->insertamum).','. $this->db_add_param($row->insertvon).','. $this->db_add_param($row->updateamum).','. $this->db_add_param($row->updatevon).');'; } } else { $this->errormsg = 'Fehler beim Erstellen des UNDO Befehls'; $this->db_query('ROLLBACK'); return false; } $qry = "DELETE FROM public.tbl_preinteressentstudiengang WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER)."; DELETE FROM public.tbl_preinteressent WHERE preinteressent_id = ".$this->db_add_param($preinteressent_id, FHC_INTEGER).";"; if($this->db_query($qry)) { //Log schreiben $log = new log(); $log->new = true; $log->sql = $qry; $log->sqlundo = $undo; $log->executetime = date('Y-m-d H:i:s'); $log->mitarbeiter_uid = get_uid(); $log->beschreibung = "Preinteressent loeschen - $preinteressent_id"; if(!$log->save()) { $this->errormsg = 'Fehler beim Schreiben des Log-Eintrages'; $this->db_query('ROLLBACK'); return false; } $this->db_query('COMMIT;'); return true; } else { $this->errormsg = 'Fehler beim Loeschen der Daten'; $this->db_query('ROLLBACK'); return false; } } /** * Prueft die Daten vor dem Speichern * @return true wenn ok, false wenn fehler */ protected function validate() { if($this->person_id=='') { $this->errormsg = 'Person_id muss angegeben werden'; return false; } if($this->aufmerksamdurch_kurzbz=='') { $this->errormsg = 'Aufmerksamdurch muss angegeben werden'; return false; } return true; } /** * Speichert den aktuellen Datensatz * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt * andernfalls wird der Datensatz mit der ID in $preinteressent_id aktualisiert * @return true wenn ok, false im Fehlerfall */ public function save($new=null) { if(!$this->validate()) return false; if($new==null) $new = $this->new; if($new) { //Neuen Datensatz anlegen $qry = "BEGIN;INSERT INTO public.tbl_preinteressent (studiensemester_kurzbz, aufmerksamdurch_kurzbz, firma_id, anmerkung, erfassungsdatum, einverstaendnis, absagedatum, maturajahr, infozusendung, person_id, updateamum, updatevon, insertamum, insertvon, kontaktmedium_kurzbz) VALUES (". $this->db_add_param($this->studiensemester_kurzbz).', '. $this->db_add_param($this->aufmerksamdurch_kurzbz).', '. $this->db_add_param($this->firma_id, FHC_INTEGER).', '. $this->db_add_param($this->anmerkung).', '. $this->db_add_param($this->erfassungsdatum).', '. $this->db_add_param($this->einverstaendnis, FHC_BOOLEAN).', '. $this->db_add_param($this->absagedatum).', '. $this->db_add_param($this->maturajahr).', '. $this->db_add_param($this->infozusendung).', '. $this->db_add_param($this->person_id, FHC_INTEGER).', '. $this->db_add_param($this->updateamum).', '. $this->db_add_param($this->updatevon).', '. $this->db_add_param($this->insertamum).', '. $this->db_add_param($this->insertvon).', '. $this->db_add_param($this->kontaktmedium_kurzbz).');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE public.tbl_preinteressent SET". " studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz).",". " aufmerksamdurch_kurzbz=".$this->db_add_param($this->aufmerksamdurch_kurzbz).",". " firma_id=".$this->db_add_param($this->firma_id, FHC_INTEGER).",". " anmerkung=".$this->db_add_param($this->anmerkung).",". " erfassungsdatum=".$this->db_add_param($this->erfassungsdatum).",". " einverstaendnis=".$this->db_add_param($this->einverstaendnis, FHC_BOOLEAN).",". " absagedatum=".$this->db_add_param($this->absagedatum).",". " maturajahr=".$this->db_add_param($this->maturajahr).",". " infozusendung=".$this->db_add_param($this->infozusendung).",". " person_id=".$this->db_add_param($this->person_id, FHC_INTEGER).",". " updatevon=".$this->db_add_param($this->updatevon).",". " updateamum=".$this->db_add_param($this->updateamum).','. " kontaktmedium_kurzbz=".$this->db_add_param($this->kontaktmedium_kurzbz). " WHERE preinteressent_id=".$this->db_add_param($this->preinteressent_id, FHC_INTEGER); } if($this->db_query($qry)) { if($new) { $qry = "SELECT currval('public.tbl_preinteressent_preinteressent_id_seq') as id"; if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { $this->preinteressent_id = $row->id; $this->db_query('COMMIT;'); return true; } else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; $this->db_query('ROLLBACK'); return false; } } else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; $this->db_query('ROLLBACK'); return false; } } else return true; } else { $this->errormsg = 'Fehler beim Speichern des Datensatzes'; return false; } } /** * Laedt die Freigegebenen Preinteressenten * eines Studienganges welche noch nicht * uebernommen wurden * @param $studiengang_kz * $studiensemester_kurzbz * @return true wenn ok, false im Fehlerfall */ public function loadFreigegebene($studiengang_kz, $studiensemester_kurzbz='') { $qry = "SELECT tbl_preinteressent.*, tbl_preinteressentstudiengang.* FROM public.tbl_preinteressent JOIN public.tbl_preinteressentstudiengang USING(preinteressent_id) JOIN public.tbl_person USING(person_id) WHERE (studiengang_kz, person_id) NOT IN (SELECT studiengang_kz, person_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING(prestudent_id) WHERE status_kurzbz='Interessent' AND studiensemester_kurzbz=tbl_preinteressent.studiensemester_kurzbz AND person_id=tbl_person.person_id) AND freigabedatum is not null AND tbl_preinteressentstudiengang.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND tbl_preinteressentstudiengang.uebernahmedatum is null"; if($studiensemester_kurzbz!='') $qry.=" AND tbl_preinteressent.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new preinteressent(); $obj->preinteressent_id = $row->preinteressent_id; $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; $obj->firma_id = $row->firma_id; $obj->anmerkung = $row->anmerkung; $obj->erfassungsdatum = $row->erfassungsdatum; $obj->einverstaendnis = $this->db_parse_bool($row->einverstaendnis); $obj->absagedatum = $row->absagedatum; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->maturajahr = $row->maturajahr; $obj->infozusendung = $row->infozusendung; $obj->person_id = $row->person_id; $obj->studiengang_kz = $row->studiengang_kz; $obj->prioritaet = $row->prioritaet; $obj->freigabedatum = $row->freigabedatum; $obj->uebernahmedatum = $row->uebernahmedatum; $obj->kontaktmedium_kurzbz = $row->kontaktmedium_kurzbz; $this->result[] = $obj; } return true; } else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } /** * * Laedt die Preinteressenten * * @param $studiengang_kz * @param $studiensemester_kurzbz * @param $filter Filtert nach Nachname, Vorname, Kontakt, und Erfassungsdatum * @param $nichtfreigegeben Wenn true werden nur personen geliefert die noch nicht freigegeben wurden * @param $uebernommen Wenn true werden nur Personen geliefert die bereits freigegeben sind aber noch nicht uebernommen * @param $kontaktmedium Wenn -1 werden alle geliefert die das Kontaktmedium nicht gesetzt haben, sonst bei denen das uebergeben Kontaktmedium ausgewaehlt ist * @param $absage * @param $erfassungsdatum_von * @param $erfassungsdatum_bis * @param $einverstaendnis * @param $preinteressent Wenn true werden nur die Personen angezeigt die noch nicht als Interessent oder Student in einem Studiengang vorhanden sind */ public function loadPreinteressenten($studiengang_kz='', $studiensemester_kurzbz=null, $filter='', $nichtfreigegeben=null, $uebernommen=null, $kontaktmedium=null, $absage=false, $erfassungsdatum_von=null, $erfassungsdatum_bis=null, $einverstaendnis=null, $preinteressent=null) { $qry = "SELECT distinct tbl_preinteressent.* FROM public.tbl_preinteressent JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_preinteressentstudiengang USING(preinteressent_id) LEFT JOIN public.tbl_kontakt USING(person_id) WHERE true"; if($studiengang_kz!='') $qry.=" AND tbl_preinteressentstudiengang.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); if(!is_null($studiensemester_kurzbz)) { if($studiensemester_kurzbz=='') $qry.=" AND tbl_preinteressent.studiensemester_kurzbz is null"; else $qry.=" AND tbl_preinteressent.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); } if($filter!='') { $datum_obj = new datum(); $qry.=" AND (lower(nachname) like lower('%".$this->db_escape($filter)."%') OR lower(vorname) like lower('%".$this->db_escape($filter)."%') OR lower(kontakt) like lower('%".$this->db_escape($filter)."%')"; if($filter = $datum_obj->formatDatum($filter)) $qry.=" OR erfassungsdatum = ".$this->db_escape($filter); $qry.=")"; } if($nichtfreigegeben==true) $qry.=" AND tbl_preinteressentstudiengang.freigabedatum is null"; if($uebernommen==true) $qry.=" AND tbl_preinteressentstudiengang.freigabedatum is not null AND tbl_preinteressentstudiengang.uebernahmedatum is null"; if(!is_null($kontaktmedium)) { if($kontaktmedium=='-1') $qry.=" AND tbl_preinteressent.kontaktmedium_kurzbz is null"; else $qry.=" AND tbl_preinteressent.kontaktmedium_kurzbz=".$this->db_add_param($kontaktmedium); } if(!is_null($erfassungsdatum_bis)) $qry.=" AND erfassungsdatum<=".$this->db_add_param($erfassungsdatum_bis); if(!is_null($erfassungsdatum_von)) $qry.=" AND erfassungsdatum>=".$this->db_add_param($erfassungsdatum_von); if($absage) $qry.=" AND absagedatum is not null"; else $qry.=" AND absagedatum is null"; if($einverstaendnis) $qry.=" AND einverstaendnis=true"; if($preinteressent) $qry.=" AND NOT EXISTS (SELECT * FROM public.tbl_prestudent WHERE person_id=tbl_person.person_id)"; if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new preinteressent(); $obj->preinteressent_id = $row->preinteressent_id; $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; $obj->firma_id = $row->firma_id; $obj->anmerkung = $row->anmerkung; $obj->erfassungsdatum = $row->erfassungsdatum; $obj->einverstaendnis = $this->db_parse_bool($row->einverstaendnis); $obj->absagedatum = $row->absagedatum; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->maturajahr = $row->maturajahr; $obj->infozusendung = $row->infozusendung; $obj->person_id = $row->person_id; $obj->kontaktmedium_kurzbz = $row->kontaktmedium_kurzbz; $this->result[] = $obj; } return true; } else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } /** * Laedt die Zuordnung von Preinteressenten zu Studiengaengen * * @param $preinteressent_id * @return booelan */ public function loadZuordnungen($preinteressent_id) { if(!is_numeric($preinteressent_id) || $preinteressent_id=='') { $this->errormsg = 'Preinteressent_id ist ungueltig'; return false; } $qry = "SELECT * FROM public.tbl_preinteressentstudiengang WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER)." ORDER BY studiengang_kz"; if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new preinteressent(); $obj->studiengang_kz = $row->studiengang_kz; $obj->preinteressent_id = $row->preinteressent_id; $obj->prioritaet = $row->prioritaet; $obj->freigabedatum = $row->freigabedatum; $obj->uebernahmedatum = $row->uebernahmedatum; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; $this->result[] = $obj; } return true; } else { $this->errormsg = 'Fehler beim Laden der Zuordnung'; return false; } } /** * Laedt eine Zuordnung * @return true wenn ok, false wenn Fehler */ public function loadZuordnung($preinteressent_id, $studiengang_kz) { if(!is_numeric($preinteressent_id) || $preinteressent_id=='') { $this->errormsg = 'Preinteressent_id ist ungueltig'; return false; } if(!is_numeric($studiengang_kz) || $studiengang_kz=='') { $this->errormsg = 'studiengang_kz ist ungueltig'; return false; } $qry = "SELECT * FROM public.tbl_preinteressentstudiengang WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { $this->studiengang_kz = $row->studiengang_kz; $this->preinteressent_id = $row->preinteressent_id; $this->prioritaet = $row->prioritaet; $this->freigabedatum = $row->freigabedatum; $this->uebernahmedatum = $row->uebernahmedatum; $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->updateamum = $row->updateamum; $this->updatevon = $row->updatevon; return true; } else { $this->errormsg = 'Fehler beim Laden der Zuordnung'; return false; } } else { $this->errormsg = 'Fehler beim Laden der Zuordnung'; return false; } } /** * Speichert die Studiengangszuordnung eines * Preinteressent * @return true wenn ok, false wenn Fehler */ public function saveZuordnung($new=null) { if($new==null) $new = $this->new; if($new) { //Neuen Datensatz anlegen $qry = "INSERT INTO public.tbl_preinteressentstudiengang (studiengang_kz, preinteressent_id, prioritaet, freigabedatum, uebernahmedatum, updateamum, updatevon, insertamum, insertvon) VALUES (". $this->db_add_param($this->studiengang_kz).', '. $this->db_add_param($this->preinteressent_id, FHC_INTEGER).', '. $this->db_add_param($this->prioritaet).', '. $this->db_add_param($this->freigabedatum).', '. $this->db_add_param($this->uebernahmedatum).', '. $this->db_add_param($this->updateamum).', '. $this->db_add_param($this->updatevon).', '. $this->db_add_param($this->insertamum).', '. $this->db_add_param($this->insertvon).');'; } else { //Bestehenden Datensatz aktualisieren $qry= "UPDATE public.tbl_preinteressentstudiengang SET". " prioritaet=".$this->db_add_param($this->prioritaet).",". " freigabedatum=".$this->db_add_param($this->freigabedatum).",". " uebernahmedatum=".$this->db_add_param($this->uebernahmedatum).",". " updatevon=".$this->db_add_param($this->updatevon).",". " updateamum=".$this->db_add_param($this->updateamum). " WHERE preinteressent_id=".$this->db_add_param($this->preinteressent_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($this->studiengang_kz, FHC_INTEGER); } if($this->db_query($qry)) { return true; } else { $this->errormsg = 'Fehler beim Speichern des Datensatzes'; return false; } } /** * Loescht eine Zuordnung * @return true wenn ok, false wenn Fehler */ public function deleteZuordnung($preinteressent_id, $studiengang_kz) { if(!is_numeric($preinteressent_id) || $preinteressent_id=='') { $this->errormsg = 'Preinteressent_id ist ungueltig'; return false; } if(!is_numeric($studiengang_kz) || $studiengang_kz=='') { $this->errormsg = 'Studiengang_kz ist ungueltig'; return false; } $qry = "DELETE FROM public.tbl_preinteressentstudiengang WHERE preinteressent_id=".$this->db_add_param($preinteressent_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); if($this->db_query($qry)) { return true; } else { $this->errormsg = 'Fehler beim Loeschen der Daten'; return false; } } /** * Laedt alle Preinteressenten einer Person * @return true wenn ok, false wenn Fehler */ public function getPreinteressenten($person_id) { if(!is_numeric($person_id) || $person_id=='') { $this->errormsg = 'ID ist ungueltig'; return false; } $qry = "SELECT * FROM public.tbl_preinteressent WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { $obj = new preinteressent(); $obj->preinteressent_id = $row->preinteressent_id; $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; $obj->firma_id = $row->firma_id; $obj->anmerkung = $row->anmerkung; $obj->erfassungsdatum = $row->erfassungsdatum; $obj->einverstaendnis = $this->db_parse_bool($row->einverstaendnis); $obj->maturajahr = $row->maturajahr; $obj->infozusendung = $row->infozusendung; $obj->absagedatum = $row->absagedatum; $obj->person_id = $row->person_id; $obj->updateamum = $row->updateamum; $obj->updatevon = $row->updatevon; $obj->insertamum = $row->insertamum; $obj->insertvon = $row->insertvon; $obj->kontaktmedium_kurzbz = $row->kontaktmedium_kurzbz; $this->result[] = $obj; } return true; } else { $this->errormsg = 'Fehler beim Laden der Zuordnung'; return false; } } } ?>