Laundry.php 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App\Models;
  3. use App\Services\CurrencyFormatService;
  4. use Illuminate\Database\Eloquent\Casts\Attribute;
  5. use Illuminate\Database\Eloquent\Factories\HasFactory;
  6. use Illuminate\Database\Eloquent\Model;
  7. class Laundry extends Model
  8. {
  9. use HasFactory;
  10. protected $fillable = [
  11. 'name',
  12. 'price',
  13. 'unit',
  14. ];
  15. protected function name(): Attribute
  16. {
  17. return Attribute::make(
  18. set:fn($value) => ucwords($value)
  19. );
  20. }
  21. protected function unit(): Attribute
  22. {
  23. return Attribute::make(
  24. set:fn($value) => strtoupper($value)
  25. );
  26. }
  27. protected function price(): Attribute
  28. {
  29. return Attribute::make(
  30. get:fn($value) => (new CurrencyFormatService)->setRupiahFormat($value, true)
  31. );
  32. }
  33. public function scopeFilter($query, $search)
  34. {
  35. $query->when($search ?? null, function ($query, $search) {
  36. $query->where(function ($query) use ($search) {
  37. $query->where('name', 'like', '%' . $search . '%')
  38. ->orWhere('price', 'like', '%' . $search . '%')
  39. ->orWhere('unit', 'like', '%' . $search . '%');
  40. });
  41. });
  42. }
  43. }