mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-01-31 08:08:41 +00:00
new datamapper mostly implemented
This commit is contained in:
parent
772fc7963a
commit
efad7f2cde
|
|
@ -182,7 +182,7 @@ final class ApiController extends Controller
|
|||
public function apiTaskGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
/** @var Task $task */
|
||||
$task = TaskMapper::get((int) $request->getData('id'));
|
||||
$task = TaskMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Task', 'Task successfully returned.', $task);
|
||||
}
|
||||
|
||||
|
|
@ -202,7 +202,7 @@ final class ApiController extends Controller
|
|||
public function apiTaskSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
/** @var Task $old */
|
||||
$old = clone TaskMapper::get((int) $request->getData('id'));
|
||||
$old = clone TaskMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||
|
||||
/** @var Task $new */
|
||||
$new = $this->updateTaskFromRequest($request);
|
||||
|
|
@ -222,7 +222,7 @@ final class ApiController extends Controller
|
|||
private function updateTaskFromRequest(RequestAbstract $request) : Task
|
||||
{
|
||||
/** @var Task $task */
|
||||
$task = TaskMapper::get((int) ($request->getData('id')));
|
||||
$task = TaskMapper::get()->where('id', (int) ($request->getData('id')))->execute();
|
||||
$task->title = (string) ($request->getData('title') ?? $task->title);
|
||||
$task->description = Markdown::parse((string) ($request->getData('plain') ?? $task->descriptionRaw));
|
||||
$task->descriptionRaw = (string) ($request->getData('plain') ?? $task->descriptionRaw);
|
||||
|
|
@ -280,7 +280,7 @@ final class ApiController extends Controller
|
|||
return;
|
||||
}
|
||||
|
||||
$task = TaskMapper::get((int) ($request->getData('task')));
|
||||
$task = TaskMapper::get()->where('id', (int) ($request->getData('task')))->execute();
|
||||
$element = $this->createTaskElementFromRequest($request, $task);
|
||||
$task->setStatus($element->getStatus());
|
||||
$task->setPriority($element->getPriority());
|
||||
|
|
@ -375,7 +375,7 @@ final class ApiController extends Controller
|
|||
public function apiTaskElementGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
/** @var TaskElement $task */
|
||||
$task = TaskElementMapper::get((int) $request->getData('id'));
|
||||
$task = TaskElementMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Task element', 'Task element successfully returned.', $task);
|
||||
}
|
||||
|
||||
|
|
@ -395,7 +395,7 @@ final class ApiController extends Controller
|
|||
public function apiTaskElementSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
/** @var TaskElement $old */
|
||||
$old = clone TaskElementMapper::get((int) $request->getData('id'));
|
||||
$old = clone TaskElementMapper::get()->where('id', (int) $request->getData('id'))->execute();
|
||||
|
||||
/** @var TaskElement $new */
|
||||
$new = $this->updateTaskElementFromRequest($request);
|
||||
|
|
@ -405,7 +405,7 @@ final class ApiController extends Controller
|
|||
|| $old->getPriority() !== $new->getPriority()
|
||||
|| $old->due !== $new->due
|
||||
) {
|
||||
$task = TaskMapper::get($new->task);
|
||||
$task = TaskMapper::get()->where('id', $new->task)->execute();
|
||||
|
||||
$task->setStatus($new->getStatus());
|
||||
$task->setPriority($new->getPriority());
|
||||
|
|
@ -429,7 +429,7 @@ final class ApiController extends Controller
|
|||
private function updateTaskElementFromRequest(RequestAbstract $request) : TaskElement
|
||||
{
|
||||
/** @var TaskElement $element */
|
||||
$element = TaskElementMapper::get((int) ($request->getData('id')));
|
||||
$element = TaskElementMapper::get()->where('id', (int) ($request->getData('id')))->execute();
|
||||
$element->due = $request->getData('due') !== null ? new \DateTime((string) ($request->getData('due'))) : $element->due;
|
||||
$element->setStatus((int) ($request->getData('status') ?? $element->getStatus()));
|
||||
$element->description = Markdown::parse((string) ($request->getData('plain') ?? $element->descriptionRaw));
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ use Modules\Tasks\Views\TaskView;
|
|||
use phpOMS\Account\PermissionType;
|
||||
use phpOMS\Asset\AssetType;
|
||||
use phpOMS\Contract\RenderableInterface;
|
||||
use phpOMS\DataStorage\Database\Query\OrderType;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
|
|
@ -61,23 +62,32 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
$view->setTemplate('/Modules/Tasks/Theme/Backend/task-dashboard');
|
||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1001101001, $request, $response));
|
||||
|
||||
$mapperQuery = TaskMapper::getAnyRelatedToUser($request->header->account)
|
||||
->with('tags')
|
||||
->with('tags/title')
|
||||
->sort('taskElements/createdAt', OrderType::DESC)
|
||||
->limit(25);
|
||||
|
||||
if ($request->getData('ptype') === 'p') {
|
||||
$view->setData('tasks',
|
||||
TaskMapper::with('language', $response->getLanguage())
|
||||
::with('taskElements', models: null)
|
||||
::getAnyBeforePivot($request->header->account, (int) ($request->getData('id') ?? 0), limit: 25)
|
||||
$mapperQuery->with('createdBy')
|
||||
->where('id', (int) ($request->getData('id') ?? 0), '<')
|
||||
->where('tags/title/language', $response->getLanguage())
|
||||
->execute()
|
||||
);
|
||||
} elseif ($request->getData('ptype') === 'n') {
|
||||
$view->setData('tasks',
|
||||
TaskMapper::with('language', $response->getLanguage())
|
||||
::with('taskElements', models: null)
|
||||
::getAnyAfterPivot($request->header->account, (int) ($request->getData('id') ?? 0), limit: 25)
|
||||
$mapperQuery->with('createdBy')
|
||||
->where('id', (int) ($request->getData('id') ?? 0), '>')
|
||||
->where('tags/title/language', $response->getLanguage())
|
||||
->execute()
|
||||
);
|
||||
} else {
|
||||
$view->setData('tasks',
|
||||
TaskMapper::with('language', $response->getLanguage())
|
||||
::with('taskElements', models: null)
|
||||
::getAnyAfterPivot($request->header->account, 0, limit: 25)
|
||||
$mapperQuery->with('createdBy')
|
||||
->where('id', 0, '>')
|
||||
->where('tags/title/language', $response->getLanguage())
|
||||
->execute()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +108,11 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
$taskListView->setTemplate('/Modules/Tasks/Theme/Backend/Components/Tasks/list');
|
||||
$view->addData('tasklist', $taskListView);
|
||||
|
||||
$tasks = TaskMapper::getNewest(5, null, depth: 1);
|
||||
$tasks = TaskMapper::getAnyRelatedToUser($request->header->account)
|
||||
->where('id', 0, '>')
|
||||
->sort('taskElements/createdAt', OrderType::DESC)
|
||||
->limit(5)->execute();
|
||||
|
||||
$view->addData('tasks', $tasks);
|
||||
|
||||
return $view;
|
||||
|
|
@ -136,10 +150,20 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
$head = $response->get('Content')->getData('head');
|
||||
$head->addAsset(AssetType::CSS, 'Modules/Tasks/Theme/Backend/css/styles.css');
|
||||
|
||||
$task = TaskMapper::with('language', $response->getLanguage())::get((int) $request->getData('id'), depth: 4);
|
||||
/** @var Task $task */
|
||||
$task = TaskMapper::get()
|
||||
->with('createdBy')
|
||||
->with('taskElements')
|
||||
->with('taskElements/createdBy')
|
||||
->with('taskElements/media')
|
||||
->with('taskElements/accRelation')
|
||||
->with('taskElements/accRelation/relation')
|
||||
->where('id', (int) $request->getData('id'))
|
||||
->execute();
|
||||
|
||||
$accountId = $request->header->account;
|
||||
|
||||
if (!($task->getCreatedBy()->getId() === $accountId
|
||||
if (!($task->createdBy->getId() === $accountId
|
||||
|| $task->isCCAccount($accountId)
|
||||
|| $task->isToAccount($accountId))
|
||||
&& !$this->app->accountManager->get($accountId)->hasPermission(
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ declare(strict_types=1);
|
|||
namespace Modules\Tasks\Models;
|
||||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
@ -25,7 +25,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
|
|||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class AccountRelationMapper extends DataMapperAbstract
|
||||
final class AccountRelationMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
|
|
@ -33,7 +33,7 @@ final class AccountRelationMapper extends DataMapperAbstract
|
|||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $columns = [
|
||||
public const COLUMNS = [
|
||||
'task_account_id' => ['name' => 'task_account_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'task_account_duty' => ['name' => 'task_account_duty', 'type' => 'int', 'internal' => 'duty'],
|
||||
'task_account_account' => ['name' => 'task_account_account', 'type' => 'int', 'internal' => 'relation'],
|
||||
|
|
@ -46,7 +46,7 @@ final class AccountRelationMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $ownsOne = [
|
||||
public const OWNS_ONE = [
|
||||
'relation' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'external' => 'task_account_account',
|
||||
|
|
@ -59,7 +59,7 @@ final class AccountRelationMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $table = 'task_account';
|
||||
public const TABLE = 'task_account';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
|
|
@ -67,5 +67,5 @@ final class AccountRelationMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $primaryField = 'task_account_id';
|
||||
public const PRIMARYFIELD ='task_account_id';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ declare(strict_types=1);
|
|||
namespace Modules\Tasks\Models;
|
||||
|
||||
use Modules\Admin\Models\GroupMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
@ -25,7 +25,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
|
|||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class GroupRelationMapper extends DataMapperAbstract
|
||||
final class GroupRelationMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
|
|
@ -33,7 +33,7 @@ final class GroupRelationMapper extends DataMapperAbstract
|
|||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $columns = [
|
||||
public const COLUMNS = [
|
||||
'task_group_id' => ['name' => 'task_group_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'task_group_duty' => ['name' => 'task_group_duty', 'type' => 'int', 'internal' => 'duty'],
|
||||
'task_group_group' => ['name' => 'task_group_group', 'type' => 'int', 'internal' => 'relation'],
|
||||
|
|
@ -46,7 +46,7 @@ final class GroupRelationMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $ownsOne = [
|
||||
public const OWNS_ONE = [
|
||||
'relation' => [
|
||||
'mapper' => GroupMapper::class,
|
||||
'external' => 'task_group_group',
|
||||
|
|
@ -59,7 +59,7 @@ final class GroupRelationMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $table = 'task_group';
|
||||
public const TABLE = 'task_group';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
|
|
@ -67,5 +67,5 @@ final class GroupRelationMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $primaryField = 'task_group_id';
|
||||
public const PRIMARYFIELD ='task_group_id';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace Modules\Tasks\Models;
|
|||
|
||||
use Modules\Admin\Models\AccountMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
@ -26,7 +26,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
|
|||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class TaskElementMapper extends DataMapperAbstract
|
||||
final class TaskElementMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
|
|
@ -34,7 +34,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $columns = [
|
||||
public const COLUMNS = [
|
||||
'task_element_id' => ['name' => 'task_element_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'task_element_desc' => ['name' => 'task_element_desc', 'type' => 'string', 'internal' => 'description'],
|
||||
'task_element_desc_raw' => ['name' => 'task_element_desc_raw', 'type' => 'string', 'internal' => 'descriptionRaw'],
|
||||
|
|
@ -52,7 +52,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $hasMany = [
|
||||
public const HAS_MANY = [
|
||||
'media' => [
|
||||
'mapper' => MediaMapper::class,
|
||||
'table' => 'task_element_media',
|
||||
|
|
@ -79,7 +79,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, external:string}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $belongsTo = [
|
||||
public const BELONGS_TO = [
|
||||
'createdBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'external' => 'task_element_created_by',
|
||||
|
|
@ -92,7 +92,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $table = 'task_element';
|
||||
public const TABLE = 'task_element';
|
||||
|
||||
/**
|
||||
* Created at.
|
||||
|
|
@ -100,7 +100,7 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $createdAt = 'task_element_created_at';
|
||||
public const CREATED_AT = 'task_element_created_at';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
|
|
@ -108,5 +108,5 @@ final class TaskElementMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $primaryField = 'task_element_id';
|
||||
public const PRIMARYFIELD ='task_element_id';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ use Modules\Admin\Models\AccountMapper;
|
|||
use Modules\Calendar\Models\ScheduleMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Tag\Models\TagMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use phpOMS\DataStorage\Database\Mapper\ReadMapper;
|
||||
use phpOMS\DataStorage\Database\Query\Builder;
|
||||
use phpOMS\DataStorage\Database\Query\Where;
|
||||
use phpOMS\DataStorage\Database\RelationType;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
@ -31,7 +31,7 @@ use phpOMS\DataStorage\Database\RelationType;
|
|||
* @link https://orange-management.org
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class TaskMapper extends DataMapperAbstract
|
||||
final class TaskMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
|
|
@ -39,7 +39,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $columns = [
|
||||
public const COLUMNS = [
|
||||
'task_id' => ['name' => 'task_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'task_title' => ['name' => 'task_title', 'type' => 'string', 'internal' => 'title'],
|
||||
'task_desc' => ['name' => 'task_desc', 'type' => 'string', 'internal' => 'description'],
|
||||
|
|
@ -65,7 +65,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $hasMany = [
|
||||
public const HAS_MANY = [
|
||||
'taskElements' => [
|
||||
'mapper' => TaskElementMapper::class,
|
||||
'table' => 'task_element',
|
||||
|
|
@ -92,7 +92,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, external:string}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $belongsTo = [
|
||||
public const BELONGS_TO = [
|
||||
'createdBy' => [
|
||||
'mapper' => AccountMapper::class,
|
||||
'external' => 'task_created_by',
|
||||
|
|
@ -105,7 +105,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static array $ownsOne = [
|
||||
public const OWNS_ONE = [
|
||||
'schedule' => [
|
||||
'mapper' => ScheduleMapper::class,
|
||||
'external' => 'task_schedule',
|
||||
|
|
@ -118,7 +118,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $table = 'task';
|
||||
public const TABLE = 'task';
|
||||
|
||||
/**
|
||||
* Created at.
|
||||
|
|
@ -126,7 +126,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $createdAt = 'task_created_at';
|
||||
public const CREATED_AT = 'task_created_at';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
|
|
@ -134,7 +134,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected static string $primaryField = 'task_id';
|
||||
public const PRIMARYFIELD ='task_id';
|
||||
|
||||
/**
|
||||
* Get open tasks by createdBy
|
||||
|
|
@ -147,12 +147,11 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getOpenCreatedBy(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->where(self::$table . '_d' . $depth . '.task_created_by', '=', $user)
|
||||
->where(self::$table . '_d' . $depth . '.task_status', '=', TaskStatus::OPEN);
|
||||
$query->where(self::TABLE . '_d1.task_created_by', '=', $user)
|
||||
->where(self::TABLE . '_d1.task_status', '=', TaskStatus::OPEN);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -166,17 +165,16 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getOpenTo(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(self::$table . '_d' . $depth . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_duty', '=', DutyType::TO);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(self::TABLE . '_d1.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_duty', '=', DutyType::TO);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -190,16 +188,15 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getOpenAny(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(self::$table . '_d' . $depth . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_account', '=', $user);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(self::TABLE . '_d1.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_account', '=', $user);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -213,17 +210,16 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getOpenCC(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(self::$table . '_d' . $depth . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_duty', '=', DutyType::CC);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(self::TABLE . '_d1.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_duty', '=', DutyType::CC);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -237,11 +233,10 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getCreatedBy(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->where(self::$table . '_d' . $depth . '.task_created_by', '=', $user);
|
||||
$query->where(self::TABLE . '_d1.task_created_by', '=', $user);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -255,16 +250,15 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getTo(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_duty', '=', DutyType::TO);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_duty', '=', DutyType::TO);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -278,16 +272,15 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function getCC(int $user) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_duty', '=', DutyType::CC);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_duty', '=', DutyType::CC);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->execute($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -295,109 +288,22 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*
|
||||
* @param int $user User
|
||||
*
|
||||
* @return Task[]
|
||||
* @return ReadMapper
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function getAny(int $user) : array
|
||||
public static function getAnyRelatedToUser(int $user) : ReadMapper
|
||||
{
|
||||
$depth = 3;
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->orWhere(self::$table . '_d' . $depth . '.task_created_by', '=', $user)
|
||||
->orderBy(TaskElementMapper::getTable() . '.' . TaskElementMapper::getCreatedAt(), 'DESC');
|
||||
$query = new Builder(self::$db, true);
|
||||
$query->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.task_id', '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.task_element_id', '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->orWhere(self::TABLE . '_d1.task_created_by', '=', $user)
|
||||
->groupBy(self::PRIMARYFIELD);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tasks that have something to do with the user
|
||||
*
|
||||
* @param int $user User
|
||||
* @param mixed $pivot Pivot
|
||||
* @param string $column Sort column/pivot column
|
||||
* @param int $limit Result limit
|
||||
* @param string $order Order of the elements
|
||||
* @param int $relations Load relations
|
||||
* @param int $depth Relation depth
|
||||
*
|
||||
* @return Task[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function getAnyBeforePivot(
|
||||
int $user,
|
||||
mixed $pivot,
|
||||
string $column = null,
|
||||
int $limit = 50,
|
||||
string $order = 'ASC',
|
||||
int $relations = RelationType::ALL,
|
||||
int $depth = 3
|
||||
) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$userWhere = new Where(self::$db);
|
||||
$userWhere->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->orWhere(self::$table . '_d' . $depth . '.task_created_by', '=', $user);
|
||||
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where($userWhere)
|
||||
->andWhere(static::$table . '_d' . $depth . '.' . ($column !== null ? self::getColumnByMember($column) : static::$primaryField), '<', $pivot)
|
||||
->orderBy(static::$table . '_d' . $depth . '.' . ($column !== null ? self::getColumnByMember($column) : static::$primaryField), $order)
|
||||
->limit($limit);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tasks that have something to do with the user
|
||||
*
|
||||
* @param int $user User
|
||||
* @param mixed $pivot Pivot
|
||||
* @param string $column Sort column/pivot column
|
||||
* @param int $limit Result limit
|
||||
* @param string $order Order of the elements
|
||||
* @param int $relations Load relations
|
||||
* @param int $depth Relation depth
|
||||
*
|
||||
* @return Task[]
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function getAnyAfterPivot(
|
||||
int $user,
|
||||
mixed $pivot,
|
||||
string $column = null,
|
||||
int $limit = 50,
|
||||
string $order = 'ASC',
|
||||
int $relations = RelationType::ALL,
|
||||
int $depth = 3
|
||||
) : array
|
||||
{
|
||||
$depth = 3;
|
||||
$userWhere = new Where(self::$db);
|
||||
$userWhere->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->orWhere(self::$table . '_d' . $depth . '.task_created_by', '=', $user);
|
||||
|
||||
$query = self::getQuery();
|
||||
$query->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.task_id', '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.task_element_id', '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where($userWhere)
|
||||
->andWhere(static::$table . '_d' . $depth . '.' . ($column !== null ? self::getColumnByMember($column) : static::$primaryField), '>', $pivot)
|
||||
->orderBy(static::$table . '_d' . $depth . '.' . ($column !== null ? self::getColumnByMember($column) : static::$primaryField), $order)
|
||||
->limit($limit);
|
||||
|
||||
return self::getAllByQuery($query);
|
||||
return self::getAll()->query($query);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -412,22 +318,21 @@ final class TaskMapper extends DataMapperAbstract
|
|||
*/
|
||||
public static function hasReadingPermission(int $user, int $task) : bool
|
||||
{
|
||||
$depth = 1;
|
||||
$userWhere = new Where(self::$db);
|
||||
$userWhere->where(AccountRelationMapper::getTable() . '.task_account_account', '=', $user)
|
||||
->orWhere(self::$table . '_d' . $depth . '.task_created_by', '=', $user);
|
||||
$userWhere->where(AccountRelationMapper::TABLE . '.task_account_account', '=', $user)
|
||||
->orWhere(self::TABLE . '_d1.task_created_by', '=', $user);
|
||||
|
||||
$query = new Builder(self::$db);
|
||||
$query->selectAs(self::$table . '_d' . $depth . '.' . self::$primaryField, self::$primaryField . '_d' . $depth)
|
||||
->fromAs(self::$table, self::$table . '_d' . $depth)
|
||||
->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '_d' . $depth . '.' . self::$primaryField, '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.' . TaskElementMapper::getPrimaryField(), '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
$query->selectAs(self::TABLE . '_d1.' . self::PRIMARYFIELD, self::PRIMARYFIELD . '_d1')
|
||||
->fromAs(self::TABLE, self::TABLE . '_d1')
|
||||
->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '_d1.' . self::PRIMARYFIELD, '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.' . TaskElementMapper::PRIMARYFIELD, '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where($userWhere)
|
||||
->andWhere(self::$table . '_d' . $depth . '.' . self::$primaryField, '=', $task);
|
||||
->andWhere(self::TABLE . '_d1.' . self::PRIMARYFIELD, '=', $task);
|
||||
|
||||
return !empty(self::getAllByQuery($query, RelationType::ALL, 1));
|
||||
return !empty($query->execute()->fetchAll());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -444,14 +349,14 @@ final class TaskMapper extends DataMapperAbstract
|
|||
try {
|
||||
$query = new Builder(self::$db);
|
||||
|
||||
$query->count('DISTINCT ' . self::$table . '.' . self::$primaryField)
|
||||
->from(self::$table)
|
||||
->innerJoin(TaskElementMapper::getTable())
|
||||
->on(self::$table . '.' . self::$primaryField, '=', TaskElementMapper::getTable() . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::getTable())
|
||||
->on(TaskElementMapper::getTable() . '.' . TaskElementMapper::getPrimaryField(), '=', AccountRelationMapper::getTable() . '.task_account_task_element')
|
||||
->where(self::$table . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::getTable() . '.task_account_account', '=', $user);
|
||||
$query->count('DISTINCT ' . self::TABLE . '.' . self::PRIMARYFIELD)
|
||||
->from(self::TABLE)
|
||||
->innerJoin(TaskElementMapper::TABLE)
|
||||
->on(self::TABLE . '.' . self::PRIMARYFIELD, '=', TaskElementMapper::TABLE . '.task_element_task')
|
||||
->innerJoin(AccountRelationMapper::TABLE)
|
||||
->on(TaskElementMapper::TABLE . '.' . TaskElementMapper::PRIMARYFIELD, '=', AccountRelationMapper::TABLE . '.task_account_task_element')
|
||||
->where(self::TABLE . '.task_status', '=', TaskStatus::OPEN)
|
||||
->andWhere(AccountRelationMapper::TABLE . '.task_account_account', '=', $user);
|
||||
|
||||
$sth = self::$db->con->prepare($query->toSql());
|
||||
$sth->execute();
|
||||
|
|
|
|||
|
|
@ -67,7 +67,10 @@ class TaskView extends View
|
|||
*/
|
||||
public function getAccountImage(int $account) : string
|
||||
{
|
||||
$profile = ProfileMapper::getFor($account, 'account');
|
||||
$profile = ProfileMapper::get()
|
||||
->with('image')
|
||||
->where('account', $account)
|
||||
->execute();
|
||||
|
||||
if (($profile instanceof NullProfile) || $profile->image->getPath() === '') {
|
||||
return UriFactory::build('{/prefix}' . $this->defaultProfileImage->getPath());
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ require_once __DIR__ . '/../vendor/autoload.php';
|
|||
require_once __DIR__ . '/Autoloader.php';
|
||||
|
||||
use phpOMS\DataStorage\Database\DatabasePool;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use phpOMS\DataStorage\Session\HttpSession;
|
||||
|
||||
$CONFIG = [
|
||||
|
|
@ -329,7 +329,7 @@ $GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete'])
|
|||
$GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']);
|
||||
$GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']);
|
||||
|
||||
DataMapperAbstract::setConnection($GLOBALS['dbpool']->get());
|
||||
DataMapperFactory::db($GLOBALS['dbpool']->get());
|
||||
|
||||
$GLOBALS['frameworkpath'] = '/phpOMS/';
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ use Modules\Tasks\Models\TaskElement;
|
|||
use Modules\Tasks\Models\TaskMapper;
|
||||
use Modules\Tasks\Models\TaskPriority;
|
||||
use Modules\Tasks\Models\TaskStatus;
|
||||
use phpOMS\DataStorage\Database\Query\OrderType;
|
||||
use phpOMS\Utils\RnG\Text;
|
||||
|
||||
/**
|
||||
|
|
@ -93,11 +94,20 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase
|
|||
$media->name = 'Task Media';
|
||||
$task->addMedia($media);
|
||||
|
||||
$id = TaskMapper::create($task);
|
||||
$id = TaskMapper::create()->execute($task);
|
||||
self::assertGreaterThan(0, $task->getId());
|
||||
self::assertEquals($id, $task->getId());
|
||||
|
||||
$taskR = TaskMapper::get($task->getId());
|
||||
$taskR = TaskMapper::get()
|
||||
->with('media')
|
||||
->with('taskElements')
|
||||
->with('taskElements/media')
|
||||
->with('taskElements/accRelation')
|
||||
->with('taskElements/accRelation/relation')
|
||||
->with('taskElements/grpRelation')
|
||||
->with('taskElements/grpRelation/relation')
|
||||
->where('id', $task->getId())
|
||||
->execute();
|
||||
self::assertEquals($task->createdAt->format('Y-m-d'), $taskR->createdAt->format('Y-m-d'));
|
||||
self::assertEquals($task->start->format('Y-m-d'), $taskR->start->format('Y-m-d'));
|
||||
self::assertEquals($task->getCreatedBy()->getId(), $taskR->getCreatedBy()->getId());
|
||||
|
|
@ -139,7 +149,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase
|
|||
*/
|
||||
public function testNewest() : void
|
||||
{
|
||||
$newest = TaskMapper::getNewest(1);
|
||||
$newest = TaskMapper::getAll()->sort('id', OrderType::DESC)->limit(1)->execute();
|
||||
|
||||
self::assertCount(1, $newest);
|
||||
}
|
||||
|
|
@ -179,7 +189,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase
|
|||
$taskElement2->setStatus($status);
|
||||
$task->addElement($taskElement2);
|
||||
|
||||
$id = TaskMapper::create($task);
|
||||
$id = TaskMapper::create()->execute($task);
|
||||
}
|
||||
|
||||
self::assertGreaterThan(0, TaskMapper::countUnread(1));
|
||||
|
|
@ -220,7 +230,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase
|
|||
$taskElement2->setStatus($status);
|
||||
$task->addElement($taskElement2);
|
||||
|
||||
$id = TaskMapper::create($task);
|
||||
$id = TaskMapper::create()->execute($task);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -259,7 +269,7 @@ final class TaskMapperTest extends \PHPUnit\Framework\TestCase
|
|||
$taskElement2->setStatus($status);
|
||||
$task->addElement($taskElement2);
|
||||
|
||||
$id = TaskMapper::create($task);
|
||||
$id = TaskMapper::create()->execute($task);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user