mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Documents first draft
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class Documents extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Semester' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
|
||||
]);
|
||||
|
||||
$this->loadPhrases([
|
||||
'global',
|
||||
'tools'
|
||||
]);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @param string $stsem
|
||||
* @return void
|
||||
*/
|
||||
public function index($stsem = null)
|
||||
{
|
||||
return $this->Semester($stsem);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $stsem
|
||||
* @return void
|
||||
*/
|
||||
public function Semester($stsem = null)
|
||||
{
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Konto_model', 'KontoModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$uid = getAuthUID();
|
||||
$studiengaenge = [];
|
||||
|
||||
$stati = $this->PrestudentstatusModel->loadWhereUid($uid, null, true);
|
||||
if (isError($stati))
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($stati)
|
||||
]);
|
||||
$stati = getData($stati);
|
||||
if (!$stati)
|
||||
return $this->view->load('errors/html/error_general.php', [
|
||||
'heading' => 'User ist kein Student',
|
||||
'message' => 'Es konnten keine Studiensemester gefunden werden in denen der User als Student inskripiert ist'
|
||||
]);
|
||||
|
||||
$stsemArray = [];
|
||||
foreach ($stati as $status) {
|
||||
if (!isset($studiengaenge[$status->studiengang_kz])) {
|
||||
$stg = $this->StudiengangModel->load($status->studiengang_kz);
|
||||
if (isError($stg))
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($stg)
|
||||
]);
|
||||
$stg = getData($stg);
|
||||
if (!$stg)
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => 'No Studiengang found for studiengang_kz ' . $status->studiengang_kz
|
||||
]);
|
||||
$studiengaenge[$status->studiengang_kz] = current($stg);
|
||||
}
|
||||
if (!isset($stsemArray[$status->studiensemester_kurzbz]))
|
||||
$stsemArray[$status->studiensemester_kurzbz] = [];
|
||||
// TODO(chris): maybe just use prestudent_id?
|
||||
$stsemArray[$status->studiensemester_kurzbz][] = $status;
|
||||
}
|
||||
|
||||
$hasSemester = true;
|
||||
$inskriptionsbestaetigungen = [];
|
||||
|
||||
if ($stsem && !isset($stsemArray[$stsem])) {
|
||||
$hasSemester = false;
|
||||
} else {
|
||||
if (!$stsem)
|
||||
$stsem = end($stsemArray);
|
||||
|
||||
#$stsemArray[$stsem] = array_unique($stsemArray[$stsem]);
|
||||
|
||||
$buchungstypen = implode('\',\'', defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : []);
|
||||
|
||||
foreach ($stsemArray[$stsem] as $status) {
|
||||
// NOTE(chris): multiple prestudentstatus for prestudent and semester
|
||||
if (isset($inskriptionsbestaetigungen[$status->studiengang_kz]))
|
||||
continue;
|
||||
|
||||
$inskriptionsbestaetigungen[$status->studiengang_kz] = (boolean) getData($this->KontoModel->checkStudienbeitragFromPrestudent($status->prestudent_id, $stsem, $buchungstypen));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO(chris): in array stsem stsemArray:
|
||||
// TODO(chris): - inskriptionsbestaetigung (konto)
|
||||
// TODO(chris): - CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN? studienbuchblatt
|
||||
// TODO(chris): - CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN? studienerfolgsbestaetigung
|
||||
// TODO(chris): else: msg
|
||||
|
||||
// TODO(chris): CIS_DOKUMENTE_SELFSERVICE?: ...abschlussdokumente (akte)
|
||||
|
||||
$stsemArray = array_keys($stsemArray);
|
||||
if (!$hasSemester)
|
||||
array_unshift($stsemArray, $stsem);
|
||||
|
||||
$this->load->view('Cis/Documents', [
|
||||
'uid' => $uid,
|
||||
'stsem' => $stsem,
|
||||
'stsemArray' => $stsemArray,
|
||||
'hasSemester' => $hasSemester,
|
||||
'studiengaenge' => $studiengaenge,
|
||||
'inskriptionsbestaetigungen' => $inskriptionsbestaetigungen,
|
||||
'studienbuchblatt' => defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN,
|
||||
'studienerfolgsbestaetigung' => defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -123,4 +123,33 @@ class Konto_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $prestudent_id
|
||||
* @param string $stsem
|
||||
* @param array $buchungstypen
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function checkStudienbeitragFromPrestudent($prestudent_id, $stsem, $buchungstypen)
|
||||
{
|
||||
$this->addSelect($this->dbTable . '.buchungsnr');
|
||||
$this->addSelect($this->dbTable . '.buchungsdatum');
|
||||
|
||||
$this->addJoin('public.tbl_prestudent s', $this->dbTable . '.person_id=s.person_id AND ' . $this->dbTable . '.studiengang_kz=s.studiengang_kz');
|
||||
|
||||
$this->db->where_in('buchungstyp_kurzbz', $buchungstypen);
|
||||
$this->db->where('0 >= (
|
||||
SELECT sum(betrag)
|
||||
FROM ' . $this->dbTable . ' skonto
|
||||
WHERE skonto.buchungsnr = ' . $this->dbTable . '.buchungsnr_verweis
|
||||
OR skonto.buchungsnr_verweis = ' . $this->dbTable . '.buchungsnr_verweis
|
||||
)', null, false);
|
||||
|
||||
return $this->loadWhere([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiensemester_kurzbz' => $stsem
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,77 @@ class Prestudentstatus_model extends DB_Model
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* loadWhereUid
|
||||
*
|
||||
* loads all rows for a student_uid
|
||||
*
|
||||
* @param string $uid
|
||||
* @param array $where Optional. Default empty array
|
||||
* @param boolean $withPrestudent Optional. Default true
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadWhereUid($uid, $where = null, $withPrestudent = false)
|
||||
{
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
$this->addJoin('public.tbl_student', 'prestudent_id');
|
||||
|
||||
if ($withPrestudent) {
|
||||
$this->addJoin('public.tbl_prestudent s', 'prestudent_id');
|
||||
$this->addSelect('s.aufmerksamdurch_kurzbz');
|
||||
$this->addSelect('s.person_id');
|
||||
$this->addSelect('s.studiengang_kz');
|
||||
$this->addSelect('s.berufstaetigkeit_code');
|
||||
$this->addSelect('s.ausbildungcode');
|
||||
$this->addSelect('s.zgv_code');
|
||||
$this->addSelect('s.zgvort');
|
||||
$this->addSelect('s.zgvdatum');
|
||||
$this->addSelect('s.zgvmas_code');
|
||||
$this->addSelect('s.zgvmaort');
|
||||
$this->addSelect('s.zgvmadatum');
|
||||
$this->addSelect('s.aufnahmeschluessel');
|
||||
$this->addSelect('s.facheinschlberuf');
|
||||
$this->addSelect('s.reihungstest_id');
|
||||
$this->addSelect('s.anmeldungreihungstest');
|
||||
$this->addSelect('s.reihungstestangetreten');
|
||||
$this->addSelect('s.rt_gesamtpunkte');
|
||||
$this->addSelect('s.bismelden');
|
||||
$this->addSelect('s.dual');
|
||||
$this->addSelect('s.rt_punkte1');
|
||||
$this->addSelect('s.rt_punkte2');
|
||||
$this->addSelect('s.ausstellungsstaat');
|
||||
$this->addSelect('s.rt_punkte3');
|
||||
$this->addSelect('s.zgvdoktor_code');
|
||||
$this->addSelect('s.zgvdoktorort');
|
||||
$this->addSelect('s.zgvdoktordatum');
|
||||
$this->addSelect('s.mentor');
|
||||
$this->addSelect('s.zgvnation');
|
||||
$this->addSelect('s.zgvmanation');
|
||||
$this->addSelect('s.zgvdoktornation');
|
||||
$this->addSelect('s.gsstudientyp_kurzbz');
|
||||
$this->addSelect('s.aufnahmegruppe_kurzbz');
|
||||
$this->addSelect('s.udf_values');
|
||||
$this->addSelect('s.priorisierung');
|
||||
$this->addSelect('s.foerderrelevant');
|
||||
$this->addSelect('s.standort_code');
|
||||
$this->addSelect('s.zgv_erfuellt');
|
||||
$this->addSelect('s.zgvmas_erfuellt');
|
||||
$this->addSelect('s.zgvdoktor_erfuellt');
|
||||
}
|
||||
|
||||
|
||||
$this->addOrder('datum');
|
||||
$this->addOrder('insertamum');
|
||||
|
||||
if (!$where)
|
||||
$where = [];
|
||||
|
||||
$where['student_uid'] = $uid;
|
||||
|
||||
return $this->loadWhere($where);
|
||||
}
|
||||
|
||||
/**
|
||||
* getLastStatus
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
$includesArray = array();
|
||||
|
||||
$this->load->view('templates/CISHTML-Header', $includesArray);
|
||||
?>
|
||||
|
||||
<div id="content">
|
||||
<h2>Documents</h2>
|
||||
<hr>
|
||||
<div class="mb-3">
|
||||
<select class="form-select" onchange="location = this.value">
|
||||
<?php foreach ($stsemArray as $sem) { ?>
|
||||
<option value="<?= site_url('Cis/Documents/Semester/' . $sem); ?>"<?= $sem == $stsem ? ' selected': ''; ?>>
|
||||
<?= $sem; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<?php if ($hasSemester) { ?>
|
||||
<h3><?= $this->p->t('tools', 'inskriptionsbestaetigung'); ?></h3>
|
||||
<ul class="list-unstyled">
|
||||
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li>
|
||||
<b><?= $studiengaenge[$stg]->bezeichnung; ?></b>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($hasPaid) { ?>
|
||||
<li>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=' . $stsem . '&uid=' . $uid . '&xsl_stg_kz=' . $stg); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'inskriptionsbestaetigung') . ' ' . $stsem; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } else { ?>
|
||||
<li class="text-danger">
|
||||
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php if ($studienbuchblatt) { ?>
|
||||
<h3><?= $this->p->t('tools', 'studienbuchblatt'); ?></h3>
|
||||
<ul class="list-unstyled">
|
||||
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li>
|
||||
<b><?= $studiengaenge[$stg]->bezeichnung; ?></b>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($hasPaid) { ?>
|
||||
<li>
|
||||
<?php /* TODO(chris): studiengang_kz? */ ?>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=' . $stsem . '&uid=' . $uid); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienbuchblatt') . ' ' . $stsem; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } else { ?>
|
||||
<li class="text-danger">
|
||||
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
<?php if ($studienerfolgsbestaetigung) { ?>
|
||||
<h3><?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?></h3>
|
||||
<ul class="list-unstyled">
|
||||
<?php foreach ($studiengaenge as $stg => $bezeichnung) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li>
|
||||
<b><?= $bezeichnung; ?></b>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php foreach (['' => '&typ=finanzamt', ' (' . $this->p->t('tools', 'vorlageWohnsitzfinanzamt') . ')' => ''] as $finanz_bez => $finanz_param) { ?>
|
||||
<?php foreach (['de' => [$this->p->t('public', 'deutsch'), 'Studienerfolg'], 'en' => [$this->p->t('public', 'englisch'), 'StudienerfolgEng']] as $lang_kurz => $lang) { ?>
|
||||
<?php foreach ([$stsem => $stsem, $this->p->t('tools', 'alleStudiensemester') => 'alle&all=1'] as $sem_bez => $sem_param) { ?>
|
||||
<li>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=' . $lang[1] . '&xml=studienerfolg.rdf.php&ss=' . $sem_param . '&uid=' . $uid . $finanz_param); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienerfolgsbestaetigung') . ' ' . $sem_bez . ' ' . $lang[0] . $finanz_bez; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php /* TODO(chris): Finanzamt $this->p->t('tools/vorlageWohnsitzfinanzamt') */ ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<?= $this->p->t('tools', 'keinStatusImStudiensemester', ['stsem' => $stsem]); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
TODO(chris): IMPLEMENT!
|
||||
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
|
||||
@@ -25,7 +25,7 @@ if (! defined('DB_NAME')) exit('No direct script access allowed');
|
||||
if (($result = $db->db_query("SELECT schema_name FROM information_schema.schemata WHERE schema_name='dashboard'")))
|
||||
{
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
{// TODO(chris): Rechte "Web"?
|
||||
$qry = <<<EODASHBOARDSQL
|
||||
|
||||
--
|
||||
|
||||
@@ -17337,6 +17337,66 @@ array(
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'keinStatusImStudiensemester',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Für das übergebene Studiensemester {stsem} existiert kein Status. Bitte wählen Sie ein gültiges Studiensemester aus dem DropDown.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'No status found for {stsem}. Please select a valid semester from the dropdown.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'inskriptionsbestaetigung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbestätigung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Enrollment Confirmation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbeitragFuerSSNochNichtBezahlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbeitrag für das {stsem} noch nicht bezahlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'tuition fee for semester {stsem} not yet paid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user