This commit is contained in:
2025-06-18 14:50:18 +03:00
parent a64ed080bb
commit 4c716a8a8c
160 changed files with 6786 additions and 23 deletions

View File

@ -0,0 +1,118 @@
<?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();
}
}