'Vue', // 11 => 'Laravel', // ]; const PRIORITY = [ 10 => 'High', 11 => 'Meduim', 12 => 'Low', ]; protected $casts = [ 'assigned_id' => 'json', ]; protected function statusName(): Attribute { return Attribute::make( get: function (mixed $value, array $attributes) { $kanbanColumn = KanbanColumn::where('id',$attributes['status'])->first(); return collect([ 'status' => $kanbanColumn->name ?? 'N/A', 'color' => $kanbanColumn->name ?? '#808080' ]); }, set: fn($value) => $value, ); } protected function priorityStatus(): Attribute { return Attribute::make( get: function (mixed $value, array $attributes) { switch ($attributes['priority']) { case '10': return '' . self::PRIORITY[$attributes['priority']] . ''; case '11': return '' . self::PRIORITY[$attributes['priority']] . ''; case '12': return '' . self::PRIORITY[$attributes['priority']] . ''; default: # code... break; } }, set: fn($value) => $value, ); } public function product() { return $this->belongsTo(Product::class, 'product_id'); } public function subTask() { return $this->hasMany(Task::class, 'parent_id'); } public function taskTime() { return $this->hasMany(TaskTime::class, 'task_id'); } public function latest_task_time() { return $this->hasOne(TaskTime::class, 'task_id')->latestOfMany(); } public function assignedUser() { return $this->belongsToJson(Employee::class, 'assigned_id->ids'); } public function taskCategory() { return $this->belongsTo(TaskCategory::class, 'task_category_id'); } public function documents(): MorphMany { return $this->morphMany(Document::class, 'documentable'); } public function comments() { return $this->morphMany(Comment::class, 'commentable'); } public function column() { return $this->belongsTo(KanbanColumn::class, 'status'); } }