68 خطوط
1.7 KiB
PHP
68 خطوط
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
|
|
class Project extends Model
|
|
{
|
|
protected $fillable = [
|
|
'title', 'description', 'client', 'project_manager_id', 'department_id', 'start_date', 'end_date',
|
|
'priority', 'status', 'progress', 'risk_level', 'budget', 'estimated_hours',
|
|
'actual_hours', 'tags', 'notes', 'is_archived', 'created_by',
|
|
];
|
|
|
|
protected $casts = [
|
|
'tags' => 'array',
|
|
'start_date' => 'date',
|
|
'end_date' => 'date',
|
|
'is_archived' => 'boolean',
|
|
'budget' => 'decimal:2',
|
|
'estimated_hours' => 'decimal:2',
|
|
'actual_hours' => 'decimal:2',
|
|
];
|
|
|
|
public function projectManager(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'project_manager_id');
|
|
}
|
|
|
|
public function department(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Department::class);
|
|
}
|
|
|
|
public function creator(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'created_by');
|
|
}
|
|
|
|
public function members(): BelongsToMany
|
|
{
|
|
return $this->belongsToMany(User::class, 'project_user')->withPivot('role_in_project')->withTimestamps();
|
|
}
|
|
|
|
public function tasks(): HasMany
|
|
{
|
|
return $this->hasMany(Task::class);
|
|
}
|
|
|
|
public function sprints(): HasMany
|
|
{
|
|
return $this->hasMany(Sprint::class);
|
|
}
|
|
|
|
public function meetings(): HasMany
|
|
{
|
|
return $this->hasMany(Meeting::class);
|
|
}
|
|
|
|
public function backlogItems(): HasMany
|
|
{
|
|
return $this->hasMany(BacklogItem::class);
|
|
}
|
|
}
|