mirror of
https://github.com/Karaka-Management/oms-Kanban.git
synced 2026-02-17 20:58:41 +00:00
Went through todos
This commit is contained in:
parent
3dfe3090f3
commit
13907cbc86
|
|
@ -16,6 +16,7 @@ namespace Modules\Kanban\Controller;
|
||||||
|
|
||||||
use Modules\Admin\Models\AccountMapper;
|
use Modules\Admin\Models\AccountMapper;
|
||||||
use Modules\Admin\Models\NullAccount;
|
use Modules\Admin\Models\NullAccount;
|
||||||
|
use Modules\Comments\Models\Comment;
|
||||||
use Modules\Kanban\Models\BoardStatus;
|
use Modules\Kanban\Models\BoardStatus;
|
||||||
use Modules\Kanban\Models\CardStatus;
|
use Modules\Kanban\Models\CardStatus;
|
||||||
use Modules\Kanban\Models\CardType;
|
use Modules\Kanban\Models\CardType;
|
||||||
|
|
@ -53,8 +54,7 @@ final class ApiController extends Controller
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*
|
*
|
||||||
* @todo Create another notification whenever a comment is created for a card
|
* @performance This should happen in the cli if possible?
|
||||||
* The card owner and all previous commentators should receive a notification
|
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
@ -82,6 +82,52 @@ final class ApiController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a notification for a card
|
||||||
|
*
|
||||||
|
* @param Comment $comment Comment to create notification for
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @performance This should happen in the cli if possible?
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
private function createCommentNotifications(Comment $comment, RequestAbstract $request) : void
|
||||||
|
{
|
||||||
|
$card = KanbanCardMapper::get()
|
||||||
|
->with('commentList')
|
||||||
|
->with('commentList/comments')
|
||||||
|
->where('commentList', $comment->list)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$accounts = [];
|
||||||
|
if ($card->createdBy->id !== $comment->createdBy->id) {
|
||||||
|
$accounts[] = $card->createdBy->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($card->commentList->comments as $element) {
|
||||||
|
if ($element->createdBy->id !== $comment->createdBy->id) {
|
||||||
|
$accounts[] = $element->createdBy->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($accounts as $account) {
|
||||||
|
$notification = new Notification();
|
||||||
|
$notification->module = self::NAME;
|
||||||
|
$notification->title = $card->name;
|
||||||
|
$notification->createdBy = $card->createdBy;
|
||||||
|
$notification->createdFor = new NullAccount($account);
|
||||||
|
$notification->type = NotificationType::CREATE;
|
||||||
|
$notification->category = PermissionCategory::CARD;
|
||||||
|
$notification->element = $card->id;
|
||||||
|
$notification->redirect = '{/base}/kanban/card?{?}&id=' . $card->id;
|
||||||
|
|
||||||
|
$this->createModel($request->header->account, $notification, NotificationMapper::class, 'notification', $request->getOrigin());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing end-point for application behavior.
|
* Routing end-point for application behavior.
|
||||||
*
|
*
|
||||||
|
|
@ -389,4 +435,25 @@ final class ApiController extends Controller
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Api method to create comment
|
||||||
|
*
|
||||||
|
* @param RequestAbstract $request Request
|
||||||
|
* @param ResponseAbstract $response Response
|
||||||
|
* @param array $data Generic data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function apiCommentCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||||
|
{
|
||||||
|
$this->app->moduleManager->get('Comment', 'Api')->apiCommentCreate($request, $response, $data);
|
||||||
|
$comment = $response->getDataArray($request->uri->__toString())['response'];
|
||||||
|
|
||||||
|
$this->createCommentNotifications($comment, $request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,6 @@ use phpOMS\Views\View;
|
||||||
* @link https://jingga.app
|
* @link https://jingga.app
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
* @codeCoverageIgnore
|
* @codeCoverageIgnore
|
||||||
*
|
|
||||||
* @todo Implement unread cards/comments notification/highlight
|
|
||||||
* https://github.com/Karaka-Management/oms-Kanban/issues/5
|
|
||||||
*/
|
*/
|
||||||
final class BackendController extends Controller
|
final class BackendController extends Controller
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,6 @@ use Modules\Tasks\Models\Task;
|
||||||
* @license OMS License 2.0
|
* @license OMS License 2.0
|
||||||
* @link https://jingga.app
|
* @link https://jingga.app
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*
|
|
||||||
* @todo Implement unread cards/comments notification/highlight
|
|
||||||
* See tasks for inspiration. However, here we also need to highlight the entire board for unread content
|
|
||||||
* https://github.com/Karaka-Management/oms-Kanban/issues/5
|
|
||||||
*/
|
*/
|
||||||
class KanbanCard implements \JsonSerializable
|
class KanbanCard implements \JsonSerializable
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,9 @@ declare(strict_types=1);
|
||||||
use Modules\Kanban\Models\NullKanbanBoard;
|
use Modules\Kanban\Models\NullKanbanBoard;
|
||||||
use phpOMS\Uri\UriFactory;
|
use phpOMS\Uri\UriFactory;
|
||||||
|
|
||||||
|
// @todo Allow card templates? maybe at least colors?
|
||||||
|
// https://github.com/Karaka-Management/oms-Kanban/issues/10
|
||||||
|
|
||||||
/** @var \Modules\Kanban\Models\KanbanBoard $board */
|
/** @var \Modules\Kanban\Models\KanbanBoard $board */
|
||||||
$board = $this->data['board'] ?? new NullKanbanBoard();
|
$board = $this->data['board'] ?? new NullKanbanBoard();
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user