From 2d60c0c67d1f10fcb1820791cf8fb7b147f5fd25 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 4 Aug 2026 11:37:21 +0700 Subject: [PATCH] refactor: swap relationships and scopes in models for clarity and consistency --- app/Models/CashAccount.php | 10 +++++----- app/Models/Cutting.php | 30 +++++++++++++++++++++++++----- app/Models/Order.php | 24 ++++++++++++------------ app/Models/OrderItem.php | 12 ++++++------ app/Models/PayrollPeriod.php | 13 ------------- app/Models/RawMaterial.php | 20 ++++++++++++++++++++ app/Models/Restock.php | 12 ++++++------ app/Models/StokOpnameItem.php | 12 ++++++------ 8 files changed, 80 insertions(+), 53 deletions(-) diff --git a/app/Models/CashAccount.php b/app/Models/CashAccount.php index 122604a..69b9da6 100644 --- a/app/Models/CashAccount.php +++ b/app/Models/CashAccount.php @@ -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'); + } } diff --git a/app/Models/Cutting.php b/app/Models/Cutting.php index 393f174..eec63fa 100644 --- a/app/Models/Cutting.php +++ b/app/Models/Cutting.php @@ -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'); + } } diff --git a/app/Models/Order.php b/app/Models/Order.php index fd6abb2..ac4bdde 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -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 { diff --git a/app/Models/OrderItem.php b/app/Models/OrderItem.php index 1d23ec4..12c3244 100644 --- a/app/Models/OrderItem.php +++ b/app/Models/OrderItem.php @@ -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); diff --git a/app/Models/PayrollPeriod.php b/app/Models/PayrollPeriod.php index 52164ef..a55bc52 100644 --- a/app/Models/PayrollPeriod.php +++ b/app/Models/PayrollPeriod.php @@ -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'); diff --git a/app/Models/RawMaterial.php b/app/Models/RawMaterial.php index 4545e74..b1156e5 100644 --- a/app/Models/RawMaterial.php +++ b/app/Models/RawMaterial.php @@ -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); diff --git a/app/Models/Restock.php b/app/Models/Restock.php index f737421..a46717b 100644 --- a/app/Models/Restock.php +++ b/app/Models/Restock.php @@ -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'); diff --git a/app/Models/StokOpnameItem.php b/app/Models/StokOpnameItem.php index acb2768..24c5d7e 100644 --- a/app/Models/StokOpnameItem.php +++ b/app/Models/StokOpnameItem.php @@ -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);