- use function getAktOrNextSemester

- restructure single libs to isolate typeId of data
- refactor Job: use params, details output
- use functions insert, update, delete
- use timeperiode for getAllTags and checkIfExistingTag
- controller: rebuild function: change to POST
- updated insertVon Batchuser
This commit is contained in:
ma0068
2026-05-05 15:20:02 +02:00
parent d1fa5f64c4
commit ef1347c7d5
14 changed files with 329 additions and 221 deletions
+58 -11
View File
@@ -39,13 +39,16 @@ class TagJob extends JOB_Controller
$automatedTagsRes = $this->NotiztypModel->loadWhere(array('automatisiert' => true, 'taglib IS NOT NULL' => null));
$automatedTags = hasData($automatedTagsRes) ? getData($automatedTagsRes) : [];
$result = $this->StudiensemesterModel->getLastOrAktSemester();
$result = $this->StudiensemesterModel->getAktOrNextSemester();
if (isError($result))
return error ('Error occurred during retrieving studiensemester');
if (empty($result->retval) || !isset($result->retval[0])) {
return error('No studiensemester found');
}
$studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz ?? null;
$params = array(
'studiensemester_kurzbz' => $studiensemester_kurzbz
);
foreach($automatedTags as $autoTag)
{
@@ -56,7 +59,7 @@ class TagJob extends JOB_Controller
require_once($filePath);
} else {
echo "File not found: " . $filePath . PHP_EOL;
continue;
continue;
}
$kurz_bz = $autoTag->typ_kurzbz;
@@ -65,25 +68,69 @@ class TagJob extends JOB_Controller
$obj = new $className();
$outputArray = $obj->getZuordnungIds(['studiensemester_kurzbz' => $studiensemester_kurzbz]);
$data = $outputArray->data;
$outputArray = $obj->getZuordnungIds($params);
$typeId = $outputArray->typeId;
print_r($kurz_bz . " " . $autoTag->taglib);
$paramsTag = array(
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'kurzbz' => $kurz_bz,
'data' => $outputArray->data,
'typeId' => $typeId
);
$result = $this->taglib->updateAutomatedTags($kurz_bz, $data);
$result = $this->taglib->updateAutomatedTags($paramsTag);
$data = $result->retval;
if (isError($result))
return error ('Error occurred during updateAutomatedTags');
if (isError($result)) {
return error('Error occurred during updateAutomatedTags');
}
$data = is_array($result) ? $result['retval'] : $result->retval;
//PRINT OUTPUT CONSOLE
//SUMMARY
print_r(PHP_EOL . "-- TAG " . $result->retval['input']['tag'] . " | TYPE_ID " . $typeId . " --");
//Output with Summary and Details
print_r(PHP_EOL . "-- TAG " . $result->retval['input']['tag'] . " --");
print_r( PHP_EOL . "Count Recycled: " . $result->retval['summary']['recycled']);
print_r(PHP_EOL . "Count Added: ". $result->retval['summary']['added']);
print_r(PHP_EOL . "Count Deleted: ". $result->retval['summary']['deleted']);
//DETAILS
//print_r(PHP_EOL . "New tag(s) [". $typeId . "]: " . implode(', ', $result->retval['results']['newTags']));
//print_r(PHP_EOL . "Deleted tags(s) [". $typeId . "]: " . implode(', ', $result->retval['results']['deletedTagsIds']));
//print_r(PHP_EOL . "Recycled tag(s) [". $typeId . "]: " . implode(', ', $result->retval['results']['retaggedIds']));
print_r(PHP_EOL);
}
print_r( PHP_EOL . "End Job rebuild" . PHP_EOL);
}
public function deleteAllAutomatedTags()
{
print_r( PHP_EOL . "Start Job delete ALL Automated Tags" . PHP_EOL);
$resultToDelete = $this->NotizModel->loadWhere(array('insertvon' => 'BatchJobTagAdd'));
$data = $resultToDelete->retval;
$notiz_ids = array_map(function($item) {
return $item->notiz_id;
}, $data);
print_r($notiz_ids);
foreach ($notiz_ids as $notiz_id)
{
$result = $this->NotizzuordnungModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result))
return error ('Error occurred delete Notizzuordnung' . $notiz_id);
$result = $this->NotizModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result))
return error ('Error occurred delete Notiz' . $notiz_id);
}
print_r( PHP_EOL . "End Job delete Automated Tags" . PHP_EOL);
}
}
+4 -2
View File
@@ -339,10 +339,12 @@ class Tag_Controller extends FHCAPI_Controller
public function rebuildTagsForTypeId()
{
$id = $this->input->get('id');
$typeId = $this->input->get('typeId');
$id = $this->input->post('id');
$typeId = $this->input->post('typeId');
$result = $this->taglib->rebuildTagsForTypeId($typeId, $id);
//TODO (refactor; um semester, studiengang_kz)
//$result = $this->taglib->rebuildTagsForTypeId($params);
if (isError($result))
return error ('Error occurred during updateAutomatedTags');
+192 -177
View File
@@ -40,60 +40,63 @@ class TagLib
$this->_ci->load->library('PrestudentLib');
}
public function updateAutomatedTags($tag, $inputData)
public function updateAutomatedTags($paramsTag)
{
/*
$params array expected pattern
[
[
'id' => 123456,
'typeId' => 123456,
'von' => '2026-04-01',
'bis' => '2026-06-30'
],
...
]
*/
// ---------------------------------
// check params
// ---------------------------------
$required = ['kurzbz', 'data', 'typeId'];
foreach ($required as $key) {
if (!isset($paramsTag[$key])) {
return error('Missing Parameter: ' . $key);
}
}
$studiensemester_kurzbz = (isset ($paramsTag['studiensemester_kurzbz']) ? $paramsTag['studiensemester_kurzbz'] : null);
$tag = $paramsTag['kurzbz'];
$inputData = $paramsTag['data'];
$typeId = $paramsTag['typeId'];
// ---------------------------------
// prepare input
// ---------------------------------
$zeitraum = [];
$prestudentIds = [];
$arrayIds = [];
//TODO(Manu) check minimal input:
foreach ($inputData as $item) {
$id = $item['id'];
$arrayIds[] = $id;
foreach ($inputData as $row) {
$pid = $row['id'];
$typeId = $row['typeId'];
$prestudentIds[] = $pid;
$zeitraum[$pid] = [
'von' => $row['von'] ?? null,
'bis' => $row['bis'] ?? null
$zeitraum[$id] = [
'von' => $item['von'] ?? null,
'bis' => $item['bis'] ?? null
];
}
$prestudentIds = array_unique($prestudentIds);
$arrayIds = array_unique($arrayIds);
$result = $this->_ci->StudiensemesterModel->load($studiensemester_kurzbz);
if (isError($result)) {
return $result;
}
$data = $result->retval[0] ?? null;
$von = $data->start ?? null;
$bis = $data->ende ?? null;
// ---------------------------------
// load existing tags
// ---------------------------------
$allTags = [];
$this->_ci->NotizModel->addSelect('nz.notiz_id');
$this->_ci->NotizModel->addSelect($typeId);
$this->_ci->NotizModel->addJoin('public.tbl_notizzuordnung nz', 'notiz_id');
$resultAllTags = $this->_ci->NotizModel->loadWhere([
'typ' => $tag
]);
$resultAllTags = $this->_ci->NotizModel->getAllTags($tag, $von, $bis);
if (isError($resultAllTags)) {
return $resultAllTags;
}
$allTagsData = getData($resultAllTags);
if (!empty($allTagsData)) {
foreach ($allTagsData as $row) {
$allTags[$row->$typeId] = $row->notiz_id;
foreach ($allTagsData as $item) {
$allTags[$item->$typeId] = $item->notiz_id;
}
}
@@ -104,17 +107,18 @@ class TagLib
$toAdd = [];
$toDelete = [];
foreach ($prestudentIds as $pid) {
if (isset($allTags[$pid])) {
$toRecycle[$pid] = $allTags[$pid];
foreach ($arrayIds as $id) {
if (isset($allTags[$id])) {
$toRecycle[$id] = $allTags[$id];
} else {
$toAdd[] = $pid;
$toAdd[] = $id;
}
}
foreach ($allTags as $pid => $notizId) {
if (!in_array($pid, $prestudentIds)) {
$toDelete[$pid] = $notizId;
foreach ($allTags as $id => $notizId) {
if (!in_array($id, $arrayIds)) {
$toDelete[$id] = $notizId;
}
}
@@ -124,24 +128,13 @@ class TagLib
$countRecycled = 0;
$retagged = [];
foreach ($toRecycle as $pid => $notizId) {
$result = $this->_ci->NotizModel->update(
['notiz_id' => $notizId],
[
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => 'BatchJobTagUpdate',
'start' => $zeitraum[$pid]['von'],
'ende' => $zeitraum[$pid]['bis']
]
);
if (isError($result)) {
return error('Error updating tag ' . $notizId);
}
foreach ($toRecycle as $id => $notizId)
{
$this->_updateTag($notizId, $zeitraum[$id]['von'], $zeitraum[$id]['bis']);
$countRecycled++;
$retagged[] = $notizId;
$retagged[] = $id;
//$retagged[] = $notizId; //notiz_id
}
// ---------------------------------
@@ -150,37 +143,15 @@ class TagLib
$countAdded = 0;
$tagged = [];
foreach ($toAdd as $pid) {
$resultInsert = $this->_ci->NotizModel->insert([
'titel' => 'TAG',
'text' => 'AUTOMATED TAG',
'verfasser_uid' => self::BATCHUSER,
'erledigt' => false,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => 'BatchJobTagAdd',
'typ' => $tag,
'start' => $zeitraum[$pid]['von'],
'ende' => $zeitraum[$pid]['bis']
]);
if (isError($resultInsert)) {
return error('Error inserting tag for prestudent ' . $pid);
foreach ($toAdd as $id)
{
$result = $this->_insertTag($typeId, $id, $tag, $zeitraum[$id]['von'], $zeitraum[$id]['bis']);
if (isError($result)) {
return $result;
}
$notizId = $resultInsert->retval;
$resultZuordnung = $this->_ci->NotizzuordnungModel->insert([
'notiz_id' => $notizId,
$typeId => $pid
]);
if (isError($resultZuordnung)) {
return error('Error inserting relation for prestudent ' . $pid);
}
$countAdded++;
$tagged[$notizId] = $pid;
//$tagged[] = $result->retval[0]->notiz_id; //notiz_id
$tagged[] = $id;
}
// ---------------------------------
@@ -189,26 +160,17 @@ class TagLib
$countDeleted = 0;
$deleted = [];
foreach ($toDelete as $pid => $notizId) {
$result = $this->_ci->NotizzuordnungModel->delete([
'notiz_id' => $notizId
]);
foreach ($toDelete as $id => $notizId)
{
$result = $this->_deleteTag($notizId);
if (isError($result)) {
return error('Error deleting relation ' . $notizId);
}
$result = $this->_ci->NotizModel->delete([
'notiz_id' => $notizId
]);
if (isError($result)) {
return error('Error deleting note ' . $notizId);
return $result;
}
$countDeleted++;
$deleted[] = $notizId;
//$deleted[] = $result->retval['deleted']; //notizId
$deleted[] = $id;
}
// ---------------------------------
@@ -217,7 +179,7 @@ class TagLib
return success([
'input' => [
'tag' => $tag,
'prestudentIds' => $prestudentIds
'arrayIds' => $arrayIds
],
'summary' => [
'recycled' => $countRecycled,
@@ -231,9 +193,9 @@ class TagLib
'toDelete' => $toDelete
],
'results' => [
'retaggedNotizIds' => $retagged,
'retaggedIds' => $retagged,
'newTags' => $tagged,
'deletedNotizIds' => $deleted
'deletedTagsIds' => $deleted
]
]);
}
@@ -264,46 +226,14 @@ class TagLib
//RECYCLE
if ($notiz_id !== null)
{
$resultUpdateNotiz = $this->_ci->NotizModel->update(
[
'notiz_id' => $notiz_id
],
array(
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => getAuthUID(),
));
if (isError($resultUpdateNotiz))
return error ('Error occurred update Result ' . $notiz_id);
$return = ['recycled' => $notiz_id];
$resultUpdateNotiz = $this->_updateTag($notiz_id, $von, $bis);
$return = ['recycled' => $resultUpdateNotiz];
}
else
//ADD
{
$resultInsertNotiz = $this->_ci->NotizModel->insert(array(
'titel' => 'TAG',
'text' => 'AUTOMATED TAG',
'verfasser_uid' => getAuthUID(),
'erledigt' => false,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => getAuthUID(),
'typ' => $tag,
'start' => $von,
'ende' => $bis
));
if (isError($resultInsertNotiz))
return error ('Error occurred insert Result ' . $prestudent_id);
$resultInsertZuordnung = $this->_ci->NotizzuordnungModel->insert(array(
'notiz_id' => $resultInsertNotiz->retval,
$typeId => $id
));
if (isError($resultInsertZuordnung))
return error ('Error occurred insert Zuordnung ' . $id);
$return = ['added' => $resultInsertNotiz->retval];
$resultInsertNotiz = $this->_insertTag($typeId, $id, $tag, $von, $bis);
$return = ['added' => $resultInsertNotiz];
}
return success($return);
}
@@ -311,20 +241,23 @@ class TagLib
/*
* main function for rebuild Tags for typeId
* */
public function rebuildTagsForTypeId($typeId, $id)
public function rebuildTagsForTypeId($typeId, $id) //TODO aktSem of frontend
{
$automatedTagsRes = $this->_ci->NotiztypModel->loadWhere(array('automatisiert' => true, 'taglib IS NOT NULL' => null));
$automatedTags = hasData($automatedTagsRes) ? getData($automatedTagsRes) : [];
$_ci = get_instance();
$result = $this->_ci->StudiensemesterModel->getLastOrAktSemester();
//TODO change to chosen Studiensemester in frontend
$result = $this->_ci->StudiensemesterModel->getAktOrNextSemester();
if (isError($result))
return error('Error occurred during retrieving studiensemester');
if (empty($result->retval) || !isset($result->retval[0])) {
return error('No studiensemester found');
}
$studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz ?? null;
//for checkDelete
$startSem = $result->retval[0]->start ?? null;
$endeSem = $result->retval[0]->ende ?? null;
$return = [];
foreach ($automatedTags as $autoTag)
@@ -339,7 +272,6 @@ class TagLib
continue;
}
// className without PATH (basename)
$className = basename($autoTag->taglib);
$kurz_bz = $autoTag->typ_kurzbz;
@@ -368,58 +300,141 @@ class TagLib
if (isError($result))
return error('Error occurred during updateAutomatedTags' . $kurz_bz);
return $result;
$return[$kurz_bz] = $result;
}
else
{
$result = $this->checkForDelete($kurz_bz, $typeId, $id);
if ($result != null)
$return[$kurz_bz] = $result;
//CHECK FOR DELETE
$params = [
'von' => $startSem,
'bis' => $endeSem,
'kurzbz' => $autoTag->typ_kurzbz,
'typeId' => $typeId,
'id' => $id,
];
$result = $this->_ci->NotizModel->checkIfExistingTag($kurz_bz, $typeId, $id, $startSem, $endeSem);
if (hasData($result))
{
$notizId = $result->retval[0]->notiz_id;
$this->_deleteTag($notizId);
$return[$kurz_bz] = ['deleted' => $notizId];
}
}
}
return success($return);
}
public function checkForDelete($tag, $typeId, $id)
public function checkForDeleteDEPR($tag, $typeId, $id, $start, $ende)
{
//TODO Zeitbezug
$return = null;
$notiz_id = null;
$_ci = get_instance();
$_ci->addMeta(
'in checkForDelete', $tag
);
if (!is_numeric($id))
return error ("id " . $id . "not numeric");
$this->_ci->NotizModel->addSelect('nz.notiz_id');
$this->_ci->NotizModel->addSelect($typeId);
$this->_ci->NotizModel->addJoin('public.tbl_notizzuordnung nz', 'notiz_id');
$resultAllTags = $this->_ci->NotizModel->loadWhere([
'typ' => $tag,
$typeId => $id
]);
if(hasData($resultAllTags))
$result = $this->_ci->NotizModel->checkIfValidTag($tag, $typeId, $id, $start, $ende);
if (isError($result)) {
return error('Error checking valid tag for ' . $typeId . ': ' . $id);
}
if(hasData($result))
{
$notiz_id = $resultAllTags->retval[0]->notiz_id;
$notiz_id = $result->retval[0]->notiz_id;
$_ci = get_instance();
$_ci->addMeta(
'checkDeleteHas DAta', $notiz_id
);
}
else
return null;
if($notiz_id)
{
$result = $this->_ci->NotizzuordnungModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result))
return error ('Error occurred during delete Notizzuordnung' . $notiz_id);
$result = $this->_ci->NotizModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result))
return error ('Error occurred during delete Notiz' . $notiz_id);
$return = ['deleted' => $notiz_id];
$_ci->addMeta(
'TO DELETE', $notiz_id
);
$result = $this->_deleteTag($notiz_id);
}
return $return;
return ['deleted' => $result];
}
private function _insertTag($typeId, $id, $tag, $von, $bis)
{
$resultInsert = $this->_ci->NotizModel->insert([
'titel' => 'TAG',
'text' => 'AUTOMATED TAG',
'verfasser_uid' => self::BATCHUSER,
'erledigt' => false,
'insertamum' => date('Y-m-d H:i:s'),
'insertvon' => 'BatchJobTagAdd',
'typ' => $tag,
'start' => $von,
'ende' => $bis
]);
if (isError($resultInsert)) {
return error('Error inserting tag for ' . $typeId . ': ' . $id);
}
$notizId = $resultInsert->retval;
$resultZuordnung = $this->_ci->NotizzuordnungModel->insert([
'notiz_id' => $notizId,
$typeId => $id
]);
if (isError($resultZuordnung)) {
return error('Error inserting relation for ' . $typeId . ': ' . $id);
}
return $notizId;
}
private function _updateTag($notiz_id, $von, $bis)
{
$resultUpdateNotiz = $this->_ci->NotizModel->update(
[
'notiz_id' => $notiz_id
],
array(
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => 'BatchJobTagUpdate',
'start' => $von,
'ende' => $bis
));
if (isError($resultUpdateNotiz))
return error ('Error occurred during Update ' . $notiz_id);
return $notiz_id;
}
private function _deleteTag($notiz_id)
{
$result = $this->_ci->NotizzuordnungModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result)) {
return error('Error occurred during delete Notizzuordnung ' . $notiz_id);
}
$result = $this->_ci->NotizModel->delete([
'notiz_id' => $notiz_id
]);
if (isError($result)) {
return error('Error occurred during delete Notiz ' . $notiz_id);
}
return success([
'deleted' => $notiz_id
]);
}
}
@@ -36,7 +36,6 @@ class CoreDoubleDegreeTagLib
$doubledegree_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->start,
'bis' => $item->ende
@@ -44,7 +43,8 @@ class CoreDoubleDegreeTagLib
}, $data);
return (object) array(
'data' => $doubledegree_data
'data' => $doubledegree_data,
'typeId' => 'prestudent_id'
);
}
@@ -39,28 +39,25 @@ class CoreFiftyFiveTagLib
$data = $result->retval;
$fiftyFiveData = array_map(function($item) {
return [
'id' => $item->person_id,
'typeId' => 'person_id',
'id' => $item->person_id
];
}, $data);
return (object) array(
'data' => $fiftyFiveData
'data' => $fiftyFiveData,
'typeId' => 'person_id'
);
}
public function isCriteriaSetFor(array $params)
{
if(!isset($params['person_id']) || !isset($params['studiensemester_kurzbz']))
{
if ( !isset($params['id'], $params['studiensemester_kurzbz'], $params['typeId']) || $params['typeId'] !== 'person_id')
return false;
}
$semester = $params['studiensemester_kurzbz'];
$person_id = $params['id'];
$typeId = $params['typeId'];
if($typeId != 'person_id')
return null;
$result = $this->ci->StudiensemesterModel->loadWhere(array(
'studiensemester_kurzbz' => $semester
@@ -71,17 +68,9 @@ class CoreFiftyFiveTagLib
$semBis = $data->ende;
$result = $this->ci->PersonModel->isFiftyFive($semVon, $semBis, $person_id);
$data = $result->retval;
$fiftyFiveData = array_map(function($item) {
return [
'id' => $item->person_id,
'typeId' => 'person_id',
];
}, $data);
if(hasData($result))
{
//array mit prestudent_id, von und bis
return $result;
}
else
+2 -2
View File
@@ -31,7 +31,6 @@ class CoreJgvTagLib
$jgv_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->datum_von,
'bis' => $item->datum_bis
@@ -39,7 +38,8 @@ class CoreJgvTagLib
}, $data);
return (object) array(
'data' => $jgv_data
'data' => $jgv_data,
'typeId' => 'prestudent_id'
);
}
@@ -39,7 +39,6 @@ class CoreMissingZgvTagLib
$zgvmissing_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => null,
'bis' => null
@@ -47,6 +46,7 @@ class CoreMissingZgvTagLib
}, $data);
return (object) array(
'typeId' => 'prestudent_id',
'data' => $zgvmissing_data
);
@@ -31,7 +31,6 @@ class CoreOutgoingTagLib
$outgoing_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->von,
'bis' => $item->bis
@@ -39,7 +38,8 @@ class CoreOutgoingTagLib
}, $data);
return (object) array(
'data' => $outgoing_data
'data' => $outgoing_data,
'typeId' => 'prestudent_id',
);
}
@@ -34,7 +34,6 @@ class CorePrewiederholerTagLib
$prewiederholer_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->start,
'bis' => $item->ende
@@ -42,7 +41,8 @@ class CorePrewiederholerTagLib
}, $data);
return (object) array(
'data' => $prewiederholer_data
'data' => $prewiederholer_data,
'typeId' => 'prestudent_id',
);
}
@@ -36,7 +36,6 @@ class CoreStbErhoehtTagLib
$konto_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->start,
'bis' => $item->ende
@@ -44,7 +43,8 @@ class CoreStbErhoehtTagLib
}, $data);
return (object) array(
'data' => $konto_data
'data' => $konto_data,
'typeId' => 'prestudent_id'
);
}
@@ -34,7 +34,6 @@ class CoreUnterbrecherTagLib
$unterbrecher_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->start,
'bis' => $item->ende
@@ -42,7 +41,8 @@ class CoreUnterbrecherTagLib
}, $data);
return (object) array(
'data' => $unterbrecher_data
'data' => $unterbrecher_data,
'typeId' => 'prestudent_id'
);
}
@@ -34,7 +34,6 @@ class CoreWiederholerTagLib
$wiederholer_data = array_map(function($item) {
return [
'typeId' => 'prestudent_id',
'id' => $item->prestudent_id,
'von' => $item->start,
'bis' => $item->ende
@@ -42,6 +41,7 @@ class CoreWiederholerTagLib
}, $data);
return (object) array(
'typeId' => 'prestudent_id',
'data' => $wiederholer_data
);
}
+55
View File
@@ -296,4 +296,59 @@ class Notiz_model extends DB_Model
return $this->loadWhere(array('anrechnung_id' => $anrechnung_id));
}
/**
* check if a given Tag for a certain notizzuordnung id is valid
*
* @param $tag typ_kurzbz to check
* @param $typeId typeId to check
* @param $id id to check
* @param $von start of time period or NULL
* @param $bis end of time period or NULL
*
* @return array
*/
public function checkIfExistingTag($tag, $typeId, $id, $von=null, $bis=null)
{
$query = "
SELECT *
FROM public.tbl_notiz
JOIN public.tbl_notizzuordnung nz USING (notiz_id)
WHERE typ = ?
AND {$typeId} = ?
AND (
start IS NULL
OR ende IS NULL
OR (start <= ? AND ende >= ?)
)
";
return $this->execQuery($query, [$tag, $id, $bis, $von]);
}
/**
* returns all existing tags of a certain tag within a time period
*
* @param $tag typ_kurzbz of tag
* @param $von start of time period or NULL
* @param $bis end of time period or NULL
*
* @return array
*/
public function getAllTags($tag, $von=null, $bis=null)
{
$query = "
SELECT *
FROM public.tbl_notiz
JOIN public.tbl_notizzuordnung nz USING (notiz_id)
WHERE typ = ?
AND (
start IS NULL
OR ende IS NULL
OR (start <= ? AND ende >= ?)
);
";
return $this->execQuery($query, array($tag, $bis, $von));
}
}
+1 -1
View File
@@ -63,7 +63,7 @@ export default {
rebuildTagsforTypeId(data){
return {
method: 'get',
method: 'post',
url: 'api/frontend/v1/stv/Tags/rebuildTagsForTypeId/',
params: data
};