ldc-portsalaries/app/Models/Societe.php
2021-06-07 18:28:25 +02:00

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