mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-01-23 04:38:41 +00:00
fixes Orange-Management/phpOMS#224 and fixes Orange-Management/phpOMS#212
This commit is contained in:
parent
047f348569
commit
d21ebb526d
|
|
@ -14,13 +14,14 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\Tasks\Controller;
|
||||
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Tasks\Models\Task;
|
||||
use Modules\Tasks\Models\TaskElement;
|
||||
use Modules\Tasks\Models\TaskElementMapper;
|
||||
use Modules\Tasks\Models\TaskMapper;
|
||||
use Modules\Tasks\Models\TaskStatus;
|
||||
use Modules\Tasks\Models\TaskType;
|
||||
|
||||
use Modules\Tasks\Models\TaskType;
|
||||
use phpOMS\Message\NotificationLevel;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
|
|
@ -117,7 +118,7 @@ final class ApiController extends Controller
|
|||
$task->setTitle((string) ($request->getData('title') ?? ''));
|
||||
$task->setDescription(Markdown::parse((string) ($request->getData('plain') ?? '')));
|
||||
$task->setDescriptionRaw((string) ($request->getData('plain') ?? ''));
|
||||
$task->setCreatedBy($request->getHeader()->getAccount());
|
||||
$task->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
||||
$task->setDue(new \DateTime($request->getData('due')));
|
||||
$task->setStatus(TaskStatus::OPEN);
|
||||
$task->setType(TaskType::SINGLE);
|
||||
|
|
@ -269,7 +270,7 @@ final class ApiController extends Controller
|
|||
private function createTaskElementFromRequest(RequestAbstract $request) : TaskElement
|
||||
{
|
||||
$element = new TaskElement();
|
||||
$element->setCreatedBy($request->getHeader()->getAccount());
|
||||
$element->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
||||
$element->setDue(new \DateTime((string) ($request->getData('due') ?? 'now')));
|
||||
$element->setPriority((int) $request->getData('priority'));
|
||||
$element->setStatus((int) ($request->getData('status')));
|
||||
|
|
|
|||
|
|
@ -24,4 +24,15 @@ namespace Modules\Tasks\Models;
|
|||
*/
|
||||
final class NullTask extends Task
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param int $id Model id
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function __construct(int $id = 0)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\Tasks\Models;
|
||||
|
||||
use Modules\Admin\Models\Account;
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Calendar\Models\Schedule;
|
||||
use Modules\Media\Models\Media;
|
||||
use Modules\Tag\Models\NullTag;
|
||||
use Modules\Tag\Models\Tag;
|
||||
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
||||
|
|
@ -51,7 +54,7 @@ class Task implements \JsonSerializable
|
|||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $createdBy = 0;
|
||||
protected Account $createdBy;
|
||||
|
||||
/**
|
||||
* Created.
|
||||
|
|
@ -115,7 +118,7 @@ class Task implements \JsonSerializable
|
|||
* @var null|\DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $start = null;
|
||||
protected ?\DateTime $start = null;
|
||||
|
||||
/**
|
||||
* Due.
|
||||
|
|
@ -123,7 +126,7 @@ class Task implements \JsonSerializable
|
|||
* @var null|\DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $due = null;
|
||||
protected ?\DateTime $due = null;
|
||||
|
||||
/**
|
||||
* Done.
|
||||
|
|
@ -131,7 +134,7 @@ class Task implements \JsonSerializable
|
|||
* @var null|\DateTime
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $done = null;
|
||||
protected ?\DateTime $done = null;
|
||||
|
||||
/**
|
||||
* Task elements.
|
||||
|
|
@ -155,7 +158,7 @@ class Task implements \JsonSerializable
|
|||
* @var Schedule
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $schedule = null;
|
||||
protected Schedule $schedule;
|
||||
|
||||
/**
|
||||
* Priority
|
||||
|
|
@ -180,6 +183,7 @@ class Task implements \JsonSerializable
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->createdBy = new NullAccount();
|
||||
$this->createdAt = new \DateTime('now');
|
||||
$this->schedule = new Schedule();
|
||||
$this->start = new \DateTime('now');
|
||||
|
|
@ -298,7 +302,7 @@ class Task implements \JsonSerializable
|
|||
/**
|
||||
* Get all media
|
||||
*
|
||||
* @return array<int|\Modules\Media\Models\Media>
|
||||
* @return Media[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
|
@ -310,13 +314,13 @@ class Task implements \JsonSerializable
|
|||
/**
|
||||
* Add media
|
||||
*
|
||||
* @param mixed $media Media to add
|
||||
* @param Media $media Media to add
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addMedia($media) : void
|
||||
public function addMedia(Media $media) : void
|
||||
{
|
||||
$this->media[] = $media;
|
||||
}
|
||||
|
|
@ -408,7 +412,7 @@ class Task implements \JsonSerializable
|
|||
*/
|
||||
public function getCreatedAt() : \DateTime
|
||||
{
|
||||
return $this->createdAt ?? new \DateTime();
|
||||
return $this->createdAt;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -438,11 +442,11 @@ class Task implements \JsonSerializable
|
|||
/**
|
||||
* Get created by
|
||||
*
|
||||
* @return int|\phpOMS\Account\Account
|
||||
* @return Account
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedBy()
|
||||
public function getCreatedBy() : Account
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
|
@ -450,16 +454,16 @@ class Task implements \JsonSerializable
|
|||
/**
|
||||
* Set created by
|
||||
*
|
||||
* @param mixed $id Created by
|
||||
* @param Account $account Created by
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setCreatedBy($id) : void
|
||||
public function setCreatedBy(Account $account) : void
|
||||
{
|
||||
$this->createdBy = $id;
|
||||
$this->schedule->setCreatedBy($id);
|
||||
$this->createdBy = $account;
|
||||
$this->schedule->setCreatedBy($account);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ namespace Modules\Tasks\Models;
|
|||
|
||||
use Modules\Admin\Models\Account;
|
||||
use Modules\Admin\Models\Group;
|
||||
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Media\Models\Media;
|
||||
use phpOMS\Stdlib\Base\Exception\InvalidEnumValue;
|
||||
|
||||
/**
|
||||
|
|
@ -64,10 +65,10 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Creator.
|
||||
*
|
||||
* @var int|\Modules\Admin\Models\Account
|
||||
* @var Account
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private $createdBy = 0;
|
||||
private Account $createdBy;
|
||||
|
||||
/**
|
||||
* Created.
|
||||
|
|
@ -104,7 +105,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Media.
|
||||
*
|
||||
* @var array
|
||||
* @var Media[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private array $media = [];
|
||||
|
|
@ -112,7 +113,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Accounts who received this task element.
|
||||
*
|
||||
* @var array
|
||||
* @var AccountRelation[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected array $accRelation = [];
|
||||
|
|
@ -120,7 +121,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Groups who received this task element.
|
||||
*
|
||||
* @var array
|
||||
* @var GroupRelaction[]
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected array $grpRelation = [];
|
||||
|
|
@ -135,6 +136,7 @@ class TaskElement implements \JsonSerializable
|
|||
$this->due = new \DateTime('now');
|
||||
$this->due->modify('+1 day');
|
||||
$this->createdAt = new \DateTime('now');
|
||||
$this->createdBy = new NullAccount();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -160,11 +162,11 @@ class TaskElement implements \JsonSerializable
|
|||
}
|
||||
|
||||
/**
|
||||
* @return int|\phpOMS\Account\Account
|
||||
* @return Account
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function getCreatedBy()
|
||||
public function getCreatedBy() : Account
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
|
@ -172,13 +174,13 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Set created by
|
||||
*
|
||||
* @param mixed $creator Creator
|
||||
* @param Account $creator Creator
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function setCreatedBy($creator) : void
|
||||
public function setCreatedBy(Account $creator) : void
|
||||
{
|
||||
$this->createdBy = $creator;
|
||||
}
|
||||
|
|
@ -186,7 +188,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Get all media
|
||||
*
|
||||
* @return array
|
||||
* @return Media[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
|
@ -198,13 +200,13 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add media
|
||||
*
|
||||
* @param mixed $media Media to add
|
||||
* @param Media $media Media to add
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addMedia($media) : void
|
||||
public function addMedia(Media $media) : void
|
||||
{
|
||||
$this->media[] = $media;
|
||||
}
|
||||
|
|
@ -321,7 +323,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Get to
|
||||
*
|
||||
* @return array<RelationAbstract>
|
||||
* @return RelationAbstract[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
|
@ -443,7 +445,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add to
|
||||
*
|
||||
* @param mixed $to To
|
||||
* @param Group|Account $to To
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
|
|
@ -453,7 +455,7 @@ class TaskElement implements \JsonSerializable
|
|||
{
|
||||
if ($to instanceof Group) {
|
||||
$this->addGroupTo($to);
|
||||
} elseif (($to instanceof Account) || \is_int($to)) {
|
||||
} elseif (($to instanceof Account)) {
|
||||
$this->addAccountTo($to);
|
||||
}
|
||||
}
|
||||
|
|
@ -461,15 +463,15 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add group as to
|
||||
*
|
||||
* @param int|Group $group Group
|
||||
* @param Group $group Group
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addGroupTo($group) : void
|
||||
public function addGroupTo(Group $group) : void
|
||||
{
|
||||
$groupId = \is_int($group) ? $group : $group->getId();
|
||||
$groupId = $group->getId();
|
||||
|
||||
foreach ($this->grpRelation as $grp) {
|
||||
$grpId = !\is_int($grp->getRelation()) ? $grp->getRelation()->getId() : $grp->getRelation();
|
||||
|
|
@ -485,15 +487,15 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add account as to
|
||||
*
|
||||
* @param int|Account $account Account
|
||||
* @param Account $account Account
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addAccountTo($account) : void
|
||||
public function addAccountTo(Account $account) : void
|
||||
{
|
||||
$accountId = \is_int($account) ? $account : $account->getId();
|
||||
$accountId = $account->getId();
|
||||
|
||||
foreach ($this->accRelation as $acc) {
|
||||
$accId = !\is_int($acc->getRelation()) ? $acc->getRelation()->getId() : $acc->getRelation();
|
||||
|
|
@ -509,7 +511,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Get cc
|
||||
*
|
||||
* @return array<RelationAbstract>
|
||||
* @return RelationAbstract[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
|
@ -535,7 +537,7 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add cc
|
||||
*
|
||||
* @param mixed $cc CC
|
||||
* @param Group|Account $cc CC
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
|
|
@ -545,7 +547,7 @@ class TaskElement implements \JsonSerializable
|
|||
{
|
||||
if ($cc instanceof Group) {
|
||||
$this->addGroupCC($cc);
|
||||
} elseif (($cc instanceof Account) || \is_int($cc)) {
|
||||
} elseif (($cc instanceof Account)) {
|
||||
$this->addAccountCC($cc);
|
||||
}
|
||||
}
|
||||
|
|
@ -553,15 +555,15 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add group as cc
|
||||
*
|
||||
* @param int|Group $group Group
|
||||
* @param Group $group Group
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addGroupCC($group) : void
|
||||
public function addGroupCC(Group $group) : void
|
||||
{
|
||||
$groupId = \is_int($group) ? $group : $group->getId();
|
||||
$groupId = $group->getId();
|
||||
|
||||
foreach ($this->grpRelation as $grp) {
|
||||
$grpId = !\is_int($grp->getRelation()) ? $grp->getRelation()->getId() : $grp->getRelation();
|
||||
|
|
@ -577,15 +579,15 @@ class TaskElement implements \JsonSerializable
|
|||
/**
|
||||
* Add account as cc
|
||||
*
|
||||
* @param int|Account $account Account
|
||||
* @param Account $account Account
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function addAccountCC($account) : void
|
||||
public function addAccountCC(Account $account) : void
|
||||
{
|
||||
$accountId = \is_int($account) ? $account : $account->getId();
|
||||
$accountId = $account->getId();
|
||||
|
||||
foreach ($this->accRelation as $acc) {
|
||||
$accId = !\is_int($acc->getRelation()) ? $acc->getRelation()->getId() : $acc->getRelation();
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
'task_element_priority' => ['name' => 'task_element_priority', 'type' => 'int', 'internal' => 'priority'],
|
||||
'task_element_due' => ['name' => 'task_element_due', 'type' => 'DateTime', 'internal' => 'due'],
|
||||
'task_element_task' => ['name' => 'task_element_task', 'type' => 'int', 'internal' => 'task'],
|
||||
'task_element_created_by' => ['name' => 'task_element_created_by', 'type' => 'int', 'internal' => 'createdBy'],
|
||||
'task_element_created_by' => ['name' => 'task_element_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
|
||||
'task_element_created_at' => ['name' => 'task_element_created_at', 'type' => 'DateTime', 'internal' => 'createdAt', 'readonly' => true],
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
'task_done' => ['name' => 'task_done', 'type' => 'DateTime', 'internal' => 'done'],
|
||||
'task_schedule' => ['name' => 'task_schedule', 'type' => 'int', 'internal' => 'schedule'],
|
||||
'task_start' => ['name' => 'task_start', 'type' => 'DateTime', 'internal' => 'start'],
|
||||
'task_created_by' => ['name' => 'task_created_by', 'type' => 'int', 'internal' => 'createdBy'],
|
||||
'task_created_by' => ['name' => 'task_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true],
|
||||
'task_created_at' => ['name' => 'task_created_at', 'type' => 'DateTime', 'internal' => 'createdAt', 'readonly' => true],
|
||||
];
|
||||
|
||||
|
|
@ -325,6 +325,8 @@ final class TaskMapper extends DataMapperAbstract
|
|||
->where(self::$table . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_account', '=', $user);
|
||||
|
||||
$t = $query->toSql();
|
||||
|
||||
$sth = self::$db->con->prepare($query->toSql());
|
||||
$sth->execute();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user