129 lines
3.3 KiB
PHP
129 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Enums\CrudAction;
|
|
use App\Enums\CrudType;
|
|
use App\Traits\IsCrudModel;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Http\UploadedFile;
|
|
|
|
class Societe extends Model
|
|
{
|
|
use HasFactory;
|
|
use IsCrudModel;
|
|
|
|
protected $crudLabelColumn = 'name';
|
|
|
|
protected $crudValueColumn = 'id';
|
|
|
|
protected $fillable = [
|
|
'name',
|
|
'logo',
|
|
'style',
|
|
'colors'
|
|
];
|
|
|
|
protected $casts = [
|
|
'colors' => 'array',
|
|
];
|
|
|
|
protected $attributes = [
|
|
'style' => '',
|
|
'colors' => '{"color0":"#EEE"'
|
|
];
|
|
|
|
public function __construct($attributes = [])
|
|
{
|
|
self::$editableProperties = [
|
|
'name' => [
|
|
'label' => trans('Nom'),
|
|
'type' => CrudType::string(),
|
|
'validate' => [
|
|
'string',
|
|
'min:10',
|
|
'max:255'
|
|
],
|
|
'actions' => [
|
|
CrudAction::viewAny(),
|
|
CrudAction::view(),
|
|
CrudAction::create(),
|
|
CrudAction::update()
|
|
]
|
|
],
|
|
'logo' => [
|
|
'label' => trans('Logo'),
|
|
'type' => CrudType::string(),
|
|
'validate' => [
|
|
'string',
|
|
'max:255'
|
|
],
|
|
'actions' => [
|
|
CrudAction::viewAny(),
|
|
CrudAction::view(),
|
|
CrudAction::create(),
|
|
CrudAction::update()
|
|
]
|
|
],
|
|
'style' => [
|
|
'label' => trans('Style'),
|
|
'type' => CrudType::text(),
|
|
'actions' => [
|
|
CrudAction::view(),
|
|
CrudAction::create(),
|
|
CrudAction::update(),
|
|
]
|
|
],
|
|
'colors' => [
|
|
'label' => trans('Couleurs'),
|
|
'type' => CrudType::text(),
|
|
'actions' => [
|
|
CrudAction::view(),
|
|
CrudAction::create(),
|
|
CrudAction::update(),
|
|
]
|
|
],
|
|
'pole_id' => [
|
|
'label' => trans('Pole'),
|
|
'type' => CrudType::belongsTo(),
|
|
'belongsTo' => Pole::class,
|
|
'actions' => [
|
|
CrudAction::viewAny(),
|
|
CrudAction::view(),
|
|
CrudAction::create(),
|
|
CrudAction::update()
|
|
]
|
|
]
|
|
];
|
|
parent::__construct($attributes);
|
|
}
|
|
|
|
/**
|
|
* Has one Pole
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
*/
|
|
public function pole()
|
|
{
|
|
return $this->belongsTo(Pole::class);
|
|
}
|
|
|
|
/**
|
|
* Has many Site
|
|
*
|
|
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
|
*/
|
|
public function sites()
|
|
{
|
|
return $this->hasMany(Site::class);
|
|
}
|
|
|
|
public static function saveLogo(UploadedFile $image, string $name)
|
|
{
|
|
return $image->storePubliclyAs(
|
|
'/public/societe',
|
|
sprintf('%s-%s.%s', $name, rand(10000, 99999), $image->extension())
|
|
);
|
|
}
|
|
}
|