feat: tambah penanggung jawab divisi (leader_id) dari role pengurus

This commit is contained in:
2026-04-05 22:29:15 +07:00
parent 438fb96561
commit b77a67edbf
4 changed files with 38 additions and 1 deletions
@@ -2,6 +2,8 @@
namespace App\Filament\Resources\Divisions\Schemas; namespace App\Filament\Resources\Divisions\Schemas;
use App\Models\User;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea; use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
@@ -13,6 +15,12 @@ class DivisionForm
return $schema->components([ return $schema->components([
TextInput::make('name')->label('Nama')->required(), TextInput::make('name')->label('Nama')->required(),
Textarea::make('description')->label('Deskripsi')->rows(3)->columnSpanFull(), Textarea::make('description')->label('Deskripsi')->rows(3)->columnSpanFull(),
Select::make('leader_id')->label('Penanggung Jawab')
->options(
User::role('pengurus')->where('status', 'aktif')->pluck('name', 'id')
)
->searchable()
->nullable(),
]); ]);
} }
} }
@@ -16,6 +16,7 @@ class DivisionsTable
->columns([ ->columns([
TextColumn::make('name')->label('Nama')->searchable()->sortable(), TextColumn::make('name')->label('Nama')->searchable()->sortable(),
TextColumn::make('description')->label('Deskripsi')->limit(50), TextColumn::make('description')->label('Deskripsi')->limit(50),
TextColumn::make('leader.name')->label('Penanggung Jawab')->default('-'),
TextColumn::make('members_count')->counts('members')->label('Anggota'), TextColumn::make('members_count')->counts('members')->label('Anggota'),
]) ])
->recordActions([EditAction::make()]) ->recordActions([EditAction::make()])
+6 -1
View File
@@ -7,10 +7,15 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
class Division extends Model class Division extends Model
{ {
protected $fillable = ['name', 'description']; protected $fillable = ['name', 'description', 'leader_id'];
public function members(): HasMany public function members(): HasMany
{ {
return $this->hasMany(User::class); return $this->hasMany(User::class);
} }
public function leader(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class, 'leader_id');
}
} }
@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('divisions', function (Blueprint $table) {
$table->foreignId('leader_id')->nullable()->constrained('users')->nullOnDelete()->after('description');
});
}
public function down(): void
{
Schema::table('divisions', function (Blueprint $table) {
$table->dropForeignIdFor(\App\Models\User::class, 'leader_id');
$table->dropColumn('leader_id');
});
}
};