65 lines
1.9 KiB
PHP
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();
|
|
}
|
|
}
|