ldc-legaulois/app/Models/OcbBreeder.php
2025-06-11 09:59:07 +02:00

65 lines
1.9 KiB
PHP

<?php
namespace App\Models;
use App\Enums\Breeders\OCBType;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
/**
* @property string $first_name OCB breeder first name.
* @property string $last_name OCB breeder last name.
* @property string $department OCB breeder department.
* @property string $postal_code OCB breeder postal code.
* @property \App\Enums\Breeders\OCBType $type OCB breeder type.
* @property-read \Carbon\Carbon $created_at Created date.
* @property-read \Carbon\Carbon $updated_at Updated date.
*/
class OcbBreeder extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array<integer, string>
*/
protected $fillable = [
'first_name',
'last_name',
'department',
'postal_code',
'type',
];
/**
* The attributes that should be cast.
*
* @var array<string,string>
*/
protected $casts = [
'type' => OCBType::class
];
// * METHODS.
/**
* Created at nice date.
*
* @param integer $page
* @param string|null $search
* @return array
*/
public static function getOcbBreederCards(int $page = 1, string|null $search = null): array
{
return OcbBreeder::query()
->when($search, function (Builder $query) use ($search) {
$query->where('first_name', 'like', '%' . $search . '%')
->orWhere('last_name', 'like', '%' . $search . '%');
})
->paginate(perPage: 9, page: $page)
->through(function (OcbBreeder $ocbBreederModel) {
return view('components.fo.breeding.card-ocb-breeder', [
'ocbBreederModel' => $ocbBreederModel
])->render();
})->toArray();
}
}