Sindbad~EG File Manager
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\TabelBarangResource\Pages;
use App\Filament\Resources\TabelBarangResource\RelationManagers;
use App\Models\ms_stock;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Forms\Components\TextInput;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use League\Flysystem\Visibility;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\DatePicker;
class TabelBarangResource extends Resource
{
protected static ?string $model = ms_stock::class;
protected static ?string $modelLabel = 'Tabel Barang';
protected static ?string $pluralLabel = 'List Barang';
protected static ?string $navigationLabel = 'Tabel Barang';
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
//
// TextInput::Make('no_inv')
// ->required()
// ->maxLength(15),
// Forms\Components\DateTimePicker::Make('tgl'),
TextInput::Make('kode_brg'),
TextInput::Make('nama_brg'),
TextInput::Make('kelompok'),
TextInput::Make('jenis'),
TextInput::Make('merk'),
TextInput::Make('satuan'),
TextInput::Make('status'),
]);
}
public static function table(Table $table): Table
{
return $table
->modifyQueryUsing(function (Builder $query) {
// $query->leftJoin('ms_stock', 'ms_stock.kode_brg', '=', 'ms_stock.kode_brg')
// ->select('ms_stock.*', 'ms_stock.nama_brg as nama_barang');
$query->select('ms_stock.*', 'ms_stock.nama_brg as nama_barang');
// // Tambahkan filter hanya jika kondisi tertentu
// $shouldFilter = true; // Ganti dengan logic Anda
// if ($shouldFilter) {
// $query->where(function($q) {
// $q->where('tr_stock.no_inv', 'LIKE', 'STAR%')
// ->Orwhere('tr_stock.no_inv', 'LIKE', 'STOP%');
// });
// }
})
->columns([
//
TextColumn::make('kode_brg')
->label('Kode barang')
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.kode_brg', 'like', "%{$search}%");
})
->sortable(),
TextColumn::make('nama_brg')
->label('Nama Barang')
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.nama_brg', 'like', "%{$search}%");
})
->sortable(),
// TextColumn::make('tr_code')
// ->label('Kode Transaksi')
// ->sortable(),
TextColumn::make('kelompok')
->label('kelompok')
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.kelompok', 'like', "%{$search}%");
})
->sortable(),
TextColumn::make('jenis')
->label('Jenis Barang')
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.kode_brg', 'like', "%{$search}%");
})
->sortable(),
// TextColumn::make('kode_kategori_brg')
// ->label('Kategori Barang')
// ->sortable(),
Tables\Columns\TextColumn::make('satuan')
->label('satuan')
// ->searchable()
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.satuan', 'like', "%{$search}%");
})
->sortable(),
Tables\Columns\TextColumn::make('status')
->label('status')
// ->searchable()
->searchable(query: function ($query, string $search) {
$query->where('ms_stock.status', 'like', "%{$search}%");
})
->sortable(),
// TextColumn::make('satuan')
// ->label('Satuan')
// ->sortable(),
// TextColumn::make('harga')
// ->label('harga')
// ->money('IDR')
// ->sortable(),
])
->defaultSort('kode_brg', 'asc') // optional
->filters([
\Filament\Tables\Filters\Filter::make('status_filter')
->form([
Select::make('status')
->label('Status')
->options(function () {
// Ambil semua status unik dari database
$statuses = ms_stock::distinct()
->orderBy('status')
->pluck('status', 'status')
->toArray();
return [
'' => 'Semua Status',
'exclude_non_aktif' => '▶ Kecuali Non-Aktif', // Khusus
] + $statuses;
})
])
->query(function (Builder $query, array $data) {
return $query
->when($data['status'] === 'exclude_non_aktif', fn ($q) =>
$q->where('status', '!=', 'NON AKTIF')
)
->when($data['status'] && $data['status'] !== 'exclude_non_aktif', fn ($q) =>
$q->where('status', $data['status'])
);
}),
// \Filament\Tables\Filters\Filter::make('status')
// ->form([
// Select::make('status')
// ->label('Status')
// ->options([
// '' => 'Semua',
// // 'status' => 'Aktif',
// 'status' => 'Non-Aktif',
// ])
// ->default('')
// ])
// ->query(function (Builder $query, array $data) {
// return $query
// // ->when($data['status'] === 'active', fn ($q) =>
// // $q->where('is_active', true)
// // )
// // ->when($data['status'] === 'inactive', fn ($q) =>
// // $q->where('is_active', false)
// // );
// ->when($data['status'] !== 'NON AKTIF', fn ($q) =>
// $q->where('is_active', true)
// )
// ->when($data['status'] === 'NON AKTIF', fn ($q) =>
// $q->where('is_active', false)
// );
// })
//awal filter
// ⬅️ FILTER TARUH DI SINI
// \Filament\Tables\Filters\Filter::make('tgl_kirim')
// ->form([
// DatePicker::make('from')
// ->label('Tgl Kirim Awal'),
// DatePicker::make('until')
// ->label('Tgl Kirim Akhir'),
// ])
// ->query(function (Builder $query, array $data) {
// return $query
// ->when($data['from'], fn ($q) =>
// $q->whereDate('transaksis.tgl_kirim', '>=', $data['from'])
// )
// ->when($data['until'], fn ($q) =>
// $q->whereDate('transaksis.tgl_kirim', '<=', $data['until'])
// );
// })
//awal filter
// \Filament\Tables\Filters\Filter::make('tanggal')
// ->form([
// Select::make('tanggal')
// ->label('tanggal stock opname')
// ->options([
// 'tgl' => 'Tanggal Stock Opname',
// ])
// ->required(),
// DatePicker::make('from')->label('Dari'),
// DatePicker::make('until')->label('Sampai'),
// ])
// ->query(function (Builder $query, array $data) {
// if (empty($data['jenis'])) {
// return $query;
// }
// return $query
// ->when($data['from'], fn ($q) =>
// $q->whereDate("tr_stock.{$data['jenis']}", '>=', $data['from'])
// )
// ->when($data['until'], fn ($q) =>
// $q->whereDate("tr_stock.{$data['jenis']}", '<=', $data['until'])
// );
// }),
//akhir filter
])
->actions([
// Tables\Actions\EditAction::make(),
// Tables\Actions\DeleteAction::make(),
])
->bulkActions([
// Tables\Actions\BulkActionGroup::make([
// Tables\Actions\DeleteBulkAction::make(),
// ]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListTabelBarangs::route('/'),
// 'create' => Pages\CreateTabelBarang::route('/create'),
// 'edit' => Pages\EditTabelBarang::route('/{record}/edit'),
];
}
public static function canCreate(): bool
{
return false; // Tidak bisa create
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists