mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-02-13 13:18:40 +00:00
Implement task seen setting
This commit is contained in:
parent
a34e412947
commit
82072cfd65
|
|
@ -21,6 +21,8 @@ use Modules\Tasks\Models\AccountRelationMapper;
|
||||||
use Modules\Tasks\Models\PermissionCategory;
|
use Modules\Tasks\Models\PermissionCategory;
|
||||||
use Modules\Tasks\Models\TaskElementMapper;
|
use Modules\Tasks\Models\TaskElementMapper;
|
||||||
use Modules\Tasks\Models\TaskMapper;
|
use Modules\Tasks\Models\TaskMapper;
|
||||||
|
use Modules\Tasks\Models\TaskSeen;
|
||||||
|
use Modules\Tasks\Models\TaskSeenMapper;
|
||||||
use Modules\Tasks\Models\TaskStatus;
|
use Modules\Tasks\Models\TaskStatus;
|
||||||
use Modules\Tasks\Views\TaskView;
|
use Modules\Tasks\Views\TaskView;
|
||||||
use phpOMS\Account\PermissionType;
|
use phpOMS\Account\PermissionType;
|
||||||
|
|
@ -110,6 +112,23 @@ final class BackendController extends Controller implements DashboardElementInte
|
||||||
|
|
||||||
$view->data['open'] = $open;
|
$view->data['open'] = $open;
|
||||||
|
|
||||||
|
/** @var \Modules\Tasks\Models\TaskSeen[] $unread */
|
||||||
|
$unread = TaskSeenMapper::getAll()
|
||||||
|
->where('task', \array_keys($open), 'in')
|
||||||
|
->where('seenBy', $request->header->account)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$unseen = [];
|
||||||
|
foreach ($unread as $read) {
|
||||||
|
if ($read->isRemindered && ($read->reminderAt?->getTimestamp() ?? 0) > $request->header->getRequestTime()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$unseen[$read->task] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$view->data['unread'] = $unseen;
|
||||||
|
|
||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,6 +215,31 @@ final class BackendController extends Controller implements DashboardElementInte
|
||||||
->where('tags/title/language', $request->header->l11n->language)
|
->where('tags/title/language', $request->header->l11n->language)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
|
if ($task !== 0) {
|
||||||
|
$taskSeen = TaskSeenMapper::getAll()
|
||||||
|
->where('task', (int) $request->getData('id'))
|
||||||
|
->where('seenBy', $request->header->account)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
foreach ($taskSeen as $unseen) {
|
||||||
|
if ($unseen->isRemindered && ($unseen->reminderAt?->getTimestamp() ?? 0) < $request->header->getRequestTime()) {
|
||||||
|
$old = clone $unseen;
|
||||||
|
|
||||||
|
$unseen->isRemindered = false;
|
||||||
|
|
||||||
|
$this->updateModel($request->header->account, $old, $unseen, TaskSeenMapper::class, 'task-seen', $request->getOrigin());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($taskSeen)) {
|
||||||
|
$taskSeen = new TaskSeen();
|
||||||
|
$taskSeen->seenBy = $request->header->account;
|
||||||
|
$taskSeen->task = (int) $request->getData('id');
|
||||||
|
|
||||||
|
$this->createModel($request->header->account, $taskSeen, TaskSeenMapper::class, 'task-seen', $request->getOrigin());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$accountId = $request->header->account;
|
$accountId = $request->header->account;
|
||||||
|
|
||||||
if (!($task->createdBy->id === $accountId
|
if (!($task->createdBy->id === $accountId
|
||||||
|
|
|
||||||
47
Models/NullTaskSeen.php
Normal file
47
Models/NullTaskSeen.php
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Jingga
|
||||||
|
*
|
||||||
|
* PHP Version 8.1
|
||||||
|
*
|
||||||
|
* @package Modules\Tasks\Models
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Modules\Tasks\Models;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Null model
|
||||||
|
*
|
||||||
|
* @package Modules\Tasks\Models
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
final class NullTaskSeen extends TaskSeen
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param int $id Model id
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function __construct(int $id = 0)
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function jsonSerialize() : mixed
|
||||||
|
{
|
||||||
|
return ['id' => $this->id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -242,6 +242,10 @@ echo $this->data['nav']->render(); ?>
|
||||||
<?php
|
<?php
|
||||||
$c = 0;
|
$c = 0;
|
||||||
foreach ($open as $key => $task) : ++$c;
|
foreach ($open as $key => $task) : ++$c;
|
||||||
|
if (isset($this->data['unread'][$key])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$url = UriFactory::build(empty($task->redirect)
|
$url = UriFactory::build(empty($task->redirect)
|
||||||
? 'task/single?{?}&id=' . $task->id
|
? 'task/single?{?}&id=' . $task->id
|
||||||
: ('{/app}/' . $task->redirect),
|
: ('{/app}/' . $task->redirect),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user