File: /www/wwwroot/erp.nhatnamsst.com/domains/Admin/Models/Team.php
<?php
namespace Domains\Admin\Models;
use Domains\Core\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Team extends Model
{
use HasFactory, ModelTrait;
protected $fillable = [
'name',
'type',
'leader_id',
'description',
];
/**
* Get the leader (LEADER_SALE or LEADER_INTER)
*/
public function leader(): BelongsTo
{
return $this->belongsTo(Admin::class, 'leader_id');
}
/**
* Get team members (SALE or INTER)
*/
public function members(): BelongsToMany
{
return $this->belongsToMany(Admin::class, 'team_members', 'team_id', 'admin_id')
->withTimestamps();
}
/**
* Get all admins in this team (leader + members)
*/
public function getAllMembers()
{
$members = $this->members;
$leader = $this->leader;
return $members->push($leader)->unique('id');
}
/**
* Get member IDs including leader
*/
public function getMemberIds(): array
{
$memberIds = $this->members->pluck('id')->toArray();
$memberIds[] = $this->leader_id;
return array_unique($memberIds);
}
}