Yii::t('event-registration', 'ID'), 'id_event' => Yii::t('event-registration', 'Id Event'), 'id_customer' => Yii::t('event-registration', 'Id Customer'), 'created_at' => Yii::t('event-registration', 'Created At'), 'updated_at' => Yii::t('event-registration', 'Updated At'), 'canceled_at' => Yii::t('event-registration', 'Canceled At'), 'deleted_at' => Yii::t('event-registration', 'Deleted At'), ]; } public function behaviors() { return ArrayHelper::merge([ [ 'class' => TimestampBehavior::className(), 'value' => function () { return date('Y-m-d H:i:s'); } ] ], parent::behaviors()); } public function getEvent() { return $this->hasOne($this->getEventClass(), ['id' => 'id_event']); } public function getCustomer() { return $this->hasOne($this->getCustomerClass(), ['id' => 'id_customer']); } public function getEventClass() { return Event::class; } public function getCustomerClass() { return Customer::class; } /** * @param EventRegistration $eventRegistration */ public static function isActive($eventRegistration) { if (!isset($eventRegistration)) { return false; } if (isset($eventRegistration->canceled_at)) { return false; } if (isset($eventRegistration->deleted_at)) { return false; } return true; } /** * @param EventRegistration $eventRegistration */ public static function isForCustomer($eventRegistration, $idCustomer) { if (!isset($eventRegistration)) { return false; } if (!isset($eventRegistration->id_customer)) { return false; } return $eventRegistration->id_customer == $idCustomer; } /** * @param EventRegistration[] $eventRegistrations */ public static function filterActive($eventRegistrations) { if (!isset($eventRegistrations)) { return []; } return array_filter($eventRegistrations, EventRegistration::class . '::isActive'); } /** * @param EventRegistration[] $eventRegistrations */ public static function filterForCustomer($eventRegistrations, $idCustomer) { $result = []; if (isset($eventRegistrations)) { foreach ($eventRegistrations as $eventRegistration) { if (EventRegistration::isForCustomer($eventRegistration, $idCustomer)) { $result[] = $eventRegistration; } } } return $result; } }