Files
a.montask/app/Models/Tasks.php
T
2026-04-25 19:45:15 +00:00

131 lines
3.1 KiB
PHP
Executable File

<?php
namespace App\Models;
use Illuminate\Console\View\Components\Task;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\SoftDeletes;
class Tasks extends Model
{
use HasFactory,SoftDeletes;
protected $table = 'tasks';
protected $fillable = [
'task_id',
'title',
'description',
'assignees',
'start_date',
'target_date',
'priority',
'description_html',
'completed_at',
'state',
'json',
'created_at',
'updated_at',
'deleted_at',
'created_by',
'updated_by',
'deleted_by',
'id',
'app',
'task_type',
'user_id',
];
protected $STATE = [
1=>'Backlog',
2=>'To Do',
3=>'In Progress',
4=>'Done',
];
protected $state_fa = [
1=>'انباشته',
2=>'برای انجام',
3=>'درحال انجام',
4=>'پایان یافته',
];
public function getStateFaAttribute()
{
return $this->state_fa[$this->state] ?? 'نامشخص';
}
public function user(){
return $this->belongsTo(User::class);
}
public function appName(){
return $this->belongsTo(App::class, 'app' , 'id');
}
public function duration(){
return $this->hasMany(TaskDuration::class, 'task_id', 'id');
}
public function comments()
{
return $this->hasMany(TaskComment::class, 'task_id', 'id')->orderBy('id', 'desc');
}
public function userDurations($userId = null)
{
$userId = $userId ?: User::where('user_name', $_COOKIE['user_identity'])->first()->id; // پیش‌فرض: کاربر جاری
return $this->taskDurations()->where('user_id', $userId);
}
public function filterByState($tasks){
$backlog = [];
$todo = [];
$inprogress = [];
$done = [];
foreach($tasks as $task){
if($task->state == 1){
$backlog[] = $task;
}elseif ($task->state == 2){
$todo[] = $task;
}elseif ($task->state == 3){
$inprogress[] = $task;
}elseif ($task->state == 4){
$done[] = $task;
}
}
$tasks = [
'backlog' => $backlog,
'todo' => $todo,
'inprogress' => $inprogress,
'done' => $done,
// 'count' => count($tasks),
];
return $tasks;
}
// public function users()
// {
//// return $this->belongsToMany(User::class, 'pivot_tasks', 'task_id', 'user_id');
// return $this->belongsToMany(
// User::class,
// 'pivot_tasks',
// 'task_id',
// 'user_id',
// 'task_id',
// 'plain_id',
// );
// }
// public function pivotTask()
// {
// return DB::table('pivot_tasks')
// ->where('task_id', $this->task_id);
// }
}