ldc-supportweb/app/Models/Schedule.php
2023-08-14 09:23:39 +00:00

80 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use App\Enums\Planning\ActivityTypeEnum;
use App\Enums\Planning\CellModelEnum;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* @property User $user_id
* @property date $date
* @property integer $slot
* @property ActivityTypeEnum $activity
* @property string $description
* @property Ticket|Site|Projet $id_lie
* @property CellModelEnum $model_lie
*/
class Schedule extends Model
{
use HasFactory;
/**
* The attributes that are fillable.
*
* @var array
*/
protected $fillable = [
'user_id',
'date',
'slot',
'activity',
'description',
'id_lie',
'model_lie'
];
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'date' => 'date',
'activity' => ActivityTypeEnum::class,
'model_lie' => CellModelEnum::class
];
// * RELATIONSHIPS
/**
* BelongsTo User relation
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
/**
* Relationship to linked objet
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function relatedModel()
{
switch ($this->model_lie->value) {
case 'sites':
return $this->belongsTo(Site::class, 'id_lie');
case 'projects':
return $this->belongsTo(Project::class, 'id_lie');
case 'tickets':
return $this->belongsTo(Ticket::class, 'id_lie');
default:
return new BelongsTo($this->newQuery(), $this, '', '', '');
}
}
}