setDateAdded(new \DateTime()); } public static function loadMetadata(ORM\ClassMetadata $metadata): void { $builder = new ClassMetadataBuilder($metadata); $builder->setTable('lead_event_log') ->setCustomRepositoryClass(LeadEventLogRepository::class) ->addIndex(['lead_id'], 'lead_id_index') ->addIndex(['object', 'object_id'], 'lead_object_index') ->addIndex(['bundle', 'object', 'action', 'object_id'], 'lead_timeline_index') ->addIndex(['bundle', 'object', 'action', 'object_id', 'date_added'], self::INDEX_SEARCH) ->addIndex(['action'], 'lead_timeline_action_index') ->addIndex(['date_added'], 'lead_date_added_index') ->addBigIntIdField() ->addNullableField('userId', Types::INTEGER, 'user_id') ->addNullableField('userName', Types::STRING, 'user_name') ->addNullableField('bundle', Types::STRING) ->addNullableField('object', Types::STRING) ->addNullableField('action', Types::STRING) ->addNullableField('objectId', Types::INTEGER, 'object_id') ->addNamedField('dateAdded', Types::DATETIME_MUTABLE, 'date_added') ->addNullableField('properties', Types::JSON); $builder->createManyToOne('lead', Lead::class) ->addJoinColumn('lead_id', 'id', true, false, 'CASCADE') ->inversedBy('eventLog') ->build(); } /** * Prepares the metadata for API usage. */ public static function loadApiMetadata(ApiMetadataDriver $metadata): void { $metadata->setGroupPrefix('import') ->addListProperties( [ 'id', 'leadId', 'userId', 'userName', 'bundle', 'object', 'action', 'objectId', 'dateAdded', 'properties', ] ) ->build(); } /** * Get id. */ public function getId(): int { return (int) $this->id; } /** * Set lead. * * @return LeadEventLog */ public function setLead(Lead $lead) { $this->lead = $lead; return $this; } /** * Get lead. * * @return Lead|null */ public function getLead() { return $this->lead; } /** * Set userId. * * @param int $userId * * @return LeadEventLog */ public function setUserId($userId) { $this->userId = $userId; return $this; } /** * Get userId. * * @return int */ public function getUserId() { return $this->userId; } /** * Set object. * * @param string $object * * @return LeadEventLog */ public function setObject($object) { $this->object = $object; return $this; } /** * Get object. * * @return string */ public function getObject() { return $this->object; } /** * Set objectId. * * @param int $objectId * * @return LeadEventLog */ public function setObjectId($objectId) { $this->objectId = $objectId; return $this; } /** * Get objectId. * * @return int */ public function getObjectId() { return $this->objectId; } /** * Set action. * * @param string $action * * @return LeadEventLog */ public function setAction($action) { $this->action = $action; return $this; } /** * Get action. * * @return string */ public function getAction() { return $this->action; } /** * Set properties. * * @return LeadEventLog */ public function setProperties(array $properties) { $this->properties = $properties; return $this; } /** * Set one property into the properties array. * * @param string $key * @param string $value * * @return LeadEventLog */ public function addProperty($key, $value) { $this->properties[$key] = $value; return $this; } /** * Get properties. * * @return array */ public function getProperties() { return $this->properties; } /** * Set dateAdded. * * @param \DateTime $dateAdded * * @return LeadEventLog */ public function setDateAdded($dateAdded) { $this->dateAdded = $dateAdded; return $this; } /** * Get dateAdded. * * @return \DateTimeInterface */ public function getDateAdded() { return $this->dateAdded; } /** * Set bundle. * * @param string $bundle * * @return LeadEventLog */ public function setBundle($bundle) { $this->bundle = $bundle; return $this; } /** * Get bundle. * * @return string */ public function getBundle() { return $this->bundle; } /** * Set userName. * * @param string $userName * * @return LeadEventLog */ public function setUserName($userName) { $this->userName = $userName; return $this; } /** * Get userName. * * @return string */ public function getUserName() { return $this->userName; } }