components([ TextInput::make('tag_code') ->label('Kode Tag') ->placeholder('...') ->autocomplete(false) ->autofocus() ->required() ->maxLength(20) ->unique(ignoreRecord: true), DatePicker::make('hatch_date') ->label('Tanggal Menetas') ->placeholder('Pilih Tanggal') ->native(false) ->displayFormat('l, d F Y'), DatePicker::make('arrival_date') ->label('Tanggal Tiba') ->placeholder('Pilih Tanggal') ->required() ->native(false) ->displayFormat('l, d F Y'), DatePicker::make('exit_date') ->label('Tanggal Keluar/Afkir') ->placeholder('Pilih Tanggal') ->native(false) ->displayFormat('l, d F Y'), Select::make('status') ->label('Status') ->options(ChickenStatus::class) ->required() ->native(false) ->default(ChickenStatus::ACTIVE), ]) ->columns(1); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('tag_code') ->label('Kode Tag') ->searchable() ->sortable(), TextColumn::make('hatch_date') ->label('Tanggal Menetas') ->date('l, d F Y') ->sortable(), TextColumn::make('arrival_date') ->label('Tanggal Tiba') ->date('l, d F Y') ->sortable(), TextColumn::make('exit_date') ->label('Tanggal Keluar') ->date('l, d F Y') ->sortable(), TextColumn::make('status') ->label('Status') ->badge() ->sortable(), ...TimestampColumns::make(), ]) ->filters([ SelectFilter::make('status') ->label('Status') ->options(ChickenStatus::class) ->native(false), TrashedFilter::make() ->native(false) ->visible(fn (): bool => auth()->user()->hasRole(RoleEnum::DEVELOPER)), ]) ->recordActions([ EditAction::make() ->modalWidth(Width::Large), DeleteAction::make(), ForceDeleteAction::make(), RestoreAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ ...DefaultBulkActions::make('Ayam'), ]), ]) ->emptyStateIcon(Heroicon::RectangleGroup) ->emptyStateDescription('Setelah Anda membuat data pertama, maka akan muncul disini.') ->defaultSort('created_at', 'desc') ->deferFilters(false); } public static function getPages(): array { return [ 'index' => ManageChickens::route('/'), ]; } public static function getRecordRouteBindingEloquentQuery(): Builder { return parent::getRecordRouteBindingEloquentQuery() ->withoutGlobalScopes([ SoftDeletingScope::class, ]); } }