mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 17:02:19 +00:00
206 lines
7.6 KiB
PHP
206 lines
7.6 KiB
PHP
<?php
|
|
|
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
/**
|
|
* The controller Lehrauftrag displays all Lehrauftraege within a study semester.
|
|
* Heads of degree programs can order Lehrauftraege, which subsequently will generate the corresponding contracts
|
|
* automatically.
|
|
* Department leaders can approve the ordered Lehrauftraege.
|
|
*/
|
|
class LehrauftragErteilen extends Auth_Controller
|
|
{
|
|
const APP = 'lehrauftrag';
|
|
const LEHRAUFTRAG_URI = 'lehre/lehrauftrag/LehrauftragErteilen'; // URL prefix for this controller
|
|
const BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN = 'lehre/lehrauftrag_erteilen';
|
|
|
|
private $_uid; // uid of the logged user
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
// Set required permissions
|
|
parent::__construct(
|
|
array(
|
|
'index' => 'lehre/lehrauftrag_erteilen:r',
|
|
'approveLehrauftrag' => 'lehre/lehrauftrag_erteilen:rw'
|
|
)
|
|
);
|
|
|
|
// Load models
|
|
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
|
|
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
|
|
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
|
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
|
$this->load->model('accounting/Vertrag_model', 'VertragModel');
|
|
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
|
|
|
|
// Load libraries
|
|
$this->load->library('WidgetLib');
|
|
$this->load->library('PermissionLib');
|
|
|
|
// Load helpers
|
|
$this->load->helper('array');
|
|
$this->load->helper('url');
|
|
|
|
// Load language phrases
|
|
$this->loadPhrases(
|
|
array(
|
|
'global',
|
|
'ui',
|
|
'lehre',
|
|
'table'
|
|
)
|
|
);
|
|
|
|
$this->_setAuthUID(); // sets property uid
|
|
|
|
$this->setControllerId(); // sets the controller id
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------------------------------
|
|
// Public methods
|
|
|
|
/**
|
|
* Main page of Lehrauftrag
|
|
*/
|
|
public function index()
|
|
{
|
|
// Set studiengang to be selected in studiengang dropdown
|
|
$oe_kurzbz = $this->input->get('organisationseinheit'); // if provided by selected studiengang
|
|
$oe_kurzbz = ($oe_kurzbz == 'null' ? null : $oe_kurzbz);
|
|
|
|
// Retrieve studiengaenge the user is entitled for to populate studiengang dropdown
|
|
if (!$oe_kurzbz_arr = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN))
|
|
{
|
|
show_error('Fehler bei Berechtigungsprüfung');
|
|
}
|
|
|
|
// If oe_kurzbz get param was set, check against entitled stg
|
|
if (!is_null($oe_kurzbz))
|
|
{
|
|
if (!in_array($oe_kurzbz, $oe_kurzbz_arr))
|
|
{
|
|
show_error('Keine Berechtigung für diese Organisationseinheit');
|
|
}
|
|
}
|
|
|
|
// Set studiensemester selected for studiengang dropdown
|
|
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
|
|
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
|
|
{
|
|
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
|
|
if (hasData($studiensemester))
|
|
{
|
|
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
|
|
}
|
|
elseif (isError($studiensemester))
|
|
{
|
|
show_error(getError($studiensemester));
|
|
}
|
|
}
|
|
|
|
// Set ausbildungssemester selected for ausbildungssemester dropdown
|
|
$ausbildungssemester = $this->input->get('ausbildungssemester'); // if provided by selected ausbildungssemester
|
|
$ausbildungssemester = ($ausbildungssemester == 'null' ? null : $ausbildungssemester);
|
|
|
|
$view_data = array(
|
|
'organisationseinheit_selected' => $oe_kurzbz,
|
|
'organisationseinheit' => $oe_kurzbz_arr,
|
|
'studiensemester_selected' => $studiensemester_kurzbz,
|
|
'ausbildungssemester_selected' => $ausbildungssemester,
|
|
);
|
|
|
|
$this->load->view('lehre/lehrauftrag/approveLehrauftrag.php', $view_data);
|
|
}
|
|
|
|
/**
|
|
* Set the contract status of Lehrauftrag to 'erteilt'.
|
|
* Performed on ajax call.
|
|
*/
|
|
public function approveLehrauftrag()
|
|
{
|
|
$lehrauftrag_arr = json_decode($this->input->post('selected_data'));
|
|
|
|
if (is_array($lehrauftrag_arr))
|
|
{
|
|
foreach ($lehrauftrag_arr as $lehrauftrag)
|
|
{
|
|
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
|
|
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
|
|
|
|
$lv_oe_kurzbz = null;
|
|
|
|
// Retrieve organisational unit to which the lehrveranstaltung of the contract belongs to
|
|
// * first get lehrveranstaltung
|
|
$result = $this->VertragModel->getLehreinheitData($vertrag_id, 'lehrveranstaltung_id');
|
|
if (hasData($result))
|
|
{
|
|
// * then get corresponding organisational unit
|
|
$this->load->model('education/Lehrveranstaltung_model', 'Lehrveranstaltung_model');
|
|
$result = $this->LehrveranstaltungModel->load($result->retval[0]->lehrveranstaltung_id);
|
|
if (hasData($result))
|
|
{
|
|
$lv_oe_kurzbz = $result->retval[0]->oe_kurzbz;
|
|
}
|
|
elseif (isError(($result)))
|
|
{
|
|
return $this->outputJsonError('Fehler beim Laden einer Lehrveranstaltung.');
|
|
}
|
|
}
|
|
elseif (isError($result))
|
|
{
|
|
return $this->outputJsonError('Fehler beim Laden von Lehreinheitdaten.');
|
|
}
|
|
|
|
// Check if user is entitled to approve this lehrauftrag (by permission and organisational unit)
|
|
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, 'suid', $lv_oe_kurzbz))
|
|
{
|
|
return $this->outputJsonError('Sie haben keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
|
|
}
|
|
|
|
// Approve lehrauftrag by setting vertragsstatus to 'erteilt'
|
|
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
|
|
|
|
if (!isError($result))
|
|
{
|
|
$json [] = array(
|
|
'row_index' => $lehrauftrag->row_index,
|
|
'erteilt' => date('Y-m-d')
|
|
);
|
|
}
|
|
else
|
|
{
|
|
return $this->outputJsonError($result->retval);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
|
|
}
|
|
|
|
// output success json to ajax
|
|
if (isset($json) && !isEmptyArray($json))
|
|
{
|
|
$this->outputJsonSuccess($json);
|
|
}
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------------------------------
|
|
// Private methods
|
|
|
|
/**
|
|
* Retrieve the UID of the logged user and checks if it is valid
|
|
*/
|
|
private function _setAuthUID()
|
|
{
|
|
$this->_uid = getAuthUID();
|
|
|
|
if (!$this->_uid) show_error('User authentification failed');
|
|
}
|
|
|
|
}
|