refactor: swap relationships and scopes in models for clarity and consistency

This commit is contained in:
Yoga Pangestu 2026-08-04 11:37:21 +07:00
parent 26945160a2
commit 2d60c0c67d
8 changed files with 80 additions and 53 deletions

View File

@ -21,13 +21,13 @@ protected function casts(): array
];
}
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by_id');
}
public function cashTransactions(): HasMany
{
return $this->hasMany(CashTransaction::class);
}
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by_id');
}
}

View File

@ -4,6 +4,8 @@
use App\Enums\CuttingStatus;
use Illuminate\Database\Eloquent\Attributes\Guarded;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@ -28,16 +30,29 @@ protected function casts(): array
];
}
#[Scope]
protected function cancelled(Builder $query): void
{
$query->where('status', CuttingStatus::CANCELLED);
}
#[Scope]
protected function completed(Builder $query): void
{
$query->where('status', CuttingStatus::COMPLETED);
}
#[Scope]
protected function inProgress(Builder $query): void
{
$query->where('status', CuttingStatus::IN_PROGRESS);
}
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by_id');
}
public function submittedBy(): BelongsTo
{
return $this->belongsTo(User::class, 'submitted_by_id');
}
public function cuttingMaterialCombinations(): HasMany
{
return $this->hasMany(CuttingMaterialCombination::class);
@ -52,4 +67,9 @@ public function cuttingResults(): HasMany
{
return $this->hasMany(CuttingResult::class);
}
public function submittedBy(): BelongsTo
{
return $this->belongsTo(User::class, 'submitted_by_id');
}
}

View File

@ -57,18 +57,6 @@ protected function completed(Builder $query): void
$query->where('status', OrderStatus::COMPLETED);
}
#[Scope]
protected function qris(Builder $query): void
{
$query->where('payment_type', PaymentType::QRIS);
}
#[Scope]
protected function store(Builder $query): void
{
$query->where('channel', OrderChannel::STORE);
}
#[Scope]
protected function pending(Builder $query): void
{
@ -81,6 +69,12 @@ protected function processing(Builder $query): void
$query->where('status', OrderStatus::PROCESSING);
}
#[Scope]
protected function qris(Builder $query): void
{
$query->where('payment_type', PaymentType::QRIS);
}
#[Scope]
protected function refunded(Builder $query): void
{
@ -99,6 +93,12 @@ protected function shopee(Builder $query): void
$query->where('channel', OrderChannel::SHOPEE);
}
#[Scope]
protected function store(Builder $query): void
{
$query->where('channel', OrderChannel::STORE);
}
#[Scope]
protected function tiktok(Builder $query): void
{

View File

@ -26,18 +26,18 @@ protected function casts(): array
];
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::REJECT);
}
#[Scope]
protected function good(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::GOOD);
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::REJECT);
}
public function order(): BelongsTo
{
return $this->belongsTo(Order::class);

View File

@ -3,7 +3,6 @@
namespace App\Models;
use App\Enums\PayrollPeriodStatus;
use App\Enums\PayrollStatus;
use Illuminate\Database\Eloquent\Attributes\Guarded;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
@ -40,18 +39,6 @@ protected function open(Builder $query): void
$query->where('status', PayrollPeriodStatus::OPEN);
}
#[Scope]
protected function paid(Builder $query): void
{
$query->where('status', PayrollStatus::PAID);
}
#[Scope]
protected function cancelled(Builder $query): void
{
$query->where('status', PayrollStatus::CANCELLED);
}
public function closedBy(): BelongsTo
{
return $this->belongsTo(User::class, 'closed_by_id');

View File

@ -4,6 +4,8 @@
use App\Enums\RawMaterialUnit;
use Illuminate\Database\Eloquent\Attributes\Guarded;
use Illuminate\Database\Eloquent\Attributes\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
@ -22,6 +24,24 @@ protected function casts(): array
];
}
#[Scope]
protected function kg(Builder $query): void
{
$query->where('unit', RawMaterialUnit::KG);
}
#[Scope]
protected function meter(Builder $query): void
{
$query->where('unit', RawMaterialUnit::METER);
}
#[Scope]
protected function yard(Builder $query): void
{
$query->where('unit', RawMaterialUnit::YARD);
}
public function rawMaterialPrices(): HasMany
{
return $this->hasMany(RawMaterialPrice::class);

View File

@ -28,18 +28,18 @@ protected function casts(): array
];
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_type', ProductStockQuality::REJECT);
}
#[Scope]
protected function good(Builder $query): void
{
$query->where('stock_type', ProductStockQuality::GOOD);
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_type', ProductStockQuality::REJECT);
}
public function createdBy(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by_id');

View File

@ -25,18 +25,18 @@ protected function casts(): array
];
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::REJECT);
}
#[Scope]
protected function good(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::GOOD);
}
#[Scope]
protected function reject(Builder $query): void
{
$query->where('stock_quality', ProductStockQuality::REJECT);
}
public function productVariant(): BelongsTo
{
return $this->belongsTo(ProductVariant::class);