diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index 23e11c202..f0744fb99 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -461,6 +461,9 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithError($this->p->t('abgabetool', 'c4projektabgabeNichtGefunden'), 'general'); } + // in that case any submission date is fine + if($paabgabe->fixtermin === false) return; + $tz = new DateTimeZone('Europe/Berlin'); $now = new DateTimeImmutable('now', $tz); $deadline = DateTimeImmutable::createFromFormat( @@ -502,6 +505,15 @@ class Abgabe extends FHCAPI_Controller $projektarbeiten = $this->ProjektarbeitModel->getMitarbeiterProjektarbeiten(getAuthUID(), $showAllBool); + $mapFunc = function($projektarbeit) { + return $projektarbeit->projektarbeit_id; + }; + $projektarbeiten_ids = array_map($mapFunc, $projektarbeiten->retval); + + $ret = $this->ProjektarbeitModel->getProjektarbeitenAbgabetermine($projektarbeiten_ids); + $projektabgaben = $this->getDataOrTerminateWithError($ret, 'general'); + + forEach($projektarbeiten->retval as $pa) { $result = $this->ProjektarbeitModel->getProjektbetreuerAnrede($pa->betreuer_person_id); @@ -518,6 +530,12 @@ class Abgabe extends FHCAPI_Controller Events::trigger('projektbeurteilung_formular_link', $pa->betreuerart_kurzbz, APP_ROOT, $pa->projektarbeit_id, $pa->student_uid, $returnFunc); $pa->beurteilungLinkNew = $newLink; $pa->beurteilungLinkOld = $oldLink; + + $filterFunc = function($projektabgabe) use ($pa) { + return $projektabgabe->projektarbeit_id == $pa->projektarbeit_id; + }; + + $pa->abgabetermine = array_values(array_filter($projektabgaben, $filterFunc)); } diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index d03ef3ffc..fd88cbe02 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -155,7 +155,7 @@ export const AbgabetoolStudent = { return qgate1positiv && qgate2positiv }, isPastDate(date) { - const deadline = luxon.DateTime.fromISO(date, { zone: 'Europe/Berlin' }); + const deadline = luxon.DateTime.fromISO(date, { zone: 'Europe/Berlin' }).endOf('day'); const nowInBerlin = luxon.DateTime.now().setZone('Europe/Berlin'); return nowInBerlin > deadline; }, @@ -175,8 +175,8 @@ export const AbgabetoolStudent = { // old assumed production logic when qgates are required // termin.allowedToUpload = !this.isPastDate(termin.datum) && this.checkQualityGatesStrict(pa.abgabetermine) - // new larifari we want qgates but they are optional fhtw mode - termin.allowedToUpload = !this.isPastDate(termin.datum) && this.checkQualityGatesOptional(pa.abgabetermine) + const inTime = termin.fixtermin ? !this.isPastDate(termin.datum) : true + termin.allowedToUpload = inTime && this.checkQualityGatesOptional(pa.abgabetermine) // development purposes