Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/warga-saya.aplikasipos.info/app/Filament/Resources/
Upload File :
Current File : /home/aplikasiposinfo/www/warga-saya.aplikasipos.info/app/Filament/Resources/DataWargaResource.php

<?php

namespace App\Filament\Resources;

use Closure;
use Filament\Forms;
use Filament\Panel;
use Filament\Tables;
use Filament\Forms\Get;
use App\Models\Civilian;
use Filament\Forms\Form;
use App\Models\DataWarga;
use App\Models\Education;
use App\Models\Liability;
use Filament\Tables\Table;
use App\Models\CivilianJob;
use Illuminate\Support\Carbon;
use Filament\Resources\Resource;
use Filament\Forms\Components\Select;
use Filament\Support\Enums\Alignment;
use Filament\Forms\Components\Repeater;
use Filament\Tables\Columns\TextColumn;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\DatePicker;
use Illuminate\Database\Eloquent\Builder;
use App\Filament\Resources\DataWargaResource\Pages;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use App\Filament\Resources\DataWargaResource\RelationManagers;

class DataWargaResource extends Resource
{
    protected static ?string $model = Civilian::class;

    protected static ?string $navigationIcon = 'heroicon-c-users';
    protected static ?string $navigationGroup = 'Master Data';
    protected static ?string $navigationLabel = 'Data Warga';
    protected static ?string $label = 'Data Warga';
    protected static ?int $navigationSort = 1;
    protected static ?string $slug = 'data-warga';

    public static function form(Form $form): Form
    {
        return $form
            ->schema([

                Select::make('category_id')
                    ->required()
                    ->label('Kategori')
                    ->columnSpan(2)
                    ->multiple()
                    // ->disabled()
                    ->relationship('categories', 'name')
                    ->preload(),
                TextInput::make('full_name')
                    ->required()
                    ->label('Nama lengkap'),

                Select::make('gender')
                    ->required()
                    ->label('Jenis kelamin')
                    ->options([
                        0 => "Pria",
                        1 => "Wanita"
                    ]),
                TextInput::make('born_place')
                    ->required()
                    ->label('Tempat lahir'),
                DatePicker::make('born_date')
                    ->required()
                    ->label('Tanggal lahir'),
                TextInput::make('nik')
                    ->required()
                    ->rules([
                        fn(): Closure => function (string $attribute, $value, Closure $fail) {
                            if ((strlen((string)$value) < 16) || (strlen((string)$value) > 16)) {
                                $fail('NIK harus berisi 16 digit angka.');
                            }
                        },
                    ])
                    ->label('NIK'),
                TextInput::make('home_address')
                    ->required()
                    ->label('Alamat'),
                Select::make('married_status')
                    ->required()
                    ->label('Status pernikahan')
                    ->options([
                        false => "Belum menikah",
                        true => "Sudah menikah"
                    ]),
                TextInput::make('phone_number')
                    ->required()
                    ->tel()
                    ->startsWith([0, 8])
                    ->label('No. HP'),

                Repeater::make('liabilities')
                    ->required()
                    ->label('Tanggungan')
                    ->relationship()
                    ->schema([
                        TextInput::make('full_name')
                            ->required()
                            ->label('Nama tanggungan'),
                        DatePicker::make('born_date')
                            ->required()
                            ->label('Tanggal lahir'),
                        Select::make('gender')
                            ->required()
                            ->label('Jenis kelamin')
                            ->options([
                                "Pria" => "Pria",
                                "Wanita" => "Wanita"
                            ]),
                        Select::make('last_education')
                            ->required()
                            ->label('Pendidikan terakhir')
                            ->options([
                                "Belum menempuh pendidikan" => "Belum menempuh pendidikan",
                                "TK" => "TK",
                                "SD sederajat" => "SD sederajat",
                                "SMP sederajat" => "SMP sederajat",
                                "SMA sederajat" => "SMA sederajat",
                                "D3" => "D3",
                                "D4/S1" => "D4/S1",
                                "S2" => "S2",
                                "S3" => "S3",
                            ])
                    ])->addActionAlignment(Alignment::End),

                Repeater::make('civilian_pivot_jobs')
                    ->required()
                    ->label('Pekerjaan')
                    ->relationship('civilian_pivot_jobs')
                    ->schema([
                        Select::make('civilian_job_id')
                            ->required()
                            ->label('Tempat kerja')
                            ->columnSpan(3)
                            ->options(CivilianJob::pluck('job_place', 'id')->toArray())
                            ->preload(),

                        Select::make('accepted_date')
                            ->required()
                            ->label('Tahun masuk')
                            ->options([
                                "2010" => "2010",
                                "2011" => "2011",
                                "2012" => "2012",
                                "2013" => "2013",
                                "2014" => "2014",
                                "2015" => "2015",
                                "2016" => "2016",
                                "2017" => "2017",
                                "2018" => "2018",
                                "2019" => "2019",
                                "2020" => "2020",
                            ]),

                        Select::make('retirement_date')
                            ->required()
                            ->label('Tahun berhenti')
                            ->options([
                                "2015" => "2015",
                                "2016" => "2016",
                                "2017" => "2017",
                                "2018" => "2018",
                                "2019" => "2019",
                                "2020" => "2020",
                                "2021" => "2021",
                                "2022" => "2022",
                                "2023" => "2023",
                                "2024" => "2024",
                                "Sekarang" => "Sekarang",
                            ]),
                    ])
                    ->addActionAlignment(Alignment::End)
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('full_name')
                    ->label('Nama lengkap'),
                TextColumn::make('born_date')
                    ->label('Umur')
                    ->formatStateUsing(function ($state, Civilian $civilian) {
                        return Carbon::parse($civilian->born_date)->age . ' ' . 'tahun';
                    }),
                TextColumn::make('gender')
                    ->label('Jenis kelamin')
                    ->formatStateUsing(function ($state, Civilian $civilian) {
                        if ($civilian->gender == false) {
                            return 'Pria';
                        }
                        return 'Wanita';
                    }),
                TextColumn::make('born_place')
                    ->label('Tempat tanggal lahir')
                    ->formatStateUsing(function ($state, Civilian $civilian) {
                        return $civilian->born_place . ', ' . Carbon::parse($civilian->born_date)->format('j F o');
                    }),
                TextColumn::make('nik')
                    ->label('NIK'),
                TextColumn::make('home_address')
                    ->label('Alamat'),
                TextColumn::make('married_status')
                    ->label('Status pernikahan')
                    ->formatStateUsing(function ($state, Civilian $civilian) {
                        if ($civilian->married_status == false) {
                            return 'Belum menikah';
                        }
                        return 'Sudah menikah';
                    }),
                TextColumn::make('phone_number')
                    ->label('No. HP'),
                TextColumn::make('civilian_jobs.job_place')
                    ->label('Pekerjaan'),
                TextColumn::make('liabilities.full_name')
                    ->label('Tanggungan'),
                TextColumn::make('categories.name')
                    ->label('Kategori warga'),
            ])
            ->filters([
                //
            ])
            ->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\ListDataWargas::route('/'),
            'create' => Pages\CreateDataWarga::route('/create'),
            'edit' => Pages\EditDataWarga::route('/{record}/edit'),
        ];
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]