diff --git a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
index 6ed61a6bb..6a5a74dd0 100644
--- a/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
+++ b/application/controllers/lehre/anrechnung/ApproveAnrechnungDetail.php
@@ -85,6 +85,12 @@ class approveAnrechnungDetail extends Auth_Controller
show_error('Missing data for recommendation');
}
+ // Get Genehmigung data
+ if(!$genehmigungData = getData($this->anrechnunglib->getGenehmigungData($anrechnung_id)))
+ {
+ show_error('Missing data for recommendation');
+ }
+
$viewData = array(
'antragData' => $this->anrechnunglib->getAntragData(
$student_uid = $this->PrestudentModel->getUID($anrechnungData->prestudent_id),
@@ -92,7 +98,8 @@ class approveAnrechnungDetail extends Auth_Controller
$anrechnungData->lehrveranstaltung_id
),
'anrechnungData' => $anrechnungData,
- 'empfehlungData' => $empfehlungData
+ 'empfehlungData' => $empfehlungData,
+ 'genehmigungData' => $genehmigungData
);
$this->load->view('lehre/anrechnung/approveAnrechnungDetail.php', $viewData);
@@ -117,6 +124,11 @@ class approveAnrechnungDetail extends Auth_Controller
? $approved->bezeichnung_mehrsprachig[0]
: $approved->bezeichnung_mehrsprachig[1];
+ if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
+ {
+ show_error('Failed retrieving person data');
+ }
+
foreach ($data as $item)
{
// Approve Anrechnung
@@ -125,7 +137,9 @@ class approveAnrechnungDetail extends Auth_Controller
$json[]= array(
'anrechnung_id' => $item['anrechnung_id'],
'status_kurzbz' => self::ANRECHNUNGSTATUS_APPROVED,
- 'status_bezeichnung' => $approved
+ 'status_bezeichnung' => $approved,
+ 'abgeschlossen_am' => (new DateTime())->format('d.m.Y'),
+ 'abgeschlossen_von' => $person->vorname. ' '. $person->nachname
);
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_APPROVED))
@@ -165,15 +179,22 @@ class approveAnrechnungDetail extends Auth_Controller
? $rejected->bezeichnung_mehrsprachig[0]
: $rejected->bezeichnung_mehrsprachig[1];
+ if (!$person = getData($this->PersonModel->getByUID($this->_uid))[0])
+ {
+ show_error('Failed retrieving person data');
+ }
+
foreach ($data as $item)
{
// Reject Anrechnung
if(getData($this->anrechnunglib->rejectAnrechnung($item['anrechnung_id'], $item['begruendung'])))
{
$json[]= array(
- 'anrechnung_id' => $item['anrechnung_id'],
- 'status_kurzbz' => self::ANRECHNUNGSTATUS_REJECTED,
- 'status_bezeichnung' => $rejected
+ 'anrechnung_id' => $item['anrechnung_id'],
+ 'status_kurzbz' => self::ANRECHNUNGSTATUS_REJECTED,
+ 'status_bezeichnung' => $rejected,
+ 'abgeschlossen_am' => (new DateTime())->format('d.m.Y'),
+ 'abgeschlossen_von' => $person->vorname. ' '. $person->nachname
);
if(!$this->_sendSanchoMailToStudent($item['anrechnung_id'], self::ANRECHNUNGSTATUS_REJECTED))
diff --git a/application/libraries/AnrechnungLib.php b/application/libraries/AnrechnungLib.php
index 48a693211..6b3b200bd 100644
--- a/application/libraries/AnrechnungLib.php
+++ b/application/libraries/AnrechnungLib.php
@@ -266,6 +266,69 @@ class AnrechnungLib
}
+ /**
+ * Get Genehmigung data object.
+ * @param $anrechnung_id
+ * @return array
+ * @throws Exception
+ */
+ public function getGenehmigungData($anrechnung_id)
+ {
+ if (!is_numeric($anrechnung_id))
+ {
+ show_error('Incorrect parameter');
+ }
+
+ $genehmigung_data = new stdClass();
+ $genehmigung_data->genehmigung = null;
+ $genehmigung_data->abgeschlossen_von = '-';
+ $genehmigung_data->abgeschlossen_am = '-';
+ $genehmigung_data->notiz = ''; // Begruendung, if rejected
+
+
+ if(!$anrechnung = getData($this->ci->AnrechnungModel->load($anrechnung_id))[0])
+ {
+ show_error('Failed loading Anrechnung');
+ }
+
+ // Get date of approvement or rejection
+ $result = $this->ci->AnrechnungModel->getApprovedOrRejected($anrechnung_id);
+
+ if (!$result = getData($result)[0])
+ {
+ return success($genehmigung_data);
+ }
+
+
+ $genehmigung_data->genehmigung = $result->status_kurzbz == self::ANRECHNUNGSTATUS_APPROVED
+ ? true
+ : false;
+ $genehmigung_data->abgeschlossen_am = (new DateTime($result->insertamum))->format('d.m.Y');
+
+ // Get full name of lector
+ $result = $this->ci->PersonModel->getByUID($result->insertvon);
+ if ($result = getData($result)[0])
+ {
+ $genehmigung_data->abgeschlossen_von = $result->vorname. ' '. $result->nachname;
+ }
+
+
+ // If Anrechnung was rejected, retrieve also Notiz with Begruendung
+ if (!$genehmigung_data->genehmigung)
+ {
+ // Get Ablehnungsbegruendung (only set, if Anrechnung was not recommended yet)
+ $this->ci->load->model('person/Notiz_model', 'NotizModel');
+ $result = $this->ci->NotizModel->getNotizByAnrechnung($anrechnung_id, self::ANRECHNUNG_NOTIZTITEL_NOTIZ_BY_STGL);
+ if ($notiz = getData($result)[0])
+ {
+ $genehmigung_data->notiz = $notiz->text;
+ }
+ }
+
+ return success($genehmigung_data);
+
+ }
+
/**
* Get last Anrechnungstatusbezeichnung in users language.
* @param $anrechnung_id
diff --git a/application/views/lehre/anrechnung/approveAnrechnungDetail.php b/application/views/lehre/anrechnung/approveAnrechnungDetail.php
index 89e55ad18..76e707e17 100644
--- a/application/views/lehre/anrechnung/approveAnrechnungDetail.php
+++ b/application/views/lehre/anrechnung/approveAnrechnungDetail.php
@@ -143,8 +143,7 @@ $this->load->view(
empfehlung) ? '' : 'hidden' ?>"
id="approveAnrechnungDetail-empfehlungDetail-empfehlungIsNull">
p->t('anrechnung', 'keineEmpfehlungAngefordert'); ?>
@@ -181,9 +180,111 @@ $this->load->view(
+
+
+
+
+
+
+
+
+
+
diff --git a/public/js/lehre/anrechnung/approveAnrechnungDetail.js b/public/js/lehre/anrechnung/approveAnrechnungDetail.js
index f7fc8b9ff..b211192a5 100644
--- a/public/js/lehre/anrechnung/approveAnrechnungDetail.js
+++ b/public/js/lehre/anrechnung/approveAnrechnungDetail.js
@@ -22,8 +22,8 @@ $(function(){
// Approve Anrechnungen
$("#approve-anrechnung").click(function(){
- let genehmigung_panel = $('#approveAnrechnungUebersicht-empfehlung-panel');
- let begruendung_panel = $('#approveAnrechnungUebersicht-begruendung-panel');
+ let genehmigung_panel = $('#approveAnrechnungDetail-genehmigung-panel');
+ let begruendung_panel = $('#approveAnrechnungDetail-begruendung-panel');
begruendung_panel.css('display', 'none');
@@ -34,25 +34,15 @@ $(function(){
return;
}
- // Get selected rows data
- let selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData')
- .map(function(data){
- // reduce to necessary fields
- return {
- 'anrechnung_id' : data.anrechnung_id,
- }
- });
-
- // Alert and exit if no anrechnung is selected
- if (selected_data.length == 0)
- {
- FHC_DialogLib.alertInfo('Bitte wählen Sie erst zumindest einen Antrag auf Anrechnung');
- return;
- }
+ // Get form data
+ // index 0: anrechnung_id
+ let form_data = $('form').serializeArray();
// Prepare data object for ajax call
let data = {
- 'data': selected_data
+ 'data': [{
+ 'anrechnung_id' : form_data[0].value
+ }]
};
// Hide genehmigung panel again
@@ -72,11 +62,11 @@ $(function(){
if (!data.error && data.retval != null)
{
- // Update status 'genehmigt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
-
- // Print success message
- FHC_DialogLib.alertSuccess(data.retval.length + " Anrechnungsanträge wurden genehmigt.");
+ approveAnrechnungDetail.formatGenehmigungIsPositiv(
+ data.retval[0].abgeschlossen_am,
+ data.retval[0].abgeschlossen_von,
+ data.retval[0].status_bezeichnung
+ );
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
@@ -89,9 +79,9 @@ $(function(){
// Reject Anrechnungen
$("#reject-anrechnung").click(function(){
- let begruendung_panel = $('#approveAnrechnungUebersicht-begruendung-panel');
- let begruendung = $('#approveAnrechnungUebersicht-begruendung').val();
- let genehmigung_panel = $('#approveAnrechnungUebersicht-empfehlung-panel');
+ let begruendung_panel = $('#approveAnrechnungDetail-begruendung-panel');
+ let begruendung = $('#approveAnrechnungDetail-begruendung').val();
+ let genehmigung_panel = $('#approveAnrechnungDetail-genehmigung-panel');
genehmigung_panel.css('display', 'none');
@@ -111,33 +101,23 @@ $(function(){
}
}
- // Get selected rows data
- let selected_data = $('#tableWidgetTabulator').tabulator('getSelectedData')
- .map(function(data){
- // reduce to necessary fields
- return {
- 'anrechnung_id' : data.anrechnung_id,
- 'begruendung' : begruendung
- }
- });
-
- // Alert and exit if no anrechnung is selected
- if (selected_data.length == 0)
- {
- FHC_DialogLib.alertInfo('Bitte wählen Sie erst zumindest einen Antrag auf Anrechnung');
- return;
- }
+ // Get form data
+ // index 0: anrechnung_id
+ let form_data = $('form').serializeArray();
// Confirm before rejecting
- if(!confirm('Wollen Sie wirklich die gewählten Anträge ablehnen?'))
+ if(!confirm('Wollen Sie wirklich für die gewählten Anträge keine Empfehlung abgeben?'))
{
return;
}
// Prepare data object for ajax call
let data = {
- 'data': selected_data
- };
+ 'data': [{
+ 'anrechnung_id' : form_data[0].value,
+ 'begruendung' : begruendung
+ }]
+ }
// Hide begruendung panel again
begruendung_panel.slideUp('slow');
@@ -156,11 +136,12 @@ $(function(){
if (!data.error && data.retval != null)
{
- // Update status 'genehmigt'
- $('#tableWidgetTabulator').tabulator('updateData', data.retval);
-
- // Print success message
- FHC_DialogLib.alertSuccess(data.retval.length + " Anrechnungsanträge wurden abgelehnt.");
+ approveAnrechnungDetail.formatGenehmigungIsNegativ(
+ data.retval[0].abgeschlossen_am,
+ data.retval[0].abgeschlossen_von,
+ data.retval[0].status_bezeichnung,
+ begruendung
+ );
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
@@ -219,9 +200,9 @@ $(function(){
approveAnrechnungDetail.copyIntoTextarea(this);
})
- // Break Empfehlung abgeben
- $('#approveAnrechnungDetail-empfehlung-abbrechen').click(function(){
- $('#approveAnrechnungDetail-empfehlung-panel').slideUp('slow');
+ // Break Genehmigung abgeben
+ $('#approveAnrechnungDetail-genehmigung-abbrechen').click(function(){
+ $('#approveAnrechnungDetail-genehmigung-panel').slideUp('slow');
})
@@ -270,23 +251,27 @@ var approveAnrechnungDetail = {
$('#approve-anrechnung').prop('disabled', true);
$('#reject-anrechnung').prop('disabled', true);
},
- formatEmpfehlungIsTrue: function(empfehlungAm, emfehlungVon, statusBezeichnung){
- $('#approveAnrechnungDetail-empfehlungDetail').children().addClass('hidden');
- $('#approveAnrechnungDetail-empfehlungDetail-empfehlungIsTrue').removeClass('hidden');
+ formatGenehmigungIsPositiv: function(abgeschlossenAm, abgeschlossenVon, statusBezeichnung){
+ $('#approveAnrechnungDetail-genehmigungDetail').children().addClass('hidden');
+ $('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsPositiv').removeClass('hidden');
$('#approveAnrechnung-status_kurzbz').text(statusBezeichnung);
+ $('#approveAnrechnung-status_kurzbz').closest('div').removeClass('alert-warning').addClass('alert-success');
+ $('#approveAnrechnungDetail-abgeschlossenAm').text(abgeschlossenAm);
+ $('#approveAnrechnungDetail-abgeschlossenVon').text(abgeschlossenVon);
$('#request-recommendation').prop('disabled', true);
$('#approve-anrechnung').prop('disabled', true);
$('#reject-anrechnung').prop('disabled', true);
},
- formatEmpfehlungIsFalse: function(empfehlungAm, emfehlungVon, statusBezeichnung, begruendung){
- $('#approveAnrechnungDetail-empfehlungDetail').children().addClass('hidden');
- $('#approveAnrechnungDetail-empfehlungDetail-empfehlungIsFalse').removeClass('hidden');
+ formatGenehmigungIsNegativ: function(abgeschlossenAm, abgeschlossenVon, statusBezeichnung, begruendung){
+ $('#approveAnrechnungDetail-genehmigungDetail').children().addClass('hidden');
+ $('#approveAnrechnungDetail-genehmigungDetail-genehmigungIsNegativ').removeClass('hidden');
$('#approveAnrechnung-status_kurzbz').text(statusBezeichnung);
+ $('#approveAnrechnung-status_kurzbz').closest('div').removeClass('alert-warning').addClass('alert-danger');
+ $('#approveAnrechnungDetail-abgeschlossenAm').text(abgeschlossenAm);
+ $('#approveAnrechnungDetail-abgeschlossenVon').text(abgeschlossenVon);
+ $('#approveAnrechnungDetail-genehmigungDetail-begruendung').text(begruendung);
$('#request-recommendation').prop('disabled', true);
$('#approve-anrechnung').prop('disabled', true);
$('#reject-anrechnung').prop('disabled', true);
- $('#approveAnrechnungDetail-empfehlungAm').text(empfehlungAm);
- $('#approveAnrechnungDetail-empfehlungVon').text(emfehlungVon);
- $('#approveAnrechnungDetail-empfehlungDetail-begruendung').text(begruendung);
}
}
\ No newline at end of file
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 34680ad95..dfde89cdc 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -9057,13 +9057,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Es wurde noch keine Empfehlung abgegeben.',
+ 'text' => 'Es wurde keine Empfehlung abgegeben.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => 'No recommendation has been sent yet.',
+ 'text' => 'No request for recommendation.',
'description' => '',
'insertvon' => 'system'
)
@@ -9177,7 +9177,7 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => 'Anrechnungen wird genehmigt, weil die Kenntnisse inhaltlich und umfangmäßig gleichwertig sind.',
+ 'text' => 'Anrechnung wird genehmigt, weil die Kenntnisse inhaltlich und umfangmäßig gleichwertig sind.',
'description' => '',
'insertvon' => 'system'
),
@@ -9228,6 +9228,86 @@ Any unusual occurrences
'insertvon' => 'system'
)
)
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'genehmigung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Genehmigung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Approvement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'abgeschlossenVon',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abgeschlossen von',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Closed by',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'abschlussdatum',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abschlussdatum',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Closing date',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'nochKeineGenehmigung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Der Antrag auf Anerkennung der nachgewiesenen Kenntnisse erfordert Ihre Genehmigung / Ablehnung.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
)
);