diff --git a/app/Filters/TaskFilters.php b/app/Filters/TaskFilters.php index 53cc0f01583c..37f99eaffebd 100644 --- a/app/Filters/TaskFilters.php +++ b/app/Filters/TaskFilters.php @@ -97,6 +97,16 @@ class TaskFilters extends QueryFilters return $this->builder->where('project_id', $this->decodePrimaryKey($project)); } + public function hash(string $hash = ''): Builder + { + if (strlen($hash) == 0) { + return $this->builder; + } + + return $this->builder->where('hash', $hash); + + } + public function number(string $number = ''): Builder { if (strlen($number) == 0) { diff --git a/app/Http/Requests/Task/StoreTaskRequest.php b/app/Http/Requests/Task/StoreTaskRequest.php index 12d61e9441cf..236a27051ae0 100644 --- a/app/Http/Requests/Task/StoreTaskRequest.php +++ b/app/Http/Requests/Task/StoreTaskRequest.php @@ -54,6 +54,8 @@ class StoreTaskRequest extends Request $rules['project_id'] = 'bail|required|exists:projects,id,company_id,'.$user->company()->id.',is_deleted,0'; } + $rules['hash'] = 'bail|sometimes|string|nullable'; + $rules['time_log'] = ['bail',function ($attribute, $values, $fail) { if(is_string($values)) { diff --git a/app/Http/Requests/Task/UpdateTaskRequest.php b/app/Http/Requests/Task/UpdateTaskRequest.php index 85b8254dd75a..87d2fa7d4d24 100644 --- a/app/Http/Requests/Task/UpdateTaskRequest.php +++ b/app/Http/Requests/Task/UpdateTaskRequest.php @@ -60,6 +60,8 @@ class UpdateTaskRequest extends Request $rules['project_id'] = 'bail|required|exists:projects,id,company_id,'.$user->company()->id.',is_deleted,0'; } + $rules['hash'] = 'bail|sometimes|string|nullable'; + $rules['time_log'] = ['bail', function ($attribute, $values, $fail) { if(is_string($values)) { diff --git a/app/Models/Task.php b/app/Models/Task.php index 368eae40d55b..fbb1954757a4 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -19,6 +19,8 @@ use Illuminate\Support\Carbon; * App\Models\Task * * @property int $id + * @property string|null $hash + * @property object|null $meta * @property int $user_id * @property int|null $assigned_user_id * @property int $company_id @@ -118,6 +120,15 @@ class Task extends BaseModel 'number', 'is_date_based', 'status_order', + 'hash', + 'meta', + ]; + + protected $casts = [ + 'meta' => 'object', + 'updated_at' => 'timestamp', + 'created_at' => 'timestamp', + 'deleted_at' => 'timestamp', ]; protected $touches = []; diff --git a/app/Models/TaskStatus.php b/app/Models/TaskStatus.php index 8a943af50325..03b3c06c22dc 100644 --- a/app/Models/TaskStatus.php +++ b/app/Models/TaskStatus.php @@ -71,4 +71,5 @@ class TaskStatus extends BaseModel 'color', 'status_order', ]; + } diff --git a/database/migrations/2023_11_27_095042_add_hash_and_meta_columns_to_tasks_table.php b/database/migrations/2023_11_27_095042_add_hash_and_meta_columns_to_tasks_table.php new file mode 100644 index 000000000000..67503fe7ab3e --- /dev/null +++ b/database/migrations/2023_11_27_095042_add_hash_and_meta_columns_to_tasks_table.php @@ -0,0 +1,26 @@ +string('hash')->nullable()->index(); + $table->text('meta')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + } +};