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){ return array_filter($eventRegistrations, EventRegistration::class.'::isActive' ); } /** * @param EventRegistration[] $eventRegistrations */ public static function filterForCustomer($eventRegistrations,$idCustomer){ $result = []; foreach ($eventRegistrations as $eventRegistration){ if ( EventRegistration::isForCustomer($eventRegistration,$idCustomer)){ $result[] = $eventRegistration; } } return $result; } }