Compare commits

..

10 Commits

214 changed files with 2409 additions and 7495 deletions
+21
View File
@@ -0,0 +1,21 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* before this date projektarbeiten failed do upload in time will be ignored
* @var string string formated as Date
*/
$config['projektarbeitjob_start'] = '2023-06-01';
/**
* projektarbeiten bachelor will not be copied anymore after this amount of already existing
* @var Integer count of projektarbeiten
*/
$config['projektarbeitjob_finishCopy_bachelor'] = 6;
/**
* projektarbeiten master will not be copied anymore after this amount of already existing
* @var Integer count of projektarbeiten
*/
$config['projektarbeitjob_finishCopy_diplom'] = 3;
-7
View File
@@ -1,7 +0,0 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
// broaden the allowed URI characters just for tests
$config['permitted_uri_chars'] = 'a-z A-Z 0-9~%.:_\-';
// ensure we read REQUEST_URI
$config['uri_protocol'] = 'REQUEST_URI';
@@ -17,27 +17,6 @@
*/
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @SWG\Info(
* title="Bookmark API",
* version="1.0.0"
* )
*/
/**
* @SWG\Swagger(
* schemes={"https"},
* basePath="/fhcompletecis4/cis.php/api/frontend/v1/Bookmark/"
* )
*/
/**
* @SWG\SecurityScheme(
* securityDefinition="basicAuth",
* type="basic"
* )
*/
class Bookmark extends FHCAPI_Controller
{
@@ -52,7 +31,6 @@ class Bookmark extends FHCAPI_Controller
'delete' => self::PERM_LOGGED,
'insert' => self::PERM_LOGGED,
'update' => self::PERM_LOGGED,
'test_true' => self::PERM_LOGGED
]);
$this->load->model('dashboard/Bookmark_model', 'BookmarkModel');
@@ -70,21 +48,6 @@ class Bookmark extends FHCAPI_Controller
* gets the bookmarks associated to a user
* @access public
* @return void
* @SWG\Get(
* path="/getBookmarks",
* security={{"basicAuth":{}}},
* tags={"bookmarks"},
* summary="Get user's bookmarks",
* description="Returns all bookmarks associated with the authenticated user.",
* @SWG\Response(
* response=200,
* description="List of bookmarks"
* ),
* @SWG\Response(
* response=401,
* description="Unauthorized"
* )
* )
*/
public function getBookmarks()
{
@@ -100,31 +63,6 @@ class Bookmark extends FHCAPI_Controller
* deletes bookmark from associated user
* @access public
* @return void
* @SWG\Post(
* path="/delete/{bookmark_id}",
* security={{"basicAuth":{}}},
* tags={"bookmarks"},
* summary="Delete a bookmark",
* description="Deletes a bookmark if the user is the owner or an admin.",
* @SWG\Parameter(
* name="bookmark_id",
* in="path",
* required=true,
* type="integer"
* ),
* @SWG\Response(
* response=200,
* description="Bookmark deleted successfully"
* ),
* @SWG\Response(
* response=403,
* description="Forbidden - not the owner"
* ),
* @SWG\Response(
* response=404,
* description="Bookmark not found"
* )
* )
*/
public function delete($bookmark_id)
{
@@ -149,44 +87,6 @@ class Bookmark extends FHCAPI_Controller
* inserts new bookmark into the bookmark table
* @access public
* @return void
* @SWG\Post(
* path="/insert",
* security={{"basicAuth":{}}},
* tags={"bookmarks"},
* summary="Insert a new bookmark",
* @SWG\Parameter(
* name="body",
* in="body",
* required=true,
* @SWG\Schema(
* type="object",
* required={"url", "title"},
* @SWG\Property(
* property="url",
* type="string",
* example="https://github.com/swagger-api/swagger-codegen"
* ),
* @SWG\Property(
* property="title",
* type="string",
* example="Swagger Codegen"
* ),
* @SWG\Property(
* property="tag",
* type="string",
* example="API"
* )
* )
* ),
* @SWG\Response(
* response=201,
* description="Bookmark created"
* ),
* @SWG\Response(
* response=400,
* description="Validation error"
* )
* )
*/
public function insert()
{
@@ -209,47 +109,9 @@ class Bookmark extends FHCAPI_Controller
}
/**
* @SWG\Post(
* path="/update/{bookmark_id}",
* security={{"basicAuth":{}}},
* tags={"bookmarks"},
* summary="Update a bookmark",
* description="Updates a bookmark's URL and title for the given ID.",
* @SWG\Parameter(
* name="bookmark_id",
* in="path",
* required=true,
* type="integer",
* description="ID of the bookmark to update"
* ),
* @SWG\Parameter(
* name="body",
* in="body",
* required=true,
* @SWG\Schema(
* type="object",
* required={"url", "title"},
* @SWG\Property(
* property="url",
* type="string",
* example="https://updated-url.com"
* ),
* @SWG\Property(
* property="title",
* type="string",
* example="Updated Title"
* )
* )
* ),
* @SWG\Response(
* response=200,
* description="Bookmark updated"
* ),
* @SWG\Response(
* response=400,
* description="Validation error"
* )
* )
* updates bookmark in the bookmark table
* @access public
* @return void
*/
public function update($bookmark_id)
{
@@ -1,80 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Studienjahr extends FHCAPI_Controller
{
/**
* Studienjahr API constructor.
*/
public function __construct()
{
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getNext' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
$this->load->model('organisation/studienjahr_model', 'StudienjahrModel');
}
/**
* Get all Studienjahre.
*
* @param null|string $order Sorting order for the Studienjahr, 'asc' or 'desc'. Defaults to 'asc'.
* @param null|string $start Starting Studienjahre with given studienjahr_kurzbz
*/
public function getAll()
{
$order = $this->input->get('order');
$start = $this->input->get('studienjahr_kurzbz');
if (strcasecmp($order, 'DESC') == 0) {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'DESC');
} else {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'ASC');
}
if ($start) {
$result = $this->StudienjahrModel->loadWhere([
'studienjahr_kurzbz >= ' => $start
]);
} else {
$result = $this->StudienjahrModel->load();
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function getNext()
{
$this->StudienjahrModel->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->StudienjahrModel->addOrder('start');
$this->StudienjahrModel->addLimit(1);
$result = $this->StudienjahrModel->loadWhere(['start >' => 'NOW()']);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess(current(getData($result)));
}
}
@@ -24,8 +24,7 @@ class Studiensemester extends FHCAPI_Controller
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getAktNext' => self::PERM_LOGGED,
'getStudienjahrByStudiensemester' => self::PERM_LOGGED
'getAktNext' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
@@ -116,40 +115,4 @@ class Studiensemester extends FHCAPI_Controller
$this->terminateWithSuccess((getData($result) ?: ''));
}
/**
* Get Studienjahr by Studiensemester.
* input param semester: studiensemester_kurzbz
*/
public function getStudienjahrByStudiensemester()
{
$semester = $this->input->get('semester');
$studienjahrObj = null;
if (!is_numeric($semester))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $semester));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData(success($studienjahrObj))));
}
}
@@ -156,8 +156,6 @@ class Student extends FHCAPI_Controller
$uid = $student ? current($student)->student_uid : null;
$studiengang_kz = $student ? current($student)->studiengang_kz : null;
$result = $this->PrestudentModel->loadWhere(['prestudent_id' => $prestudent_id]);
$person = $this->getDataOrTerminateWithError($result);
@@ -233,27 +231,10 @@ class Student extends FHCAPI_Controller
// Do Updates
if (count($update_lehrverband)) {
$curstudlvb = $this->StudentlehrverbandModel->load([
$result = $this->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $uid
]);
if(hasData($curstudlvb) && count(getData($curstudlvb)) > 0 )
{
$result = $this->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $uid
], $update_lehrverband);
}
else
{
$result = $this->StudentlehrverbandModel->insert(array_merge([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $uid,
'studiengang_kz' => $studiengang_kz
], $update_lehrverband));
}
], $update_lehrverband);
$this->getDataOrTerminateWithError($result);
}
@@ -52,7 +52,6 @@ class OneTimeMessages extends JOB_Controller
JOIN public.tbl_prestudentstatus ps USING (prestudent_id)
JOIN public.tbl_studiengang s USING (studiengang_kz)
WHERE get_rolle_prestudent(ps.prestudent_id, NULL) = \'Wartender\'
AND ps.status_kurzbz = \'Wartender\'
AND ps.studiensemester_kurzbz = ?
AND ps.datum <= NOW() - \''.$days.' days\'::interval
AND s.typ = ?
@@ -0,0 +1,384 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 3.2
* @filesource
*
* Cronjob to be run for Bachelor and Master Arbeiten failed to be uploaded in time
*
* Actions:
* (1) missed endupload projektarbeit: grade projektarbeit with grade 5 (Nicht genügend)
* (2) copy projektarbeit if max anzahl projektarbeiten nicht erreicht
* (3) set Betreuungen to 0 hours
* (4) sancho Mail to Studiengang with Link
*/
if (!defined('BASEPATH')) exit('No direct script access allowed');
class ProjektarbeitJob extends JOB_Controller
{
public function __construct()
{
parent::__construct();
// Config
$this->load->config('projektarbeit');
// Load SanchoHelper
$this->load->helper('hlp_sancho_helper');
//Load Models
$this->load->model('education/Paabgabe_model', 'PaabgabeModel');
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
$this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
}
public function handleProjektarbeitenNotUploadedInTime()
{
$startDate = $this->config->item('projektarbeitjob_start');
if ($startDate)
$startDate = new DateTime($startDate);
$mailArray = array();
$arrayStg = array();
$countMissedAbgaben = 0;
$countNotCopied = 0;
$countTotal = 0;
$countMails = 0;
$projektarbeiten = [];
$this->logInfo('Start Job Projektarbeit');
//print_r( PHP_EOL . "Start Job Projektarbeit" . PHP_EOL);
//get all Projektarbeiten not Uploaded in Time
$resultNotUploaded = $this->ProjektarbeitModel->getAllProjektarbeitenNotUploadedInTime($startDate->format('c'));
if (isError($resultNotUploaded) && $resultNotUploaded != [])
{
return $this->logError(getError($resultNotUploaded));
}
$projektarbeitenNotUploaded = getData($resultNotUploaded);
if($projektarbeitenNotUploaded){
foreach ($projektarbeitenNotUploaded as $projectNotUploaded) {
$projectNotUploaded->reason = 'missedUpload';
}
}
//get all negative Projektarbeiten (5) of student_uid with no open (null) or positive marks
$resultNegative = $this->ProjektarbeitModel->getAllProjektarbeitenNegative($startDate->format('c'));
if (isError($resultNegative) && $resultNegative != [])
{
return $this->logError(getError($resultNegative));
}
$projektarbeitenNegative = getData($resultNegative) ?: [];
foreach ($projektarbeitenNegative as $projectNegative)
$projectNegative->reason = 'negative';
if (!hasData($resultNotUploaded) && !hasData($resultNegative
|| $resultNotUploaded) == [] && $resultNegative == [])
return print_r('End Job Projektarbeit Update: 0 Mails sent');
// return $this->logInfo('End Job Projektarbeit Update: 0 Mails sent');
if (is_array($projektarbeitenNotUploaded) && is_array($projektarbeitenNegative))
{
$projektarbeiten = array_merge($projektarbeitenNotUploaded, $projektarbeitenNegative);
}
// (1) set mark to 7
foreach ($projektarbeiten as $projekt)
{
$this->db->where('projektarbeit_id', $projekt->projektarbeit_id);
if (!$projekt->note)
{
$result = $this->ProjektarbeitModel->update([
'projektarbeit_id' => $projekt->projektarbeit_id
], [
'note' => 7
]);
if (isError($result))
{
$this->logError(getError($result));
}
}
// (2) copy Projektarbeit
//no more copying if count bakk >= 6 or count_diplom >= 3
$end_of_copy_bachelor = $this->config->item('projektarbeitjob_finishCopy_bachelor') ? $this->config->item('projektarbeitjob_finishCopy_bachelor') : 6;
$end_of_copy_master = $this->config->item('projektarbeitjob_finishCopy_diplom') ? $this->config->item('projektarbeitjob_finishCopy_diplom') : 3;
$maxCountReached = $this->ProjektarbeitModel->checkifCountMaxProjektarbeiten(
$projekt->student_uid,
$end_of_copy_bachelor,
$end_of_copy_master
);
if ($maxCountReached)
{
$countNotCopied++;
$result = $this->StudiengangModel->loadWhere([
'studiengang_kz' => $projekt->studiengang_kz
]);
if (isError($result))
{
$this->logError(getError($result));
}
if (!hasData($result))
{
//print_r('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found');
$this->logInfo('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found');
}
$studiengang = current(getData($result));
$email = $studiengang->email;
$arrayStg[$projekt->studiengang_kz] = array(
'countNotCopied' => $countNotCopied,
'email' => $email,
'countMissedAbgaben' => $countMissedAbgaben,
);
/* print_r("Max count of enduploads reached: " . $projekt->student_uid . ",id:" . $projekt->projektarbeit_id . " " . $projekt->studiengang_kz . PHP_EOL);
print_r("Count of not copied: " . $countNotCopied . PHP_EOL);*/
continue;
}
$result2 = $this->ProjektarbeitModel->load($projekt->projektarbeit_id);
if (isError($result2))
{
$this->logError(getError($result2));
continue;
}
if (!hasData($result2))
{
//print_r('No Projektarbeit found for projektarbeit_id ' . $projekt->projektarbeit_id);
$this->logInfo('No Projektarbeit found for projektarbeit_id ' . $projekt->projektarbeit_id);
continue;
}
$projektarbeit = current(getData($result2));
$now = new Datetime();
$this->ProjektarbeitModel->insert([
'projekttyp_kurzbz' => $projektarbeit->projekttyp_kurzbz,
'titel' => $projektarbeit->titel,
'note' => null,
'lehreinheit_id' => $projektarbeit->lehreinheit_id,
'student_uid' => $projektarbeit->student_uid,
'firma_id' => $projektarbeit->firma_id,
'punkte' => null,
'beginn' => null,
'ende' => null,
'faktor' => $projektarbeit->faktor,
'freigegeben' => $projektarbeit->freigegeben,
'gesperrtbis' => $projektarbeit->gesperrtbis,
'stundensatz' => $projektarbeit->stundensatz,
'themenbereich' => $projektarbeit->themenbereich,
'anmerkung' => $projektarbeit->anmerkung,
'updateamum' => null,
'updatevon' => null,
'insertamum' => $now->format('c'),
'insertvon' => 'Projektjob',
'ext_id' => $projektarbeit->ext_id,
'gesamtstunden' => null,
'titel_english' => $projektarbeit->titel_english,
'sprache' => $projektarbeit->sprache,
'abgabedatum' => null,
'kontrollschlagwoerter' => $projektarbeit->kontrollschlagwoerter,
'schlagwoerter' => $projektarbeit->schlagwoerter,
'schlagwoerter_en' => $projektarbeit->schlagwoerter_en,
'abstract' => $projektarbeit->abstract,
'abstract_en' => $projektarbeit->abstract_en,
'final' => $projektarbeit->final,
]);
$this->db->order_by("projektarbeit_id", "desc");
$result = $this->ProjektarbeitModel->loadWhere([
'student_uid' => $projektarbeit->student_uid,
'insertvon' => 'Projektjob',
'note' => null
]);
if (isError($result))
{
$this->logError(getError($result));
continue;
}
elseif (!hasData($result))
{
//print_r('No projektarbeit_id for studentId ' . $projektarbeit->student_uid . ' found');
$this->logInfo('No projektarbeit_id for studentId ' . $projektarbeit->student_uid . ' found');
continue;
}
else
{
$projektarbeit_copy = current(getData($result));
$projekt_id_copy = $projektarbeit_copy->projektarbeit_id;
//Array Studiengänge
if (!isset($arrayStg[$projekt->studiengang_kz]))
{
$result = $this->StudiengangModel->loadWhere([
'studiengang_kz' => $projekt->studiengang_kz
]);
if (isError($result))
{
$this->logError(getError($result));
}
if (!hasData($result))
{
//print_r('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found');
$this->logInfo('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found');
}
$studiengang = current(getData($result));
$email = $studiengang->email;
$arrayStg[$projekt->studiengang_kz] = array(
'countMissedAbgaben' => $countMissedAbgaben++,
'email' => $email,
'countNotCopied' => $countNotCopied,
);
}
else {
$arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] = $countMissedAbgaben++;
}
//Mailarray
$reason = $projekt->reason ? $projekt->reason : null;
$mailArray[] = array(
'studiengang_kz' => $projekt->studiengang_kz,
'projekt_id_alt' => $projekt->projektarbeit_id,
'projekt_id_neu' => $projekt_id_copy,
'student_uid' => $projekt->student_uid,
'vorname' => $projekt->vorname,
'nachname' => $projekt->nachname,
'titel' => $projekt->titel,
'reason' => $reason
);
}
// (3) copy Betreuungen
$result = $this->ProjektbetreuerModel->loadWhere([
'projektarbeit_id' => $projekt->projektarbeit_id
]);
if (isError($result)) {
$this->logError(getError($result));
continue;
}
elseif (!hasData($result))
{
//print_r('No Betreuung found for projektarbeit_id ' . $projekt->projektarbeit_id);
$this->logInfo('No Betreuung found for projektarbeit_id ' . $projekt->projektarbeit_id);
}
else
{
$betreuung = getData($result);
//error handler, catching also warnings
set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context) {
throw new ErrorException($err_msg, 0, $err_severity, $err_file, $err_line);
}, E_WARNING);
foreach ($betreuung as $bet) {
$now = new Datetime();
try {
$this->ProjektbetreuerModel->insert([
'person_id' => $bet->person_id,
'projektarbeit_id' => $projekt_id_copy,
'note' => null,
'faktor' => $bet->faktor,
'name' => $bet->name,
'punkte' => $bet->punkte,
'stundensatz' => $bet->stundensatz,
'updateamum' => null,
'updatevon' => null,
'insertamum' => $now->format('c'),
'insertvon' => 'Projektjob',
'ext_id' => $bet->ext_id,
'betreuerart_kurzbz' => $bet->betreuerart_kurzbz,
'stunden' => null,
'vertrag_id' => null,
'zugangstoken' => null,
'zugangstoken_gueltigbis' => null
]);
}
catch (ErrorException $e)
{
$this->logError("Error Insert Betreuungen, check projekt_id: " . $projekt_id_copy);
continue;
}
}
restore_error_handler();
}
}
array_multisort($mailArray);
// (4) Sancho Mail
foreach ($arrayStg as $stg_kz => $item)
{
$maildata = " <table class='table table-striped'> <thead>
<tr>
<th align=left>UID </th>
<th align=left>Name</th>
<th align=left>Projektarbeit / Title</th>
<th align=left></th>
</tr>
</thead>
<tbody>";
$email = $item['email'];
//TODO(Manu) Total counts
//change to counts / STG or keep mailtext countfree
$anzahlMissedAbgaben = $item['countMissedAbgaben'];
$anzahlNichtKopierteProjektarbeiten = $item['countNotCopied'];
foreach ($mailArray as $m)
{
if ($stg_kz == $m['studiengang_kz'])
{
$maildata .= "<tr>" .
"<td>". $m['student_uid'] . "</td>".
"<td>". trim($m['vorname'] . " " . $m['nachname']) ."</td>".
"<td>". $m['titel'] . "</td>".
"<td>[". $m['reason'] . "]</td></tr>";
}
}
$maildata .= "</tbody></table>";
$betreff = 'Kopierte Projektarbeiten / Project Work(s) copied';
$data = [
/* 'anzahlMissedAbgaben' => $anzahlMissedAbgaben,
'anzahlNichtKopierteProjektarbeiten' => $anzahlNichtKopierteProjektarbeiten,*/
'link' => APP_ROOT. '/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz,
'table' => $maildata
];
$countTotal = $countTotal + $anzahlMissedAbgaben;
//send mail
if (sendSanchoMail('Sancho_Mail_Stgl_MissedAbgaben', $data, $email, $betreff))
{
$countMails++;
}
}
/* print_r( PHP_EOL. $countTotal . ' projektarbeiten copied, ' . $countMails . ' sent mails.' . PHP_EOL);
print_r('End Job Projektarbeit' . PHP_EOL);*/
$this->logInfo($countTotal . ' projektarbeiten copied, ' . $countMails . ' sent mails.');
$this->logInfo('End Job Projektarbeit');
}
}
@@ -821,7 +821,7 @@ class ReihungstestJob extends JOB_Controller
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
JOIN PUBLIC.tbl_studiengang ON (tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz)
WHERE get_rolle_prestudent (tbl_prestudent.prestudent_id, ?) IN ('Aufgenommener','Bewerber','Wartender','Abgewiesener')
AND studiensemester_kurzbz = ?
AND studiensemester_kurzbz = ?
AND tbl_studiengang.typ IN ('b', 'm')
)
SELECT * FROM prst
@@ -861,7 +861,7 @@ class ReihungstestJob extends JOB_Controller
{
// Alle niedrigeren Prios laden
$qryNiedrPrios = "
SELECT DISTINCT ON(prestudent_id)
SELECT DISTINCT
get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') AS laststatus,
tbl_studienplan.orgform_kurzbz,
tbl_person.nachname,
@@ -880,7 +880,7 @@ class ReihungstestJob extends JOB_Controller
AND studiensemester_kurzbz = '".$row_ps->studiensemester_kurzbz."'
AND tbl_studiengang.typ IN ('b', 'm')
AND priorisierung > ".$row_ps->priorisierung."
ORDER BY prestudent_id, studiengang_kz, laststatus, tbl_prestudentstatus.datum DESC
ORDER BY studiengang_kz, laststatus
";
// Wenn der letzte Status "Aufgenommener" ist, alle niedrigeren Prios auf "Abgewiesen" setzen
@@ -976,7 +976,7 @@ class ReihungstestJob extends JOB_Controller
FROM public.tbl_konto
WHERE person_id = " . $row_ps->person_id . "
AND studiensemester_kurzbz = '" . $row_ps->studiensemester_kurzbz . "'
AND buchungstyp_kurzbz IN ('StudiengebuehrAnzahlung','KautionDrittStaat')";
AND buchungstyp_kurzbz = 'StudiengebuehrAnzahlung'";
$resultKautionExists = $db->execReadOnlyQuery($qryKautionExists);
if (hasdata($resultKautionExists))
+1 -1
View File
@@ -109,7 +109,7 @@ class PermissionLib
foreach($oe_kurzbz as $value)
{
$results[] = $this->isBerechtigt($berechtigung_kurzbz, $art, $value, $kostenstelle_id);
$results[] = $this->isBerechtigt($berechtigung_kurzbz, $value, $art, $kostenstelle_id);
}
if(!in_array(true, $results))
@@ -16,21 +16,145 @@ class Lehrveranstaltung_model extends DB_Model
}
/**
* Get all Templates and its assigned Lehrveranstaltungen of given Studiensemester and Oes.
* Lvs are queried via actual Studienordnung and Studienplan.
* Get Lehrveranstaltungen by eventQuery string. Use with autocomplete event queries.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @return array
*/
public function getAutocompleteSuggestions($eventQuery, $studiensemester_kurzbz = null, $oes = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$params = [];
/* filter by input string */
if (is_string($eventQuery)) {
$subQry.= ' AND lv.bezeichnung ILIKE ?';
$params[] = '%' . $eventQuery . '%';
}
$qry = 'SELECT DISTINCT ON (lehrveranstaltung_id) * FROM ('. $subQry. ') AS tmp';
return $this->execQuery($qry, $params);
}
/**
* Get Lehrveranstaltungen with its Stg, OE and OE-type.
* Filter by Studiensemester and Organisationseinheiten if necessary.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @param array $lv_ids Filter by Lehrveranstaltung-Ids
* @return array
*/
public function getLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lv_ids = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$qry = 'SELECT * FROM ('. $subQry. ') AS tmp';
if (isset($lv_ids) && is_array($lv_ids))
{
/* filter by lv_ids */
$implodedLvIds = "'". implode("', '", $lv_ids). "'";
$qry.= ' WHERE lehrveranstaltung_id IN ('. $implodedLvIds. ')';
}
$qry.= ' ORDER BY stg_typ_kurzbz, orgform_kurzbz DESC';
return $this->execQuery($qry);
}
/**
* Get basic query to retrieve Lehrveranstaltungen according to the Orgforms and Ausbildungssemesters actual Studienplan.
*
* @return string
*/
private function _getQryLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lehrtyp_kurzbz = 'lv')
{
$qry = '
SELECT
lv.oe_kurzbz AS lv_oe_kurzbz,
CASE
WHEN oe.organisationseinheittyp_kurzbz = \'Kompetenzfeld\' THEN (\'KF \' || oe.bezeichnung)
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS lv_oe_bezeichnung,
stplsem.studiensemester_kurzbz,
studienordnung_id,
sto.studiengang_kz,
stpl.studienplan_id,
stplsem.semester,
stpl.orgform_kurzbz,
upper(stg.typ || stg.kurzbz) AS stg_typ_kurzbz,
stg.bezeichnung AS stg_bezeichnung,
stgtyp.bezeichnung AS stg_typ_bezeichnung,
lv.lehrveranstaltung_id,
lv.semester,
lv.bezeichnung AS lv_bezeichnung,
(
-- comma seperated string of all lehreinheitgruppen
SELECT string_agg(bezeichnung, \', \') AS lehreinheitgruppe_bezeichnung
FROM(
-- distinct bezeichnung, as may come multiple times from different lehreinheiten
SELECT DISTINCT ON (studiengang_kz, bezeichnung) studiengang_kz, bezeichnung FROM
(
-- distinct lehreinheitgruppe, as may come multiple times from different lehrform
SELECT DISTINCT ON (legr.lehreinheitgruppe_id) legr.studiengang_kz,
-- get Spezialgruppe or Lehrverbandgruppe
COALESCE(
legr.gruppe_kurzbz,
CONCAT( UPPER(stg1.typ), UPPER(stg1.kurzbz), \'-\', legr.semester, legr.verband, legr.gruppe )
) as bezeichnung
FROM lehre.tbl_lehreinheitgruppe legr
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv1 USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang stg1 ON stg1.studiengang_kz = legr.studiengang_kz
WHERE lv1.lehrveranstaltung_id = lv.lehrveranstaltung_id
AND le.studiensemester_kurzbz = stplsem.studiensemester_kurzbz
) AS lehreinheitgruppen
GROUP BY studiengang_kz, bezeichnung
ORDER BY studiengang_kz DESC
) AS uniqueLehreinheitgruppen_bezeichnung
) AS lehreinheitgruppen_bezeichnung
FROM
lehre.tbl_studienplan stpl
JOIN lehre.tbl_studienordnung sto USING (studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING (studienplan_id)
JOIN lehre.tbl_studienplan_lehrveranstaltung stpllv ON (stpllv.studienplan_id = stpl.studienplan_id AND stpllv.semester = stplsem.semester)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = sto.studiengang_kz
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
/* filter by lehrtyp_kurzbz, default is lvs only */
WHERE
lehrtyp_kurzbz = '. $this->db->escape($lehrtyp_kurzbz);
if (isset($studiensemester_kurzbz) && is_string($studiensemester_kurzbz))
{
/* filter by studiensemester */
$qry.= ' AND stplsem.studiensemester_kurzbz = '. $this->db->escape($studiensemester_kurzbz);
}
if (isset($oes) && is_array($oes))
{
/* filter by organisationseinheit */
$implodedOes = "'". implode("', '", $oes). "'";
$qry.= ' AND lv.oe_kurzbz IN ('. $implodedOes. ')';
}
return $qry;
}
/**
* Get all Templates and union with all Lehrveranstaltungen of given Studiensemester and Oes, that are assigned to
* a template. This data structure can be used for nested tabulator data tree.
*
* @param null|string $studiensemester_kurzbz
* @param null|array $oes
* @param null $lehrveranstaltung_id Queries certain LV only
* @return array|stdClass|null
*/
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null, $studienjahr_kurzbz = null){
if (is_string($studiensemester_kurzbz) && is_string($studienjahr_kurzbz))
{
return error('Query not possible for both studiensemester and studienjahr');
}
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null){
$params = [];
$qry = '
WITH
@@ -65,17 +189,6 @@ class Lehrveranstaltung_model extends DB_Model
}
if (is_string($studienjahr_kurzbz)) {
/* filter by studiensemester */
$params[] = $studienjahr_kurzbz;
$qry .= '
AND stplsem.studiensemester_kurzbz IN (
SELECT studiensemester_kurzbz
FROM public.tbl_studiensemester
WHERE studienjahr_kurzbz = ?
)';
}
if (is_array($oes))
{
/* filter by organisationseinheit */
@@ -187,15 +300,7 @@ class Lehrveranstaltung_model extends DB_Model
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
JOIN public.tbl_organisationseinheit oe ON oe.oe_kurzbz = lv.oe_kurzbz
ORDER BY
-- Sort by lv.bezeichnung
lv.bezeichnung,
-- Within each group, ensure templates appear first
CASE
WHEN lv.lehrtyp_kurzbz = \'tpl\' THEN 0
ELSE 1
END,
-- Ensure assigend lvs follow their template, grouped by lehrveranstaltung_template_id
COALESCE(lv.lehrveranstaltung_template_id, lv.lehrveranstaltung_id)
oe.bezeichnung, lv.semester, lv.bezeichnung
';
return $this->execQuery($qry, $params);
@@ -706,28 +811,6 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($qry);
}
/**
* Check if given LV is a template (Quellkurs)
*
* @param $lehrveranstaltung_id
* @return array|stdClass|void
*/
public function checkIsTemplate($lehrveranstaltung_id)
{
$this->addSelect('lehrtyp_kurzbz, lehrveranstaltung_template_id');
$result = $this->load($lehrveranstaltung_id);
if (isError($result))
return error(getError($result));
if (hasData($result))
{
return success(
getData($result)[0]->lehrtyp_kurzbz === 'tpl' &&
getData($result)[0]->lehrveranstaltung_template_id === null
);
}
}
/**
* Get ECTS Summe pro angerechnetes Quereinstiegssemester.
@@ -10,6 +10,8 @@ class Projektarbeit_model extends DB_Model
parent::__construct();
$this->dbTable = 'lehre.tbl_projektarbeit';
$this->pk = 'projektarbeit_id';
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
}
/**
@@ -69,4 +71,169 @@ class Projektarbeit_model extends DB_Model
return $this->execQuery($qry, $params);
}
/**
* Gets all Projektarbeiten not uploaded in Time
* with typ endupload and marked as fixtermin
* @param String $startDate project works before this date will be ignored (in Dateformat: 'Y'-'m'-'d')
* @return array of objects
*/
public function getAllProjektarbeitenNotUploadedInTime($startDate = null)
{
$allowedProjekttypes = ['Bachelor', 'Diplom'];
$now = new DateTime();
$this->db->distinct();
$this->addSelect($this->dbTable. '.projektarbeit_id');
$this->addSelect($this->dbTable. '.titel');
$this->addSelect($this->dbTable. '.student_uid');
$this->addSelect($this->dbTable. '.note');
$this->addSelect('p'. '.person_id');
$this->addSelect('p'. '.nachname');
$this->addSelect('p'. '.vorname');
$this->addSelect('le'. '.lehreinheit_id');
$this->addSelect('sg'. '.studiengang_kz');
$this->addJoin('campus.tbl_paabgabe pa', 'projektarbeit_id');
$this->addJoin('lehre.tbl_projektbetreuer pb', 'projektarbeit_id');
$this->addJoin('public.tbl_benutzer ben', 'ben.uid = tbl_projektarbeit.student_uid');
$this->addJoin('public.tbl_person p', 'p.person_id = ben.person_id', 'LEFT');
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id', 'LEFT');
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id', 'LEFT');
$this->addJoin('public.tbl_studiengang sg', 'studiengang_kz', 'LEFT');
$this->db->where_in($this->dbTable. '.projekttyp_kurzbz', $allowedProjekttypes);
if($startDate)
$this->db->where('pa.datum >', $startDate);
$this->db->where($this->dbTable. '.note', null);
//TODO(Manu) remove comments for testdata sg.studiengang_kz
$result = $this->loadWhere([
'ben.aktiv' => 'true',
'pa.fixtermin' => 'true',
'pa.paabgabetyp_kurzbz' => 'end',
'pa.abgabedatum' => null,
'pa.datum < ' => $now->format('c'),
/* 'sg.studiengang_kz' => 255*/
]);
//Testausgaben
/* if ($result)
{
echo "(UPDATE lehre.tbl_projektarbeit pa
SET note = NULL
WHERE projektarbeit_id in(";
$resultIds = getData($result);
if($resultIds){
foreach ($resultIds as $item)
{
echo $item->projektarbeit_id . ',';
}
echo ")\n";
}
}*/
return $result;
}
/**
* Gets all Projektarbeiten that have been negative
* for student_uids with no open (null) or projektarbeiten with positive marks
* @param String $startDate project works before this date will be ignored (in Dateformat: 'Y'-'m'-'d')
* @return array of objects
*/
public function getAllProjektarbeitenNegative($startDate = null)
{
$allowedProjekttypes = ['Bachelor', 'Diplom'];
$now = new DateTime();
$this->db->distinct();
$this->addSelect($this->dbTable. '.projektarbeit_id');
$this->addSelect($this->dbTable. '.titel');
$this->addSelect($this->dbTable. '.student_uid');
$this->addSelect($this->dbTable. '.note');
$this->addSelect('p'. '.person_id');
$this->addSelect('p'. '.nachname');
$this->addSelect('p'. '.vorname');
$this->addSelect('le'. '.lehreinheit_id');
$this->addSelect('sg'. '.studiengang_kz');
$this->addJoin('campus.tbl_paabgabe pa', 'projektarbeit_id');
$this->addJoin('lehre.tbl_projektbetreuer pb', 'projektarbeit_id');
$this->addJoin('public.tbl_benutzer ben', 'ben.uid = tbl_projektarbeit.student_uid');
$this->addJoin('public.tbl_person p', 'p.person_id = ben.person_id', 'LEFT');
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id', 'LEFT');
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id', 'LEFT');
$this->addJoin('public.tbl_studiengang sg', 'studiengang_kz', 'LEFT');
$this->db->where_in($this->dbTable. '.projekttyp_kurzbz', $allowedProjekttypes);
if($startDate)
$this->db->where('pa.datum >', $startDate);
$this->db->where($this->dbTable. '.note', 5);
$this->db->where('NOT EXISTS (SELECT 1 FROM lehre.tbl_projektarbeit AS sub WHERE sub.student_uid = lehre.tbl_projektarbeit.student_uid AND sub.note IS null)', null, false);
$this->db->where('NOT EXISTS (SELECT 1 FROM lehre.tbl_projektarbeit AS sub WHERE sub.student_uid = lehre.tbl_projektarbeit.student_uid AND sub.note IN (1, 2, 3, 4))', null, false);
$this->db->where('ben.aktiv', true);
//TODO(Manu) remove comments for Testdata 'sg.studiengang_kz' => 331
$result = $this->loadWhere([
'pa.fixtermin' => 'true',
'pa.paabgabetyp_kurzbz' => 'end',
'pa.datum < ' => $now->format('c'),
/* 'sg.studiengang_kz' => 255*/
]);
return $result;
}
/**
* Gets the count of Projektarbeiten
* @param String student_uid student_uid to check
* @return true: maximum of allowed projektarbeiten reached
* $return false: maximum of allowed projektarbeiten not reached
*/
public function checkifCountMaxProjektarbeiten($student_uid, $end_of_copy_bachelor, $end_of_copy_master)
{
$qry = "SELECT COUNT(*), projekttyp_kurzbz
FROM lehre.tbl_projektarbeit
WHERE student_uid = ?
GROUP BY projekttyp_kurzbz";
$params = array($student_uid);
$result = $this->execQuery($qry, $params);
//TODO(Manu) wait for final logic or adaptions quality gates
//meanwhile copying of all enduploads with fixed entries
//counting after each step: example for testdata with student_uid where 1 project is copied before hitting limit
// if($student_uid == "mr21m015")
if (!empty($result->retval))
{
foreach ($result->retval as $row)
{
$count = $row->count;
$projekttyp = $row->projekttyp_kurzbz;
if ($projekttyp === 'Bachelor' && $count > $end_of_copy_bachelor)
{
//TODO(Manu) remove comments testdata
//print_r(PHP_EOL . 'LIMIT REACHED Bakk: ' . $student_uid .' Anzahl Abgaben ' . $count . PHP_EOL);
return true;
}
if ($projekttyp === 'Diplom' && $count > $end_of_copy_master)
{
//TODO(Manu) remove comments testdata
//print_r(PHP_EOL . 'LIMIT REACHED Dipl: ' . $student_uid .' Anzahl Abgaben ' . $count . PHP_EOL);
return true;
}
}
}
return false;
}
}
@@ -1,5 +1,4 @@
<?php
class Studienjahr_model extends DB_Model
{
@@ -30,22 +29,6 @@ class Studienjahr_model extends DB_Model
return $this->execQuery($query);
}
public function getNextStudienjahr()
{
$this->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->addOrder('start');
$this->addLimit(1);
return $this->loadWhere(['start >' => 'NOW()']);
}
public function getNextFrom($studienjahr_kurzbz)
{
$this->addLimit(1);
return $this->loadWhere([
'studienjahr_kurzbz >' => $studienjahr_kurzbz
]);
}
/**
* Get the current Studienjahr. During the summer term, continue using the previous Studienjahr.
@@ -55,7 +38,8 @@ class Studienjahr_model extends DB_Model
*/
public function getLastOrAktStudienjahr($days = 60)
{
if (!is_numeric($days)) {
if (!is_numeric($days))
{
$days = 60;
}
@@ -79,7 +63,8 @@ class Studienjahr_model extends DB_Model
*/
public function getAktOrNextStudienjahr($days = 62)
{
if (!is_numeric($days)) {
if (!is_numeric($days))
{
$days = 62;
}
@@ -225,7 +225,7 @@ class Studiensemester_model extends DB_Model
/**
* @param string $student_uid
*
*
* @return StdClass
*/
public function getWhereStudentHasLvs($student_uid)
@@ -238,7 +238,7 @@ class Studiensemester_model extends DB_Model
$this->db->where("v.lehreverzeichnis<>''");
$this->addOrder($this->dbTable . '.start');
return $this->loadWhere(['uid' => $student_uid, 'v.lehre' => true]);
}
@@ -291,42 +291,6 @@ class Studiensemester_model extends DB_Model
return $studienjahrNumber;
}
/**
* Get Studienjahr by Studiensemester.
*
* @param $studiensemester_kurzbz
* @return array|stdClass
*/
public function getStudienjahrByStudiensemester($studiensemester_kurzbz)
{
$studienjahrObj = null;
if (!is_numeric($studiensemester_kurzbz))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $studiensemester_kurzbz));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
return error(getError($result));
}
return success($studienjahrObj);
}
/**
* Holt Start und Ende des Studiensemester_kurzbz
* @param studiensemester_kurzbz
@@ -59,14 +59,7 @@ class Dienstverhaeltnis_model extends DB_Model
}
$qry .="
ORDER BY
CASE
WHEN (COALESCE(dv.bis, '2999-12-31'::date) - NOW()::date) < 0 THEN NULL
ELSE
(COALESCE(dv.bis, '2999-12-31'::date) - NOW()::date)
END ASC NULLS LAST,
COALESCE(dv.bis, '2999-12-31'::date) DESC,
dv.von DESC
ORDER BY dv.von desc
";
return $this->execQuery($qry, $data);
@@ -8,7 +8,7 @@
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$LOGDATA_NAME = '\'Message sent\'';
$LOGDATA_VON = '\'online\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
@@ -62,7 +62,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
) AS "Kaution"
FROM
public.tbl_prestudentstatus pss
@@ -13,7 +13,7 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$ORG_NAME = '\'InfoCenter\'';
$ONLINE = '\'online\'';
@@ -302,7 +302,7 @@
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
@@ -13,8 +13,7 @@
$ORG_NAME = '\'InfoCenter\'';
$IDENTITY = '\'identity\'';
$ONLINE = '\'online\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
@@ -112,7 +111,7 @@ $query = '
LIMIT 1
) AS "AnzahlAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz || \' [\' || pss.ausbildungssemester || \']\'), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
@@ -276,7 +275,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
@@ -9,8 +9,7 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
$KAUTION_DRITT_STAAT = '\'KautionDrittStaat\'';
$STUDIENGEBUEHR_ANZAHLUNG = '\'StudiengebuehrAnzahlung\'';
$query = '
SELECT
@@ -207,7 +206,7 @@ $query = '
FROM public.tbl_konto konto
WHERE konto.person_id = p.person_id
AND konto.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND konto.buchungstyp_kurzbz = '. $KAUTION_DRITT_STAAT .'
AND konto.buchungstyp_kurzbz = '. $STUDIENGEBUEHR_ANZAHLUNG .'
) AS "Kaution"
FROM public.tbl_person p
LEFT JOIN (
+6 -7
View File
@@ -125,7 +125,7 @@ $projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz;
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_bool($paIsCurrent))
if(!is_numeric($paIsCurrent) || $paIsCurrent < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
@@ -166,7 +166,7 @@ if(in_array($betreuerart, array('Erstbegutachter', 'Senatsvorsitz')))
}
// Mail mit Token an Zweitbegutachter senden
if (count($zweitbetreuerArr) > 0 && $paIsCurrent === true && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id']))
if (count($zweitbetreuerArr) > 0 && $paIsCurrent >= 1 && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id']))
{
$qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid);
if(!$result_std=$db->db_query($qry_std))
@@ -482,7 +482,7 @@ $htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
$htmlstr .= "<td width=10% align=center>";
$semester_benotbar = $paIsCurrent === true;
$semester_benotbar = $paIsCurrent >= 1;
$endupload_vorhanden = $num_rows_endupload >= 1;
if ($semester_benotbar && $endupload_vorhanden)
@@ -495,8 +495,7 @@ if ($semester_benotbar && $endupload_vorhanden)
}
else
{
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenotenQuickInfo') : $p->t('abgabetool/keinEnduploadErfolgt');
$info_text = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
$htmlstr .= "<form action='javascript:void(0);'>";
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$quick_info."'
alt='".$quick_info."' disabled>";
@@ -517,7 +516,7 @@ else
}
$htmlstr .= "<tr>
<td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td>
<td align='center' class='warningtext'>".(isset($info_text) ? $info_text : '')."</td>
<td align='center' class='warningtext'>".(isset($quick_info) ? $quick_info : '')."</td>
<td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "</tr>\n";
@@ -545,7 +544,7 @@ if (isset($zweitbetreuerArr) && is_array($zweitbetreuerArr)) // wenn es Zweitbet
$htmlstr .= "&nbsp;&nbsp;<img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
// Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent === true)
if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent >= 1)
{
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
+2 -2
View File
@@ -195,13 +195,13 @@ else
$htmlstr .= "<td>";
if (!is_null($row->babgeschickt))
$htmlstr .= "<a href='./projektbeurteilungDocumentExport.php?betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "/";
if (!is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "<a href='./projektbeurteilungDocumentExport.php?betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "</td>";
}
+5 -5
View File
@@ -472,8 +472,8 @@ if($command=="update" && $error!=true)
else
{
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_bool($paIsCurrent))
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
@@ -495,7 +495,7 @@ if($command=="update" && $error!=true)
$maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost);
$maildata['abgabetyp'] = $abgabetyp;
$maildata['parbeituebersichtlink'] = "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>";
$maildata['bewertunglink'] = $paIsCurrent && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
$maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
$maildata['token'] = "";
$mailres = sendSanchoMail(
@@ -557,8 +557,8 @@ if($command=="update" && $error!=true)
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
$zweitbetmaildata['bewertunglink'] = $paIsCurrent ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $paIsCurrent && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
@@ -241,7 +241,7 @@ if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
<body>
$name hat neue Noten für die Lehrveranstaltung\n\n<br>
<b>" . $sg->kuerzel . ' ' . $lv->semester . '.Semester
' . $lv->bezeichnung . " - " .$lv->lehrform_kurzbz. " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
' . $lv->bezeichnung . " " . $lv->orgform_kurzbz . " - " . $stsem . "</b>
<br>eingetragen.\n<br><br>
Die Noten können jetzt ins Zeugnis übernommen werden.\n";
@@ -1090,10 +1090,7 @@ foreach ($stsem_obj->studiensemester as $studiensemester)
}
$stsem_content .= "</SELECT>\n";
if (! $rechte->isBerechtigt('admin', 0)
&& ! $rechte->isBerechtigt('admin', $lv_obj->studiengang_kz)
&& ! $rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz)
&& ! $rechte->isBerechtigt('lehre', $lv_obj->oe_kurzbz))
if (! $rechte->isBerechtigt('admin', 0) && ! $rechte->isBerechtigt('admin', $lv_obj->studiengang_kz) && ! $rechte->isBerechtigt('lehre', $lv_obj->studiengang_kz))
{
$qry = "SELECT
lehreinheit_id
@@ -1,26 +0,0 @@
<?php
/* Erstellt einen Lehrauftrag im PDF Format
*
* Erstellt ein XML File Transformiert dieses mit
* Hilfe der XSL-FO Vorlage aus der DB und generiert
* daraus ein PDF
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/projektarbeit.class.php');
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
die('Fehlerhafte Parameteruebergabe');
// passende Vorlage holen
$projektarbeitVorlage = new projektarbeit();
$vorlage = $projektarbeitVorlage->getVorlage($_GET['projektarbeit_id'], $_GET['betreuerart_kurzbz']);
if ($vorlage == null)
die("<html><body><h3>".$projektarbeitVorlage->errormsg."</h3></body></html>");
// weiterleiten auf Dokumentexport
header('Location: ' . APP_ROOT . '/cis/private/pdfExport.php?xml=projektarbeitsbeurteilung.xml.php'
.'&xsl='.$vorlage.'&betreuerart_kurzbz=' . $_GET['betreuerart_kurzbz']
. '&projektarbeit_id=' . $_GET['projektarbeit_id'] . '&person_id=' . $_GET['person_id']
);
die();
+27 -21
View File
@@ -196,35 +196,41 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf')
else
$output = 'pdf';
// Berechtigungprüfung Projektarbeit
if (isset($_GET['projektarbeit_id']))
if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung'))
{
$projektarbeitVorlage = new projektarbeit();
$allePaVorlagen = $projektarbeitVorlage->getAllVorlagen();
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
die('Fehlerhafte Parameteruebergabe');
if (!is_array($allePaVorlagen))
die("<html><body><h3>Fehler beim Holen der Projektarbeit Vorlagen</h3></body></html>");
$projektarbeit = new projektarbeit();
$projektarbeit->load($_GET['projektarbeit_id']);
if (in_array($xsl, $allePaVorlagen))
$betreuer = new person();
$betreuer->getPersonFromBenutzer($user);
//Überprüft ob es der Betreuer oder der Student ist
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
switch ($_GET['betreuerart_kurzbz'])
{
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$projektarbeit = new projektarbeit();
$projektarbeit->load($_GET['projektarbeit_id']);
$betreuer = new person();
$betreuer->getPersonFromBenutzer($user);
//Überprüft ob es der Betreuer oder der Student ist
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
$paBerechtigt = true;
case 'Begutachter' :
case 'Senatsvorsitz' :
$xsl = 'ProjektBeurteilungBA';
break;
case 'Erstbegutachter' :
$xsl = 'ProjektBeurteilungMAErst';
break;
case 'Zweitbegutachter' :
$xsl = 'ProjektBeurteilungMAZweit';
break;
}
$allowed = true;
}
$konto = new konto();
if (((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin') || (isset($paBerechtigt) && $paBerechtigt === true))
if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin')) || (isset($allowed) && $allowed === true))
{
$buchungstypen = array();
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
-7
View File
@@ -177,9 +177,6 @@ if(isset($_REQUEST['AuswahlGebiet']))
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
$qry_anz_fragen = "SELECT count(*) FROM testtool.tbl_frage WHERE gebiet_id=".$db->db_add_param($gebiet_id)." AND demo=false";
$result_anz_fragen = $db->db_fetch_object($db->db_query($qry_anz_fragen));
if ($gebietdetails)
{
@@ -218,10 +215,6 @@ if(isset($_REQUEST['AuswahlGebiet']))
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Fragen im Gebiet:</td>
<td>'.$result_anz_fragen->count.'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
+2 -2
View File
@@ -148,7 +148,7 @@ echo '
alert(<?php echo "'".$p->t("testtool/alleFragenBeantwortet")."'"?>);
return true;
}
$(document).ready(function () {
$(document).bind('cut copy paste', function(e)
{
@@ -717,7 +717,7 @@ if($frage->frage_id!='')
if(!$demo)
{
echo '<input style="width:180px; white-space:normal; margin-bottom: 130px;" class="btn btn-default btn-testtool" type="submit" name="submitantwort" value="'.$p->t('testtool/speichernUndWeiter').'" />';
echo '<input style="width:180px; white-space:normal" class="btn btn-default btn-testtool" type="submit" name="submitantwort" value="'.$p->t('testtool/speichernUndWeiter').'" />';
}
else
{
+1 -2
View File
@@ -481,7 +481,6 @@
"phpmd/phpmd": "2.*",
"phpmetrics/phpmetrics": "2.*",
"sebastian/phpcpd": "3.*",
"phpunit/phpunit": "^6",
"zircote/swagger-php": "^2.0"
"phpunit/phpunit": "^6"
}
}
-18
View File
@@ -217,24 +217,6 @@ function getDataFromClipboard()
return pastetext;
}
// ****
// * Kopiert Inhalte in die Zwischenablage
// ****
function copyToClipboard(link)
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
try {
const clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
clipboard.copyString(link);
// Erfolgsmeldung anzeigen
alert("Link erfolgreich in die Zwischenablage kopiert.\nBitte in anderem Browser einfügen und öffnen.");
} catch (e) {
alert("Fehler beim Kopieren in die Zwischenablage: " + e);
}
}
// ****
// * Oeffnet ein neues Fenster welches dann die Datei 'action' mit dem POST Parameter 'data' aufruft
// ****
+1 -2
View File
@@ -355,8 +355,7 @@ if(!$error)
WHERE
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
bismelden AND
lower(mitarbeiter_uid) NOT LIKE '_dummy%'";
bismelden";
if(count($oe_arr)>0)
$qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")";
-15
View File
@@ -175,22 +175,7 @@ function MessagesIFrameSetHTML(val)
}
//Value setzen
if(val!='')
{
editor.contentDocument.execCommand("inserthtml", false, val);
setTimeout(function()
{
scrollToTop();
}, 100);
}
}
function scrollToTop()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
editor = document.getElementById('message-wysiwyg');
editor.contentWindow.scrollTo(0, 0);
}
function MessageIFrameInit()
@@ -1113,15 +1113,15 @@ function StudentAbschlusspruefungTypChange()
{
if(document.getElementById('student-abschlusspruefung-menulist-typ').value=='Bachelor')
{
document.getElementById('student-abschlusspruefung-label-pruefer1').value='PrueferIn 1';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='PrueferIn 2';
document.getElementById('student-abschlusspruefung-label-pruefer1').value='Pruefer 1';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='Pruefer 2';
document.getElementById('student-abschlusspruefung-menulist-pruefer3').hidden=false;
document.getElementById('student-abschlusspruefung-label-pruefer3').hidden=false;
}
else
{
document.getElementById('student-abschlusspruefung-label-pruefer1').value='PrueferIn 1 (Diplomarbeit)';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='PrueferIn 2';
document.getElementById('student-abschlusspruefung-label-pruefer1').value='Pruefer 1 (Diplomarbeit)';
document.getElementById('student-abschlusspruefung-label-pruefer2').value='Pruefer 2';
document.getElementById('student-abschlusspruefung-menulist-pruefer3').hidden=true;
document.getElementById('student-abschlusspruefung-label-pruefer3').hidden=true;
}
+1 -1
View File
@@ -74,7 +74,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<?php $hideZugangscode = (defined('ACTIVE_ADDONS') && strpos(ACTIVE_ADDONS, 'bewerbung') !== false) ? '':' hidden="true"'; ?>
<label value="Zugangscode" control="student-detail-zugangscode" <?php echo $hideZugangscode; ?>/>
<label id="label-student-detail-link_bewerbungstool" hidden="true" value=""></label>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" <?php echo $hideZugangscode; ?> onclick="copyToClipboard(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" <?php echo $hideZugangscode; ?> onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<?php $hideBpk = $rechte->isBerechtigt('student/bpk') ? '':' hidden="true"'; ?>
<label value="BPK" control="student-detail-textbox-bpk"<?php echo $hideBpk; ?>/>
<hbox><textbox id="student-detail-textbox-bpk" disabled="true" maxlength="28" size="50"<?php echo $hideBpk; ?>/></hbox>
+1 -1
View File
@@ -121,7 +121,7 @@ class phrasen extends basis_db
* Wobei x durch den Index+1 im Array zu ersetzten ist. zB "%2$s" um die Variable $value[1] auszugeben
* naehere Infos siehe sprintf
*
* @param $key String Key der Phrase
* @param $key Key der Phrase
* @param $value Array mit Parametern fuer die Phrase
*/
public function t($key, $value=array())
+81 -164
View File
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/**
* Klasse projektarbeit
@@ -27,7 +27,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
class projektarbeit extends basis_db
{
public $new; // boolean
public $new; // boolean
public $result = array(); // adresse Objekt
//Tabellenspalten
@@ -59,37 +59,6 @@ class projektarbeit extends basis_db
public $abgabedatum;
// Welche Version der Projektarbeit wird ab welchem Semester verwendet
private $_versions = array(
'Diplom' => array(
'SS2025' => 3,
'SS2023' => 2,
'SS2022' => 1
),
'Others' => array(
'SS2025' => 2,
'SS2022' => 1
)
);
// welche Vorlagen werden ab welcher Projekarbeitsversion verwendet (0 - erste "default" Vorlage)
private $_projektarbeitVorlageMappings = array(
'Begutachter' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Senatsvorsitz' => array(
2 => 'ProjektBeurteilungBAProzent',
0 => 'ProjektBeurteilungBA'
),
'Erstbegutachter' => array(
3 => 'ProjektBeurteilungMAProzent',
0 => 'ProjektBeurteilungMAErst'
),
'Zweitbegutachter' => array(
0 => 'ProjektBeurteilungMAZweit'
)
);
/**
* Konstruktor
@@ -264,25 +233,25 @@ class projektarbeit extends basis_db
$qry='BEGIN; INSERT INTO lehre.tbl_projektarbeit (projekttyp_kurzbz, titel, lehreinheit_id, student_uid, firma_id, note, punkte,
beginn, ende, faktor, freigegeben, gesperrtbis, stundensatz, gesamtstunden, themenbereich, anmerkung,
insertamum, insertvon, updateamum, updatevon, titel_english, final) VALUES('.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->projekttyp_kurzbz).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
$this->db_add_param($this->student_uid).', '.
$this->db_add_param($this->firma_id, FHC_INTEGER).', '.
$this->db_add_param($this->note).', '.
$this->db_add_param($this->punkte).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->faktor).', '.
$this->db_add_param($this->freigegeben, FHC_BOOLEAN).', '.
$this->db_add_param($this->gesperrtbis).', '.
$this->db_add_param($this->stundensatz).', '.
$this->db_add_param($this->gesamtstunden).', '.
$this->db_add_param($this->themenbereich).', '.
$this->db_add_param($this->anmerkung).', now(), '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->titel_english).','.
$this->db_add_param($this->final, FHC_BOOLEAN).');';
}
else
@@ -502,144 +471,92 @@ class projektarbeit extends basis_db
}
/**
* Prüft ob Projektarbeit aktuell ist (also zurzeit online bewertet wird).
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
* Masterarbeiten sind ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten schon ab dem Umstieg auf das Online Beurteilungsformular.
* @param $projektarbeit_id
* @return boolean
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
*/
public function projektarbeitIsCurrent($projektarbeit_id)
{
$version = $this->getVersion($projektarbeit_id);
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
return $version === null ? null : $version->isCurrent;
}
/**
* Holt sich Version der Projektarbeit.
* Liefert auch mit, ob die Version die aktuellste ist.
* z.B.: Masterarbeiten waren ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten waren ab dem Umstieg auf das Online Beurteilungsformular aktuell.
* @param $projektarbeit_id
* @return objekt mit Versionsinfo, null im Fehlerfall
*/
public function getVersion($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="
SELECT
CASE
WHEN semesters_diplom.studiensemester_kurzbz IS NOT NULL
THEN semesters_diplom.studiensemester_kurzbz
ELSE semesters.studiensemester_kurzbz
END AS version_studiensemester_kurzbz,
pa.projekttyp_kurzbz
FROM
lehre.tbl_projektarbeit pa
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester sem USING(studiensemester_kurzbz)
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Others'])).")
) semesters ON sem.start >= semesters.start AND pa.projekttyp_kurzbz <> 'Diplom'
LEFT JOIN (
SELECT
start, studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
studiensemester_kurzbz IN (".$this->db_implode4SQL(array_keys($this->_versions['Diplom'])).")
) semesters_diplom ON sem.start >= semesters_diplom.start AND pa.projekttyp_kurzbz = 'Diplom'
WHERE
projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
ORDER BY
semesters.start DESC, semesters_diplom.start DESC
LIMIT 1";
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND
(
(
projekttyp_kurzbz = 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2023'
)::date
)
OR
(
projekttyp_kurzbz <> 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2022'
)::date
)
)
LIMIT 1";
$errormsg = "Fehler beim Ermitteln der Projektarbeit Version";
$result_sem=$this->db_query($qry);
if ($this->db_query($qry))
if (!$result_sem)
{
if ($row = $this->db_fetch_object())
{
// known project types
if (isset($this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions[$row->projekttyp_kurzbz][$row->version_studiensemester_kurzbz]
== max($this->_versions[$row->projekttyp_kurzbz]);
}
elseif (isset($this->_versions['Others'][$row->version_studiensemester_kurzbz]))
{
$row->versionNumber = $this->_versions['Others'][$row->version_studiensemester_kurzbz];
$row->isCurrent =
$this->_versions['Others'][$row->version_studiensemester_kurzbz]
== max($this->_versions['Others']);
}
else
{
$row->isCurrent = false;
$row->versionNumber = 0;
}
return $row;
}
else
{
$this->errormsg = $errormsg;
return null;
}
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
else
$num_rows = $this->db_num_rows($result_sem);
if ($num_rows < 0)
{
$this->errormsg = $errormsg;
return null;
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $num_rows;
}
/**
* Holt Version einer Projektarbeit für eine Betreuerart.
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester), vor der Änderung zur Gewichtung der Punkte.
* @param $projektarbeit_id
* @param $betreuerart_kurzbz
* @return string Vorlagenname
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
*/
public function getVorlage($projektarbeit_id, $betreuerart_kurzbz)
public function projektarbeitIsCurrentBeforeWeightening($projektarbeit_id)
{
$version = $this->getVersion($projektarbeit_id);
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date
LIMIT 1";
if ($version == null) return null;
$result_sem=$this->db_query($qry);
$key = 0;
if (isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz]))
if (!$result_sem)
{
foreach ($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz] as $versionNumber => $vorlage)
{
if ($versionNumber <= $version->versionNumber && $versionNumber > $key) $key = $versionNumber;
}
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
return
isset($this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key])
? $this->_projektarbeitVorlageMappings[$betreuerart_kurzbz][$key]
: '';
}
$num_rows = $this->db_num_rows($result_sem);
/**
* Holt alle möglichen, jemals verwendeten Projektarbeits-Vorlagen
* @return array mit Vorlagennamen
*/
public function getAllVorlagen()
{
$vorlagen = array();
foreach ($this->_projektarbeitVorlageMappings as $mappings)
if ($num_rows < 0)
{
$vorlagen = array_unique(array_merge($vorlagen, $mappings));
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $vorlagen;
return $num_rows;
}
}
?>
-1
View File
@@ -1,7 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Abgabetool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Endupload ist noch nicht erfolgt';
$this->phrasen['abgabetool/typ']='Typ';
$this->phrasen['abgabetool/titel']='Titel';
-1
View File
@@ -1,7 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Submission tool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Final version not uploaded yet';
$this->phrasen['abgabetool/typ']='Type';
$this->phrasen['abgabetool/titel']='Title';
-1
View File
@@ -1,7 +1,6 @@
<?php
$this->phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/aeltereParbeitBenotenQuickInfo']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente';
$this->phrasen['abgabetool/abgabetermine']='scadenze consegna';
$this->phrasen['abgabetool/abgabetool']='Strumenti di consegna';
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit bootstrap="index.ci.php">
<testsuites>
<testsuite name="UnitTests">
<directory>system/UnitTests/vertragsbestandteil/gui</directory>
</testsuite>
</testsuites>
<php>
<ini name="display_errors" value="1"/>
<ini name="display_startup_errors" value="1" />
<const name="PHPUNIT_TEST" value="1" />
</php>
</phpunit>
+1 -1
View File
@@ -8,7 +8,7 @@ export default {
},
delete: function (bookmark_id) {
return this.$fhcApi.post(
return this.$fhcApi.get(
`/api/frontend/v1/Bookmark/delete/${bookmark_id}`
,{}
);
-25
View File
@@ -1,25 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getLvMenu(lvid, studiensemester_kurzbz) {
return {
method: 'get',
url: `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`
};
}
};
-25
View File
@@ -1,25 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getAuthUID() {
return {
method: 'get',
url: '/api/frontend/v1/AuthInfo/getAuthUID'
};
}
};
-22
View File
@@ -1,22 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import person from "./betriebsmittel/person.js";
export default {
person
};
@@ -1,63 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getAllBetriebsmittel(type, id) {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + type + '/' + id
};
},
addNewBetriebsmittel(person_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' + person_id,
params
};
},
loadBetriebsmittel(betriebsmittelperson_id) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id
};
},
updateBetriebsmittel(betriebsmittelperson_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,
params
};
},
deleteBetriebsmittel(betriebsmittelperson_id) {
return {
method: 'post',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' + betriebsmittelperson_id
};
},
getTypenBetriebsmittel() {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/'
};
},
loadInventarliste(query) {
return {
method: 'get',
url: 'api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' + query
};
}
};
-37
View File
@@ -1,37 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
updatePersonUnrulyStatus(person_id, unruly) {
const params = { person_id, unruly }
const url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';
return {
method: 'post',
url,
params
};
},
filterPerson(params, base = '') {
// TODO(chris): seems to be called from nowhere?
const url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';
return {
method: 'post',
url,
params
};
}
};
-25
View File
@@ -1,25 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getViewData() {
return {
method: 'get',
url: '/api/frontend/v1/Cis4FhcApi/getViewData'
};
}
};
-25
View File
@@ -1,25 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getMenu() {
return {
method: 'get',
url: '/api/frontend/v1/CisMenu/getMenu'
};
}
};
-64
View File
@@ -1,64 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
content(content_id, version=null, sprache=null, sichtbar=null) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/content',
params: {
content_id,
...(version ? { version } : {}),
...(sprache ? { sprache } : {}),
...(sichtbar ? { sichtbar } : {})
}
};
},
//api function used for the news View that renders the html
getNews(page = 1, page_size = 10, sprache) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/getNews',
params: {
page,
page_size,
sprache
},
};
},
//api function used for the widget component
news(limit) {
return {
method: 'get',
url: '/api/frontend/v1/Cms/news',
params: { limit }
};
},
getNewsRowCount() {
return {
method: 'get',
url: '/api/frontend/v1/Cms/getNewsRowCount'
};
},
getNewsExtra() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Cms/getStudiengangInfoForNews'
};
}
};
-95
View File
@@ -1,95 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
saveCustomFilter(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/saveCustomFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
customFilterName: wsParams.customFilterName
}
};
},
removeCustomFilter(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/removeCustomFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterId: wsParams.filterId
}
};
},
applyFilterFields(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/applyFilterFields',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterFields: wsParams.filterFields
}
};
},
addFilterField(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/addFilterField',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterField: wsParams.filterField
}
};
},
removeFilterField(wsParams) {
return {
method: 'post',
url: '/api/frontend/v1/filter/removeFilterField',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterField: wsParams.filterField
}
};
},
getFilterById(wsParams) {
return {
method: 'get',
url: '/api/frontend/v1/filter/getFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType,
filterId: wsParams.filterId
}
};
},
getFilter(wsParams) {
return {
method: 'get',
url: '/api/frontend/v1/filter/getFilter',
params: {
filterUniqueId: wsParams.filterUniqueId,
filterType: wsParams.filterType
}
};
}
};
-39
View File
@@ -1,39 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getStudentenMail(lehreinheit_id) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Lehre/lvStudentenMail',
params: { lehreinheit_id }
};
},
getLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {
return {
method: 'get',
url: `/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`
};
},
getStudentPruefungen(lehrveranstaltung_id) {
return {
method: 'get',
url: `/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`
};
}
};
-33
View File
@@ -1,33 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getHeader(navigation_page) {
return {
method: 'get',
url: '/api/frontend/v1/navigation/header',
params: { navigation_page }
};
},
getMenu(navigation_page) {
return {
method: 'get',
url: '/api/frontend/v1/navigation/menu',
params: { navigation_page }
};
}
};
-22
View File
@@ -1,22 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import person from "./notiz/person.js";
export default {
person
};
-87
View File
@@ -1,87 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getNotizen(id, type) {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getNotizen/' + id + '/' + type
};
},
getUid() {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getUid/'
};
},
addNewNotiz(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
params
};
},
loadNotiz(notiz_id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/loadNotiz/',
params: {
notiz_id
}
};
},
loadDokumente(notiz_id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/loadDokumente/',
params: {
notiz_id
}
};
},
deleteNotiz(notiz_id, type_id, id) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/deleteNotiz/',
params: {
notiz_id,
type_id,
id
}
};
},
updateNotiz(notiz_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
params
};
},
getMitarbeiter(event) {
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event
};
},
isBerechtigt(id, type_id) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: 'api/frontend/v1/notiz/notizPerson/isBerechtigt/'
};
}
};
-26
View File
@@ -1,26 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getContentID(ort_kurbz) {
return {
method: 'get',
url: '/api/frontend/v1/Ort/ContentID',
params: { ort_kurzbz: ort_kurbz }
};
}
};
-45
View File
@@ -1,45 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
loadCategory(category) {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/loadModule/' + category
};
},
setLanguage(categories,language) {
const params = {categories, language}
return {
method: 'post',
url: '/api/frontend/v1/phrasen/setLanguage',
params
};
},
getLanguage() {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/getLanguage'
};
},
getActiveDbLanguages() {
return {
method: 'get',
url: '/api/frontend/v1/phrasen/getAllLanguages'
};
}
};
-73
View File
@@ -1,73 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getView(uid) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/getView/${uid}`
};
},
fotoSperre(value) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/fotoSperre/${value}`
};
},
isStudent(uid) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/isStudent',
params: { uid }
};
},
isMitarbeiter(uid) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/isMitarbeiter/${uid}`
};
},
getZustellAdresse() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/getZustellAdresse'
};
},
getZustellKontakt() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Profil/getZustellKontakt'
};
},
getGemeinden(nation, zip) {
return {
method: 'get',
url: `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`
};
},
getAllNationen() {
return {
method: 'get',
url: '/api/frontend/v1/Profil/getAllNationen'
};
}
};
-110
View File
@@ -1,110 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
//! API calls for profil update requests
getStatus() {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/getStatus'
};
},
getTopic() {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/getTopic'
};
},
acceptProfilRequest({profil_update_id, uid, status_message, topic, requested_change}) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/acceptProfilRequest',
params: {
profil_update_id,
uid,
status_message,
topic,
requested_change
}
};
},
denyProfilRequest({profil_update_id, uid, topic, status_message}) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/denyProfilRequest',
params: {
profil_update_id,
uid,
topic,
status_message
}
};
},
insertFile(dms, replace = null) {
return {
method: 'post',
url: `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,
params: dms
};
},
getProfilRequestFiles(requestID) {
return {
method: 'get',
url: `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`
};
},
selectProfilRequest(uid = null, id = null) {
return {
method: 'get',
url: '/api/frontend/v1/ProfilUpdate/selectProfilRequest',
params: {
...(uid ? { uid } : {}),
...(id ? { id } : {})
}
};
},
insertProfilRequest(topic, payload, fileID = null) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/insertProfilRequest',
params: {
topic,
payload,
...(fileID ? { fileID } : {})
}
};
},
updateProfilRequest(topic, payload, ID, fileID = null) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/updateProfilRequest',
params: {
topic,
payload,
ID,
...(fileID ? { fileID } : {})
}
};
},
deleteProfilRequest(requestID) {
return {
method: 'post',
url: '/api/frontend/v1/ProfilUpdate/deleteProfilRequest',
params: { requestID }
};
}
};
-26
View File
@@ -1,26 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
search(params) {
return {
method: 'post',
url: '/api/frontend/v1/searchbar/search',
params
};
}
};
-32
View File
@@ -1,32 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
studiengangInformation() {
return {
method: 'get',
url: '/api/frontend/v1/Studgang/getStudiengangInfo'
};
},
getStudiengangByKz(studiengang_kz) {
return {
method: 'get',
url: '/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz',
params: { studiengang_kz }
};
}
};
-28
View File
@@ -1,28 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import abmeldung from "./studstatus/abmeldung.js";
import unterbrechung from "./studstatus/unterbrechung.js";
import wiederholung from "./studstatus/wiederholung.js";
import leitung from "./studstatus/leitung.js";
export default {
abmeldung,
unterbrechung,
wiederholung,
leitung
};
@@ -1,45 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(antrag_id, prestudent_id) {
const url = '/api/frontend/v1/studstatus/abmeldung/'
+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
return {
method: 'get',
url
};
},
create(studiensemester, prestudent_id, grund) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/abmeldung/createAntrag',
params: {
studiensemester,
prestudent_id,
grund
}
};
},
cancel(antrag_id) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',
params: { antrag_id }
};
}
};
-100
View File
@@ -1,100 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getStgs() {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getActiveStgs'
};
},
getAntraege(url, config, params) {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getAntraege/' + url
};
},
getHistory(antrag_id) {
return {
method: 'get',
url: '/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id
};
},
getPrestudents(query, signal) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/getPrestudents',
params: { query }
};
},
approve(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/approveAntrag',
params: antrag
};
},
reject(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/rejectAntrag',
params: antrag
};
},
reopen(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/reopenAntrag',
params: antrag
};
},
pause(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/pauseAntrag',
params: antrag
};
},
unpause(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/unpauseAntrag',
params: antrag
};
},
object(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/objectAntrag',
params: antrag
};
},
approveObjection(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/approveObjection',
params: antrag
};
},
denyObjection(antrag) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/leitung/denyObjection',
params: antrag
};
}
};
@@ -1,49 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(antrag_id, prestudent_id) {
const url = '/api/frontend/v1/studstatus/unterbrechung/'
+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);
return {
method: 'get',
url
};
},
create(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/unterbrechung/createAntrag',
params: {
studiensemester,
prestudent_id,
grund,
datum_wiedereinstieg,
attachment
}
};
},
cancel(antrag_id) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/unterbrechung/cancelAntrag',
params: {
antrag_id
}
};
}
};
@@ -1,63 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getDetails(prestudent_id) {
const url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;
return {
method: 'get',
url
};
},
getLvs(antrag_id) {
const url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;
return {
method: 'get',
url
};
},
create(prestudent_id, studiensemester) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/createAntrag',
params: {
prestudent_id,
studiensemester
}
};
},
cancel(prestudent_id, studiensemester) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',
params: {
prestudent_id,
studiensemester
}
};
},
saveLvs(forbiddenLvs, mandatoryLvs) {
return {
method: 'post',
url: '/api/frontend/v1/studstatus/wiederholung/saveLvs',
params: {
forbiddenLvs,
mandatoryLvs
}
};
}
};
-66
View File
@@ -1,66 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getRoomInfo(ort_kurzbz, start_date, end_date) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/getRoomplan',
params: { ort_kurzbz, start_date, end_date }
};
},
getStundenplan(start_date, end_date, lv_id) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/getStundenplan',
params: { start_date, end_date, lv_id }
};
},
getStunden() {
// TODO(chris): seems to be called from nowhere?
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/Stunden'
};
},
getOrtReservierungen(ort_kurzbz, start_date, end_date) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/Reservierungen/${ort_kurzbz}`,
params: { start_date, end_date }
};
},
getStundenplanReservierungen(start_date, end_date) {
return {
method: 'get',
url: '/api/frontend/v1/Stundenplan/Reservierungen',
params: { start_date, end_date }
};
},
getLehreinheitStudiensemester(lehreinheit_id) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/getLehreinheitStudiensemester/${lehreinheit_id}`
};
},
studiensemesterDateInterval(date) {
return {
method: 'get',
url: `/api/frontend/v1/Stundenplan/studiensemesterDateInterval/${date}`
};
},
};
-48
View File
@@ -1,48 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import app from './stv/app.js';
import lists from './stv/lists.js';
import verband from './stv/verband.js';
import students from './stv/students.js';
import filter from './stv/filter.js';
import konto from './stv/konto.js';
import kontakt from './stv/kontakt.js';
import prestudent from './stv/prestudent.js';
import status from './stv/status.js';
import details from './stv/details.js';
import exam from './stv/exam.js';
import abschlusspruefung from './stv/abschlusspruefung.js';
import grades from './stv/grades.js';
import mobility from './stv/mobility.js';
export default {
app,
lists,
verband,
students,
filter,
konto,
kontakt,
prestudent,
status,
details,
exam,
abschlusspruefung,
grades,
mobility
};
@@ -1,111 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getAbschlusspruefung(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + uid
};
},
addNewAbschlusspruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/',
params
};
},
loadAbschlusspruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/',
params: { id }
};
},
updateAbschlusspruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/',
params
};
},
deleteAbschlusspruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/',
params: { id }
};
},
getTypenAbschlusspruefung() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/'
};
},
getTypenAntritte() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/'
};
},
getBeurteilungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/'
};
},
getAkadGrade(studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/getAkadGrade/',
params: { studiengang_kz }
};
},
getTypStudiengang(studiengang_kz) {
// TODO(chris): seems to be called from nowhere?
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/',
params: { studiengang_kz }
};
},
getMitarbeiter(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString
};
},
getPruefer(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString
};
},
getNoten() {
return {
method: 'get',
url: 'api/frontend/v1/stv/abschlusspruefung/getNoten/'
};
},
checkForExistingExams(uids) {
return {
method: 'post',
url: 'api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/',
params: { uid }
};
}
};
-31
View File
@@ -1,31 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
configStudent() {
return {
method: 'get',
url: 'api/frontend/v1/stv/config/student'
};
},
configStudents() {
return {
method: 'get',
url: 'api/frontend/v1/stv/config/students'
};
}
};
-32
View File
@@ -1,32 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(prestudent_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/get/' + prestudent_id
};
},
save(prestudent_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/save/' + prestudent_id,
params
};
},
};
-101
View File
@@ -1,101 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getPruefungen(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getPruefungen/' + uid
};
},
loadPruefung(pruefung_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id
};
},
getTypenPruefungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getTypenPruefungen'
};
},
getAllLehreinheiten(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/getAllLehreinheiten/',
params
};
},
getLvsByStudent(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid
};
},
getLvsandLesByStudent(uid, semester) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester
};
},
getLvsAndMas(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid
};
},
getMitarbeiterLv(id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id
};
},
getNoten() {
return {
method: 'get',
url: 'api/frontend/v1/stv/pruefung/getNoten'
};
},
checkZeugnisnoteLv(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/',
params
};
},
addPruefung(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/insertPruefung/',
params
};
},
updatePruefung(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/updatePruefung/' + id,
params
};
},
deletePruefung(id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/pruefung/deletePruefung/' + id
};
}
};
-32
View File
@@ -1,32 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getStg() {
return {
method: 'get',
url: 'api/frontend/v1/stv/filter/getStg'
};
},
setStg(studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/filter/setStg',
params: { studiengang_kz }
};
}
};
-96
View File
@@ -1,96 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
list() {
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/list'
};
},
getCertificate(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all
};
},
getTeacherProposal(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all
};
},
getRepeaterGrades(prestudent_id, all) {
all = all ? '/all' : '';
return {
method: 'get',
url: 'api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all
};
},
updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/updateCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz,
note
}
};
},
deleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/deleteCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
}
};
},
copyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',
params: {
lehrveranstaltung_id,
student_uid,
studiensemester_kurzbz
}
};
},
copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',
params: {
studierendenantrag_lehrveranstaltung_id
}
};
},
getGradeFromPoints(points, lehrveranstaltung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/grades/getGradeFromPoints',
params: { points, lehrveranstaltung_id }
};
}
};
-28
View File
@@ -1,28 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import address from './kontakt/address.js';
import bankaccount from './kontakt/bankaccount.js';
import contact from './kontakt/contact.js';
import company from './kontakt/company.js';
export default {
address,
bankaccount,
contact,
company
};
@@ -1,71 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getAdressen/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewAddress/' + uid,
params
};
},
load(address_id){
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadAddress/',
params: { address_id }
};
},
update(address_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,
params
};
},
delete(address_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteAddress/',
params: { address_id }
};
},
getTypes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getAdressentypen/'
};
},
getPlaces(plz) {
return {
method: 'get',
url: 'api/frontend/v1/stv/address/getPlaces/' + plz
};
},
getNations() {
return {
method: 'get',
url: 'api/frontend/v1/stv/address/getNations/'
};
}
};
@@ -1,53 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getBankverbindung/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + uid,
params
};
},
load(bankverbindung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadBankverbindung/',
params: { bankverbindung_id }
};
},
update(bankverbindung_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,
params
};
},
delete(bankverbindung_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteBankverbindung/',
params: { bankverbindung_id }
};
}
};
@@ -1,25 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getFirmen/' + searchString
};
}
};
@@ -1,65 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getKontakte/' + uid
};
},
add(uid, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/addNewContact/' + uid,
params
};
},
load(kontakt_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/loadContact/',
params: { kontakt_id }
};
},
update(kontakt_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,
params
};
},
delete(kontakt_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/kontakt/deleteContact/',
params: { kontakt_id }
};
},
getTypes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getKontakttypen/'
};
},
getStandorteByFirma(searchString) {
return {
method: 'get',
url: 'api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString
};
}
};
-74
View File
@@ -1,74 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(person_id, only_open, studiengang_kz) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/get',
params: {
person_id,
only_open,
studiengang_kz
}
};
},
checkDoubles(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/checkDoubles',
params,
config: {
confirmErrorHandler: error => true
}
};
},
insert(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/insert',
params
};
},
counter(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/counter',
params
};
},
edit(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/update',
params
};
},
delete(buchungsnr) {
return {
method: 'post',
url: 'api/frontend/v1/stv/konto/delete',
params: { buchungsnr }
};
},
getBuchungstypen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/konto/getBuchungstypen'
};
}
};
-55
View File
@@ -1,55 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getSprachen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getSprachen'
};
},
getGeschlechter() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getGeschlechter'
};
},
getAusbildungen() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getAusbildungen'
};
},
getStgs() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStgs'
};
},
getOrgforms() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getOrgforms'
};
},
getStudiensemester() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStudiensemester'
};
}
};
-128
View File
@@ -1,128 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getMobilitaeten(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getMobilitaeten/' + uid
};
},
getProgramsMobility() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getProgramsMobility/'
};
},
addNewMobility(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/insertMobility/',
params
};
},
loadMobility(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/loadMobility/' + bisio_id
};
},
updateMobility(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/updateMobility/',
params
};
},
deleteMobility(bisio_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id
};
},
getLVList(studiengang_kz) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz
};
},
getAllLehreinheiten(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/getAllLehreinheiten/',
params
};
},
getLvsandLesByStudent(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid
};
},
getPurposes(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getPurposes/' + bisio_id
};
},
getSupports(bisio_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getSupports/' + bisio_id
};
},
getListPurposes() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getListPurposes/'
};
},
getListSupports() {
return {
method: 'get',
url: 'api/frontend/v1/stv/mobility/getListSupports/'
};
},
deleteMobilityPurpose(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id,
params
};
},
addMobilityPurpose(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id,
params
};
},
deleteMobilitySupport(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id,
params
};
},
addMobilitySupport(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id,
params
};
}
};
-150
View File
@@ -1,150 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
//------------- Prestudent.js------------------------------------------------------
get(prestudent_id) {
return {
method: 'post',
url: 'api/frontend/v1/stv/prestudent/get/' + prestudent_id
};
},
updatePrestudent(prestudent_id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
params
};
},
getBezeichnungZGV() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungZGV/'
};
},
getBezeichnungMZgv() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungMZgv/'
};
},
getBezeichnungDZgv() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBezeichnungDZgv/'
};
},
getStgs() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStgs/'
};
},
getAusbildung() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getAusbildung/'
};
},
getAufmerksamdurch() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getAufmerksamdurch/'
};
},
getBerufstaetigkeit() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBerufstaetigkeit/'
};
},
getTypenStg() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getTypenStg/'
};
},
getBisstandort() {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getBisstandort/'
};
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getHistoryPrestudent/' + prestudent_id
};
},
getMaxSem(studiengang_kzs) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/getMaxSemester/',
params: { studiengang_kzs }
};
},
advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/advanceStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/confirmStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
isLastStatus(id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/isLastStatus/' + id
};
},
deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/deleteStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
getLastBismeldestichtag() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getLastBismeldestichtag/'
};
},
//------------- History.js------------------------------------------------------
getHistoryPrestudents(person_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + person_id
};
},
};
-98
View File
@@ -1,98 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
//------------- Modal.js------------------------------------------------------
insertStatus(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/insertStatus/' + id,
params
};
},
loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/loadStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
};
},
updateStatus({
prestudent_id,
status_kurzbz,
studiensemester_kurzbz,
ausbildungssemester
}, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/updateStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester,
params
};
},
getStudienplaene(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id
};
},
getStudiengang(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id
};
},
getStatusgruende() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getStatusgruende/'
};
},
getStati() {
return {
method: 'get',
url: 'api/frontend/v1/stv/lists/getStati/'
};
},
//------------- Dropdown.js------------------------------------------------------
addStudent(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/addStudent/' + id,
params
};
},
changeStatus(id, params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/status/changeStatus/' + id,
params
};
},
getStatusarray() {
return {
method: 'get',
url: 'api/frontend/v1/stv/status/getStatusarray/'
};
}
};
-50
View File
@@ -1,50 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
uid(uid) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/uid/' + uid
};
},
prestudent(prestudent_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/prestudent/' + prestudent_id
};
},
person(person_id) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/person/' + person_id
};
},
verband(relative_path) {
return {
method: 'get',
url: 'api/frontend/v1/stv/students/' + relative_path
};
},
check(params) {
return {
method: 'post',
url: 'api/frontend/v1/stv/student/check',
params
};
}
};
-43
View File
@@ -1,43 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
get(path) {
let url = 'api/frontend/v1/stv/verband';
if (path)
url += '/' + path;
return {
method: 'get',
url
};
},
favorites: {
get() {
return {
method: 'get',
url: 'api/frontend/v1/stv/favorites'
};
},
set(favorites) {
return {
method: 'post',
url: 'api/frontend/v1/stv/favorites/set',
params: { favorites }
};
}
}
};
-37
View File
@@ -1,37 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
open() {
return {
method: 'get',
url: '/api/frontend/v1/Ampeln/open'
};
},
all() {
return {
method: 'get',
url: '/api/frontend/v1/Ampeln/all'
};
},
confirm(ampel_id) {
return {
method: 'get',
url: `/api/frontend/v1/Ampeln/confirm/${ampel_id}`
};
}
};
-45
View File
@@ -1,45 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
getBookmarks() {
return {
method: 'get',
url: '/api/frontend/v1/Bookmark/getBookmarks'
};
},
delete(bookmark_id) {
return {
method: 'post',
url: `/api/frontend/v1/Bookmark/delete/${bookmark_id}`
};
},
update({ bookmark_id, url, title, tag=null }) {
return {
method: 'post',
url: `/api/frontend/v1/Bookmark/update/${bookmark_id}`,
params: { url, title }
};
},
insert({ url, title, tag }) {
return {
method: 'post',
url: `/api/frontend/v1/Bookmark/insert`,
params: { url, title, tag }
};
}
};
-26
View File
@@ -1,26 +0,0 @@
/**
* Copyright (C) 2025 fhcomplete.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export default {
load({ ciModel, pk }) {
return {
method: 'post',
url: '/api/frontend/v1/udf/load/' + ciModel,
params: pk
};
}
};
@@ -23,7 +23,7 @@ import {CoreRESTClient} from '../../RESTClient.js';
import {CoreFetchCmpt} from '../../components/Fetch.js';
import {BismeldestichtagAPIs} from './API.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
import Phrasen from '../../plugin/Phrasen.js';
const bismeldestichtagApp = Vue.createApp({
data: function() {
@@ -237,4 +237,4 @@ const bismeldestichtagApp = Vue.createApp({
}
});
bismeldestichtagApp.use(PluginsPhrasen).mount('#main');
bismeldestichtagApp.use(Phrasen).mount('#main');
+7 -4
View File
@@ -1,7 +1,9 @@
import FhcSearchbar from "../components/searchbar/searchbar.js";
import CisMenu from "../components/Cis/Menu.js";
import PluginsPhrasen from '../plugins/Phrasen.js';
import ApiSearchbar from '../api/factory/searchbar.js';
import FhcApi from '../plugin/FhcApi.js';
import Phrasen from '../plugin/Phrasen.js';
import fhcapifactory from "./api/fhcapifactory.js";
Vue.$fhcapi = fhcapifactory;
const app = Vue.createApp({
name: 'CisApp',
@@ -111,15 +113,16 @@ const app = Vue.createApp({
},
methods: {
searchfunction: function(searchsettings) {
return this.$api.call(ApiSearchbar.search(searchsettings));
return Vue.$fhcapi.search.search(searchsettings);
}
}
});
app.use(FhcApi);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
app.use(PluginsPhrasen);
app.use(Phrasen);
app.mount('#cis-header');
+2 -2
View File
@@ -1,4 +1,4 @@
import PluginsPhrasen from '../../plugins/Phrasen.js';
import Phrasen from '../../plugin/Phrasen.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
const app = Vue.createApp({
@@ -89,5 +89,5 @@ const app = Vue.createApp({
setScrollbarWidth();
app.use(PluginsPhrasen);
app.use(Phrasen);
app.mount('#content');
+3 -5
View File
@@ -1,7 +1,6 @@
import ProfilUpdateView from "../../components/Cis/ProfilUpdate/ProfilUpdateView.js";
import PluginsPhrasen from "../../plugins/Phrasen.js";
import Phrasen from "../../plugin/Phrasen.js";
import ApiProfilUpdate from '../../api/factory/profilUpdate.js';
// TODO: sobald in verwendung den vue router pfad zu ProfilUpdateView definieren und diese app in component auslagern
const app = Vue.createApp({
@@ -24,8 +23,7 @@ const app = Vue.createApp({
},
methods: {},
created() {
this.$api
.call(ApiProfilUpdate.getStatus())
this.$fhcApi.factory.profilUpdate.getStatus()
.then((response) => {
this.profilUpdateStates = response.data;
})
@@ -34,4 +32,4 @@ const app = Vue.createApp({
});
},
});
app.use(PluginsPhrasen).mount("#content");
app.use(Phrasen).mount("#content");
+4 -2
View File
@@ -1,6 +1,7 @@
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
import DashboardAdmin from '../../components/Dashboard/Admin.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
import FhcApi from '../../plugin/FhcApi.js';
import Phrasen from '../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'AdminApp',
@@ -12,5 +13,6 @@ const app = Vue.createApp({
DashboardAdmin
}
});
app.use(PluginsPhrasen);
app.use(FhcApi);
app.use(Phrasen);
app.mount('#main');
+4 -2
View File
@@ -1,5 +1,6 @@
import FhcDashboard from '../../components/Dashboard/Dashboard.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
import FhcApi from '../../plugin/FhcApi.js';
import Phrasen from '../../plugin/Phrasen.js';
import contrast from '../../directives/contrast.js';
import {setScrollbarWidth} from "../../helpers/CssVarCalcHelpers.js";
import Stundenplan, {DEFAULT_MODE_STUNDENPLAN} from "../../components/Cis/Stundenplan/Stundenplan.js";
@@ -258,12 +259,13 @@ const app = Vue.createApp({
// kind of a bandaid for bad css on some pages to avoid horizontal scroll
setScrollbarWidth();
app.use(router);
app.use(FhcApi);
app.use(primevue.config.default, {
zIndex: {
overlay: 9000,
tooltip: 8000
}
})
app.use(PluginsPhrasen);
app.use(Phrasen);
app.directive('contrast', contrast);
app.mount('#fhccontent');
+2 -2
View File
@@ -21,7 +21,7 @@ import {LogsViewerTabulatorEventHandlers} from './TabulatorSetup.js';
import {CoreFilterCmpt} from '../../components/filter/Filter.js';
import {CoreNavigationCmpt} from '../../components/navigation/Navigation.js';
import PluginsPhrasen from '../../plugins/Phrasen.js';
import Phrasen from '../../plugin/Phrasen.js';
const logsViewerApp = Vue.createApp({
data: function() {
@@ -42,5 +42,5 @@ const logsViewerApp = Vue.createApp({
}
});
logsViewerApp.use(PluginsPhrasen).mount('#main');
logsViewerApp.use(Phrasen).mount('#main');
+3 -5
View File
@@ -18,7 +18,7 @@
import FhcStudentenverwaltung from "../components/Stv/Studentenverwaltung.js";
import fhcapifactory from "./api/fhcapifactory.js";
import PluginsPhrasen from "../plugins/Phrasen.js";
import Phrasen from "../plugin/Phrasen.js";
const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
@@ -34,9 +34,7 @@ const router = VueRouter.createRouter({
]
});
const app = Vue.createApp({
name: 'StudentenverwaltungApp'
});
const app = Vue.createApp();
app
.use(router)
@@ -45,5 +43,5 @@ app
overlay: 1100
}
})
.use(PluginsPhrasen)
.use(Phrasen)
.mount('#main');
+2 -2
View File
@@ -1,7 +1,7 @@
import StudierendenantragAntrag from "../../components/Studierendenantrag/Antrag.js";
import StudierendenantragStatus from "../../components/Studierendenantrag/Status.js";
import StudierendenantragInfoblock from "../../components/Studierendenantrag/Infoblock.js";
import PluginsPhrasen from '../../plugins/Phrasen.js';
import Phrasen from '../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'AntragApp',
@@ -21,5 +21,5 @@ const app = Vue.createApp({
}
});
app
.use(PluginsPhrasen)
.use(Phrasen)
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
import Phrasen from '../../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'LeitungApp',
@@ -8,6 +8,6 @@ const app = Vue.createApp({
}
});
app
.use(PluginsPhrasen)
.use(Phrasen)
.use(primevue.config.default,{zIndex: {overlay: 9999}})
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
import Phrasen from '../../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'LvzuweisungApp',
@@ -13,5 +13,5 @@ const app = Vue.createApp({
}
});
app
.use(PluginsPhrasen)
.use(Phrasen)
.mount('#wrapper');
+2 -2
View File
@@ -1,5 +1,5 @@
import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';
import PluginsPhrasen from '../../../plugins/Phrasen.js';
import Phrasen from '../../../plugin/Phrasen.js';
const app = Vue.createApp({
name: 'StudentApp',
@@ -8,5 +8,5 @@ const app = Vue.createApp({
}
});
app
.use(PluginsPhrasen)
.use(Phrasen)
.mount('#wrapper');
@@ -17,7 +17,9 @@
import LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';
import {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';
import PluginsPhrasen from "../../../plugins/Phrasen.js";
import FhcAlert from '../../../plugin/FhcAlert.js';
import FhcApi from "../../../plugin/FhcApi.js";
import Phrasen from "../../../plugin/Phrasen.js";
const lvTemplatesApp = Vue.createApp({
@@ -30,5 +32,7 @@ const lvTemplatesApp = Vue.createApp({
lvTemplatesApp
.use(primevue.config.default,{zIndex: {overlay: 9999}})
.use(PluginsPhrasen)
.use(FhcAlert)
.use(FhcApi)
.use(Phrasen)
.mount('#main')

Some files were not shown because too many files have changed in this diff Show More