mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Abmeldung durch Stgl: status => typ
This commit is contained in:
@@ -76,6 +76,23 @@ class Abmeldung extends FHC_Controller
|
||||
$this->outputJsonSuccess(getData($result));
|
||||
}
|
||||
|
||||
public function getDetailsForAntrag($studierendenantrag_id)
|
||||
{
|
||||
if (!$this->antraglib->isEntitledToShowAntrag($studierendenantrag_id)) return show_404();
|
||||
|
||||
$result = $this->antraglib->getDetailsForAntrag($studierendenantrag_id);
|
||||
if (isError($result)) {
|
||||
return $this->outputJsonError(getError($result));
|
||||
}
|
||||
|
||||
$data = getData($result);
|
||||
|
||||
if ($data->typ !== Studierendenantrag_model::TYP_ABMELDUNG_STGL)
|
||||
return show_404();
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function createAntrag()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
@@ -201,7 +201,7 @@ class Leitung extends FHC_Controller
|
||||
|
||||
public function canBeObjected($studierendenantrag_id)
|
||||
{
|
||||
return $this->antraglib->hasStatus($studierendenantrag_id, Studierendenantragstatus_model::STATUS_APPROVED_STGL);
|
||||
return $this->antraglib->hasType($studierendenantrag_id, Studierendenantrag_model::TYP_ABMELDUNG_STGL);
|
||||
}
|
||||
|
||||
public function isObjected($studierendenantrag_id)
|
||||
@@ -241,6 +241,11 @@ class Leitung extends FHC_Controller
|
||||
return $this->outputJsonSuccess($studierendenantrag_id);
|
||||
}
|
||||
|
||||
public function approveAbmeldungStgl()
|
||||
{
|
||||
return $this->approveAbmeldung();
|
||||
}
|
||||
|
||||
public function approveUnterbrechung()
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
@@ -129,6 +129,15 @@ class Studierendenantrag extends FHC_Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function abmeldungstgl($prestudent_id, $studierendenantrag_id)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'antrag_type' => 'AbmeldungStgl'
|
||||
]);
|
||||
}
|
||||
|
||||
public function unterbrechung($prestudent_id, $studierendenantrag_id = null)
|
||||
{
|
||||
$this->load->view('lehre/Antrag/Create', [
|
||||
|
||||
@@ -85,15 +85,15 @@ class AntragLib
|
||||
|
||||
$prestudent = getData($result)[0];
|
||||
if($prestudent->person_id == getAuthPersonId())
|
||||
$status = Studierendenantragstatus_model::STATUS_CREATED;
|
||||
$typ = Studierendenantrag_model::TYP_ABMELDUNG;
|
||||
else
|
||||
$status = Studierendenantragstatus_model::STATUS_CREATED_STGL;
|
||||
$typ = Studierendenantrag_model::TYP_ABMELDUNG_STGL;
|
||||
|
||||
$result = $this->_ci->StudierendenantragModel->insert([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiensemester_kurzbz'=> $studiensemester_kurzbz,
|
||||
'datum' => date('c'),
|
||||
'typ' => Studierendenantrag_model::TYP_ABMELDUNG,
|
||||
'typ' => $typ,
|
||||
'insertvon' => $insertvon,
|
||||
'grund' => $grund
|
||||
]);
|
||||
@@ -105,7 +105,7 @@ class AntragLib
|
||||
|
||||
$result = $this->_ci->StudierendenantragstatusModel->insert([
|
||||
'studierendenantrag_id' => $antrag_id,
|
||||
'studierendenantrag_statustyp_kurzbz' => $status,
|
||||
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_CREATED,
|
||||
'insertvon' => $insertvon
|
||||
]);
|
||||
|
||||
@@ -148,7 +148,7 @@ class AntragLib
|
||||
|
||||
$result = $this->_ci->StudierendenantragstatusModel->insert([
|
||||
'studierendenantrag_id' => $studierendenantrag_id,
|
||||
'studierendenantrag_statustyp_kurzbz' => $status_approved,
|
||||
'studierendenantrag_statustyp_kurzbz' => Studierendenantragstatus_model::STATUS_APPROVED,
|
||||
'insertvon' => $insertvon
|
||||
]);
|
||||
if (isError($result))
|
||||
@@ -160,7 +160,7 @@ class AntragLib
|
||||
$errors[] = getError($resultPrestudent);
|
||||
continue;
|
||||
}
|
||||
if ($status_approved == Studierendenantragstatus_model::STATUS_APPROVED)
|
||||
if ($status->typ == Studierendenantrag_model::TYP_ABMELDUNG)
|
||||
{
|
||||
$antrag = getData($resultPrestudent)[0];
|
||||
|
||||
@@ -1482,6 +1482,25 @@ class AntragLib
|
||||
return in_array($lastStatus->studierendenantrag_statustyp_kurzbz, $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
* @param string|array $type
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function hasType($antrag_id, $type)
|
||||
{
|
||||
$result = $this->_ci->StudierendenantragModel->load($antrag_id);
|
||||
if (!hasData($result))
|
||||
return false;
|
||||
$antrag = getData($result)[0];
|
||||
|
||||
if (!is_array($type))
|
||||
$type = [$type];
|
||||
|
||||
return in_array($antrag->typ, $type);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param integer $antrag_id
|
||||
|
||||
@@ -3,6 +3,7 @@ class Studierendenantrag_model extends DB_Model
|
||||
{
|
||||
|
||||
const TYP_ABMELDUNG = 'Abmeldung';
|
||||
const TYP_ABMELDUNG_STGL = 'AbmeldungStgl';
|
||||
const TYP_UNTERBRECHUNG = 'Unterbrechung';
|
||||
const TYP_WIEDERHOLUNG = 'Wiederholung';
|
||||
|
||||
|
||||
@@ -567,7 +567,7 @@ class Studiengang_model extends DB_Model
|
||||
if ($not_antrag_typ !== null && is_array($not_antrag_typ)) {
|
||||
foreach($not_antrag_typ as $k => $v)
|
||||
$not_antrag_typ[$k] = $this->db->escape($v);
|
||||
$this->addJoin('campus.tbl_studierendenantrag a', 'a.prestudent_id=p.prestudent_id and a.typ in ('. implode(',', $not_antrag_typ ).')', 'LEFT');
|
||||
$this->addJoin('campus.tbl_studierendenantrag a', 'a.prestudent_id=p.prestudent_id and a.typ in ('. implode(',', $not_antrag_typ ).") AND campus.get_status_studierendenantrag (a.studierendenantrag_id)<>'" . Studierendenantragstatus_model::STATUS_CANCELLED . "'", 'LEFT');
|
||||
$this->db->where('a.typ IS NULL');
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import StudierendenantragAbmeldung from './Form/Abmeldung.js';
|
||||
import StudierendenantragAbmeldungStgl from './Form/AbmeldungStgl.js';
|
||||
import StudierendenantragUnterbrechung from './Form/Unterbrechung.js';
|
||||
import StudierendenantragWiederholung from './Form/Wiederholung.js';
|
||||
import Phrasen from '../../mixins/Phrasen.js';
|
||||
@@ -6,6 +7,7 @@ import Phrasen from '../../mixins/Phrasen.js';
|
||||
export default {
|
||||
components: {
|
||||
StudierendenantragAbmeldung,
|
||||
StudierendenantragAbmeldungStgl,
|
||||
StudierendenantragUnterbrechung,
|
||||
StudierendenantragWiederholung
|
||||
},
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
import {CoreFetchCmpt} from '../../Fetch.js';
|
||||
import Phrasen from '../../../mixins/Phrasen.js';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CoreFetchCmpt
|
||||
},
|
||||
mixins: [
|
||||
Phrasen
|
||||
],
|
||||
emits: [
|
||||
'setInfos',
|
||||
'setStatus'
|
||||
],
|
||||
props: {
|
||||
studierendenantragId: Number
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
data: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
statusSeverity() {
|
||||
switch (this.data.status)
|
||||
{
|
||||
case 'Erstellt': return 'info';
|
||||
case 'Genehmigt': return 'success';
|
||||
default: return 'info';
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
load() {
|
||||
return axios.get(
|
||||
FHC_JS_DATA_STORAGE_OBJECT.app_root +
|
||||
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
|
||||
'/components/Antrag/Abmeldung/getDetailsForAntrag/' +
|
||||
this.studierendenantragId
|
||||
).then(
|
||||
result => {
|
||||
this.data = result.data.retval;
|
||||
if (this.data.status) {
|
||||
this.$emit("setStatus", {
|
||||
msg: this.p.t_ref('studierendenantrag', 'status_x', {status: this.data.statustyp}),
|
||||
severity: this.statusSeverity
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
);
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="studierendenantrag-form-abmeldung">
|
||||
<core-fetch-cmpt :api-function="load">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>{{p.t('lehre', 'studiengang')}}</th>
|
||||
<td align="right">{{data.bezeichnung}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{p.t('lehre', 'organisationsform')}}</th>
|
||||
<td align="right">{{data.orgform_bezeichnung}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{p.t('projektarbeitsbeurteilung', 'nameStudierende')}}</th>
|
||||
<td align="right">{{data.name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{p.t('person', 'personenkennzeichen')}}</th>
|
||||
<td align="right">{{data.matrikelnr}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{p.t('lehre', 'studienjahr')}}</th>
|
||||
<td align="right">{{data.studienjahr_kurzbz}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{{p.t('lehre', 'semester')}}</th>
|
||||
<td align="right">{{data.semester}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<h5>{{p.t('studierendenantrag', 'antrag_grund')}}:</h5>
|
||||
<pre>{{data.grund}}</pre>
|
||||
</div>
|
||||
</div>
|
||||
<template v-slot:error="{errorMessage}">
|
||||
<div class="alert alert-danger m-0" role="alert">
|
||||
{{ errorMessage }}
|
||||
</div>
|
||||
</template>
|
||||
</core-fetch-cmpt>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -79,6 +79,7 @@ export default {
|
||||
@complete="loadData"
|
||||
inputId="newAntragModalAutoComplete"
|
||||
dropdown
|
||||
dropdown-mode="current"
|
||||
>
|
||||
<template #option="slotProps">
|
||||
<div :title="slotProps.option.prestudent_id">
|
||||
|
||||
@@ -230,7 +230,7 @@ export default {
|
||||
'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id='+ data.studierendenantrag_id +'&output=pdf';
|
||||
container.append(button);
|
||||
}
|
||||
if(data.typ == 'Abmeldung' && data.status == 'GenehmigtStgl')
|
||||
if(data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt')
|
||||
{
|
||||
// NOTE(chris): Object
|
||||
let button = document.createElement('button');
|
||||
@@ -240,7 +240,7 @@ export default {
|
||||
container.append(button);
|
||||
}
|
||||
|
||||
if(data.typ == 'Abmeldung' && data.status == 'Beeinsprucht')
|
||||
if(data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht')
|
||||
{
|
||||
// NOTE(chris): Deny Objection
|
||||
let button = document.createElement('button');
|
||||
@@ -294,7 +294,7 @@ export default {
|
||||
if (this.stgL.includes(data.studiengang_kz))
|
||||
{
|
||||
// NOTE(chris): Approve
|
||||
if ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'ErstelltStgl'))) {
|
||||
if ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {
|
||||
let button = document.createElement('button');
|
||||
button.innerHTML = this.p.t('studierendenantrag', 'btn_approve');
|
||||
button.className = "btn btn-outline-secondary";
|
||||
|
||||
@@ -27,9 +27,7 @@ if($result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statust
|
||||
(studierendenantrag_statustyp_kurzbz, bezeichnung)
|
||||
VALUES
|
||||
('Erstellt', '{\"Erstellt\",\"Created\"}'),
|
||||
('ErstelltStgl', '{\"Erstellt\",\"Created\"}'),
|
||||
('Genehmigt', '{\"Genehmigt\",\"Approved\"}'),
|
||||
('GenehmigtStgl', '{\"Vorläufig Genehmigt\",\"Provisionally Approved\"}'),
|
||||
('Beeinsprucht', '{\"Beeinsprucht\",\"Objected\"}'),
|
||||
('Abgelehnt', '{\"Abgelehnt\",\"Rejected\"}'),
|
||||
('Verzichtet', '{\"Verzichtet\",\"Pass\"}'),
|
||||
|
||||
@@ -18585,6 +18585,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
'phrase' => 'title_AbmeldungStgl',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Abmeldung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'De-registration',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
@@ -18845,6 +18865,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
'phrase' => 'antrag_typ_AbmeldungStgl',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Abmeldung (durch Studiengangsleitung)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Cancellation (by course director)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'studierendenantrag',
|
||||
|
||||
Reference in New Issue
Block a user