diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php
index 73f0d0a15..df687acea 100644
--- a/application/controllers/api/frontend/v1/Abgabe.php
+++ b/application/controllers/api/frontend/v1/Abgabe.php
@@ -864,12 +864,13 @@ class Abgabe extends FHCAPI_Controller
public function getProjektarbeitenForStudiengang() {
$this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
- $studiengang_kz = $this->input->get("studiengang_kz",TRUE);
-
+ $studiengang_kz = $this->input->get("studiengang_kz", TRUE);
+ $benotet = $this->input->get("benotet", TRUE);
+
if (!isset($studiengang_kz) || isEmptyString($studiengang_kz))
$this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general');
- $result = $this->ProjektarbeitModel->getProjektarbeitenForStudiengang($studiengang_kz);
+ $result = $this->ProjektarbeitModel->getProjektarbeitenForStudiengang($studiengang_kz, $benotet);
$projektarbeiten = $this->getDataOrTerminateWithError($result);
if(count($projektarbeiten) == 0) { // avoid further abgabetermin queries if the are no projektarbeiten
@@ -899,6 +900,7 @@ class Abgabe extends FHCAPI_Controller
$this->terminateWithSuccess(array($projektarbeiten, DOMAIN));
}
+ // TODO: this could be in a generic info controller and resused
public function getStudiengaenge() {
$this->load->library('PermissionLib');
diff --git a/application/controllers/api/frontend/v1/organisation/Studiensemester.php b/application/controllers/api/frontend/v1/organisation/Studiensemester.php
index bb56ea71a..06d5b93c9 100644
--- a/application/controllers/api/frontend/v1/organisation/Studiensemester.php
+++ b/application/controllers/api/frontend/v1/organisation/Studiensemester.php
@@ -25,7 +25,8 @@ class Studiensemester extends FHCAPI_Controller
array(
'getAll' => self::PERM_LOGGED,
'getAktNext' => self::PERM_LOGGED,
- 'getStudienjahrByStudiensemester' => self::PERM_LOGGED
+ 'getStudienjahrByStudiensemester' => self::PERM_LOGGED,
+ 'getAllStudiensemesterAndAktOrNext' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
@@ -152,4 +153,17 @@ class Studiensemester extends FHCAPI_Controller
$this->terminateWithSuccess((getData(success($studienjahrObj))));
}
+
+ public function getAllStudiensemesterAndAktOrNext() {
+ $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
+
+ $this->StudiensemesterModel->addOrder("start", "DESC");
+ $result = $this->StudiensemesterModel->getAktOrNextSemester();
+ $aktuell = getData($result)[0];
+
+ $result = $this->StudiensemesterModel->getPreviousFrom($aktuell->studiensemester_kurzbz, 10);
+ $studiensemester = getData($result);
+
+ $this->terminateWithSuccess(array($studiensemester, $aktuell));
+ }
}
diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php
index 1f35ea856..0f0461d91 100644
--- a/application/models/education/Projektarbeit_model.php
+++ b/application/models/education/Projektarbeit_model.php
@@ -319,7 +319,7 @@ class Projektarbeit_model extends DB_Model
return $version === null ? null : $version->isCurrent;
}
- public function getProjektarbeitenForStudiengang($studiengang_kz) {
+ public function getProjektarbeitenForStudiengang($studiengang_kz, $benotet) {
$new_qry = "SELECT DISTINCT ON(tmp.projektarbeit_id) *, campus.get_betreuer_details(tmp.zweitbetreuer_person_id) as zweitbetreuer_full_name, campus.get_betreuer_details(tmp.betreuer_person_id) as erstbetreuer_full_name
FROM(
SELECT
@@ -407,8 +407,15 @@ class Projektarbeit_model extends DB_Model
LEFT JOIN public.tbl_benutzer betreuer_benutzer ON (betreuer_person.person_id = betreuer_benutzer.person_id)
WHERE (projekttyp_kurzbz = 'Bachelor' OR projekttyp_kurzbz = 'Diplom')
AND student_benutzer.aktiv AND (lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter' OR lehre.tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter')
- AND public.tbl_studiengang.studiengang_kz = ?
- ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
+ AND public.tbl_studiengang.studiengang_kz = ?";
+
+ if($benotet == 0) {
+ $new_qry .= " AND lehre.tbl_projektarbeit.note IS NULL ";
+ } else if ($benotet == 1) {
+ $new_qry .= " AND lehre.tbl_projektarbeit.note IS NOT NULL ";
+ }
+
+ $new_qry .= " ORDER BY tbl_projektarbeit.projektarbeit_id DESC, student_person.nachname ASC
) as tmp";
return $this->execReadOnlyQuery($new_qry, array($studiengang_kz));
diff --git a/public/js/api/factory/abgabe.js b/public/js/api/factory/abgabe.js
index 12615ee76..417e5fab3 100644
--- a/public/js/api/factory/abgabe.js
+++ b/public/js/api/factory/abgabe.js
@@ -100,14 +100,14 @@ export default {
url: '/api/frontend/v1/Abgabe/getNoten'
};
},
- getProjektarbeitenForStudiengang(studiengang_kz) {
+ getProjektarbeitenForStudiengang(studiengang_kz, benotet = 0) {
return {
method: 'get',
url: '/api/frontend/v1/Abgabe/getProjektarbeitenForStudiengang',
- params: { studiengang_kz }
+ params: { studiengang_kz, benotet }
};
},
- // TODO: this could also very well be generic info api :^)
+ // TODO: this could also very well be generic info api
getStudiengaenge() {
return {
method: 'get',
diff --git a/public/js/api/factory/studiengang.js b/public/js/api/factory/studiengang.js
index 6d5ae15aa..12322cb3a 100644
--- a/public/js/api/factory/studiengang.js
+++ b/public/js/api/factory/studiengang.js
@@ -16,17 +16,10 @@
*/
export default {
- studiengangInformation() {
+ getAllStudiensemesterAndAktOrNext() {
return {
method: 'get',
- url: '/api/frontend/v1/Studgang/getStudiengangInfo'
+ url: '/api/frontend/v1/Studiensemester/getStudiengangInfo'
};
},
- getStudiengangByKz(studiengang_kz) {
- return {
- method: 'get',
- url: '/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz',
- params: { studiengang_kz }
- };
- }
};
\ No newline at end of file
diff --git a/public/js/api/factory/studiensemester.js b/public/js/api/factory/studiensemester.js
new file mode 100644
index 000000000..82a4ee5cc
--- /dev/null
+++ b/public/js/api/factory/studiensemester.js
@@ -0,0 +1,25 @@
+/**
+ * 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