diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php
index 86a52e1bf..b38a108ea 100644
--- a/application/controllers/api/frontend/v1/stv/Status.php
+++ b/application/controllers/api/frontend/v1/stv/Status.php
@@ -73,17 +73,17 @@ class Status extends FHCAPI_Controller
public function isLastStatus($prestudent_id)
{
- //TODO(Manu) translate here
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$result = $this->PrestudentstatusModel->checkIfLastStatusEntry($prestudent_id);
+
+
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if($result->retval == "1")
{
- //return $this->outputJson($result->retval);
- return $this->terminateWithError("Die letzte Rolle kann nur durch den Administrator geloescht werden", self::ERROR_TYPE_GENERAL);
+ $this->terminateWithError($this->p->t('lehre','error_lastRole'), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess($result);
}
@@ -313,7 +313,7 @@ class Status extends FHCAPI_Controller
$this->terminateWithSuccess($prestudent_id);
}
- //TODO(Manu) setUnterbrecher FasLogic!
+ //TODO(Manu) documentation: here setUnterbrecher FasLogic!
if($status_kurzbz == 'Unterbrecher')
{
$ausbildungssemester = $lastStatusData->ausbildungssemester;
@@ -329,6 +329,57 @@ class Status extends FHCAPI_Controller
$this->terminateWithSuccess($prestudent_id);
}
+ //TODO(Manu) documentation: here setStudent Logic!
+ if($status_kurzbz == 'Student')
+ {
+ //return $this->terminateWithError($studiensemester_kurzbz . " - " . $ausbildungssemester, self::ERROR_TYPE_GENERAL);
+
+ $this->load->library('PrestudentLib');
+ $result = $this->prestudentlib->setStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id, $bestaetigtam, $bestaetigtvon);
+
+ if (isError($result))
+ {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ else
+ $this->terminateWithSuccess($prestudent_id);
+
+ }
+
+ if($status_kurzbz == 'Diplomand')
+ {
+ //return $this->terminateWithError("in setDiplomand", self::ERROR_TYPE_GENERAL);
+
+ $this->load->library('PrestudentLib');
+ $result = $this->prestudentlib->setDiplomand($prestudent_id, $studiensemester_kurzbz,$ausbildungssemester, $bestaetigtam, $bestaetigtvon);
+
+ if (isError($result))
+ {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ else
+ $this->terminateWithSuccess($prestudent_id);
+
+ }
+
+ if($status_kurzbz == 'Absolvent')
+ {
+ //return $this->terminateWithError("in setAbsolvent", self::ERROR_TYPE_GENERAL);
+
+ $this->load->library('PrestudentLib');
+ $result = $this->prestudentlib->setAbsolvent($prestudent_id, $studiensemester_kurzbz,$ausbildungssemester, $bestaetigtam, $bestaetigtvon);
+
+ if (isError($result))
+ {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ else
+ $this->terminateWithSuccess($prestudent_id);
+
+ }
+
+ return $this->terminateWithError("Warning! not in setStatus Mode", self::ERROR_TYPE_GENERAL);
+
// Start DB transaction
$this->db->trans_begin(); // Beginnen der Transaktion
diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php
index c73d4c117..af283da01 100644
--- a/application/libraries/PrestudentLib.php
+++ b/application/libraries/PrestudentLib.php
@@ -612,5 +612,331 @@ class PrestudentLib
return success();
}
+ public function setStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id, $bestaetigtAm, $bestaetigtVon)
+ {
+ $insertvon = getAuthUID();
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ {
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+
+ if($statusgrund_id != 16)
+ {
+ //check if ausbildungssemester is last
+ $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz');
+ $res = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]);
+ if(isError($res))
+ return $res;
+ if(!hasData($res))
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [
+ 'prestudent_id' => $prestudent_id
+ ]));
+
+ $studiengang = current(getData($res));
+ $prestudent_status = current($result);
+ if($prestudent_status->ausbildungssemester + 1 < $studiengang->max_semester)
+ $ausbildungssemester_plus = 1;
+
+ if(!$result)
+ {
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
+ 'prestudent_id' => $prestudent_id,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz
+ ]));
+ }
+ }
+ }
+
+ $prestudent_status = current($result);
+ $result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
+
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
+
+ $student = current($result);
+
+ //Status updaten
+ $result = $this->_ci->PrestudentstatusModel->insert([
+ 'prestudent_id' => $prestudent_id,
+ 'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz,
+ 'statusgrund_id' => $statusgrund_id,
+ 'ausbildungssemester' => $ausbildungssemester,
+ 'datum' => date('c'),
+ 'insertvon' => $insertvon,
+ 'insertamum' => date('c'),
+ 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
+ 'studienplan_id'=> $prestudent_status->studienplan_id,
+ 'bestaetigtvon' => $insertvon,
+ 'bestaetigtam' => date('c'),
+ ]);
+
+ if (isError($result))
+ return $result;
+
+ $result = $this->_ci->StudentModel->checkIfUid($prestudent_id);
+ if (isError($result)) {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ $student_uid = $result->retval;
+
+ //load student
+ $result = $this->_ci->StudentModel->loadWhere(
+ array(
+ 'student_uid' => $student_uid
+ )
+ );
+ if (isError($result))
+ {
+ $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
+ }
+
+ $studentData = current(getData($result) ? : []);
+ $verband = $studentData->verband == '' ? '' : $studentData->verband;
+ $gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe;
+ $studiengang_kz = $studentData->studiengang_kz;
+
+ //process studentlehrverband
+ $this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
+ $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
+ $student_uid,
+ $studiengang_kz,
+ $ausbildungssemester,
+ $verband,
+ $gruppe,
+ $studiensemester_kurzbz
+ );
+
+ return success();
+ }
+
+ public function setDiplomand($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester,$bestaetigtAm, $bestaetigtVon)
+ {
+ $insertvon = getAuthUID();
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ {
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+
+ if($statusgrund_id != 16)
+ {
+ //check if ausbildungssemester is last
+ $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz');
+ $res = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]);
+ if(isError($res))
+ return $res;
+ if(!hasData($res))
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [
+ 'prestudent_id' => $prestudent_id
+ ]));
+
+ $studiengang = current(getData($res));
+ $prestudent_status = current($result);
+ if($prestudent_status->ausbildungssemester + 1 < $studiengang->max_semester)
+ $ausbildungssemester_plus = 1;
+
+ if(!$result)
+ {
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
+ 'prestudent_id' => $prestudent_id,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz
+ ]));
+ }
+ }
+ }
+
+ $prestudent_status = current($result);
+ $result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
+
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
+
+ $student = current($result);
+
+ //Status updaten
+ $result = $this->_ci->PrestudentstatusModel->insert([
+ 'prestudent_id' => $prestudent_id,
+ 'status_kurzbz' => Prestudentstatus_model::STATUS_DIPLOMAND,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz,
+ // 'statusgrund_id' => $statusgrund_id,
+ // 'ausbildungssemester' => $ausbildungssemester,
+ 'datum' => date('c'),
+ 'insertvon' => $insertvon,
+ 'insertamum' => date('c'),
+ 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
+ 'studienplan_id'=> $prestudent_status->studienplan_id,
+ 'bestaetigtvon' => $insertvon,
+ 'bestaetigtam' => date('c'),
+ ]);
+
+ if (isError($result))
+ return $result;
+
+ $result = $this->_ci->StudentModel->checkIfUid($prestudent_id);
+ if (isError($result)) {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ $student_uid = $result->retval;
+
+ //load student
+ $result = $this->_ci->StudentModel->loadWhere(
+ array(
+ 'student_uid' => $student_uid
+ )
+ );
+ if (isError($result))
+ {
+ $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
+ }
+
+ $studentData = current(getData($result) ? : []);
+ $verband = $studentData->verband == '' ? '' : $studentData->verband;
+ $gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe;
+ $studiengang_kz = $studentData->studiengang_kz;
+
+ //process studentlehrverband
+ $this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
+ $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
+ $student_uid,
+ $studiengang_kz,
+ $ausbildungssemester,
+ $verband,
+ $gruppe,
+ $studiensemester_kurzbz
+ );
+
+ return success();
+ }
+
+ public function setAbsolvent($prestudent_id,$studiensemester_kurzbz, $ausbildungssemester, $bestaetigtAm, $bestaetigtVon)
+ {
+ $insertvon = getAuthUID();
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ {
+
+ $result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+
+ if($statusgrund_id != 16)
+ {
+ //check if ausbildungssemester is last
+ $this->_ci->StudiengangModel->addJoin('public.tbl_prestudent p', 'studiengang_kz');
+ $res = $this->_ci->StudiengangModel->loadWhere(['p.prestudent_id' => $prestudent_id]);
+ if(isError($res))
+ return $res;
+ if(!hasData($res))
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_stg_for_prestudent', [
+ 'prestudent_id' => $prestudent_id
+ ]));
+
+ $studiengang = current(getData($res));
+ $prestudent_status = current($result);
+ if($prestudent_status->ausbildungssemester + 1 < $studiengang->max_semester)
+ $ausbildungssemester_plus = 1;
+
+ if(!$result)
+ {
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
+ 'prestudent_id' => $prestudent_id,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz
+ ]));
+ }
+ }
+ }
+
+ $prestudent_status = current($result);
+ $result = $this->_ci->StudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
+
+ if (isError($result))
+ return $result;
+ $result = getData($result);
+ if (!$result)
+ return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
+
+ $student = current($result);
+
+ //Status updaten
+ $result = $this->_ci->PrestudentstatusModel->insert([
+ 'prestudent_id' => $prestudent_id,
+ 'status_kurzbz' => Prestudentstatus_model::STATUS_ABSOLVENT,
+ 'studiensemester_kurzbz' => $studiensemester_kurzbz,
+ // 'statusgrund_id' => $statusgrund_id,
+ // 'ausbildungssemester' => $ausbildungssemester,
+ 'datum' => date('c'),
+ 'insertvon' => $insertvon,
+ 'insertamum' => date('c'),
+ 'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
+ 'studienplan_id'=> $prestudent_status->studienplan_id,
+ 'bestaetigtvon' => $insertvon,
+ 'bestaetigtam' => date('c'),
+ ]);
+
+ if (isError($result))
+ return $result;
+
+ $result = $this->_ci->StudentModel->checkIfUid($prestudent_id);
+ if (isError($result)) {
+ return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
+ }
+ $student_uid = $result->retval;
+
+ //load student
+ $result = $this->_ci->StudentModel->loadWhere(
+ array(
+ 'student_uid' => $student_uid
+ )
+ );
+ if (isError($result))
+ {
+ $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
+ }
+
+ $studentData = current(getData($result) ? : []);
+ $verband = $studentData->verband == '' ? '' : $studentData->verband;
+ $gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe;
+ $studiengang_kz = $studentData->studiengang_kz;
+
+ //process studentlehrverband
+ $this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
+ $result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
+ $student_uid,
+ $studiengang_kz,
+ $ausbildungssemester,
+ $verband,
+ $gruppe,
+ $studiensemester_kurzbz
+ );
+
+ return success();
+ }
}
diff --git a/application/models/crm/Prestudentstatus_model.php b/application/models/crm/Prestudentstatus_model.php
index a2e793624..706cd82ba 100644
--- a/application/models/crm/Prestudentstatus_model.php
+++ b/application/models/crm/Prestudentstatus_model.php
@@ -5,6 +5,9 @@ class Prestudentstatus_model extends DB_Model
const STATUS_ABBRECHER = 'Abbrecher';
const STATUS_UNTERBRECHER = 'Unterbrecher';
+ const STATUS_STUDENT = 'Student';
+ const STATUS_DIPLOMAND = 'Diplomand';
+ const STATUS_ABSOLVENT = 'Absolvent';
/**
* Constructor
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js
index 9a0da98d2..154662ac1 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/MultiStatus.js
@@ -706,8 +706,7 @@ export default{
-
+
@@ -873,8 +872,7 @@ export default{
-
+