diff --git a/Admin/Installer.php b/Admin/Installer.php index 6fe7cf9..b188478 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -51,14 +51,18 @@ class Installer extends InstallerAbstract `eventmanagement_event_costs` int(11) NOT NULL, `eventmanagement_event_budget` int(11) NOT NULL, `eventmanagement_event_earnings` int(11) NOT NULL, + `eventmanagement_event_created_by` int(11) NOT NULL, + `eventmanagement_event_created_at` datetime NOT NULL, PRIMARY KEY (`eventmanagement_event_id`), - KEY `eventmanagement_event_event` (`eventmanagement_event_event`) + KEY `eventmanagement_event_event` (`eventmanagement_event_event`), + KEY `eventmanagement_event_created_by` (`eventmanagement_event_created_by`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' )->execute(); $dbPool->get('core')->con->prepare( 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'eventmanagement_event` - ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'eventmanagement_event_ibfk_1` FOREIGN KEY (`eventmanagement_event_event`) REFERENCES `' . $dbPool->get('core')->prefix . 'calendar_event` (`calendar_event_id`);' + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'eventmanagement_event_ibfk_1` FOREIGN KEY (`eventmanagement_event_event`) REFERENCES `' . $dbPool->get('core')->prefix . 'calendar_event` (`calendar_event_id`), + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'eventmanagement_event_ibfk_2` FOREIGN KEY (`eventmanagement_event_created_by`) REFERENCES `' . $dbPool->get('core')->prefix . 'account_id` (`calendar_event_created_by`);' )->execute(); $dbPool->get('core')->con->prepare( diff --git a/Models/Event.php b/Models/Event.php index a9d15e9..62a5de5 100644 --- a/Models/Event.php +++ b/Models/Event.php @@ -44,8 +44,6 @@ class Event private $type = EventType::DEFAULT; - private $name = ''; - private $event = null; private $costs = null; @@ -56,12 +54,29 @@ class Event private $tasks = []; + /** + * Created. + * + * @var \Datetime + * @since 1.0.0 + */ + private $createdAt = null; + + /** + * Creator. + * + * @var int + * @since 1.0.0 + */ + private $createdBy = 0; + public function __construct(string $name = '') { $this->event = new CalendarEvent(); $this->costs = new Money(); $this->budget = new Money(); $this->earnings = new Money(); + $this->createdAt = new \DateTime('now'); $this->setName($name); } @@ -73,13 +88,12 @@ class Event public function setName(string $name) { - $this->name = $name; $this->event->setName($name); } public function getName() : string { - return $this->name; + return $this->event->getName(); } public function addTask(Task $task) @@ -165,4 +179,50 @@ class Event { $this->earnings = $earnings; } + + /** + * @return \DateTime + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getCreatedAt() : \DateTime + { + return $this->createdAt; + } + + /** + * @param \DateTime $createdAt Event created at + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function setCreatedAt(\DateTime $createdAt) + { + $this->createdAt = $createdAt; + $this->event->setCreatedAt($this->createdAt); + } + + /** + * @return int + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function getCreatedBy() : int + { + return $this->createdBy; + } + + /** + * @param int $createdBy Creator + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public function setCreatedBy(int $createdBy) + { + $this->createdBy = $createdBy; + $this->event->setCreatedBy($this->createdBy); + } } diff --git a/Models/EventMapper.php b/Models/EventMapper.php index 355e385..288a005 100644 --- a/Models/EventMapper.php +++ b/Models/EventMapper.php @@ -46,6 +46,8 @@ class EventMapper extends DataMapperAbstract 'eventmanagement_event_costs' => ['name' => 'eventmanagement_event_costs', 'type' => 'Serializable', 'internal' => 'costs'], 'eventmanagement_event_budget' => ['name' => 'eventmanagement_event_budget', 'type' => 'Serializable', 'internal' => 'budget'], 'eventmanagement_event_earnings' => ['name' => 'eventmanagement_event_earnings', 'type' => 'Serializable', 'internal' => 'earnings'], + 'eventmanagement_event_created_by' => ['name' => 'eventmanagement_event_created_by', 'type' => 'int', 'internal' => 'createdBy'], + 'eventmanagement_event_created_at' => ['name' => 'eventmanagement_event_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'], ]; /** @@ -68,13 +70,6 @@ class EventMapper extends DataMapperAbstract * @since 1.0.0 */ protected static $hasMany = [ - 'sources' => [ - 'mapper' => \Modules\Tasks\Models\TaskMapper::class, /* mapper of the related object */ - 'relationmapper' => null, /* if the relation itself is a more complex object that has it's own mapper */ - 'table' => 'eventmanager_task_relation', /* table of the related object, null if no relation table is used (many->1) */ - 'dst' => 'eventmanager_task_relation_dst', - 'src' => 'eventmanager_task_relation_src', - ], ]; /** @@ -85,10 +80,26 @@ class EventMapper extends DataMapperAbstract */ protected static $table = 'eventmanagement_event'; + /** + * Created at. + * + * @var string + * @since 1.0.0 + */ + protected static $createdAt = 'eventmanagement_event_created_at'; + + /** + * Primary field name. + * + * @var string + * @since 1.0.0 + */ + protected static $primaryField = 'eventmanagement_event_id'; + /** * Create media. * - * @param Event $obj Media + * @param Event $obj Obj * * @return bool * @@ -99,22 +110,23 @@ class EventMapper extends DataMapperAbstract { try { $objId = parent::create($obj); + $query = new Builder($this->db); $query->prefix($this->db->getPrefix()) - ->insert( - 'account_permission_account', - 'account_permission_from', - 'account_permission_for', - 'account_permission_id1', - 'account_permission_id2', - 'account_permission_r', - 'account_permission_w', - 'account_permission_m', - 'account_permission_d', - 'account_permission_p' - ) - ->into('account_permission') - ->values($obj->getCreatedBy(), 'calendar_event', 'calendar_event', 1, $objId, 1, 1, 1, 1, 1); + ->insert( + 'account_permission_account', + 'account_permission_from', + 'account_permission_for', + 'account_permission_id1', + 'account_permission_id2', + 'account_permission_r', + 'account_permission_w', + 'account_permission_m', + 'account_permission_d', + 'account_permission_p' + ) + ->into('account_permission') + ->values($obj->getCreatedBy(), 'eventmanagement_event', 'eventmanagement_event', 1, $objId, 1, 1, 1, 1, 1); $this->db->con->prepare($query->toSql())->execute(); } catch (\Exception $e) {