wip new rules engine

This commit is contained in:
Masroor Ehsan 2025-01-27 17:34:59 +06:00
parent 4c68b3626a
commit 21b24fe542
5 changed files with 2 additions and 63 deletions

View File

@ -2,21 +2,14 @@
namespace App\Models;
use App\Domain\Rule\MatchCondition;
use App\Models\Traits\Active;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
class DicomRoutingRule extends BaseModel
{
use Active;
public function conditions(): HasMany
{
return $this->hasMany(DicomRuleCondition::class);
}
public function organization(): BelongsTo
{
return $this->belongsTo(Organization::class);
@ -41,7 +34,6 @@ protected function casts(): array
{
return [
'is_active' => 'boolean',
'match_condition' => MatchCondition::class,
];
}
}

View File

@ -1,22 +0,0 @@
<?php
namespace App\Models;
use App\Domain\Rule\MatchMode;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class DicomRuleCondition extends BaseModel
{
public function rule(): BelongsTo
{
return $this->belongsTo(DicomRoutingRule::class);
}
protected function casts(): array
{
return [
'case_sensitive' => 'boolean',
'match_mode' => MatchMode::class,
];
}
}

View File

@ -29,6 +29,7 @@
"sentry/sentry-laravel": "^4.10",
"spatie/laravel-medialibrary": "^11.11",
"spatie/laravel-permission": "^6.10",
"symfony/expression-language": "^7.2",
"vinkla/hashids": "^12.0",
"yajra/laravel-datatables": "^11.0"
},

View File

@ -1,6 +1,5 @@
<?php
use App\Domain\Rule\MatchCondition;
use App\Models\AssignmentPanel;
use App\Models\Department;
use App\Models\Organization;
@ -21,7 +20,7 @@ public function up(): void
$table->foreignIdFor(User::class)->nullable()->constrained()->nullOnDelete();
$table->foreignIdFor(AssignmentPanel::class)->nullable()->constrained()->nullOnDelete();
$table->string('name')->nullable();
$table->string('match_condition')->default(MatchCondition::ANY->value);
$table->string('condition');
$table->unsignedTinyInteger('priority')->default(0);
$table->timestamps();

View File

@ -1,31 +0,0 @@
<?php
use App\Domain\Rule\MatchMode;
use App\Models\DicomRoutingRule;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('dicom_rule_conditions', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(DicomRoutingRule::class)->constrained()->cascadeOnDelete();
$table->string('dicom_tag');
$table->string('search_pattern');
$table->boolean('case_sensitive')->default(false);
$table->string('match_mode')->default(MatchMode::Exact->value);
$table->unsignedTinyInteger('priority')->default(0);
$table->timestamps();
$table->index(['dicom_routing_rule_id', 'priority']);
});
}
public function down(): void
{
Schema::dropIfExists('dicom_rule_conditions');
}
};