ldc-supportweb/app/Models/Project.php
2021-04-18 20:31:07 +02:00

61 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Str;
class Project extends Model
{
use HasFactory;
protected $fillable = ['name'];
protected static function booted()
{
static::created(function (Project $project) {
$path = Project::ticketAssetsFullPath($project->slug_name);
if (!File::exists($path)) {
File::makeDirectory($path);
}
});
static::updating(function (Project $project) {
$oldName = Project::where('id', $project->id)->first()->name;
$oldPath = Project::ticketAssetsFullPath($oldName);
$newPath = Project::ticketAssetsFullPath($project->slug_name);
if (File::exists($oldPath)) {
File::move($oldPath, $newPath);
} else {
File::makeDirectory($newPath);
}
});
static::deleted(function (Project $project) {
$path = Project::ticketAssetsFullPath($project->slug_name);
if (File::exists($path)) {
File::deleteDirectory($path);
}
});
}
public function tickets()
{
return $this->hasMany(Ticket::class, 'project_id');
}
public function getSlugNameAttribute()
{
return Str::slug($this->name);
}
public static function ticketAssetsFullPath(string $str)
{
return public_path(self::ticketAssetsPath($str));
}
public static function ticketAssetsPath(string $str)
{
return sprintf('fichiers/%s', $str);
}
}