97 خطوط
2.4 KiB
PHP
97 خطوط
2.4 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;
|
|
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
|
|
|
class Meeting extends Model
|
|
{
|
|
protected $fillable = [
|
|
'title', 'project_id', 'sprint_id', 'meeting_type_id', 'date', 'start_time',
|
|
'end_time', 'location', 'meeting_link', 'meeting_type', 'status', 'objective',
|
|
'agenda', 'notes', 'summary', 'decisions', 'reminder_minutes', 'recurrence_rule',
|
|
'started_at', 'completed_at', 'created_by', 'owner_id', 'facilitator_id',
|
|
];
|
|
|
|
protected $casts = [
|
|
'date' => 'date',
|
|
'recurrence_rule' => 'array',
|
|
'started_at' => 'datetime',
|
|
'completed_at' => 'datetime',
|
|
];
|
|
|
|
public function project(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Project::class);
|
|
}
|
|
|
|
public function creator(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'created_by');
|
|
}
|
|
|
|
public function sprint(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Sprint::class);
|
|
}
|
|
|
|
public function type(): BelongsTo
|
|
{
|
|
return $this->belongsTo(MeetingType::class, 'meeting_type_id');
|
|
}
|
|
|
|
public function owner(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'owner_id');
|
|
}
|
|
|
|
public function facilitator(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'facilitator_id');
|
|
}
|
|
|
|
public function participants(): BelongsToMany
|
|
{
|
|
return $this->belongsToMany(User::class, 'meeting_user')->withTimestamps();
|
|
}
|
|
|
|
public function actionItems(): HasMany
|
|
{
|
|
return $this->hasMany(MeetingActionItem::class);
|
|
}
|
|
|
|
public function structuredActionItems(): HasMany
|
|
{
|
|
return $this->hasMany(ActionItem::class);
|
|
}
|
|
|
|
public function structuredDecisions(): HasMany
|
|
{
|
|
return $this->hasMany(Decision::class);
|
|
}
|
|
|
|
public function blockers(): HasMany
|
|
{
|
|
return $this->hasMany(Blocker::class);
|
|
}
|
|
|
|
public function effectivenessReviews(): HasMany
|
|
{
|
|
return $this->hasMany(MeetingEffectivenessReview::class);
|
|
}
|
|
|
|
public function comments(): MorphMany
|
|
{
|
|
return $this->morphMany(Comment::class, 'commentable');
|
|
}
|
|
|
|
public function files(): MorphMany
|
|
{
|
|
return $this->morphMany(File::class, 'fileable');
|
|
}
|
|
}
|