Refactored code

Signed-off-by: cris-technikum <hainberg@technikum-wien.at>
This commit is contained in:
Cris
2021-03-25 16:51:11 +01:00
committed by cris-technikum
parent faf253c159
commit f9cbd9caf5
4 changed files with 128 additions and 148 deletions
@@ -82,29 +82,23 @@ class approveAnrechnungDetail extends Auth_Controller
self::_checkIfEntitledToReadAnrechnung($anrechnung_id);
// Get Anrechung data
if (!$anrechnungData = getData($this->anrechnunglib->getAnrechnungData($anrechnung_id)))
{
show_error('Missing data for Anrechnung.');
}
$anrechnungData = $this->anrechnunglib->getAnrechnungData($anrechnung_id);
// Get Antrag data
$antragData = $this->anrechnunglib->getAntragData(
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
$anrechnungData->studiensemester_kurzbz,
$anrechnungData->lehrveranstaltung_id
);
// Get Empfehlung data
if(!$empfehlungData = getData($this->anrechnunglib->getEmpfehlungData($anrechnung_id)))
{
show_error('Missing data for recommendation');
}
$empfehlungData = $this->anrechnunglib->getEmpfehlungData($anrechnung_id);
// Get Genehmigung data
if(!$genehmigungData = getData($this->anrechnunglib->getGenehmigungData($anrechnung_id)))
{
show_error('Missing data for recommendation');
}
$genehmigungData = $this->anrechnunglib->getGenehmigungData($anrechnung_id);
$viewData = array(
'antragData' => $this->anrechnunglib->getAntragData(
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
$anrechnungData->studiensemester_kurzbz,
$anrechnungData->lehrveranstaltung_id
),
'antragData' => $antragData,
'anrechnungData' => $anrechnungData,
'empfehlungData' => $empfehlungData,
'genehmigungData' => $genehmigungData
@@ -6,15 +6,15 @@ class requestAnrechnung extends Auth_Controller
{
const REQUEST_ANRECHNUNG_URI = '/lehre/anrechnung/RequestAnrechnung';
const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht';
const ANRECHNUNGSTATUS_PROGRESSED_BY_STGL = 'inProgressDP';
const ANRECHNUNGSTATUS_PROGRESSED_BY_KF = 'inProgressKF';
const ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR = 'inProgressLektor';
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const DEADLINE_INTERVAL_NACH_SEMESTERSTART = 'P1M'; // Deadline for application
public function __construct()
{
// Set required permissions
@@ -25,22 +25,22 @@ class requestAnrechnung extends Auth_Controller
'download' => 'student/anrechnung_beantragen:rw',
)
);
// Load models
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
$this->load->model('content/DmsVersion_model', 'DmsVersionModel');
// Load libraries
$this->load->library('WidgetLib');
$this->load->library('PermissionLib');
$this->load->library('AnrechnungLib');
$this->load->library('DmsLib');
// Load helpers
$this->load->helper('form');
$this->load->helper('url');
$this->load->helper('hlp_sancho_helper');
// Load language phrases
$this->loadPhrases(
array(
@@ -51,53 +51,52 @@ class requestAnrechnung extends Auth_Controller
'lehre'
)
);
$this->_setAuthUID();
$this->setControllerId();
}
public function index()
{
$studiensemester_kurzbz = $this->input->get('studiensemester');
$lehrveranstaltung_id = $this->input->get('lv_id');
if (!is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
if (isEmptyString($lehrveranstaltung_id) || isEmptyString($studiensemester_kurzbz))
{
show_error('Missing correct parameter');
}
// Exit if user is not a student
$result = $this->StudentModel->load(array('student_uid' => $this->_uid));
if (!hasData($result))
{
show_error('Cant load user');
}
// Get Prestudent ID
$prestudent_id = getData($result)[0]->prestudent_id;
// Check if application deadline is expired
// $is_expired = $this->_checkAntragDeadline($studiensemester_kurzbz);
$is_expired = false; // Set to false until Deadline is defined
$student = $this->StudentModel->load(array('student_uid' => $this->_uid));
if (isSuccess($student) && hasData($student))
{
$prestudent_id = getData($student)[0]->prestudent_id;
}
else
show_error('Cant load User');
// $is_expired = self::_checkAntragDeadline($studiensemester_kurzbz);
$is_expired = false;
// Get Anrechung data
$result = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
if (!$anrechnungData = getData($result))
{
show_error(getError($anrechnungData));
}
$anrechnungData = $this->anrechnunglib->getAnrechnungDataByLv($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id);
// Get Antrag data
$antragData = $this->anrechnunglib->getAntragData($this->_uid, $studiensemester_kurzbz, $lehrveranstaltung_id);
$viewData = array(
'antragData' => $antragData,
'anrechnungData' => $anrechnungData,
'is_expired' => $is_expired
);
$this->load->view('lehre/anrechnung/requestAnrechnung.php', $viewData);
}
/**
* Apply Anrechnungsantrag and send to STGL
*/
@@ -108,12 +107,13 @@ class requestAnrechnung extends Auth_Controller
$lehrveranstaltung_id = $this->input->post('lv_id');
$studiensemester_kurzbz = $this->input->post('studiensemester');
// Validate data
if (empty($_FILES['uploadfile']['name']))
{
show_error('Missing upload file');
}
if (!is_numeric($begruendung_id) || !is_numeric($lehrveranstaltung_id) || !is_string($studiensemester_kurzbz))
if (isEmptyString($begruendung_id) || isEmptyString($lehrveranstaltung_id) || isEmptyString($studiensemester_kurzbz))
{
show_error('Missing correct parameter');
}
@@ -140,64 +140,34 @@ class requestAnrechnung extends Auth_Controller
{
return $this->outputJsonError($this->p->t('anrechnung', 'antragNurImAktSS'));
}
// Upload document
$lastInsert_dms_id = self::_uploadFile();
// Start DB transaction
$this->db->trans_start(false);
// Upload document
$dms = array(
'kategorie_kurzbz' => 'anrechnung',
'version' => 0,
'name' => $_FILES['uploadfile']['name'],
'mimetype' => $_FILES['uploadfile']['type'],
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
'insertvon' => $this->_uid
);
if(isError($uploaddata = $this->dmslib->upload($dms, array('pdf'))))
{
show_error(getError($uploaddata));
}
// Get PrestudentID
$result = $this->_loadPrestudent($this->_uid, $studiensemester_kurzbz);
if (!$prestudent = getData($result)[0])
{
show_error('Failed retrieving prestudent');
}
// Save Anrechnung
$result = $this->AnrechnungModel->insert(array(
'prestudent_id' => $prestudent->prestudent_id,
'prestudent_id' => $prestudent_id,
'lehrveranstaltung_id' => $lehrveranstaltung_id,
'begruendung_id' => $begruendung_id,
'dms_id' => $uploaddata->retval['dms_id'],
'dms_id' => $lastInsert_dms_id,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'anmerkung_student' => $anmerkung,
'insertvon' => $this->_uid
));
if (isError($result))
{
show_error('Failed inserting Anrechnung');
}
// Save Anrechnungstatus 'inProgressSTGL'
$result = $this->AnrechnungModel->saveAnrechnungstatus($result->retval, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL);
if (isError($result))
{
show_error('Failed saving Anrechnungstatus');
}
// Transaction complete!
$this->AnrechnungModel->saveAnrechnungstatus($result->retval, self::ANRECHNUNGSTATUS_PROGRESSED_BY_STGL);
// Transaction complete
$this->db->trans_complete();
if ($this->db->trans_status() === false || isError($result))
if ($this->db->trans_status() === false)
{
$this->db->trans_rollback();
show_error($result->msg, EXIT_ERROR);
show_error('Failed inserting Anrechnung', EXIT_ERROR);
}
// Output to AJAX
@@ -230,31 +200,13 @@ class requestAnrechnung extends Auth_Controller
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
/**
* Load Prestudent by uid and Studiensemester.
* @param $uid
* @param $studiensemester_kurzbz
* @return mixed
*/
private function _loadPrestudent($uid, $studiensemester_kurzbz)
{
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$this->load->model('crm/Student_model', 'StudentModel');
$this->PrestudentstatusModel->addJoin('public.tbl_student', 'prestudent_id');
return $this->PrestudentstatusModel->loadWhere(array(
'student_uid' => $uid,
'studiensemester_kurzbz' => $studiensemester_kurzbz
)
);
}
/**
* Check if application deadline is expired.
*
* @param $studiensemester_kurzbz
* @return bool True if semester start is more then 1 week ago
* @throws Exception
@@ -270,13 +222,14 @@ class requestAnrechnung extends Auth_Controller
$start = new DateTime($start[0]->start);
$today = new DateTime('today midnight');
// True if today > application deadline
return ($today > $start->add((new DateInterval(self::DEADLINE_INTERVAL_NACH_SEMESTERSTART))));
}
/**
* Check if user is entitled to read dms doc
* Check if user is entitled to read dms doc.
*
* @param $dms_id
*/
private function _checkIfEntitledToReadDMSDoc($dms_id)
@@ -287,7 +240,7 @@ class requestAnrechnung extends Auth_Controller
}
$result = $this->AnrechnungModel->loadWhere(array('dms_id' => $dms_id));
if($result = getData($result)[0])
{
if ($result->prestudent_id == $student->prestudent_id)
@@ -295,14 +248,17 @@ class requestAnrechnung extends Auth_Controller
return;
}
}
show_error('You are not entitled to read this document');
}
/**
* Get Anrechnung by Lehrveranstaltung
* Check if application already exists.
*
* @param $lehrveranstaltung_id
* @return mixed
* @param $studiensemester_kurzbz
* @param $prestudent_id
* @return bool
*/
private function _applicationExists($lehrveranstaltung_id, $studiensemester_kurzbz, $prestudent_id)
{
@@ -311,7 +267,7 @@ class requestAnrechnung extends Auth_Controller
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'prestudent_id' => $prestudent_id
));
if (isError($result))
{
show_error(getError($result));
@@ -321,7 +277,8 @@ class requestAnrechnung extends Auth_Controller
}
/**
* Check, if applications' study semester is actual study semester
* Check if applications' study semester is actual study semester.
*
* @param $studiensemester_kurzbz
* @return bool
*/
@@ -333,4 +290,29 @@ class requestAnrechnung extends Auth_Controller
return $studiensemester_kurzbz == $actual_ss;
}
}
private function _uploadFile(){
if (empty($_FILES['uploadfile']['name']))
{
show_error('Missing upload file');
}
// Upload document
$dms = array(
'kategorie_kurzbz' => 'anrechnung',
'version' => 0,
'name' => $_FILES['uploadfile']['name'],
'mimetype' => $_FILES['uploadfile']['type'],
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
'insertvon' => $this->_uid
);
if (isError($uploaddata = $this->dmslib->upload($dms, array('pdf'))))
{
show_error(getError($uploaddata));
}
return $uploaddata->retval['dms_id'];
}
}
@@ -78,23 +78,20 @@ class reviewAnrechnungDetail extends Auth_Controller
self::_checkIfEntitledToReadAnrechnung($anrechnung_id);
// Get Anrechung data
if (!$anrechnungData = getData($this->anrechnunglib->getAnrechnungData($anrechnung_id)))
{
show_error('Missing data for Anrechnung.');
}
$anrechnungData = $this->anrechnunglib->getAnrechnungData($anrechnung_id);
// Get Antrag data
$antragData = $this->anrechnunglib->getAntragData(
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
$anrechnungData->studiensemester_kurzbz,
$anrechnungData->lehrveranstaltung_id
);
// Get Empfehlung data
if(!$empfehlungData = getData($this->anrechnunglib->getEmpfehlungData($anrechnung_id)))
{
show_error('Missing data for recommendation');
}
$empfehlungData = $this->anrechnunglib->getEmpfehlungData($anrechnung_id);
$viewData = array(
'antragData' => $this->anrechnunglib->getAntragData(
$student_uid = $this->StudentModel->getUID($anrechnungData->prestudent_id),
$anrechnungData->studiensemester_kurzbz,
$anrechnungData->lehrveranstaltung_id
),
'antragData' => $antragData,
'anrechnungData' => $anrechnungData,
'empfehlungData' => $empfehlungData
);
+17 -10
View File
@@ -23,6 +23,8 @@ class AnrechnungLib
$this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->ci->load->model('crm/Student_model', 'StudentModel');
$this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel');
$this->ci->load->library('DmsLib');
}
/**
@@ -109,8 +111,12 @@ class AnrechnungLib
{
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
}
else
{
show_error('No Anrechnung with this anrechnung_id.');
}
return success($anrechnung_data);
return $anrechnung_data;
}
@@ -155,7 +161,7 @@ class AnrechnungLib
$anrechnung_data = $this->_setAnrechnungDataObject($anrechnung);
}
return success($anrechnung_data);
return $anrechnung_data;
}
/**
@@ -173,8 +179,8 @@ class AnrechnungLib
$this->ci->AnrechnungModel->addSelect('tbl_benutzer.uid, tbl_prestudent.prestudent_id, tbl_person.person_id, tbl_anrechnung.studiensemester_kurzbz, vorname, nachname, geschlecht, tbl_lehrveranstaltung.bezeichnung AS "lv_bezeichnung"');
$this->ci->AnrechnungModel->addJoin('public.tbl_prestudent', 'prestudent_id');
$this->ci->AnrechnungModel->addJoin('public.tbl_student', 'prestudent_id');
$this->ci->AnrechnungModel->addJoin('public.tbl_benutzer', 'uid=student_uid');
$this->ci->AnrechnungModel->addJoin('public.tbl_person', 'tbl_benutzer.person_id=tbl_person.person_id');
$this->ci->AnrechnungModel->addJoin('public.tbl_benutzer', 'uid = student_uid');
$this->ci->AnrechnungModel->addJoin('public.tbl_person', 'tbl_benutzer.person_id = tbl_person.person_id');
$this->ci->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id');
$result = $this->ci->AnrechnungModel->load($anrechnung_id);
@@ -230,7 +236,7 @@ class AnrechnungLib
if (is_null($anrechnung->empfehlung_anrechnung))
{
return success($empfehlung_data);
return $empfehlung_data;
}
// If Empfehlung is true or false
@@ -270,7 +276,7 @@ class AnrechnungLib
}
}
return success($empfehlung_data);
return $empfehlung_data;
}
@@ -302,9 +308,10 @@ class AnrechnungLib
// Get date of approvement or rejection
$result = $this->ci->AnrechnungModel->getApprovedOrRejected($anrechnung_id);
// If no approved or rejected Anrechnung exist, return basic genehmigung data object
if (!$result = getData($result)[0])
{
return success($genehmigung_data);
return $genehmigung_data;
}
@@ -333,7 +340,7 @@ class AnrechnungLib
}
}
return success($genehmigung_data);
return $genehmigung_data;
}
@@ -564,7 +571,7 @@ class AnrechnungLib
// Exit if already approved or rejected
if ($status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED || $status_kurzbz == self::ANRECHNUNGSTATUS_REJECTED)
{
return success(false); // dont approve
return false; // dont approve
}
// Start DB transaction
@@ -601,7 +608,7 @@ class AnrechnungLib
return error($result->msg, EXIT_ERROR);
}
return success(true); // recommended
return true; // recommended
}
/**