mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-01-11 15:38: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\TaskElementMapper;
|
||||
use Modules\Tasks\Models\TaskMapper;
|
||||
use Modules\Tasks\Models\TaskSeen;
|
||||
use Modules\Tasks\Models\TaskSeenMapper;
|
||||
use Modules\Tasks\Models\TaskStatus;
|
||||
use Modules\Tasks\Views\TaskView;
|
||||
use phpOMS\Account\PermissionType;
|
||||
|
|
@ -110,6 +112,23 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
|
||||
$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;
|
||||
}
|
||||
|
||||
|
|
@ -196,6 +215,31 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
->where('tags/title/language', $request->header->l11n->language)
|
||||
->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;
|
||||
|
||||
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
|
||||
$c = 0;
|
||||
foreach ($open as $key => $task) : ++$c;
|
||||
if (isset($this->data['unread'][$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$url = UriFactory::build(empty($task->redirect)
|
||||
? 'task/single?{?}&id=' . $task->id
|
||||
: ('{/app}/' . $task->redirect),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user