PM_Console/backend/app/Models/Task.php

71 خطوط
1.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany;
class Task extends Model
{
protected $fillable = [
'title', 'description', 'project_id', 'assignee_id', 'reporter_id',
'priority', 'status', 'blocker_type', 'blocker_note', 'start_date', 'due_date', 'estimated_time',
'actual_time', 'tags', 'sort_order', 'created_by'
];
protected $casts = [
'tags' => 'array',
'start_date' => 'date',
'due_date' => 'date',
'estimated_time' => 'decimal:2',
'actual_time' => 'decimal:2',
];
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
public function assignee(): BelongsTo
{
return $this->belongsTo(User::class, 'assignee_id');
}
public function reporter(): BelongsTo
{
return $this->belongsTo(User::class, 'reporter_id');
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function checklists(): HasMany
{
return $this->hasMany(Checklist::class);
}
public function subtasks(): HasMany
{
return $this->hasMany(Subtask::class);
}
public function comments(): MorphMany
{
return $this->morphMany(Comment::class, 'commentable');
}
public function files(): MorphMany
{
return $this->morphMany(File::class, 'fileable');
}
public function sprints()
{
return $this->belongsToMany(Sprint::class, 'sprint_task')->withTimestamps();
}
}