diff --git a/Models/Project.php b/Models/Project.php index 6ff86f3..1742156 100644 --- a/Models/Project.php +++ b/Models/Project.php @@ -14,6 +14,8 @@ declare(strict_types=1); namespace Modules\ProjectManagement\Models; +use Modules\Admin\Models\Account; +use Modules\Admin\Models\NullAccount; use Modules\Calendar\Models\Calendar; use Modules\Media\Models\Media; use Modules\Media\Models\NullMedia; @@ -161,10 +163,10 @@ class Project /** * Created by. * - * @var int|\Modules\Admin\Models\Account + * @var Account * @since 1.0.0 */ - private $createdBy = 0; + private Account $createdBy; /** * Tasks. @@ -189,6 +191,7 @@ class Project $this->endEstimated = clone $this->end; $this->createdAt = new \DateTime('now'); + $this->createdBy = new NullAccount(); $this->calendar = new Calendar(); @@ -704,11 +707,11 @@ class Project /** * Get created by * - * @return int|\Modules\Admin\Models\Account + * @return Account * * @since 1.0.0 */ - public function getCreatedBy() + public function getCreatedBy() : Account { return $this->createdBy; } @@ -716,11 +719,11 @@ class Project /** * Set created by * - * @param int $createdBy Creator + * @param Account $createdBy Creator * * @since 1.0.0 */ - public function setCreatedBy(int $createdBy) : void + public function setCreatedBy(Account $createdBy) : void { $this->createdBy = $createdBy; } diff --git a/Models/ProjectMapper.php b/Models/ProjectMapper.php index da4d4ec..3df4a1f 100644 --- a/Models/ProjectMapper.php +++ b/Models/ProjectMapper.php @@ -14,6 +14,7 @@ declare(strict_types=1); namespace Modules\ProjectManagement\Models; +use Modules\Admin\Models\AccountMapper; use Modules\Calendar\Models\CalendarMapper; use Modules\Media\Models\MediaMapper; use Modules\Tasks\Models\TaskMapper; @@ -50,7 +51,7 @@ final class ProjectMapper extends DataMapperAbstract 'projectmanagement_project_endestimated' => ['name' => 'projectmanagement_project_endestimated', 'type' => 'DateTime', 'internal' => 'endEstimated'], 'projectmanagement_project_progress' => ['name' => 'projectmanagement_project_progress', 'type' => 'int', 'internal' => 'progress'], 'projectmanagement_project_progress_type' => ['name' => 'projectmanagement_project_progress_type', 'type' => 'int', 'internal' => 'progressType'], - 'projectmanagement_project_created_by' => ['name' => 'projectmanagement_project_created_by', 'type' => 'int', 'internal' => 'createdBy'], + 'projectmanagement_project_created_by' => ['name' => 'projectmanagement_project_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true], 'projectmanagement_project_created_at' => ['name' => 'projectmanagement_project_created_at', 'type' => 'DateTime', 'internal' => 'createdAt', 'readonly' => true], ]; @@ -88,6 +89,19 @@ final class ProjectMapper extends DataMapperAbstract ], ]; + /** + * Belongs to. + * + * @var array + * @since 1.0.0 + */ + protected static array $belongsTo = [ + 'createdBy' => [ + 'mapper' => AccountMapper::class, + 'self' => 'projectmanagement_project_created_by', + ], + ]; + /** * Primary table. *