Documents Self Service

This commit is contained in:
cgfhtw
2023-03-13 09:01:45 +01:00
parent 91e43bbc07
commit 2238b872c6
4 changed files with 200 additions and 63 deletions
+14 -1
View File
@@ -106,6 +106,18 @@ class Documents extends Auth_Controller
}
}
$selfservice = null;
if (!defined('CIS_DOKUMENTE_SELFSERVICE') || CIS_DOKUMENTE_SELFSERVICE) {
$this->load->model('crm/Akte_model', 'AkteModel');
$result = $this->AkteModel->getArchiv(getAuthPersonId(), null, true);
if (isError($result))
return $this->view->load('errors/html/error_db.php', [
'heading' => 'Database Error',
'message' => getError($result)
]);
$selfservice = getData($result) ?: [];
}
// TODO(chris): in array stsem stsemArray:
// TODO(chris): - inskriptionsbestaetigung (konto)
@@ -127,7 +139,8 @@ class Documents extends Auth_Controller
'studiengaenge' => $studiengaenge,
'inskriptionsbestaetigungen' => $inskriptionsbestaetigungen,
'studienbuchblatt' => defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN,
'studienerfolgsbestaetigung' => defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN
'studienerfolgsbestaetigung' => defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN,
'selfservice' => $selfservice
]);
}
+51
View File
@@ -190,4 +190,55 @@ class Akte_model extends DB_Model
return success($dokumente->retval);
}
/**
* Liefert die Archivdokumente einer Person
*
* @param integer $person_id
* @param boolean|null $signiert Wenn true werden nur Dokumente geliefert die digital signiert wurden.
* @param boolean|null $stud_selfservice Wenn true werden nur Dokumente geliefert die Studierende selbst herunterladen duerfen.
*
* @return stdClass
*/
public function getArchiv($person_id, $signiert = null, $stud_selfservice = null)
{
$this->addSelect('akte_id');
$this->addSelect('person_id');
$this->addSelect('dokument_kurzbz');
$this->addSelect('mimetype');
$this->addSelect('erstelltam');
$this->addSelect('gedruckt');
$this->addSelect('titel_intern');
$this->addSelect('anmerkung_intern');
$this->addSelect('titel');
$this->addSelect('bezeichnung');
$this->addSelect('updateamum');
$this->addSelect('insertamum');
$this->addSelect('updatevon');
$this->addSelect('insertvon');
$this->addSelect('uid');
$this->addSelect('dms_id');
$this->addSelect('anmerkung');
$this->addSelect('nachgereicht');
$this->addSelect('CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden', false);
$this->addSelect('nachgereicht_am');
$this->addSelect('ausstellungsnation');
$this->addSelect('formal_geprueft_amum');
$this->addSelect('archiv');
$this->addSelect('signiert');
$this->addSelect('stud_selfservice');
$this->addSelect('akzeptiertamum');
if ($signiert !== null)
$this->db->where('signiert', (boolean)$signiert);
if ($stud_selfservice !== null)
$this->db->where('stud_selfservice', (boolean)$stud_selfservice);
$this->addOrder('erstelltam', 'DESC');
return $this->loadWhere([
'person_id' => $person_id,
'archiv' => true
]);
}
}
+94 -62
View File
@@ -5,95 +5,127 @@ $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 class="fhc-header">
<h1><?= $this->p->t('global', 'dokumente'); ?><small><?= $this->p->t('tools', 'bestaetigungenZeugnisse'); ?></small></h1>
</div>
<div class="row mb-3 justify-content-end">
<div class="col-auto">
<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>
</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">
<div class="card mb-3">
<h3 class="card-header h5"><?= $this->p->t('tools', 'inskriptionsbestaetigung'); ?></h3>
<ul class="list-group list-group-flush">
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
<?php if (count($studiengaenge) != 1) { ?>
<li>
<b><?= $studiengaenge[$stg]->bezeichnung; ?></b>
<li class="list-group-item fw-bold">
<?= $studiengaenge[$stg]->bezeichnung; ?>
</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; ?>
<li class="list-group-item">
<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">
<li class="list-group-item list-group-item-danger">
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
</li>
<?php } ?>
<?php } ?>
</ul>
</div>
<?php if ($studienbuchblatt) { ?>
<div class="card mb-3">
<h3 class="card-header h5"><?= $this->p->t('tools', 'studienbuchblatt'); ?></h3>
<ul class="list-group list-group-flush">
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
<?php if (count($studiengaenge) != 1) { ?>
<li class="list-group-item fw-bold">
<?= $studiengaenge[$stg]->bezeichnung; ?>
</li>
<?php } ?>
<?php if ($hasPaid) { ?>
<li class="list-group-item">
<?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="list-group-item list-group-item-danger">
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
</li>
<?php } ?>
<?php } ?>
</ul>
</div>
<?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') */ ?>
<div class="card mb-3">
<h3 class="card-header h5"><?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?></h3>
<ul class="list-group list-group-flush">
<?php foreach ($studiengaenge as $stg => $bezeichnung) { ?>
<?php if (count($studiengaenge) != 1) { ?>
<li class="list-group-item fw-bold">
<?= $bezeichnung; ?>
</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 class="list-group-item">
<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 } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
</ul>
</ul>
</div>
<?php } ?>
<?php } else { ?>
<div class="alert alert-danger" role="alert">
<?= $this->p->t('tools', 'keinStatusImStudiensemester', ['stsem' => $stsem]); ?>
</div>
<?php } ?>
TODO(chris): IMPLEMENT!
<?php if ($selfservice !== null) { ?>
<div class="card mb-3">
<h3 class="card-header h5"><?= $this->p->t('tools', 'abschlussdokumente'); ?></h3>
<ul class="list-group list-group-flush">
<?php if (count($selfservice)) { ?>
<li class="list-group-item list-group-item-warning">
<?= $this->p->t('tools', 'warnungDruckDigitaleSignatur'); ?>
</li>
<?php foreach ($selfservice as $row) { ?>
<li class="list-group-item">
<a class="text-decoration-none" target="_blank" href="<?= base_url('dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid); ?>">
<?php /* TODO(chris): datum & link */ ?>
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $row->bezeichnung; ?>
</a>
</li>
<?php } ?>
<?php } else { ?>
<li class="list-group-item list-group-item-danger">
<?= $this->p->t('tools', 'nochKeineAbschlussdokumenteVorhanden'); ?>
</li>
<?php } ?>
</ul>
</div>
<?php } ?>
</div>
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
+41
View File
@@ -306,3 +306,44 @@
display: block;
}
}
/* Typography */
.fhc-header {
display: flex;
justify-content: space-between;
align-items: end;
border-bottom: 1px solid #dee2e6;
margin: 1rem 0;
}
.fhc-header > h1 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
.fhc-header > h1 {
font-size: 1.75rem;
}
}
.fhc-header > h1 > small {
color: #6c757d;
font-size: 1rem;
}
.fhc-header > h1 > small:before {
content: " | ";
}
.fhc-header > a {
margin-bottom: 0.5rem;
text-decoration: none;
}
.fhc-header > a:after {
color: var(--bs-body-color);
content: "\f059";
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: var(--fa-display, inline-block);
font-style: normal;
font-variant: normal;
line-height: 1;
text-rendering: auto;
font-family: var(--fa-style-family, "Font Awesome 6 Free");
font-weight: var(--fa-style, 900);
margin-inline-start: 0.5rem;
}