114 lines
2.8 KiB
PHP
114 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Enums\EleveurOcbStatus;
|
|
use App\Enums\GeoType;
|
|
use App\Enums\OCBType;
|
|
use App\Enums\PresentationType;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
use Kwaadpepper\Enum\Traits\CastsEnums;
|
|
|
|
// old Breeders
|
|
class OCBBreeder extends Model
|
|
{
|
|
use CastsEnums;
|
|
|
|
protected $casts = [
|
|
'display' => 'boolean',
|
|
'inuavs' => 'array'
|
|
];
|
|
|
|
protected $enumCasts = [
|
|
'presentation_type' => PresentationType::class,
|
|
'ocbStatus' => EleveurOcbStatus::class,
|
|
'ocbType' => OCBType::class,
|
|
'geo_type' => GeoType::class
|
|
];
|
|
|
|
protected $table = 'ocb_breeders';
|
|
|
|
protected $fillable = [
|
|
'breeder_code',
|
|
'first_name',
|
|
'last_name',
|
|
'postal_code',
|
|
'place',
|
|
'testimony',
|
|
'latitude',
|
|
'longitude',
|
|
'geo_type',
|
|
'ocbStatus',
|
|
'ocbType',
|
|
'presentation_type',
|
|
'audit',
|
|
'valid_marketing_date',
|
|
'video_link',
|
|
'status',
|
|
'display_random',
|
|
'inuavs',
|
|
];
|
|
|
|
protected static function booted()
|
|
{
|
|
static::creating(function ($breeder) {
|
|
$breeder->slug = Str::slug(sprintf(
|
|
'%s %s %s',
|
|
$breeder->id,
|
|
$breeder->last_name,
|
|
$breeder->id
|
|
));
|
|
});
|
|
static::updating(function ($breeder) {
|
|
$breeder->slug = Str::slug(sprintf(
|
|
'%s %s %s',
|
|
$breeder->id,
|
|
$breeder->last_name,
|
|
$breeder->id
|
|
));
|
|
});
|
|
static::retrieved(function ($breeder) {
|
|
$breeder->picture = $breeder->resolveImageUrl($breeder->picture);
|
|
for ($i = 1; $i <= 3; $i++) {
|
|
$breeder->{'picture' . $i} = $breeder->resolveImageUrl($breeder->{'picture' . $i});
|
|
}
|
|
});
|
|
}
|
|
|
|
public function getRouteKeyName()
|
|
{
|
|
return "slug";
|
|
}
|
|
|
|
/**
|
|
* Get ocb validated breeders query
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public static function ocbValidated()
|
|
{
|
|
return static::where('status', true)->whereHas('site', function ($q) {
|
|
$q->where('type', EleveurOcbStatus::yes()->value);
|
|
});
|
|
}
|
|
|
|
private function resolveImageUrl($imageUrl)
|
|
{
|
|
// For migrated urls from 2016
|
|
if (strpos($imageUrl, '/uploads') === 0) {
|
|
return $imageUrl;
|
|
}
|
|
return Storage::url($imageUrl);
|
|
}
|
|
|
|
public function resolveOriginalUrl($imageUrl)
|
|
{
|
|
// For migrated urls from 2016
|
|
if (strpos($imageUrl, '/storage') === 0) {
|
|
return str_replace('/storage', '', $imageUrl);
|
|
}
|
|
return $imageUrl;
|
|
}
|
|
}
|