118 lines
3.3 KiB
PHP
118 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace kernel\app_modules\gestalt_profile\models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use kernel\app_modules\gestalt_profile_relationship\models\GestaltProfileRelationship;
|
|
|
|
// Добавить @property
|
|
/**
|
|
* @property int $id
|
|
* @property int $status
|
|
* @property int $show_on_main
|
|
* @property int $user_id
|
|
* @property string $fio
|
|
* @property string $phone
|
|
* @property string $email
|
|
* @property string $city
|
|
* @property string $photo
|
|
* @property string $community_status
|
|
* @property string $specialization
|
|
* @property string $description_of_professional_activity
|
|
* @property string $past_events
|
|
* @property string $upcoming_events
|
|
* @property string $under_curation_events
|
|
* @property array $communityStatusArr
|
|
* @property array $specializationArr
|
|
*/
|
|
class Gestalt_profile extends Model
|
|
{
|
|
const DISABLE_STATUS = 0;
|
|
const ACTIVE_STATUS = 1;
|
|
|
|
const DONT_SHOW_ON_MAIN = 0;
|
|
|
|
const SHOW_ON_MAIN = 1;
|
|
|
|
protected $table = 'gestalt_profile';
|
|
|
|
protected $fillable = [
|
|
'user_id',
|
|
'fio',
|
|
'phone',
|
|
'email',
|
|
'city',
|
|
'photo',
|
|
'community_status',
|
|
'specialization',
|
|
'description_of_professional_activity',
|
|
'past_events',
|
|
'upcoming_events',
|
|
'under_curation_events',
|
|
'status',
|
|
'show_on_main',
|
|
];
|
|
|
|
public static function labels(): array
|
|
{
|
|
return [
|
|
'user_id' => 'Пользователь',
|
|
'fio' => 'ФИО',
|
|
'phone' => 'Телефон',
|
|
'email' => 'Почта',
|
|
'city' => 'Город',
|
|
'photo' => 'Фото',
|
|
'community_status' => 'Статус в сообществе',
|
|
'specialization' => 'Специализация',
|
|
'description_of_professional_activity' => 'Описание профессиональной деятельности',
|
|
'past_events' => 'Прошедшие мероприятия',
|
|
'upcoming_events' => 'Будущие мероприятия',
|
|
'under_curation_events' => 'Под руководством специалиста',
|
|
'status' => 'Статус',
|
|
'show_on_main' => 'Показать на главной',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return string[]
|
|
*/
|
|
public static function getStatus(): array
|
|
{
|
|
return [
|
|
self::DISABLE_STATUS => "Не активный",
|
|
self::ACTIVE_STATUS => "Активный",
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return string[]
|
|
*/
|
|
public static function getShowOnMain(): array
|
|
{
|
|
return [
|
|
self::DONT_SHOW_ON_MAIN => "Не показывать",
|
|
self::SHOW_ON_MAIN => "Показывать",
|
|
];
|
|
}
|
|
|
|
public function relationships(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
{
|
|
return $this->hasMany(GestaltProfileRelationship::class, 'gestalt_profile_id');
|
|
}
|
|
|
|
public function getCommunityStatusArrAttribute(): array
|
|
{
|
|
return array_filter(explode(", ", $this->community_status));
|
|
}
|
|
|
|
public function getSpecializationArrAttribute(): array
|
|
{
|
|
return array_filter(explode(", ", $this->specialization));
|
|
}
|
|
|
|
public static function getCountProfiles()
|
|
{
|
|
return self::count();
|
|
}
|
|
|
|
} |