ldc-legaulois/app/Models/OCBBreeder.php
2021-04-08 20:06:14 +02:00

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;
}
}