ldc-legaulois/app/Models/OCBBreeder.php
Jérémy Munsch f8fc756b30 Finished GMap
2021-04-09 12:52:54 +02:00

133 lines
3.4 KiB
PHP

<?php
namespace App\Models;
use App\Enums\EleveurOcbStatus;
use App\Enums\GeoType;
use App\Enums\OCBType;
use App\Enums\PresentationType;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Kwaadpepper\Enum\Traits\CastsEnums;
// old Breeders
class OCBBreeder extends BreederForGmap
{
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::deleted(function ($breeder) {
$removePicture = function ($picture) {
if ($picture) {
if (strpos($picture, '/uploads') === 0) {
File::delete(public_path($picture));
} else {
Storage::disk('public')->delete($picture);
}
}
};
$removePicture($breeder->getRawOriginal('picture'));
$removePicture($breeder->getRawOriginal('picture1'));
$removePicture($breeder->getRawOriginal('picture2'));
$removePicture($breeder->getRawOriginal('picture3'));
});
}
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);
});
}
protected function getPictureAttribute()
{
return $this->pictureAttribute('picture');
}
protected function getPictureAttribute1()
{
return $this->pictureAttribute('picture1');
}
protected function getPictureAttribut21()
{
return $this->pictureAttribute('picture2');
}
protected function getPictureAttribute3()
{
return $this->pictureAttribute('picture3');
}
private function pictureAttribute(string $prop)
{
$p = $this->attributes[$prop];
// For migrated urls from 2016
if (strpos($p, '/uploads') === 0) {
return $p;
}
return Storage::url($p);
}
}