tenant admin startseite schicker gestaltet und super-admin und tenant admin (filament) aufgesplittet.
Es gibt nun task collections und vordefinierte tasks für alle. Onboarding verfeinert und webseite-carousel gefixt (logging später entfernen!)
This commit is contained in:
@@ -2,11 +2,14 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class Task extends Model
|
||||
{
|
||||
@@ -38,6 +41,59 @@ class Task extends Model
|
||||
return $this->belongsTo(TaskCollection::class, 'collection_id');
|
||||
}
|
||||
|
||||
public function tenant(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Tenant::class);
|
||||
}
|
||||
|
||||
public function sourceTask(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Task::class, 'source_task_id');
|
||||
}
|
||||
|
||||
public function derivedTasks(): HasMany
|
||||
{
|
||||
return $this->hasMany(Task::class, 'source_task_id');
|
||||
}
|
||||
|
||||
public function sourceCollection(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(TaskCollection::class, 'source_collection_id');
|
||||
}
|
||||
|
||||
public function scopeForTenant(Builder $query, ?int $tenantId): Builder
|
||||
{
|
||||
return $query->where(function (Builder $innerQuery) use ($tenantId) {
|
||||
$innerQuery->whereNull('tenant_id');
|
||||
|
||||
if ($tenantId) {
|
||||
$innerQuery->orWhere('tenant_id', $tenantId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::creating(function (Task $task) {
|
||||
if (! $task->slug) {
|
||||
$task->slug = static::generateSlug(
|
||||
$task->title['en'] ?? $task->title['de'] ?? 'task'
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected static function generateSlug(string $base): string
|
||||
{
|
||||
$slugBase = Str::slug($base) ?: 'task';
|
||||
|
||||
do {
|
||||
$slug = $slugBase . '-' . Str::random(6);
|
||||
} while (static::where('slug', $slug)->exists());
|
||||
|
||||
return $slug;
|
||||
}
|
||||
|
||||
public function assignedEvents(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Event::class, 'event_task', 'task_id', 'event_id')
|
||||
|
||||
Reference in New Issue
Block a user