PM_Console/backend/app/Models/Meeting.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');
}
}