diff --git a/composer.json b/composer.json index a2d5783..31ea448 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,9 @@ "illuminate/contracts": "^10.0", "kanekescom/laravel-helperia": "^2.0", "kanekescom/laravel-siasn-api": "^2.0", + "kanekescom/laravel-siasn-referensi": "^2.0", "kanekescom/laravel-siasn-simpeg-api": "^2.0", + "shuvroroy/filament-spatie-laravel-backup": "^2.1", "spatie/laravel-fractal": "^6.0", "spatie/laravel-package-tools": "^1.14.0" }, @@ -117,4 +119,4 @@ ], "minimum-stability": "dev", "prefer-stable": true -} \ No newline at end of file +} diff --git a/config/siasn-simpeg.php b/config/siasn-simpeg.php index cd2b4bf..2d11066 100644 --- a/config/siasn-simpeg.php +++ b/config/siasn-simpeg.php @@ -6,11 +6,35 @@ 'chunk_data' => 500, - 'delete_model_before_pull' => true, + 'truncate_model_before_pull' => true, 'filament' => [ + 'id' => 'siasn-simpeg', + 'path' => 'siasn/simpeg', + + 'topbar' => true, + + 'brandLogo' => null, + + 'favicon' => null, + + 'colors' => [ + 'primary' => \Filament\Support\Colors\Color::Amber, + ], + + 'navigationGroups' => [ + 'Pegawai', + 'PNS', + 'Riwayat', + 'KP', + 'Pemberhentian', + 'Pengadaan', + 'Referensi', + 'Tools', + ], + ], ]; diff --git a/database/migrations/2024_01_02_000001_create_siasn_simpeg_pegawai_table.php b/database/migrations/2024_01_02_000001_create_siasn_simpeg_pegawai_table.php index 4d06b15..0d734c7 100644 --- a/database/migrations/2024_01_02_000001_create_siasn_simpeg_pegawai_table.php +++ b/database/migrations/2024_01_02_000001_create_siasn_simpeg_pegawai_table.php @@ -61,7 +61,7 @@ public function up(): void $table->string('tingkat_pendidikan_nama')->nullable(); $table->string('pendidikan_id')->nullable()->index('1_pendidikan_id'); $table->string('pendidikan_nama')->nullable(); - $table->string('tahun_lulus')->nullable()->index('1_tahun_lulus'); + $table->string('tahun_lulus', 4)->nullable()->index('1_tahun_lulus'); $table->string('kpkn_id')->nullable()->index('1_kpkn_id'); $table->string('kpkn_nama')->nullable(); $table->string('lokasi_kerja_id')->nullable()->index('1_lokasi_kerja_id'); @@ -76,6 +76,7 @@ public function up(): void $table->text('satuan_kerja_induk_nama')->nullable(); $table->string('satuan_kerja_kerja_id')->nullable()->index('1_satuan_kerja_kerja_id'); $table->text('satuan_kerja_kerja_nama')->nullable(); + $table->string('is_valid_nik', 1)->nullable()->index('is_valid_nik'); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/migrations/2024_01_02_000006_create_siasn_simpeg_pns_data_utama_table.php b/database/migrations/2024_01_02_000006_create_siasn_simpeg_pns_data_utama_table.php index d95260c..bd3430f 100644 --- a/database/migrations/2024_01_02_000006_create_siasn_simpeg_pns_data_utama_table.php +++ b/database/migrations/2024_01_02_000006_create_siasn_simpeg_pns_data_utama_table.php @@ -45,7 +45,7 @@ public function up(): void $table->string('tkPendidikanTerakhir')->nullable(); $table->string('pendidikanTerakhirId', 42)->nullable()->index('6_pendidikanTerakhirId'); $table->string('pendidikanTerakhirNama')->nullable(); - $table->string('tahunLulus')->nullable(); + $table->string('tahunLulus', 4)->nullable(); $table->string('tmtPns')->nullable(); $table->string('tmtPensiun')->nullable(); $table->string('bupPensiun', 2)->nullable(); diff --git a/database/migrations/2024_01_02_000010_create_siasn_simpeg_pns_rw_angkakredit_table.php b/database/migrations/2024_01_02_000010_create_siasn_simpeg_pns_rw_angkakredit_table.php index 52182d0..e2bc16b 100644 --- a/database/migrations/2024_01_02_000010_create_siasn_simpeg_pns_rw_angkakredit_table.php +++ b/database/migrations/2024_01_02_000010_create_siasn_simpeg_pns_rw_angkakredit_table.php @@ -17,9 +17,9 @@ public function up(): void $table->string('nomorSk')->nullable(); $table->string('tanggalSk')->nullable(); $table->string('bulanMulaiPenailan')->nullable(); - $table->string('tahunMulaiPenailan')->nullable(); + $table->string('tahunMulaiPenailan', 4)->nullable(); $table->string('bulanSelesaiPenailan')->nullable(); - $table->string('tahunSelesaiPenailan')->nullable(); + $table->string('tahunSelesaiPenailan', 4)->nullable(); $table->string('kreditUtamaBaru')->nullable(); $table->string('kreditPenunjangBaru')->nullable(); $table->string('kreditBaruTotal')->nullable(); diff --git a/database/migrations/2024_01_02_000012_create_siasn_simpeg_pns_rw_diklat_table.php b/database/migrations/2024_01_02_000012_create_siasn_simpeg_pns_rw_diklat_table.php index d34e033..ce64109 100644 --- a/database/migrations/2024_01_02_000012_create_siasn_simpeg_pns_rw_diklat_table.php +++ b/database/migrations/2024_01_02_000012_create_siasn_simpeg_pns_rw_diklat_table.php @@ -20,7 +20,7 @@ public function up(): void $table->string('latihanStrukturalNama')->nullable(); $table->string('nomor')->nullable(); $table->string('tanggal')->nullable(); - $table->string('tahun')->nullable()->index('12_tahun'); + $table->string('tahun', 4)->nullable()->index('12_tahun'); $table->json('path')->nullable(); $table->string('jumlahJam')->nullable(); $table->string('tanggalSelesai')->nullable(); diff --git a/database/migrations/2024_01_02_000013_create_siasn_simpeg_pns_rw_dp3_table.php b/database/migrations/2024_01_02_000013_create_siasn_simpeg_pns_rw_dp3_table.php index d5b24b8..62f82d2 100644 --- a/database/migrations/2024_01_02_000013_create_siasn_simpeg_pns_rw_dp3_table.php +++ b/database/migrations/2024_01_02_000013_create_siasn_simpeg_pns_rw_dp3_table.php @@ -14,7 +14,7 @@ public function up(): void Schema::create('siasn_simpeg_pns_rw_dp3', function (Blueprint $table) { $table->string('id', 42)->primary(); $table->string('pnsId', 42)->nullable()->index('13_pnsId'); - $table->string('tahun')->nullable()->index('13_tahun'); + $table->string('tahun', 4)->nullable()->index('13_tahun'); $table->string('atasanNonPns')->nullable(); $table->string('atasanPejabatPenilaiId', 42)->nullable()->index('13_atasanPejabatPenilaiId'); $table->string('atasanPenilaiGolongan')->nullable(); diff --git a/database/migrations/2024_01_02_000014_create_siasn_simpeg_pns_rw_golongan_table.php b/database/migrations/2024_01_02_000014_create_siasn_simpeg_pns_rw_golongan_table.php index b736a16..9c3014e 100644 --- a/database/migrations/2024_01_02_000014_create_siasn_simpeg_pns_rw_golongan_table.php +++ b/database/migrations/2024_01_02_000014_create_siasn_simpeg_pns_rw_golongan_table.php @@ -30,6 +30,7 @@ public function up(): void $table->string('masaKerjaGolonganTahun')->nullable(); $table->string('masaKerjaGolonganBulan')->nullable(); $table->json('path')->nullable(); + $table->string('pangkat')->nullable(); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/migrations/2024_01_02_000015_create_siasn_simpeg_pns_rw_hukdis_table.php b/database/migrations/2024_01_02_000015_create_siasn_simpeg_pns_rw_hukdis_table.php index 60da1b0..c5c359e 100644 --- a/database/migrations/2024_01_02_000015_create_siasn_simpeg_pns_rw_hukdis_table.php +++ b/database/migrations/2024_01_02_000015_create_siasn_simpeg_pns_rw_hukdis_table.php @@ -17,7 +17,7 @@ public function up(): void $table->string('golongan')->nullable(); $table->string('kedudukanHukum')->nullable(); $table->string('jenisHukuman')->nullable()->index('15_jenisHukuman'); - $table->string('pnsOrang')->nullable()->index('15_pnsOrang'); + $table->string('pnsOrang', 42)->nullable()->index('15_pnsOrang'); $table->string('skNomor')->nullable(); $table->string('skTanggal')->nullable(); $table->string('hukumanTanggal')->nullable(); diff --git a/database/migrations/2024_01_02_000016_create_siasn_simpeg_pns_rw_jabatan_table.php b/database/migrations/2024_01_02_000016_create_siasn_simpeg_pns_rw_jabatan_table.php index 1e8972e..5e5abff 100644 --- a/database/migrations/2024_01_02_000016_create_siasn_simpeg_pns_rw_jabatan_table.php +++ b/database/migrations/2024_01_02_000016_create_siasn_simpeg_pns_rw_jabatan_table.php @@ -38,6 +38,7 @@ public function up(): void $table->string('namaJabatan')->nullable(); $table->string('tmtPelantikan')->nullable(); $table->json('path')->nullable(); + $table->string('jenjang')->nullable(); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/migrations/2024_01_02_000017_create_siasn_simpeg_pns_rw_kinerjaperiodik_table.php b/database/migrations/2024_01_02_000017_create_siasn_simpeg_pns_rw_kinerjaperiodik_table.php index a705d85..a3d21c8 100644 --- a/database/migrations/2024_01_02_000017_create_siasn_simpeg_pns_rw_kinerjaperiodik_table.php +++ b/database/migrations/2024_01_02_000017_create_siasn_simpeg_pns_rw_kinerjaperiodik_table.php @@ -13,7 +13,7 @@ public function up(): void { Schema::create('siasn_simpeg_pns_rw_kinerjaperiodik', function (Blueprint $table) { $table->string('id', 42)->primary(); - $table->string('tahun')->nullable()->index('17_tahun'); + $table->string('tahun', 4)->nullable()->index('17_tahun'); $table->string('nip')->nullable()->index('17_nip'); $table->string('nama')->nullable(); $table->string('hasilKinerja')->nullable(); diff --git a/database/migrations/2024_01_02_000018_create_siasn_simpeg_pns_rw_kursus_table.php b/database/migrations/2024_01_02_000018_create_siasn_simpeg_pns_rw_kursus_table.php index 830a385..2b99932 100644 --- a/database/migrations/2024_01_02_000018_create_siasn_simpeg_pns_rw_kursus_table.php +++ b/database/migrations/2024_01_02_000018_create_siasn_simpeg_pns_rw_kursus_table.php @@ -23,7 +23,7 @@ public function up(): void $table->string('jumlahJam')->nullable(); $table->string('namaKursus')->nullable(); $table->string('noSertipikat')->nullable(); - $table->string('tahunKursus')->nullable()->index('18_tahunKursus'); + $table->string('tahunKursus', 4)->nullable()->index('18_tahunKursus'); $table->string('tanggalKursus')->nullable(); $table->json('path')->nullable(); $table->string('jenisDiklatId', 42)->nullable()->index('18_jenisDiklatId'); diff --git a/database/migrations/2024_01_02_000021_create_siasn_simpeg_pns_rw_pendidikan_table.php b/database/migrations/2024_01_02_000021_create_siasn_simpeg_pns_rw_pendidikan_table.php index 7668551..9a1b01b 100644 --- a/database/migrations/2024_01_02_000021_create_siasn_simpeg_pns_rw_pendidikan_table.php +++ b/database/migrations/2024_01_02_000021_create_siasn_simpeg_pns_rw_pendidikan_table.php @@ -20,7 +20,7 @@ public function up(): void $table->string('pendidikanNama')->nullable(); $table->string('tkPendidikanId', 42)->nullable()->index('21_tkPendidikanId'); $table->string('tkPendidikanNama')->nullable(); - $table->string('tahunLulus')->nullable()->index('21_tahunLulus'); + $table->string('tahunLulus', 4)->nullable()->index('21_tahunLulus'); $table->string('tglLulus')->nullable(); $table->string('isPendidikanPertama')->nullable()->index('21_isPendidikanPertama'); $table->string('nomorIjasah')->nullable(); diff --git a/database/migrations/2024_01_02_000022_create_siasn_simpeg_pns_rw_penghargaan_table.php b/database/migrations/2024_01_02_000022_create_siasn_simpeg_pns_rw_penghargaan_table.php index 68971d2..45eb814 100644 --- a/database/migrations/2024_01_02_000022_create_siasn_simpeg_pns_rw_penghargaan_table.php +++ b/database/migrations/2024_01_02_000022_create_siasn_simpeg_pns_rw_penghargaan_table.php @@ -13,7 +13,7 @@ public function up(): void { Schema::create('siasn_simpeg_pns_rw_penghargaan', function (Blueprint $table) { $table->string('id', 42)->primary(); - $table->string('tahun')->nullable()->index('22_tahun'); + $table->string('tahun', 4)->nullable()->index('22_tahun'); $table->string('skNomor')->nullable(); $table->string('skDate')->nullable(); $table->string('hargaNama')->nullable(); diff --git a/src/Commands/PullPnsDataUtamaCommand.php b/src/Commands/PullPnsDataUtamaCommand.php index d0d445d..fb859e6 100644 --- a/src/Commands/PullPnsDataUtamaCommand.php +++ b/src/Commands/PullPnsDataUtamaCommand.php @@ -116,7 +116,7 @@ public function handle() $model = new PnsDataUtama; DB::transaction(function () use ($model, $response) { - if (config('siasn-simpeg.delete_model_before_pull')) { + if (config('siasn-simpeg.truncate_model_before_pull')) { $model->delete(); } diff --git a/src/Commands/PullReferensiRefUnorCommand.php b/src/Commands/PullReferensiRefUnorCommand.php index df73800..350a72c 100644 --- a/src/Commands/PullReferensiRefUnorCommand.php +++ b/src/Commands/PullReferensiRefUnorCommand.php @@ -45,7 +45,7 @@ public function handle() $model = new ReferensiRefUnor; DB::transaction(function () use ($model, $response, $bar) { - if (config('siasn-simpeg.delete_model_before_pull')) { + if (config('siasn-simpeg.truncate_model_before_pull')) { $model->delete(); } diff --git a/src/Commands/PullRiwayatCommand.php b/src/Commands/PullRiwayatCommand.php index 8d342fd..4f5e064 100644 --- a/src/Commands/PullRiwayatCommand.php +++ b/src/Commands/PullRiwayatCommand.php @@ -99,8 +99,17 @@ public function handle() $iPegawai = $skip; if ($startOver && $hasPullTracking) { - $hasPullTracking->delete(); - $hasPullTracking = null; + try { + $hasPullTracking->errors()->delete(); + $hasPullTracking->delete(); + $hasPullTracking = null; + } catch (\Exception $e) { + $this->error($e); + $this->newLine(); + + return self::FAILURE; + } + $skip = 0; $this->info(str('Start over command.')->upper()); @@ -196,7 +205,7 @@ public function handle() $model = $model->where($this->pnsId[$endpoint], $pegawai->pns_id); DB::transaction(function () use ($endpoint, $model, $response, $bar) { - if (config('siasn-simpeg.delete_model_before_pull')) { + if (config('siasn-simpeg.truncate_model_before_pull')) { $model->delete(); } diff --git a/src/Filament/Resources/DataPernikahanResource.php b/src/Filament/Resources/DataPernikahanResource.php index e6db249..6b9a5f9 100644 --- a/src/Filament/Resources/DataPernikahanResource.php +++ b/src/Filament/Resources/DataPernikahanResource.php @@ -14,15 +14,15 @@ class DataPernikahanResource extends Resource { protected static ?string $model = DataPernikahan::class; - protected static ?string $slug = 'data-pernikahan'; + protected static ?string $slug = '--data-pernikahan'; - protected static ?string $pluralLabel = 'Data Pernikahan'; + protected static ?string $pluralLabel = '--Data Pernikahan'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'Data Pernikahan'; + protected static ?string $navigationLabel = '--Data Pernikahan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -60,47 +60,57 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('orangId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pnsOrangId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgglMenikah') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('aktaMenikah') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgglCerai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('aktaCerai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('posisi') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('status') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('isPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('noSkPensiun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/OrangtuaAyahResource.php b/src/Filament/Resources/OrangtuaAyahResource.php index caaea67..5607396 100644 --- a/src/Filament/Resources/OrangtuaAyahResource.php +++ b/src/Filament/Resources/OrangtuaAyahResource.php @@ -14,8 +14,18 @@ class OrangtuaAyahResource extends Resource { protected static ?string $model = OrangtuaAyah::class; + protected static ?string $slug = '--orangtua-ayah'; + + protected static ?string $pluralLabel = '--Orangtua Ayah'; + protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; + protected static ?string $navigationLabel = '--Orangtua Ayah'; + + protected static ?string $navigationGroup = 'PNS'; + + protected static bool $shouldRegisterNavigation = true; + public static function form(Form $form): Form { return $form @@ -46,39 +56,47 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('aktaMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKelamin') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisAnak') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ayahId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/OrangtuaIbuResource.php b/src/Filament/Resources/OrangtuaIbuResource.php index bad1c42..630d309 100644 --- a/src/Filament/Resources/OrangtuaIbuResource.php +++ b/src/Filament/Resources/OrangtuaIbuResource.php @@ -14,8 +14,18 @@ class OrangtuaIbuResource extends Resource { protected static ?string $model = OrangtuaIbu::class; + protected static ?string $slug = '--orangtua-ibu'; + + protected static ?string $pluralLabel = '--Orangtua Ibu'; + protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; + protected static ?string $navigationLabel = '--Orangtua Ibu'; + + protected static ?string $navigationGroup = 'PNS'; + + protected static bool $shouldRegisterNavigation = true; + public static function form(Form $form): Form { return $form @@ -46,39 +56,47 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('aktaMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKelamin') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisAnak') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ibuId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PasanganResource.php b/src/Filament/Resources/PasanganResource.php index 8caee58..a1190d1 100644 --- a/src/Filament/Resources/PasanganResource.php +++ b/src/Filament/Resources/PasanganResource.php @@ -14,15 +14,15 @@ class PasanganResource extends Resource { protected static ?string $model = Pasangan::class; - protected static ?string $slug = 'pasangan'; + protected static ?string $slug = '--pasangan'; - protected static ?string $pluralLabel = 'Pasangan'; + protected static ?string $pluralLabel = '--Pasangan'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'Pasangan'; + protected static ?string $navigationLabel = '--Pasangan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -70,67 +70,82 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('ayahId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ibuId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('namaKtp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarDepan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarBlk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('aktaMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKelamin') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisAnak') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('StatusHidup') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('JenisKawinId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('karisKarsu') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PegawaiPnsResource.php b/src/Filament/Resources/PegawaiPnsResource.php new file mode 100644 index 0000000..5a3ded6 --- /dev/null +++ b/src/Filament/Resources/PegawaiPnsResource.php @@ -0,0 +1,48 @@ +modifyQueryUsing(fn ($query) => $query->pns()); + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ManagePegawais::route('/'), + 'view' => Pages\ViewPegawai::route('/{record}'), + ]; + } +} diff --git a/src/Filament/Resources/PegawaiResource/Pages/ManagePegawais.php b/src/Filament/Resources/PegawaiPnsResource/Pages/ManagePegawais.php similarity index 59% rename from src/Filament/Resources/PegawaiResource/Pages/ManagePegawais.php rename to src/Filament/Resources/PegawaiPnsResource/Pages/ManagePegawais.php index 29a1c99..ed6fb32 100644 --- a/src/Filament/Resources/PegawaiResource/Pages/ManagePegawais.php +++ b/src/Filament/Resources/PegawaiPnsResource/Pages/ManagePegawais.php @@ -1,16 +1,16 @@ modifyQueryUsing(fn ($query) => $query->pppk()); + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ManagePegawais::route('/'), + 'view' => Pages\ViewPegawai::route('/{record}'), + ]; + } +} diff --git a/src/Filament/Resources/PegawaiPppkResource/Pages/ManagePegawais.php b/src/Filament/Resources/PegawaiPppkResource/Pages/ManagePegawais.php new file mode 100644 index 0000000..d13a54d --- /dev/null +++ b/src/Filament/Resources/PegawaiPppkResource/Pages/ManagePegawais.php @@ -0,0 +1,21 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->angkakredit(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/CltnsRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/CltnsRelationManager.php new file mode 100644 index 0000000..dad4185 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/CltnsRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->cltn(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/DiklatsRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/DiklatsRelationManager.php new file mode 100644 index 0000000..dffb967 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/DiklatsRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->diklat(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/Dp3sRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/Dp3sRelationManager.php new file mode 100644 index 0000000..b86da84 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/Dp3sRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->dp3(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/GolongansRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/GolongansRelationManager.php new file mode 100644 index 0000000..efe15a9 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/GolongansRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->golongan(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/HukdisesRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/HukdisesRelationManager.php new file mode 100644 index 0000000..3f7ae98 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/HukdisesRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->hukdis(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/JabatansRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/JabatansRelationManager.php new file mode 100644 index 0000000..20504e1 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/JabatansRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->jabatan(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ])->defaultPaginationPageOption(5); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/KinerjaperiodiksRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/KinerjaperiodiksRelationManager.php new file mode 100644 index 0000000..2bb9b80 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/KinerjaperiodiksRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->kinerjaperiodik(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/KursusesRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/KursusesRelationManager.php new file mode 100644 index 0000000..cac88e7 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/KursusesRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->kursus(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/MasakerjasRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/MasakerjasRelationManager.php new file mode 100644 index 0000000..b34062c --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/MasakerjasRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->masakerja(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PemberhentiansRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PemberhentiansRelationManager.php new file mode 100644 index 0000000..b3b9841 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PemberhentiansRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->pemberhentian(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PendidikansRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PendidikansRelationManager.php new file mode 100644 index 0000000..54f9f3b --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PendidikansRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->pendidikan(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PenghargaansRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PenghargaansRelationManager.php new file mode 100644 index 0000000..571c16c --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PenghargaansRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->penghargaan(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PindahinstansisRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PindahinstansisRelationManager.php new file mode 100644 index 0000000..7c1e1e8 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PindahinstansisRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->pindahinstansi(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PnsunorsRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PnsunorsRelationManager.php new file mode 100644 index 0000000..74e5247 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PnsunorsRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->pnsunor(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/PwksRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/PwksRelationManager.php new file mode 100644 index 0000000..3ffaea1 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/PwksRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->pwk(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/Skp22sRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/Skp22sRelationManager.php new file mode 100644 index 0000000..da33bdb --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/Skp22sRelationManager.php @@ -0,0 +1,58 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->skp22() + ->skp(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PegawaiResource/RelationManagers/SkpsRelationManager.php b/src/Filament/Resources/PegawaiResource/RelationManagers/SkpsRelationManager.php new file mode 100644 index 0000000..d055680 --- /dev/null +++ b/src/Filament/Resources/PegawaiResource/RelationManagers/SkpsRelationManager.php @@ -0,0 +1,57 @@ +headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function ($livewire) { + try { + PullRiwayatService::find($livewire->getOwnerRecord()->nip_baru) + ->skp(); + + Notification::make() + ->title('Pulled successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), + ]); + } +} diff --git a/src/Filament/Resources/PengadaanListPengadaanInstansiResource.php b/src/Filament/Resources/PengadaanListPengadaanInstansiResource.php index 2e58beb..4946cd6 100644 --- a/src/Filament/Resources/PengadaanListPengadaanInstansiResource.php +++ b/src/Filament/Resources/PengadaanListPengadaanInstansiResource.php @@ -16,13 +16,13 @@ class PengadaanListPengadaanInstansiResource extends Resource protected static ?string $slug = 'pengadaan-list-pengadaan-instansi'; - protected static ?string $pluralLabel = 'Pengadaan List Pengadaan Instansi'; + protected static ?string $pluralLabel = 'List Pengadaan Instansi'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'Pengadaan List Pengadaan Instansi'; + protected static ?string $navigationLabel = 'List Pengadaan Instansi'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Pengadaan'; protected static bool $shouldRegisterNavigation = true; @@ -72,74 +72,90 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('orang_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('no_peserta') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nip') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('periode') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansi_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('no_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('no_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('path_ttd_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('path_ttd_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_kontrak_mulai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_kontrak_akhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_formasi_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_formasi_nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsDataAnakResource.php b/src/Filament/Resources/PnsDataAnakResource.php index 5129830..265c6f1 100644 --- a/src/Filament/Resources/PnsDataAnakResource.php +++ b/src/Filament/Resources/PnsDataAnakResource.php @@ -16,13 +16,13 @@ class PnsDataAnakResource extends Resource protected static ?string $slug = 'pns-data-anak'; - protected static ?string $pluralLabel = 'PNS Data Anak'; + protected static ?string $pluralLabel = 'Data Anak'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS Data Anak'; + protected static ?string $navigationLabel = 'Data Anak'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -58,43 +58,52 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKelamin') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisAnak') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ayahId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ibuId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kabupatenId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsDataOrtuResource.php b/src/Filament/Resources/PnsDataOrtuResource.php index 2838306..d098c2f 100644 --- a/src/Filament/Resources/PnsDataOrtuResource.php +++ b/src/Filament/Resources/PnsDataOrtuResource.php @@ -16,13 +16,13 @@ class PnsDataOrtuResource extends Resource protected static ?string $slug = 'pns-data-ortu'; - protected static ?string $pluralLabel = 'PNS Data Ortu'; + protected static ?string $pluralLabel = 'Data Ortu'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS Data Ortu'; + protected static ?string $navigationLabel = 'Data Ortu'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -46,21 +46,24 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ayah_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ibu_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsDataPasanganResource.php b/src/Filament/Resources/PnsDataPasanganResource.php index 1c3712e..7c9d14f 100644 --- a/src/Filament/Resources/PnsDataPasanganResource.php +++ b/src/Filament/Resources/PnsDataPasanganResource.php @@ -16,13 +16,13 @@ class PnsDataPasanganResource extends Resource protected static ?string $slug = 'pns-data-pasangan'; - protected static ?string $pluralLabel = 'PNS Data Pasangan'; + protected static ?string $pluralLabel = 'Data Pasangan'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS Data Pasangan'; + protected static ?string $navigationLabel = 'Data Pasangan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -48,25 +48,29 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pasangan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusNikah') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('dataPernikahan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsDataUtamaResource.php b/src/Filament/Resources/PnsDataUtamaResource.php index 67be1a6..38d86d4 100644 --- a/src/Filament/Resources/PnsDataUtamaResource.php +++ b/src/Filament/Resources/PnsDataUtamaResource.php @@ -16,13 +16,13 @@ class PnsDataUtamaResource extends Resource protected static ?string $slug = 'pns-data-utama'; - protected static ?string $pluralLabel = 'PNS Data Utama'; + protected static ?string $pluralLabel = 'Data Utama'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS Data Utama'; + protected static ?string $navigationLabel = 'Data Utama'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -303,363 +303,452 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('nipBaru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarDepan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarBelakang') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempatLahirId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('agama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('agamaId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('email') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('emailGov') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nik') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('noHp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('noTelp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisPegawaiId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('mkTahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('mkBulan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisPegawaiNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kedudukanPnsId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kedudukanPnsNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPegawai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKelamin') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisIdDokumenId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisIdDokumenNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tkPendidikanTerakhirId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tkPendidikanTerakhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikanTerakhirId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikanTerakhirNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tahunLulus') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtPensiun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('bupPensiun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSkPns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtCpns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSkCpns') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiIndukId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaIndukId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kanregId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaKodeCepat') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaKerjaId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorIndukId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatanId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanStrukturalId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalUmumId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasiKerjaId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasiKerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golRuangAwalId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golRuangAwal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golRuangAkhirId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golRuangAkhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtGolAkhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('masaKerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselon') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselonId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselonLevel') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtEselon') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gajiPokok') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kpknId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('ktuaId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('taspenId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKawinId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPerkawinan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusHidup') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSuratKeteranganDokter') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jumlahIstriSuami') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jumlahAnak') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSuratKeteranganBebasNarkoba') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skck') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSkck') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('akteKelahiran') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('akteMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglMeninggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglNpwp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('bpjs') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kodePos') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('bahasa') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kppnId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pangkatAkhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglSttpl') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenjang') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanAsn') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kartuAsn') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('validNik') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsListKpInstansiResource.php b/src/Filament/Resources/PnsListKpInstansiResource.php index ff4fb6b..c927807 100644 --- a/src/Filament/Resources/PnsListKpInstansiResource.php +++ b/src/Filament/Resources/PnsListKpInstansiResource.php @@ -16,13 +16,13 @@ class PnsListKpInstansiResource extends Resource protected static ?string $slug = 'pns-list-kp-instansi'; - protected static ?string $pluralLabel = 'PNS List KP Instansi'; + protected static ?string $pluralLabel = 'List KP Instansi'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS List KP Instansi'; + protected static ?string $navigationLabel = 'List KP Instansi'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'KP'; protected static bool $shouldRegisterNavigation = true; @@ -72,71 +72,87 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('pnsId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusUsulan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusUsulanNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('no_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('no_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('path_ttd_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('path_ttd_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_pertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tgl_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golonganBaruId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtKp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('path_preview_sk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gaji_pokok_baru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gaji_pokok_lama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsListPensiunInstansiResource.php b/src/Filament/Resources/PnsListPensiunInstansiResource.php index cb099a3..8857cd5 100644 --- a/src/Filament/Resources/PnsListPensiunInstansiResource.php +++ b/src/Filament/Resources/PnsListPensiunInstansiResource.php @@ -22,7 +22,7 @@ class PnsListPensiunInstansiResource extends Resource protected static ?string $navigationLabel = 'PNS List Pensiun Instansi'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Pemberhentian'; protected static bool $shouldRegisterNavigation = true; @@ -78,83 +78,102 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusUsulan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusUsulanNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pnsId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pertekNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pathSk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pathPertek') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pertekTgl') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTgl') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('detailLayananNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLahir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golonganId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golonganKppId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtPensiun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pathSkPreview') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsPhotoResource.php b/src/Filament/Resources/PnsPhotoResource.php index 70f552c..0f643ec 100644 --- a/src/Filament/Resources/PnsPhotoResource.php +++ b/src/Filament/Resources/PnsPhotoResource.php @@ -16,13 +16,13 @@ class PnsPhotoResource extends Resource protected static ?string $slug = 'pns-photo'; - protected static ?string $pluralLabel = 'PNS Photo'; + protected static ?string $pluralLabel = 'Photo'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS Photo'; + protected static ?string $navigationLabel = 'Photo'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'PNS'; protected static bool $shouldRegisterNavigation = true; @@ -43,10 +43,10 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/src/Filament/Resources/PnsRwAngkakreditResource.php b/src/Filament/Resources/PnsRwAngkakreditResource.php index e4ed9a6..4a905cf 100644 --- a/src/Filament/Resources/PnsRwAngkakreditResource.php +++ b/src/Filament/Resources/PnsRwAngkakreditResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\AngkakreditsRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwAngkakreditResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwAngkakredit; +use Kanekescom\Siasn\Simpeg\Services\PostAngkakreditSaveService; class PnsRwAngkakreditResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwAngkakreditResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Angka Kredit'; + protected static ?string $navigationLabel = 'Angka Kredit'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,113 +36,224 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('pns') - ->maxLength(255), - Forms\Components\TextInput::make('nomorSk') - ->maxLength(255), - Forms\Components\TextInput::make('tanggalSk') - ->maxLength(255), - Forms\Components\TextInput::make('bulanMulaiPenailan') - ->maxLength(255), - Forms\Components\TextInput::make('tahunMulaiPenailan') - ->maxLength(255), - Forms\Components\TextInput::make('bulanSelesaiPenailan') - ->maxLength(255), - Forms\Components\TextInput::make('tahunSelesaiPenailan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('rwJabatan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('namaJabatan') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kreditUtamaBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kreditPenunjangBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kreditBaruTotal') - ->maxLength(255), - Forms\Components\TextInput::make('rwJabatan') - ->maxLength(255), - Forms\Components\TextInput::make('namaJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('isAngkaKreditPertama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('isIntegrasi') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('isKonversi') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('nomorSk') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggalSk') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('bulanMulaiPenailan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tahunMulaiPenailan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('bulanSelesaiPenailan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tahunSelesaiPenailan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), Forms\Components\TextInput::make('Sumber') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + + Forms\Components\TextInput::make('bulanMulaiPenailan') + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('bulanSelesaiPenailan') + ->required() + ->hiddenOn('view'), + Forms\Components\Toggle::make('isAngkaKreditPertama') + ->hiddenOn('view'), + Forms\Components\Toggle::make('isIntegrasi') + ->hiddenOn('view'), + Forms\Components\Toggle::make('isKonversi') + ->hiddenOn('view'), + Forms\Components\TextInput::make('kreditBaruTotal') + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('kreditPenunjangBaru') + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('kreditUtamaBaru') + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('nomorSk') + ->required() + ->hiddenOn('view'), + // Forms\Components\TextInput::make('rwJabatanId') + // ->required() + // ->hiddenOn('view'), + Forms\Components\TextInput::make('tahunMulaiPenailan') + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('tahunSelesaiPenailan') + ->required() + ->hiddenOn('view'), + Forms\Components\DatePicker::make('tanggalSk') + ->format('d-m-Y') + ->date() + ->required() + ->hiddenOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-angkakredit --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(AngkakreditsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(AngkakreditsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('pns') + ->hiddenOn(AngkakreditsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nomorSk') + Tables\Columns\TextColumn::make('rwJabatan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalSk') + Tables\Columns\TextColumn::make('namaJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('bulanMulaiPenailan') + Tables\Columns\TextColumn::make('kreditUtamaBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahunMulaiPenailan') + Tables\Columns\TextColumn::make('kreditPenunjangBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('bulanSelesaiPenailan') + Tables\Columns\TextColumn::make('kreditBaruTotal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahunSelesaiPenailan') + Tables\Columns\TextColumn::make('isAngkaKreditPertama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kreditUtamaBaru') + Tables\Columns\TextColumn::make('isIntegrasi') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kreditPenunjangBaru') + Tables\Columns\TextColumn::make('isKonversi') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kreditBaruTotal') + Tables\Columns\TextColumn::make('nomorSk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('rwJabatan') + Tables\Columns\TextColumn::make('tanggalSk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('namaJabatan') + Tables\Columns\TextColumn::make('bulanMulaiPenailan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('isAngkaKreditPertama') + Tables\Columns\TextColumn::make('tahunMulaiPenailan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('isIntegrasi') + Tables\Columns\TextColumn::make('bulanSelesaiPenailan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('isKonversi') + Tables\Columns\TextColumn::make('tahunSelesaiPenailan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('Sumber') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -160,6 +276,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostAngkakreditSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwCltnResource.php b/src/Filament/Resources/PnsRwCltnResource.php index c4651f2..73ba0c8 100644 --- a/src/Filament/Resources/PnsRwCltnResource.php +++ b/src/Filament/Resources/PnsRwCltnResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\CltnsRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwCltnResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwCltn; @@ -20,9 +22,9 @@ class PnsRwCltnResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW CLTN'; + protected static ?string $navigationLabel = 'CLTN'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,25 +33,35 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('cltnId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nomorLetterBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrangId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggalAwal') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalAkhir') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalAktif') - ->maxLength(255), - Forms\Components\TextInput::make('tanggalAwal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalLetterBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('path'), ]); } @@ -57,45 +69,83 @@ public static function form(Form $form): Form public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-cltn --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(CltnsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(CltnsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('cltnId') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrangId') + ->hiddenOn(CltnsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nomorLetterBkn') + Tables\Columns\TextColumn::make('cltnId') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrangId') + Tables\Columns\TextColumn::make('nomorLetterBkn') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalAkhir') + Tables\Columns\TextColumn::make('tanggalAwal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalAktif') + Tables\Columns\TextColumn::make('tanggalAkhir') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalAwal') + Tables\Columns\TextColumn::make('tanggalAktif') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggalLetterBkn') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwDiklatResource.php b/src/Filament/Resources/PnsRwDiklatResource.php index 78f3850..d220504 100644 --- a/src/Filament/Resources/PnsRwDiklatResource.php +++ b/src/Filament/Resources/PnsRwDiklatResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\DiklatsRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwDiklatResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwDiklat; +use Kanekescom\Siasn\Simpeg\Services\PostDiklatSaveService; class PnsRwDiklatResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwDiklatResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Diklat'; + protected static ?string $navigationLabel = 'Diklat'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,22 +36,143 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), - Forms\Components\TextInput::make('jenis_diklat') - ->maxLength(255), + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('idPns') + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('nipBaru') + ->maxLength(18) + ->visibleOn('view'), + Forms\Components\TextInput::make('nipLama') + ->maxLength(9) + ->visibleOn('view'), + Forms\Components\TextInput::make('latihanStrukturalId') + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('latihanStrukturalNama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tahun') + ->maxLength(4) + ->visibleOn('view'), + Forms\Components\TextInput::make('nomor') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('jumlahJam') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggal') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggalSelesai') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('institusiPenyelenggara') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-diklat --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(DiklatsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(DiklatsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('idPns') + ->hiddenOn(DiklatsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('nipBaru') + ->hiddenOn(DiklatsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('nipLama') + ->hiddenOn(DiklatsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('latihanStrukturalId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('latihanStrukturalNama') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('tahun') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('nomor') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('jumlahJam') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenis_diklat') + Tables\Columns\TextColumn::make('tanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('tanggalSelesai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('institusiPenyelenggara') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -57,6 +183,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostDiklatSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwDp3Resource.php b/src/Filament/Resources/PnsRwDp3Resource.php index d724bc8..4f495c6 100644 --- a/src/Filament/Resources/PnsRwDp3Resource.php +++ b/src/Filament/Resources/PnsRwDp3Resource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\Dp3sRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwDp3Resource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwDp3; @@ -20,9 +22,9 @@ class PnsRwDp3Resource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW DP3'; + protected static ?string $navigationLabel = 'DP3'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,203 +33,318 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('tahun') - ->maxLength(255), + ->maxLength(4) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenisJabatan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('kejujuran') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('kepemimpinan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('kerjasama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('kesetiaan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('ketaatan') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('jumlah') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('nilairatarata') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('prakarsa') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('prestasiKerja') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanNonPns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPejabatPenilaiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiNipNrp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiTmtGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiUnorNama') - ->maxLength(255), - Forms\Components\TextInput::make('jenisJabatan') - ->maxLength(255), - Forms\Components\TextInput::make('jumlah') - ->maxLength(255), - Forms\Components\TextInput::make('kejujuran') - ->maxLength(255), - Forms\Components\TextInput::make('kepemimpinan') - ->maxLength(255), - Forms\Components\TextInput::make('kerjasama') - ->maxLength(255), - Forms\Components\TextInput::make('kesetiaan') - ->maxLength(255), - Forms\Components\TextInput::make('ketaatan') - ->maxLength(255), - Forms\Components\TextInput::make('nilairatarata') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pejabatPenilaiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNipNrp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNonPns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiTmtGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiUnorNama') - ->maxLength(255), - Forms\Components\TextInput::make('prakarsa') - ->maxLength(255), - Forms\Components\TextInput::make('prestasiKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('statusAtasanPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('statusPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggungJawab') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-dp3 --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(Dp3sRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(Dp3sRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('pnsId') + ->hiddenOn(Dp3sRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanNonPns') + Tables\Columns\TextColumn::make('jenisJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPejabatPenilaiId') + Tables\Columns\TextColumn::make('kejujuran') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiGolongan') + Tables\Columns\TextColumn::make('kepemimpinan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiJabatan') + Tables\Columns\TextColumn::make('kerjasama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiNama') + Tables\Columns\TextColumn::make('kesetiaan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiNipNrp') + Tables\Columns\TextColumn::make('ketaatan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiTmtGolongan') + Tables\Columns\TextColumn::make('jumlah') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('atasanPenilaiUnorNama') + Tables\Columns\TextColumn::make('nilairatarata') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisJabatan') + Tables\Columns\TextColumn::make('prakarsa') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jumlah') + Tables\Columns\TextColumn::make('prestasiKerja') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kejujuran') + Tables\Columns\TextColumn::make('atasanNonPns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kepemimpinan') + Tables\Columns\TextColumn::make('atasanPejabatPenilaiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kerjasama') + Tables\Columns\TextColumn::make('atasanPenilaiGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kesetiaan') + Tables\Columns\TextColumn::make('atasanPenilaiJabatan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('ketaatan') + Tables\Columns\TextColumn::make('atasanPenilaiNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nilairatarata') + Tables\Columns\TextColumn::make('atasanPenilaiNipNrp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('atasanPenilaiTmtGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('atasanPenilaiUnorNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pejabatPenilaiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNipNrp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNonPns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiTmtGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiUnorNama') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('prakarsa') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('prestasiKerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusAtasanPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggungJawab') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwGolonganResource.php b/src/Filament/Resources/PnsRwGolonganResource.php index 887d51a..61eb712 100644 --- a/src/Filament/Resources/PnsRwGolonganResource.php +++ b/src/Filament/Resources/PnsRwGolonganResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\GolongansRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwGolonganResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwGolongan; @@ -20,9 +22,9 @@ class PnsRwGolonganResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Golongan'; + protected static ?string $navigationLabel = 'Golongan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,113 +33,197 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('idPns') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nipBaru') - ->maxLength(18), + ->maxLength(18) + ->visibleOn('view'), Forms\Components\TextInput::make('nipLama') - ->maxLength(9), + ->maxLength(9) + ->visibleOn('view'), Forms\Components\TextInput::make('golonganId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('golongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tmtGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('noPertekBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tglPertekBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jumlahKreditUtama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jumlahKreditTambahan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisKPId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisKPNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('masaKerjaGolonganTahun') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('masaKerjaGolonganBulan') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('pangkat') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-golongan --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(GolongansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(GolongansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->toggleable(isToggledHiddenByDefault: true) + ->hiddenOn(GolongansRelationManager::class) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->hiddenOn(GolongansRelationManager::class) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->toggleable(isToggledHiddenByDefault: true) + ->hiddenOn(GolongansRelationManager::class) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golonganId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('golongan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtGolongan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('noPertekBkn') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglPertekBkn') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jumlahKreditUtama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jumlahKreditTambahan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKPId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisKPNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('masaKerjaGolonganTahun') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('masaKerjaGolonganBulan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('pangkat') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwHukdisResource.php b/src/Filament/Resources/PnsRwHukdisResource.php index 5fde3a0..20f07e2 100644 --- a/src/Filament/Resources/PnsRwHukdisResource.php +++ b/src/Filament/Resources/PnsRwHukdisResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\HukdisesRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwHukdisResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwHukdis; +use Kanekescom\Siasn\Simpeg\Services\PostHukdisSaveService; class PnsRwHukdisResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwHukdisResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Hukdis'; + protected static ?string $navigationLabel = 'Hukdis'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,137 +36,220 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('pnsOrang') + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('rwHukumanDisiplin') - ->maxLength(255), - Forms\Components\TextInput::make('golongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kedudukanHukum') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisHukuman') - ->maxLength(255), - Forms\Components\TextInput::make('pnsOrang') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenisHukumanNama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenisTingkatHukumanId') + ->maxLength(42), + Forms\Components\TextInput::make('alasanHukumanDisiplin') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('alasanHukumanDisiplinNama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('nomorPp') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('hukumanTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('masaTahun') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('masaBulan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('akhirHukumTanggal') - ->maxLength(255), - Forms\Components\TextInput::make('nomorPp') - ->maxLength(255), - Forms\Components\TextInput::make('golonganLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skPembatalanNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skPembatalanTanggal') - ->maxLength(255), - Forms\Components\TextInput::make('alasanHukumanDisiplin') - ->maxLength(255), - Forms\Components\TextInput::make('alasanHukumanDisiplinNama') - ->maxLength(255), - Forms\Components\TextInput::make('jenisHukumanNama') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('golonganLama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('golongan') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('keterangan') - ->maxLength(255), - Forms\Components\TextInput::make('jenisTingkatHukumanId') - ->maxLength(42), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-hukdis --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(HukdisesRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(HukdisesRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('rwHukumanDisiplin') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrang') + ->toggleable(isToggledHiddenByDefault: true) + ->hiddenOn(HukdisesRelationManager::class) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('golongan') + Tables\Columns\TextColumn::make('rwHukumanDisiplin') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kedudukanHukum') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisHukuman') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrang') + Tables\Columns\TextColumn::make('jenisHukumanNama') + ->grow() + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skNomor') + Tables\Columns\TextColumn::make('jenisTingkatHukumanId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skTanggal') + Tables\Columns\TextColumn::make('alasanHukumanDisiplin') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('hukumanTanggal') + Tables\Columns\TextColumn::make('alasanHukumanDisiplinNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('masaTahun') + Tables\Columns\TextColumn::make('nomorPp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('masaBulan') + Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('akhirHukumTanggal') + Tables\Columns\TextColumn::make('skTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nomorPp') + Tables\Columns\TextColumn::make('hukumanTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('golonganLama') + Tables\Columns\TextColumn::make('masaTahun') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skPembatalanNomor') + Tables\Columns\TextColumn::make('masaBulan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skPembatalanTanggal') + Tables\Columns\TextColumn::make('akhirHukumTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('alasanHukumanDisiplin') + Tables\Columns\TextColumn::make('skPembatalanNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('alasanHukumanDisiplinNama') + Tables\Columns\TextColumn::make('skPembatalanTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisHukumanNama') + Tables\Columns\TextColumn::make('golongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('keterangan') + Tables\Columns\TextColumn::make('golonganLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisTingkatHukumanId') + Tables\Columns\TextColumn::make('keterangan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -184,6 +272,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostHukdisSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwJabatanResource.php b/src/Filament/Resources/PnsRwJabatanResource.php index 020e29f..7f1e251 100644 --- a/src/Filament/Resources/PnsRwJabatanResource.php +++ b/src/Filament/Resources/PnsRwJabatanResource.php @@ -4,11 +4,21 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Referensi\Models\Eselon; +use Kanekescom\Siasn\Referensi\Models\JabatanFungsional; +use Kanekescom\Siasn\Referensi\Models\JabatanFungsionalUmum; +use Kanekescom\Siasn\Referensi\Models\JenisJabatan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\JabatansRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwJabatanResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwJabatan; +use Kanekescom\Siasn\Simpeg\Models\ReferensiRefUnor; +use Kanekescom\Siasn\Simpeg\Services\PostJabatanSaveService; class PnsRwJabatanResource extends Resource { @@ -20,9 +30,9 @@ class PnsRwJabatanResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Jabatan'; + protected static ?string $navigationLabel = 'Jabatan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,161 +41,328 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('idPns') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nipBaru') - ->maxLength(18), + ->maxLength(18) + ->visibleOn('view'), Forms\Components\TextInput::make('nipLama') + ->visibleOn('view') ->maxLength(9), Forms\Components\TextInput::make('jenisJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiKerjaId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiKerjaNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('unorId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('unorNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('namaUnor') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('unorIndukId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('unorIndukNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('eselon') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('eselonId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('namaJabatan') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalUmumId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalUmumNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenjang') + ->visibleOn('view'), Forms\Components\TextInput::make('tmtJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nomorSk') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalSk') - ->maxLength(255), - Forms\Components\TextInput::make('namaUnor') - ->maxLength(255), - Forms\Components\TextInput::make('namaJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tmtPelantikan') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), + + Forms\Components\Select::make('jenisJabatan') + ->live() + ->relationship('relJenisJabatan', 'nama') + ->exists(table: JenisJabatan::class, column: 'id') + ->searchable() + ->preload() + ->required() + ->hiddenOn('view'), + Forms\Components\Select::make('eselonId') + ->visible(fn ($get) => in_array($get('jenisJabatan'), [1])) + ->relationship('eselon', 'nama') + ->exists(table: Eselon::class, column: 'id') + ->searchable() + ->preload() + ->required() + ->hiddenOn('view'), + Forms\Components\Select::make('jabatanFungsionalId') + ->columnSpanFull() + ->visible(fn ($get) => in_array($get('jenisJabatan'), [2])) + ->relationship('jabatanFungsional', 'nama') + ->exists(table: JabatanFungsional::class, column: 'id') + ->searchable() + ->preload() + ->required() + ->hiddenOn('view'), + Forms\Components\Select::make('jabatanFungsionalUmumId') + ->columnSpanFull() + ->visible(fn ($get) => in_array($get('jenisJabatan'), [3])) + ->relationship('jabatanFungsionalUmum', 'nama') + ->exists(table: JabatanFungsionalUmum::class, column: 'id') + ->searchable() + ->preload() + ->required() + ->hiddenOn('view'), + Forms\Components\Select::make('unorId') + ->columnSpanFull() + ->relationship('unor', 'NamaUnor') + ->exists(table: ReferensiRefUnor::class, column: 'id') + ->searchable() + ->preload() + ->required() + ->hiddenOn('view'), + Forms\Components\TextInput::make('nomorSk') + ->required() + ->hiddenOn('view'), + Forms\Components\DatePicker::make('tmtJabatan') + ->format('d-m-Y') + ->date() + ->required() + ->hiddenOn('view'), + Forms\Components\DatePicker::make('tanggalSk') + ->format('d-m-Y') + ->date() + ->required() + ->hiddenOn('view'), + Forms\Components\DatePicker::make('tmtPelantikan') + ->format('d-m-Y') + ->date() + ->required() + ->hiddenOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-jabatan --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(JabatansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(JabatansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->hiddenOn(JabatansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->hiddenOn(JabatansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->hiddenOn(JabatansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatan') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('namaJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorNama') + ->grow() + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('namaUnor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorIndukId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorIndukNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselon') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselonId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalUmumId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalUmumNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tmtJabatan') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nomorSk') + Tables\Columns\TextColumn::make('jenjang') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalSk') + Tables\Columns\TextColumn::make('tmtJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('namaUnor') + Tables\Columns\TextColumn::make('nomorSk') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('namaJabatan') + Tables\Columns\TextColumn::make('tanggalSk') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtPelantikan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -208,6 +385,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostJabatanSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwKinerjaperiodikResource.php b/src/Filament/Resources/PnsRwKinerjaperiodikResource.php index d05a3dd..458b054 100644 --- a/src/Filament/Resources/PnsRwKinerjaperiodikResource.php +++ b/src/Filament/Resources/PnsRwKinerjaperiodikResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\KinerjaperiodiksRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwKinerjaperiodikResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwKinerjaperiodik; +use Kanekescom\Siasn\Simpeg\Services\PostKinerjaperiodikSaveService; class PnsRwKinerjaperiodikResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwKinerjaperiodikResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Kinerja Periodik'; + protected static ?string $navigationLabel = 'Kinerja Periodik'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,179 +36,274 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), - Forms\Components\TextInput::make('tahun') - ->maxLength(255), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nip') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tahun') + ->maxLength(4) + ->visibleOn('view'), Forms\Components\TextInput::make('hasilKinerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('hasilKinerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('koefisenId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('kriteria') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kuadranKinerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kuadranNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('namaPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiGolonganId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiJabatanNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNipNrp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiPnsId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiUnorNm') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('perilakuKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('perilakuKerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('periodikId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('periodikNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('persentase') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsDinilaiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('statusPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('unorId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('unorNama') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-kinerjaperiodik --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(KinerjaperiodiksRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(KinerjaperiodiksRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahun') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('nip') + ->hiddenOn(KinerjaperiodiksRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('nip') + Tables\Columns\TextColumn::make('tahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('hasilKinerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('hasilKinerjaNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('koefisenId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kriteria') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kuadranKinerjaNilai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kuadranNilai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('namaPenilai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiGolonganId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiJabatanNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNipNrp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiPnsId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiUnorNm') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('perilakuKerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('perilakuKerjaNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('periodikId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('periodikNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('persentase') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pnsDinilaiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -226,6 +326,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostKinerjaperiodikSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwKursusResource.php b/src/Filament/Resources/PnsRwKursusResource.php index 4484f63..e5adac1 100644 --- a/src/Filament/Resources/PnsRwKursusResource.php +++ b/src/Filament/Resources/PnsRwKursusResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\KursusesRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwKursusResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwKursus; +use Kanekescom\Siasn\Simpeg\Services\PostKursusSaveService; class PnsRwKursusResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwKursusResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Kursus'; + protected static ?string $navigationLabel = 'Kursus'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,101 +36,170 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('idPns') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nipBaru') - ->maxLength(18), + ->maxLength(18) + ->visibleOn('view'), Forms\Components\TextInput::make('nipLama') - ->maxLength(9), + ->maxLength(9) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenisDiklatId') + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('jenisKursusId') + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisKursusNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisKursusSertifikat') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('namaKursus') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('institusiPenyelenggara') - ->maxLength(255), - Forms\Components\TextInput::make('jenisKursusId') - ->maxLength(42), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jumlahJam') - ->maxLength(255), - Forms\Components\TextInput::make('namaKursus') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('noSertipikat') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tahunKursus') - ->maxLength(255), + ->maxLength(4) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalKursus') - ->maxLength(255), - Forms\Components\TextInput::make('path'), - Forms\Components\TextInput::make('jenisDiklatId') - ->maxLength(42), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalSelesaiKursus') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-kursus --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahunKursus', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(KursusesRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(KursusesRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->hiddenOn(KursusesRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->hiddenOn(KursusesRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->hiddenOn(KursusesRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisKursusNama') + Tables\Columns\TextColumn::make('jenisDiklatId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisKursusSertifikat') + Tables\Columns\TextColumn::make('jenisKursusId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('institusiPenyelenggara') + Tables\Columns\TextColumn::make('jenisKursusNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisKursusId') + Tables\Columns\TextColumn::make('jenisKursusSertifikat') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jumlahJam') + Tables\Columns\TextColumn::make('namaKursus') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('namaKursus') + Tables\Columns\TextColumn::make('institusiPenyelenggara') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('noSertipikat') + Tables\Columns\TextColumn::make('jumlahJam') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahunKursus') + Tables\Columns\TextColumn::make('noSertipikat') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalKursus') + Tables\Columns\TextColumn::make('tahunKursus') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisDiklatId') + Tables\Columns\TextColumn::make('tanggalKursus') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggalSelesaiKursus') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -148,6 +222,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostKursusSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwMasakerjaResource.php b/src/Filament/Resources/PnsRwMasakerjaResource.php index ab44cfd..3237c24 100644 --- a/src/Filament/Resources/PnsRwMasakerjaResource.php +++ b/src/Filament/Resources/PnsRwMasakerjaResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\MasakerjasRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwMasakerjaResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwMasakerja; @@ -20,9 +22,9 @@ class PnsRwMasakerjaResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Masa Kerja'; + protected static ?string $navigationLabel = 'Masa Kerja'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,95 +33,160 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('idPns') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nipBaru') - ->maxLength(18), + ->maxLength(18) + ->visibleOn('view'), Forms\Components\TextInput::make('nipLama') - ->maxLength(9), + ->maxLength(9) + ->visibleOn('view'), Forms\Components\TextInput::make('pengalaman') - ->maxLength(255), - Forms\Components\TextInput::make('tanggalAwal') - ->maxLength(255), - Forms\Components\TextInput::make('tanggalSelesai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nomorSk') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalSk') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nomorBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tanggalBkn') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tasaKerjaTahun') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('masaKerjaBulan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggalAwal') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tanggalSelesai') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('dinilai') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-masakerja --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(MasakerjasRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(MasakerjasRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->hiddenOn(MasakerjasRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->hiddenOn(MasakerjasRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->hiddenOn(MasakerjasRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pengalaman') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalAwal') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tanggalSelesai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomorSk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggalSk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomorBkn') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggalBkn') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tasaKerjaTahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('masaKerjaBulan') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('tanggalAwal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('tanggalSelesai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('dinilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwPemberhentianResource.php b/src/Filament/Resources/PnsRwPemberhentianResource.php index 091e038..bc447f0 100644 --- a/src/Filament/Resources/PnsRwPemberhentianResource.php +++ b/src/Filament/Resources/PnsRwPemberhentianResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PemberhentiansRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPemberhentianResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPemberhentian; @@ -20,9 +22,9 @@ class PnsRwPemberhentianResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Pemberhentian'; + protected static ?string $navigationLabel = 'Pemberhentian'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,65 +33,115 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisHenti') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kedudukanHukumPns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrang') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('asalId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('asalNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('asalNamaLabel') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-pemberhentian --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PemberhentiansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PemberhentiansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('jenisHenti') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrang') + ->hiddenOn(PemberhentiansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('kedudukanHukumPns') + Tables\Columns\TextColumn::make('jenisHenti') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrang') + Tables\Columns\TextColumn::make('kedudukanHukumPns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalNamaLabel') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwPendidikanResource.php b/src/Filament/Resources/PnsRwPendidikanResource.php index 66ef58c..0144245 100644 --- a/src/Filament/Resources/PnsRwPendidikanResource.php +++ b/src/Filament/Resources/PnsRwPendidikanResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PendidikansRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPendidikanResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPendidikan; @@ -20,9 +22,9 @@ class PnsRwPendidikanResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Pendidikan'; + protected static ?string $navigationLabel = 'Pendidikan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,101 +33,171 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('idPns') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('nipBaru') - ->maxLength(18), + ->maxLength(18) + ->visibleOn('view'), Forms\Components\TextInput::make('nipLama') - ->maxLength(9), + ->maxLength(9) + ->visibleOn('view'), Forms\Components\TextInput::make('pendidikanId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('pendidikanNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tkPendidikanId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('tkPendidikanNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tahunLulus') - ->maxLength(255), + ->maxLength(4) + ->visibleOn('view'), Forms\Components\TextInput::make('tglLulus') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('isPendidikanPertama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nomorIjasah') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('namaSekolah') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('gelarDepan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('gelarBelakang') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-pendidikan --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahunLulus', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PendidikansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PendidikansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('idPns') + ->hiddenOn(PendidikansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipBaru') + ->hiddenOn(PendidikansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipLama') + ->hiddenOn(PendidikansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikanId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikanNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tkPendidikanId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tkPendidikanNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tahunLulus') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tglLulus') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('isPendidikanPertama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomorIjasah') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('namaSekolah') + ->grow() + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarDepan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelarBelakang') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwPenghargaanResource.php b/src/Filament/Resources/PnsRwPenghargaanResource.php index 873aa31..0bc52ac 100644 --- a/src/Filament/Resources/PnsRwPenghargaanResource.php +++ b/src/Filament/Resources/PnsRwPenghargaanResource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PenghargaansRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPenghargaanResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPenghargaan; +use Kanekescom\Siasn\Simpeg\Services\PostPenghargaanSaveService; class PnsRwPenghargaanResource extends Resource { @@ -20,9 +25,9 @@ class PnsRwPenghargaanResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Penghargaan'; + protected static ?string $navigationLabel = 'Penghargaan'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,53 +36,95 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('tahun') - ->maxLength(255), + ->maxLength(4) + ->visibleOn('view'), + Forms\Components\TextInput::make('hargaId') + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('hargaNama') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skDate') - ->maxLength(255), - Forms\Components\TextInput::make('hargaNama') - ->maxLength(255), - Forms\Components\TextInput::make('hargaId') - ->maxLength(42), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrangId') - ->maxLength(42), - Forms\Components\TextInput::make('path'), + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-penghargaan --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PenghargaansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PenghargaansRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahun') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrangId') + ->hiddenOn(PenghargaansRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skNomor') + Tables\Columns\TextColumn::make('tahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skDate') + Tables\Columns\TextColumn::make('hargaId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('hargaNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('hargaId') + Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrangId') + Tables\Columns\TextColumn::make('skDate') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -100,6 +147,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostPenghargaanSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwPindahinstansiResource.php b/src/Filament/Resources/PnsRwPindahinstansiResource.php index efffe0c..f8d0906 100644 --- a/src/Filament/Resources/PnsRwPindahinstansiResource.php +++ b/src/Filament/Resources/PnsRwPindahinstansiResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PindahinstansisRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPindahinstansiResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPindahinstansi; @@ -20,9 +22,9 @@ class PnsRwPindahinstansiResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Pindah Instansi'; + protected static ?string $navigationLabel = 'Pindah Instansi'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,221 +33,347 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('eselon') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiIndukBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiIndukLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiKerjaBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansiKerjaLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jabatanFungsionalUmumBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisJabatanBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisJabatanLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisPegawai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisPi') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kpknBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('lokasiKerjaBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('lokasiKerjaLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('orangUsulPeremajaanId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrang') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaIndukBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaIndukLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerjaLama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('tmtPi') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('unorBaru') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('unorLama') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('skUsulNomor') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('skUsulTanggal') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skAsalNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('skAsalTanggal') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skAsalProvNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skAsalProvTanggal') - ->maxLength(255), - Forms\Components\TextInput::make('skAsalTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skBknNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skBknTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTujuanNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTujuanTanggal') - ->maxLength(255), - Forms\Components\TextInput::make('skUsulNomor') - ->maxLength(255), - Forms\Components\TextInput::make('skUsulTanggal') - ->maxLength(255), - Forms\Components\TextInput::make('tmtPi') - ->maxLength(255), - Forms\Components\TextInput::make('unorBaru') - ->maxLength(255), - Forms\Components\TextInput::make('unorLama') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-pindahinstansi --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PindahinstansisRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PindahinstansisRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrang') + ->hiddenOn(PindahinstansisRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('eselon') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiIndukBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiIndukLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansiKerjaLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatanFungsionalUmumBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatanBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatanLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisPegawai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisPi') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kpknBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasiKerjaBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasiKerjaLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('orangUsulPeremajaanId') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrang') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaIndukBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaIndukLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerjaLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skAsalNomor') + Tables\Columns\TextColumn::make('tmtPi') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skAsalProvNomor') + Tables\Columns\TextColumn::make('unorBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skAsalProvTanggal') + Tables\Columns\TextColumn::make('unorLama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skAsalTanggal') + Tables\Columns\TextColumn::make('skUsulNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skBknNomor') + Tables\Columns\TextColumn::make('skUsulTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skBknTanggal') + Tables\Columns\TextColumn::make('skAsalNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skTujuanNomor') + Tables\Columns\TextColumn::make('skAsalTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skTujuanTanggal') + Tables\Columns\TextColumn::make('skAsalProvNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skUsulNomor') + Tables\Columns\TextColumn::make('skAsalProvTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('skUsulTanggal') + Tables\Columns\TextColumn::make('skBknNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tmtPi') + Tables\Columns\TextColumn::make('skBknTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('unorBaru') + Tables\Columns\TextColumn::make('skTujuanNomor') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('unorLama') + Tables\Columns\TextColumn::make('skTujuanTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwPnsunorResource.php b/src/Filament/Resources/PnsRwPnsunorResource.php index e1ab26b..9cc7ec0 100644 --- a/src/Filament/Resources/PnsRwPnsunorResource.php +++ b/src/Filament/Resources/PnsRwPnsunorResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PnsunorsRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPnsunorResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPnsunor; @@ -20,9 +22,9 @@ class PnsRwPnsunorResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW Unor'; + protected static ?string $navigationLabel = 'Unor'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,25 +33,35 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('unorBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrang') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('namaUnorBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('asalId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('asalNama') - ->maxLength(255), - Forms\Components\TextInput::make('instansi') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('asalNamaLabel') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('instansi') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('path'), ]); } @@ -57,45 +69,85 @@ public static function form(Form $form): Form public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-pnsunor --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PnsunorsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PnsunorsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('unorBaru') + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrang') + ->hiddenOn(PnsunorsRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrang') + Tables\Columns\TextColumn::make('unorBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTanggal') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('namaUnorBaru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('instansi') + Tables\Columns\TextColumn::make('asalNamaLabel') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('asalNamaLabel') + Tables\Columns\TextColumn::make('instansi') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwPwkResource.php b/src/Filament/Resources/PnsRwPwkResource.php index 1aa84d9..168be98 100644 --- a/src/Filament/Resources/PnsRwPwkResource.php +++ b/src/Filament/Resources/PnsRwPwkResource.php @@ -7,6 +7,8 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\PwksRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwPwkResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwPwk; @@ -20,9 +22,9 @@ class PnsRwPwkResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW PWK'; + protected static ?string $navigationLabel = 'PWK'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,83 +33,142 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('asalId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('asalNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('instansi') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kpknBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('lokasiKerjaBaru') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsOrang') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('satuanKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skNomor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('skTanggal') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('tmtPwk') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('unorBaru') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-pwk --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + // ->defaultSort('', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(PwksRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(PwksRelationManager::class) + ->wrap() + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('pnsOrang') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalId') + ->hiddenOn(PwksRelationManager::class) + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('asalNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansi') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kpknBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasiKerjaBaru') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('pnsOrang') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuanKerja') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skNomor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('skTanggal') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmtPwk') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unorBaru') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PnsRwSkp22Resource.php b/src/Filament/Resources/PnsRwSkp22Resource.php index 25e9a5b..e0383d9 100644 --- a/src/Filament/Resources/PnsRwSkp22Resource.php +++ b/src/Filament/Resources/PnsRwSkp22Resource.php @@ -4,11 +4,16 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\Skp22sRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwSkp22Resource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwSkp22; +use Kanekescom\Siasn\Simpeg\Services\PostSkp22SaveService; class PnsRwSkp22Resource extends Resource { @@ -20,9 +25,9 @@ class PnsRwSkp22Resource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW SKP 2022'; + protected static ?string $navigationLabel = 'Kinerja'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,101 +36,165 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), + Forms\Components\TextInput::make('tahun') + ->maxLength(4) + ->visibleOn('view'), Forms\Components\TextInput::make('hasilKinerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('hasilKinerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('perilakuKerja') + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('PerilakuKerjaNilai') + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kuadranKinerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('KuadranKinerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('namaPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nipNrpPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiGolonganId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiJabatanNm') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiUnorNm') - ->maxLength(255), - Forms\Components\TextInput::make('perilakuKerja') - ->maxLength(255), - Forms\Components\TextInput::make('PerilakuKerjaNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pnsDinilaiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('statusPenilai') - ->maxLength(255), - Forms\Components\TextInput::make('tahun') - ->maxLength(255), - Forms\Components\TextInput::make('path'), + ->maxLength(255) + ->visibleOn('view'), + Forms\Components\TextInput::make('path') + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-skp22 --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(Skp22sRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(Skp22sRelationManager::class) + ->wrap() + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('ID'), + Tables\Columns\TextColumn::make('tahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('hasilKinerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('hasilKinerjaNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('perilakuKerja') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('PerilakuKerjaNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kuadranKinerja') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('KuadranKinerjaNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('namaPenilai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nipNrpPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiGolonganId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiJabatanNm') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiUnorNm') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('perilakuKerja') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('PerilakuKerjaNilai') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pnsDinilaiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPenilai') - ->copyable() - ->sortable() - ->searchable(isIndividual: true), - Tables\Columns\TextColumn::make('tahun') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -148,6 +217,27 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + (new PostSkp22SaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PnsRwSkpResource.php b/src/Filament/Resources/PnsRwSkpResource.php index d9b3ae7..db45d95 100644 --- a/src/Filament/Resources/PnsRwSkpResource.php +++ b/src/Filament/Resources/PnsRwSkpResource.php @@ -4,11 +4,17 @@ use Filament\Forms; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Log; +use Kanekescom\Siasn\Simpeg\Filament\Resources\PegawaiResource\RelationManagers\SkpsRelationManager; use Kanekescom\Siasn\Simpeg\Filament\Resources\PnsRwSkpResource\Pages; use Kanekescom\Siasn\Simpeg\Models\PnsRwSkp; +use Kanekescom\Siasn\Simpeg\Services\PostSkp2021SaveService; +use Kanekescom\Siasn\Simpeg\Services\PostSkpSaveService; class PnsRwSkpResource extends Resource { @@ -20,9 +26,9 @@ class PnsRwSkpResource extends Resource protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; - protected static ?string $navigationLabel = 'PNS RW SKP'; + protected static ?string $navigationLabel = 'SKP'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Riwayat'; protected static bool $shouldRegisterNavigation = true; @@ -31,232 +37,361 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('tahun') - ->maxLength(255), + ->maxLength(4) + ->visibleOn('view'), Forms\Components\TextInput::make('nilaiSkp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('orientasiPelayanan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('integritas') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('komitmen') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('disiplin') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kerjasama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nilaiPerilakuKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nilaiPrestasiKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('kepemimpinan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jumlah') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nilairatarata') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPejabatPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pejabatPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('pns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanNonPns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNonPns') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNipNrp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiNipNrp') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiUnorNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiUnorNama') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('penilaiTmtGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('atasanPenilaiTmtGolongan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('statusPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('statusAtasanPenilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('jenisPeraturanKinerjaKd') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('inisiatifKerja') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('konversiNilai') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('nilaiIntegrasi') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), ]); } public static function table(Table $table): Table { return $table + ->headerActions([ + Tables\Actions\Action::make('sync') + ->requiresConfirmation() + ->action(function () { + Artisan::call('siasn-simpeg:pull-riwayat pns-rw-skp --track --startOver'); + }), + ]) + ->defaultPaginationPageOption(5) + ->defaultSort('tahun', 'desc') ->columns([ + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->hiddenOn(SkpsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('pegawai.nama') + ->hiddenOn(SkpsRelationManager::class) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('tahun') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nilaiSkp') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('orientasiPelayanan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('integritas') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('komitmen') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('disiplin') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kerjasama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nilaiPerilakuKerja') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nilaiPrestasiKerja') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kepemimpinan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jumlah') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nilairatarata') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPejabatPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pejabatPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanNonPns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNonPns') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNipNrp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiNipNrp') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiUnorNama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiUnorNama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiJabatan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiJabatan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('penilaiTmtGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('atasanPenilaiTmtGolongan') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('statusAtasanPenilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenisPeraturanKinerjaKd') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('inisiatifKerja') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('konversiNilai') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nilaiIntegrasi') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -279,6 +414,33 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\ActionGroup::make([ Tables\Actions\ViewAction::make(), + Tables\Actions\EditAction::make() + ->action(function ($data, $record, $livewire) { + try { + if ($livewire->getOwnerRecord()->tahun == 2021) { + (new PostSkp2021SaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + } else { + (new PostSkpSaveService($data, $record)) + ->send() + ->pull($livewire->getOwnerRecord()->nip_baru); + } + + Notification::make() + ->title('Saved successfully') + ->success() + ->send(); + } catch (\Throwable $e) { + Notification::make() + ->title('Something went wrong') + ->danger() + ->body($e->getMessage()) + ->send(); + + Log::error($e->getMessage()); + } + }), ]), ]) ->bulkActions([ diff --git a/src/Filament/Resources/PullTrackingResource.php b/src/Filament/Resources/PullTrackingResource.php new file mode 100644 index 0000000..8d114ad --- /dev/null +++ b/src/Filament/Resources/PullTrackingResource.php @@ -0,0 +1,120 @@ +schema([ + Forms\Components\TextInput::make('command') + ->columnSpanFull() + ->required() + ->maxLength(255), + Forms\Components\TextInput::make('start_from') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('last_try') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('amount') + ->required() + ->numeric() + ->default(0), + Forms\Components\DateTimePicker::make('done_at'), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('command') + ->grow() + ->wrap() + ->searchable(), + Tables\Columns\TextColumn::make('start_from') + ->numeric() + ->alignEnd() + ->sortable(), + Tables\Columns\TextColumn::make('last_try') + ->numeric() + ->alignEnd() + ->sortable(), + Tables\Columns\TextColumn::make('amount') + ->numeric() + ->alignEnd() + ->sortable(), + Tables\Columns\TextColumn::make('errors_count') + ->counts('errors') + ->numeric() + ->alignEnd() + ->sortable(), + Tables\Columns\TextColumn::make('done_at') + ->dateTime() + ->sortable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\ActionGroup::make([ + Tables\Actions\ViewAction::make(), + ]), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + // + ]), + ]); + } + + public static function getRelations(): array + { + return [ + ErrorsRelationManager::class, + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListPullTrackings::route('/'), + 'view' => Pages\ViewPullTracking::route('/{record}'), + ]; + } +} diff --git a/src/Filament/Resources/PullTrackingResource/Pages/ListPullTrackings.php b/src/Filament/Resources/PullTrackingResource/Pages/ListPullTrackings.php new file mode 100644 index 0000000..a3a12cb --- /dev/null +++ b/src/Filament/Resources/PullTrackingResource/Pages/ListPullTrackings.php @@ -0,0 +1,18 @@ +recordTitleAttribute('pns_id') + ->columns([ + Tables\Columns\TextColumn::make('#') + ->rowIndex(), + Tables\Columns\TextColumn::make('pegawai.nama') + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('Nama'), + Tables\Columns\TextColumn::make('pegawai.nip_baru') + ->copyable() + ->sortable() + ->searchable(isIndividual: true) + ->label('NIP'), + Tables\Columns\TextColumn::make('done_at') + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->headerActions([ + // + ]) + ->actions([ + // + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + // + ]), + ]); + } +} diff --git a/src/Filament/Resources/ReferensiRefUnorResource.php b/src/Filament/Resources/ReferensiRefUnorResource.php index f3f1f74..24b79b3 100644 --- a/src/Filament/Resources/ReferensiRefUnorResource.php +++ b/src/Filament/Resources/ReferensiRefUnorResource.php @@ -22,7 +22,7 @@ class ReferensiRefUnorResource extends Resource protected static ?string $navigationLabel = 'Referensi Unor'; - protected static ?string $navigationGroup = 'SIASN SIMPEG'; + protected static ?string $navigationGroup = 'Referensi'; protected static bool $shouldRegisterNavigation = true; @@ -31,25 +31,35 @@ public static function form(Form $form): Form return $form ->schema([ Forms\Components\TextInput::make('id') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('InstansiId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('DiatasanId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('EselonId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('NamaUnor') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('NamaJabatan') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('CepatKode') - ->maxLength(255), + ->maxLength(255) + ->visibleOn('view'), Forms\Components\TextInput::make('IndukUnorId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('PemimpinPnsId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), Forms\Components\TextInput::make('JenisUnorId') - ->maxLength(42), + ->maxLength(42) + ->visibleOn('view'), ]); } @@ -58,43 +68,60 @@ public static function table(Table $table): Table return $table ->columns([ Tables\Columns\TextColumn::make('id') - ->label('ID') + ->toggleable(isToggledHiddenByDefault: true) ->copyable() ->sortable() - ->searchable(isIndividual: true), + ->searchable(isIndividual: true) + ->label('ID'), Tables\Columns\TextColumn::make('InstansiId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('DiatasanId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('EselonId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('NamaUnor') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('NamaJabatan') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('CepatKode') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('IndukUnorId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('PemimpinPnsId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('JenisUnorId') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), diff --git a/src/Filament/Resources/PegawaiResource.php b/src/Filament/Traits/HasPegawaiResource.php similarity index 80% rename from src/Filament/Resources/PegawaiResource.php rename to src/Filament/Traits/HasPegawaiResource.php index 9cecb7c..07e22c7 100644 --- a/src/Filament/Resources/PegawaiResource.php +++ b/src/Filament/Traits/HasPegawaiResource.php @@ -1,32 +1,16 @@ schema([ @@ -166,293 +150,397 @@ public static function form(Form $form): Form Forms\Components\Textarea::make('satuan_kerja_kerja_nama') ->maxLength(65535) ->columnSpanFull(), + Forms\Components\TextInput::make('is_valid_nik') + ->maxLength(1), ]); } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('pns_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nip_baru') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nip_lama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelar_depan') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gelar_belakang') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempat_lahir_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tempat_lahir_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggal_lahir') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_kelamin') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('agama_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('agama_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_kawin_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_kawin_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nik') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomor_hp') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('email') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('email_gov') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('alamat') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('npwp_nomor') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('bpjs') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_pegawai_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_pegawai_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kedudukan_hukum_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kedudukan_hukum_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('status_cpns_pns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kartu_asn_virtual') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomor_sk_cpns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggal_sk_cpns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmt_cpns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('nomor_sk_pns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tanggal_sk_pns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmt_pns') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gol_awal_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gol_awal_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gol_akhir_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('gol_akhir_nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmt_golongan') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('mk_tahun') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('mk_bulan') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_jabatan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jenis_jabatan_nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('jabatan_nama') + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tmt_jabatan') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tingkat_pendidikan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tingkat_pendidikan_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikan_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('pendidikan_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('tahun_lulus') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kpkn_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('kpkn_nama') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('lokasi_kerja_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('lokasi_kerja_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('unor_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('unor_nama') + ->grow() + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansi_induk_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('instansi_induk_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('instansi_kerja_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('instansi_kerja_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuan_kerja_induk_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('satuan_kerja_induk_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), Tables\Columns\TextColumn::make('satuan_kerja_kerja_id') ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('satuan_kerja_kerja_nama') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() + ->copyable() + ->sortable() + ->searchable(isIndividual: true), + Tables\Columns\TextColumn::make('is_valid_nik') + ->toggleable(isToggledHiddenByDefault: true) + ->wrap() ->copyable() ->sortable() ->searchable(isIndividual: true), @@ -484,10 +572,27 @@ public static function table(Table $table): Table ]); } - public static function getPages(): array + public static function getRelations(): array { return [ - 'index' => Pages\ManagePegawais::route('/'), + RelationManagers\AngkakreditsRelationManager::class, + RelationManagers\CltnsRelationManager::class, + RelationManagers\DiklatsRelationManager::class, + RelationManagers\Dp3sRelationManager::class, + RelationManagers\GolongansRelationManager::class, + RelationManagers\HukdisesRelationManager::class, + RelationManagers\JabatansRelationManager::class, + RelationManagers\KinerjaperiodiksRelationManager::class, + RelationManagers\KursusesRelationManager::class, + RelationManagers\MasakerjasRelationManager::class, + RelationManagers\PemberhentiansRelationManager::class, + RelationManagers\PendidikansRelationManager::class, + RelationManagers\PenghargaansRelationManager::class, + RelationManagers\PindahinstansisRelationManager::class, + RelationManagers\PnsunorsRelationManager::class, + RelationManagers\PwksRelationManager::class, + RelationManagers\SkpsRelationManager::class, + RelationManagers\Skp22sRelationManager::class, ]; } } diff --git a/src/Helpers/AngkakreditIdResponseTransformer.php b/src/Helpers/AngkakreditIdResponseTransformer.php new file mode 100644 index 0000000..a28ba18 --- /dev/null +++ b/src/Helpers/AngkakreditIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/DiklatIdResponseTransformer.php b/src/Helpers/DiklatIdResponseTransformer.php new file mode 100644 index 0000000..3b86098 --- /dev/null +++ b/src/Helpers/DiklatIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/HukdisIdResponseTransformer.php b/src/Helpers/HukdisIdResponseTransformer.php new file mode 100644 index 0000000..2b197e5 --- /dev/null +++ b/src/Helpers/HukdisIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/KursusIdResponseTransformer.php b/src/Helpers/KursusIdResponseTransformer.php new file mode 100644 index 0000000..d931110 --- /dev/null +++ b/src/Helpers/KursusIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/PenghargaanIdResponseTransformer.php b/src/Helpers/PenghargaanIdResponseTransformer.php new file mode 100644 index 0000000..a098c76 --- /dev/null +++ b/src/Helpers/PenghargaanIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/Skp22IdResponseTransformer.php b/src/Helpers/Skp22IdResponseTransformer.php new file mode 100644 index 0000000..7f1e2f4 --- /dev/null +++ b/src/Helpers/Skp22IdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Helpers/SkpIdResponseTransformer.php b/src/Helpers/SkpIdResponseTransformer.php new file mode 100644 index 0000000..e18b3c4 --- /dev/null +++ b/src/Helpers/SkpIdResponseTransformer.php @@ -0,0 +1,31 @@ +ok() == false) { + $this->class = collect([]); + + return; + } + + $data = $response->collect()->get('data'); + + if (is_array($data)) { + $items = fractal($data, $transformer)->toArray(); + + $this->class = collect($items['data']); + + return; + } + + return $this->class = collect(); + } +} diff --git a/src/Models/Pegawai.php b/src/Models/Pegawai.php index 6ed7dcb..65f8b6a 100644 --- a/src/Models/Pegawai.php +++ b/src/Models/Pegawai.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; class Pegawai extends Model @@ -40,4 +41,106 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function angkakredits(): HasMany + { + return $this->hasMany(PnsRwAngkakredit::class, 'pns'); + } + + public function cltns(): HasMany + { + return $this->hasMany(PnsRwCltn::class, 'pnsOrangId'); + } + + public function diklats(): HasMany + { + return $this->hasMany(PnsRwDiklat::class, 'idPns'); + } + + public function dp3s(): HasMany + { + return $this->hasMany(PnsRwDp3::class, 'pnsId'); + } + + public function golongans(): HasMany + { + return $this->hasMany(PnsRwGolongan::class, 'idPns'); + } + + public function hukdises(): HasMany + { + return $this->hasMany(PnsRwHukdis::class, 'pnsOrang'); + } + + public function jabatans(): HasMany + { + return $this->hasMany(PnsRwJabatan::class, 'idPns'); + } + + public function kinerjaperiodiks(): HasMany + { + return $this->hasMany(PnsRwKinerjaperiodik::class, 'pnsDinilaiId'); + } + + public function kursuses(): HasMany + { + return $this->hasMany(PnsRwKursus::class, 'idPns'); + } + + public function masakerjas(): HasMany + { + return $this->hasMany(PnsRwMasakerja::class, 'idPns'); + } + + public function pemberhentians(): HasMany + { + return $this->hasMany(PnsRwPemberhentian::class, 'pnsOrang'); + } + + public function pendidikans(): HasMany + { + return $this->hasMany(PnsRwPendidikan::class, 'idPns'); + } + + public function penghargaans(): HasMany + { + return $this->hasMany(PnsRwPenghargaan::class, 'pnsOrangId'); + } + + public function pindahinstansis(): HasMany + { + return $this->hasMany(PnsRwPindahinstansi::class, 'pnsOrang'); + } + + public function pnsunors(): HasMany + { + return $this->hasMany(PnsRwPnsunor::class, 'pnsOrang'); + } + + public function pwks(): HasMany + { + return $this->hasMany(PnsRwPwk::class, 'pnsOrang'); + } + + public function skps(): HasMany + { + return $this->hasMany(PnsRwSkp::class, 'pns'); + } + + public function skp22s(): HasMany + { + return $this->hasMany(PnsRwSkp22::class, 'pnsDinilaiId'); + } + + public function scopePns($query) + { + return $query + ->whereNotIn('kedudukan_hukum_id', [71, 72, 73]); + } + + public function scopePppk($query) + { + return $query + ->whereIn('kedudukan_hukum_id', [71, 72, 73]); + } } diff --git a/src/Models/PnsRwAngkakredit.php b/src/Models/PnsRwAngkakredit.php index 12756b1..9815e39 100644 --- a/src/Models/PnsRwAngkakredit.php +++ b/src/Models/PnsRwAngkakredit.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwAngkakredit extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pns'); + } } diff --git a/src/Models/PnsRwCltn.php b/src/Models/PnsRwCltn.php index 9aa9cd0..b41aa54 100644 --- a/src/Models/PnsRwCltn.php +++ b/src/Models/PnsRwCltn.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwCltn extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrangId'); + } } diff --git a/src/Models/PnsRwDiklat.php b/src/Models/PnsRwDiklat.php index 895961a..8042b1d 100644 --- a/src/Models/PnsRwDiklat.php +++ b/src/Models/PnsRwDiklat.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwDiklat extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } } diff --git a/src/Models/PnsRwDp3.php b/src/Models/PnsRwDp3.php index 6e5ea43..3886fd5 100644 --- a/src/Models/PnsRwDp3.php +++ b/src/Models/PnsRwDp3.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwDp3 extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsId'); + } } diff --git a/src/Models/PnsRwGolongan.php b/src/Models/PnsRwGolongan.php index 53e2d06..dd7a53e 100644 --- a/src/Models/PnsRwGolongan.php +++ b/src/Models/PnsRwGolongan.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwGolongan extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } } diff --git a/src/Models/PnsRwHukdis.php b/src/Models/PnsRwHukdis.php index cc8dc09..8f2fd53 100644 --- a/src/Models/PnsRwHukdis.php +++ b/src/Models/PnsRwHukdis.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwHukdis extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrang'); + } } diff --git a/src/Models/PnsRwJabatan.php b/src/Models/PnsRwJabatan.php index 0eefdfa..8f76215 100644 --- a/src/Models/PnsRwJabatan.php +++ b/src/Models/PnsRwJabatan.php @@ -4,7 +4,12 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; +use Kanekescom\Siasn\Referensi\Models\Eselon; +use Kanekescom\Siasn\Referensi\Models\JabatanFungsional; +use Kanekescom\Siasn\Referensi\Models\JabatanFungsionalUmum; +use Kanekescom\Siasn\Referensi\Models\JenisJabatan; class PnsRwJabatan extends Model { @@ -33,4 +38,34 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } + + public function eselon(): BelongsTo + { + return $this->belongsTo(Eselon::class, 'eselonId'); + } + + public function jabatanFungsional(): BelongsTo + { + return $this->belongsTo(JabatanFungsional::class, 'jabatanFungsionalId'); + } + + public function jabatanFungsionalUmum(): BelongsTo + { + return $this->belongsTo(JabatanFungsionalUmum::class, 'jabatanFungsionalUmumId'); + } + + public function unor(): BelongsTo + { + return $this->belongsTo(ReferensiRefUnor::class, 'unorId'); + } + + public function relJenisJabatan(): BelongsTo + { + return $this->belongsTo(JenisJabatan::class, 'jenisJabatan'); + } } diff --git a/src/Models/PnsRwKinerjaperiodik.php b/src/Models/PnsRwKinerjaperiodik.php index 805ce4f..bc1c4ab 100644 --- a/src/Models/PnsRwKinerjaperiodik.php +++ b/src/Models/PnsRwKinerjaperiodik.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwKinerjaperiodik extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsDinilaiId'); + } } diff --git a/src/Models/PnsRwKursus.php b/src/Models/PnsRwKursus.php index 029ed03..068d060 100644 --- a/src/Models/PnsRwKursus.php +++ b/src/Models/PnsRwKursus.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwKursus extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } } diff --git a/src/Models/PnsRwMasakerja.php b/src/Models/PnsRwMasakerja.php index 9e36f87..e91b5c9 100644 --- a/src/Models/PnsRwMasakerja.php +++ b/src/Models/PnsRwMasakerja.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwMasakerja extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } } diff --git a/src/Models/PnsRwPemberhentian.php b/src/Models/PnsRwPemberhentian.php index e72b944..b181aa6 100644 --- a/src/Models/PnsRwPemberhentian.php +++ b/src/Models/PnsRwPemberhentian.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPemberhentian extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrang'); + } } diff --git a/src/Models/PnsRwPendidikan.php b/src/Models/PnsRwPendidikan.php index 3d28108..9851a2e 100644 --- a/src/Models/PnsRwPendidikan.php +++ b/src/Models/PnsRwPendidikan.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPendidikan extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'idPns'); + } } diff --git a/src/Models/PnsRwPenghargaan.php b/src/Models/PnsRwPenghargaan.php index 3063fa0..3686b4c 100644 --- a/src/Models/PnsRwPenghargaan.php +++ b/src/Models/PnsRwPenghargaan.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPenghargaan extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrangId'); + } } diff --git a/src/Models/PnsRwPindahinstansi.php b/src/Models/PnsRwPindahinstansi.php index fa7257e..b1d8692 100644 --- a/src/Models/PnsRwPindahinstansi.php +++ b/src/Models/PnsRwPindahinstansi.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPindahinstansi extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrang'); + } } diff --git a/src/Models/PnsRwPnsunor.php b/src/Models/PnsRwPnsunor.php index ba44264..1bd5a18 100644 --- a/src/Models/PnsRwPnsunor.php +++ b/src/Models/PnsRwPnsunor.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPnsunor extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrang'); + } } diff --git a/src/Models/PnsRwPwk.php b/src/Models/PnsRwPwk.php index c243820..7bec57d 100644 --- a/src/Models/PnsRwPwk.php +++ b/src/Models/PnsRwPwk.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwPwk extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsOrang'); + } } diff --git a/src/Models/PnsRwSkp.php b/src/Models/PnsRwSkp.php index a77c3d8..88d5d06 100644 --- a/src/Models/PnsRwSkp.php +++ b/src/Models/PnsRwSkp.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwSkp extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pns'); + } } diff --git a/src/Models/PnsRwSkp22.php b/src/Models/PnsRwSkp22.php index d4e0e40..378fc48 100644 --- a/src/Models/PnsRwSkp22.php +++ b/src/Models/PnsRwSkp22.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; class PnsRwSkp22 extends Model @@ -33,4 +34,9 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pnsDinilaiId'); + } } diff --git a/src/Models/PullTracking.php b/src/Models/PullTracking.php index c317aed..2c6de1d 100644 --- a/src/Models/PullTracking.php +++ b/src/Models/PullTracking.php @@ -24,6 +24,6 @@ public function getTable() public function errors(): HasMany { - return $this->hasMany(PullTrackingError::class, 'pull_tracking_id'); + return $this->hasMany(PullTrackingError::class); } } diff --git a/src/Models/PullTrackingError.php b/src/Models/PullTrackingError.php index 61c526f..fb4f738 100644 --- a/src/Models/PullTrackingError.php +++ b/src/Models/PullTrackingError.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class PullTrackingError extends Model { @@ -20,4 +21,14 @@ public function getTable() { return 'siasn_simpeg_'.str(class_basename(__CLASS__))->snake(); } + + public function pullTracking(): BelongsTo + { + return $this->belongsTo(PullTracking::class); + } + + public function pegawai(): BelongsTo + { + return $this->belongsTo(Pegawai::class, 'pns_id', 'pns_id'); + } } diff --git a/src/Services/PostAngkakreditSaveService.php b/src/Services/PostAngkakreditSaveService.php new file mode 100644 index 0000000..ee27cc8 --- /dev/null +++ b/src/Services/PostAngkakreditSaveService.php @@ -0,0 +1,37 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostDiklatSaveService.php b/src/Services/PostDiklatSaveService.php new file mode 100644 index 0000000..0aa9590 --- /dev/null +++ b/src/Services/PostDiklatSaveService.php @@ -0,0 +1,33 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostHukdisSaveService.php b/src/Services/PostHukdisSaveService.php new file mode 100644 index 0000000..c84dd96 --- /dev/null +++ b/src/Services/PostHukdisSaveService.php @@ -0,0 +1,41 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostJabatanSaveService.php b/src/Services/PostJabatanSaveService.php new file mode 100644 index 0000000..a88b3cf --- /dev/null +++ b/src/Services/PostJabatanSaveService.php @@ -0,0 +1,39 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + 'pnsId' => $this->record->idPns, + 'eselonId' => Eselon::find($this->record->eselonId)?->id, + ]; + } +} diff --git a/src/Services/PostKinerjaperiodikSaveService.php b/src/Services/PostKinerjaperiodikSaveService.php new file mode 100644 index 0000000..931a8e5 --- /dev/null +++ b/src/Services/PostKinerjaperiodikSaveService.php @@ -0,0 +1,40 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostKursusSaveService.php b/src/Services/PostKursusSaveService.php new file mode 100644 index 0000000..cbd8ed3 --- /dev/null +++ b/src/Services/PostKursusSaveService.php @@ -0,0 +1,36 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostPenghargaanSaveService.php b/src/Services/PostPenghargaanSaveService.php new file mode 100644 index 0000000..11d9663 --- /dev/null +++ b/src/Services/PostPenghargaanSaveService.php @@ -0,0 +1,28 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostRiwayatBase.php b/src/Services/PostRiwayatBase.php new file mode 100644 index 0000000..07ca677 --- /dev/null +++ b/src/Services/PostRiwayatBase.php @@ -0,0 +1,55 @@ +data = $data; + $this->record = $record; + } + + protected function transform(array $data = []) + { + return $data; + } + + protected function buildQuery() + { + $data = collect($this->data) + ->merge($this->transform()); + + return collect($this->record->toArray()) + ->merge($data) + ->only($this->only) + ->reject(fn ($value) => $value === null || $value === '') + ->toArray(); + } + + public function send() + { + Simpeg::{$this->pushMethod}($this->buildQuery()); + + return $this; + } + + public function pull($nipBaru) + { + return PullRiwayatService::find($nipBaru) + ->{$this->pullMethod}(); + } +} diff --git a/src/Services/PostSkp2021SaveService.php b/src/Services/PostSkp2021SaveService.php new file mode 100644 index 0000000..bbea01e --- /dev/null +++ b/src/Services/PostSkp2021SaveService.php @@ -0,0 +1,56 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostSkp22SaveService.php b/src/Services/PostSkp22SaveService.php new file mode 100644 index 0000000..a633690 --- /dev/null +++ b/src/Services/PostSkp22SaveService.php @@ -0,0 +1,34 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PostSkpSaveService.php b/src/Services/PostSkpSaveService.php new file mode 100644 index 0000000..71089be --- /dev/null +++ b/src/Services/PostSkpSaveService.php @@ -0,0 +1,53 @@ + config('siasn-api.const.instansi_id'), + 'satuanKerjaId' => config('siasn-api.const.satuan_kerja_id'), + ]; + } +} diff --git a/src/Services/PullRiwayatService.php b/src/Services/PullRiwayatService.php new file mode 100644 index 0000000..697ee69 --- /dev/null +++ b/src/Services/PullRiwayatService.php @@ -0,0 +1,215 @@ +nipBaru = $nipBaru; + $instance->pegawai = Models\Pegawai::where('nip_baru', $nipBaru)->first(); + + return $instance; + } + + public function angkakredit() + { + $response = Simpeg::getPnsRwAngkakredit($this->nipBaru); + + $this->upsert($response, Models\PnsRwAngkakredit::class, 'pns'); + } + + public function cltn() + { + $response = Simpeg::getPnsRwCltn($this->nipBaru); + + $this->upsert($response, Models\PnsRwCltn::class, 'pnsOrangId'); + + return $this; + } + + public function diklat() + { + $response = Simpeg::getPnsRwDiklat($this->nipBaru); + + $this->upsert($response, Models\PnsRwDiklat::class, 'idPns'); + + return $this; + } + + public function dp3() + { + $response = Simpeg::getPnsRwDp3($this->nipBaru); + + $this->upsert($response, Models\PnsRwDp3::class, 'pnsId'); + + return $this; + } + + public function golongan() + { + $response = Simpeg::getPnsRwGolongan($this->nipBaru); + + $this->upsert($response, Models\PnsRwGolongan::class, 'idPns'); + + return $this; + } + + public function hukdis() + { + $response = Simpeg::getPnsRwHukdis($this->nipBaru); + + $this->upsert($response, Models\PnsRwHukdis::class, 'pnsOrang'); + + return $this; + } + + public function jabatan() + { + $response = Simpeg::getPnsRwJabatan($this->nipBaru); + + $this->upsert($response, Models\PnsRwJabatan::class, 'idPns'); + + return $this; + } + + public function kinerjaperiodik() + { + $response = Simpeg::getPnsRwKinerjaperiodik($this->nipBaru); + + $this->upsert($response, Models\PnsRwKinerjaperiodik::class, 'pnsDinilaiId'); + + return $this; + } + + public function kursus() + { + $response = Simpeg::getPnsRwKursus($this->nipBaru); + + $this->upsert($response, Models\PnsRwKursus::class, 'idPns'); + + return $this; + } + + public function masakerja() + { + $response = Simpeg::getPnsRwMasakerja($this->nipBaru); + + $this->upsert($response, Models\PnsRwMasakerja::class, 'idPns'); + + return $this; + } + + public function pemberhentian() + { + $response = Simpeg::getPnsRwPemberhentian($this->nipBaru); + + $this->upsert($response, Models\PnsRwPemberhentian::class, 'pnsOrang'); + + return $this; + } + + public function pendidikan() + { + $response = Simpeg::getPnsRwPendidikan($this->nipBaru); + + $this->upsert($response, Models\PnsRwPendidikan::class, 'idPns'); + + return $this; + } + + public function penghargaan() + { + $response = Simpeg::getPnsRwPenghargaan($this->nipBaru); + + $this->upsert($response, Models\PnsRwPenghargaan::class, 'pnsOrangId'); + + return $this; + } + + public function pindahinstansi() + { + $response = Simpeg::getPnsRwPindahinstansi($this->nipBaru); + + $this->upsert($response, Models\PnsRwPindahinstansi::class, 'pnsOrang'); + + return $this; + } + + public function pnsunor() + { + $response = Simpeg::getPnsRwPnsunor($this->nipBaru); + + $this->upsert($response, Models\PnsRwPnsunor::class, 'pnsOrang'); + + return $this; + } + + public function pwk() + { + $response = Simpeg::getPnsRwPwk($this->nipBaru); + + $this->upsert($response, Models\PnsRwPwk::class, 'pnsOrang'); + + return $this; + } + + public function skp() + { + $response = Simpeg::getPnsRwSkp($this->nipBaru); + + $this->upsert($response, Models\PnsRwSkp::class, 'pns'); + + return $this; + } + + public function skp22() + { + $response = Simpeg::getPnsRwSkp22($this->nipBaru); + + $this->upsert($response, Models\PnsRwSkp22::class, 'pnsDinilaiId'); + + return $this; + } + + protected function upsert($response, $model, $pnsId) + { + if ($response->count()) { + $model = $model::where($pnsId, $this->pegawai->pns_id); + + DB::transaction(function () use ($model, $response, $pnsId) { + if (config('siasn-simpeg.truncate_model_before_pull')) { + $model->delete(); + } + + $response->chunk(config('siasn-simpeg.chunk_data'))->each(function ($item) use ($model, $pnsId) { + $item = $item->map(function ($item) { + if (isset($item['path'])) { + $item['path'] = collect($item['path'])->toJson(); + } + + return Arr::except($item, [ + 'created_at', + 'updated_at', + 'deleted_at', + ]); + }); + $model->upsert($item->toArray(), $pnsId); + $model->withTrashed() + ->whereIn('id', $item->pluck('id')) + ->restore(); + }); + }); + } + } +} diff --git a/src/SiasnSimpegPanelProvider.php b/src/SiasnSimpegPanelProvider.php index 2a9240f..9deb437 100644 --- a/src/SiasnSimpegPanelProvider.php +++ b/src/SiasnSimpegPanelProvider.php @@ -8,7 +8,6 @@ use Filament\Pages; use Filament\Panel; use Filament\PanelProvider; -use Filament\Support\Colors\Color; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; @@ -16,6 +15,7 @@ use Illuminate\Session\Middleware\AuthenticateSession; use Illuminate\Session\Middleware\StartSession; use Illuminate\View\Middleware\ShareErrorsFromSession; +use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class SiasnSimpegPanelProvider extends PanelProvider { @@ -29,24 +29,26 @@ public function panel(Panel $panel): Panel ->default() ->id(config('siasn-simpeg.filament.id')) ->path(config('siasn-simpeg.filament.path')) + ->profile(isSimple: false) ->login() - ->brandLogo(null) - ->favicon(null) - ->colors([ - 'primary' => Color::Amber, - ]) + ->brandLogo(config('siasn-simpeg.filament.brandLogo')) + ->favicon(config('siasn-simpeg.filament.favicon')) + ->colors(config('siasn-simpeg.filament.colors')) + ->topbar(config('siasn-simpeg.filament.topbar')) + ->sidebarCollapsibleOnDesktop() ->discoverResources(in: __DIR__.'/Filament/Resources', for: 'Kanekescom\\Siasn\\Simpeg\\Filament\\Resources') ->discoverPages(in: __DIR__.'/Filament/Pages', for: 'Kanekescom\\Siasn\\Simpeg\\Filament\\Pages') ->pages([ Pages\Dashboard::class, ]) ->discoverWidgets(in: __DIR__.'/Filament/Widgets', for: 'Kanekescom\\Siasn\\Simpeg\\Filament\\Widgets') + ->topbar(config('siasn-simpeg.filament.topbar')) + ->sidebarCollapsibleOnDesktop() ->widgets([ // ]) - ->navigationGroups([ - // - ]) + ->navigationGroups(config('siasn-simpeg.filament.navigationGroups')) + ->plugin(FilamentSpatieLaravelBackupPlugin::make()) ->middleware([ EncryptCookies::class, AddQueuedCookiesToResponse::class, diff --git a/src/Traits/HasAngkaKreditEndpoint.php b/src/Traits/HasAngkaKreditEndpoint.php index 849827f..7ad3972 100644 --- a/src/Traits/HasAngkaKreditEndpoint.php +++ b/src/Traits/HasAngkaKreditEndpoint.php @@ -2,29 +2,38 @@ namespace Kanekescom\Siasn\Simpeg\Traits; +use Illuminate\Http\Client\Response; +use Kanekescom\Siasn\Simpeg\Helpers\AngkakreditIdResponseTransformer; + trait HasAngkaKreditEndpoint { - public function deleteAngkakreditDelete(array $paths = [], array $query = []): Response + public function deleteAngkakreditDelete($idRiwayatAngkaKredit): Response { - $urlFormat = '/angkakredit/delete/{idRiwayatAngkaKredit}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatAngkaKredit' => $idRiwayatAngkaKredit, + ]; - return $this->delete($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}($paths); } - public function getAngkakreditId(array $paths = [], array $query = []): Response + public function getAngkakreditId($idRiwayatAngkaKredit) { - $urlFormat = '/angkakredit/id/{idRiwayatAngkaKredit}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatAngkaKredit' => $idRiwayatAngkaKredit, + ]; + + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; - return $this->get($urlParsed, $query); + return new AngkakreditIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postAngkakreditSave(array $paths = [], array $query = []): Response + public function postAngkakreditSave(array $query = []): Response { - $urlFormat = '/angkakredit/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasDiklatEndpoint.php b/src/Traits/HasDiklatEndpoint.php index 39d5ecc..5415aa4 100644 --- a/src/Traits/HasDiklatEndpoint.php +++ b/src/Traits/HasDiklatEndpoint.php @@ -3,23 +3,28 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\DiklatIdResponseTransformer; trait HasDiklatEndpoint { - public function getDiklatId(array $paths = [], array $query = []): Response + public function getDiklatId($idRiwayatDiklat) { - $urlFormat = '/diklat/id/{idRiwayatDiklat}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatDiklat' => $idRiwayatDiklat, + ]; - return $this->get($urlParsed, $query); + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new DiklatIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postDiklatSave(array $paths = [], array $query = []): Response + public function postDiklatSave(array $query = []): Response { - $urlFormat = '/diklat/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasHukdisEndpoint.php b/src/Traits/HasHukdisEndpoint.php index feb08b7..6c712a6 100644 --- a/src/Traits/HasHukdisEndpoint.php +++ b/src/Traits/HasHukdisEndpoint.php @@ -3,23 +3,28 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\HukdisIdResponseTransformer; trait HasHukdisEndpoint { - public function getHukdisId(array $paths = [], array $query = []): Response + public function getHukdisId($idRiwayatHukdis) { - $urlFormat = '/hukdis/id/{idRiwayatHukdis}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatHukdis' => $idRiwayatHukdis, + ]; - return $this->get($urlParsed, $query); + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new HukdisIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postHukdisSave(array $paths = [], array $query = []): Response + public function postHukdisSave(array $query = []): Response { - $urlFormat = '/hukdis/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasJabatanEndpoint.php b/src/Traits/HasJabatanEndpoint.php index a8767b9..fc78071 100644 --- a/src/Traits/HasJabatanEndpoint.php +++ b/src/Traits/HasJabatanEndpoint.php @@ -23,11 +23,8 @@ public function getJabatanPns(array $paths = [], array $query = []): Response return $this->get($urlParsed, $query); } - public function postJabatanSave(array $paths = [], array $query = []): Response + public function postJabatanSave(array $query = []): Response { - $urlFormat = '/jabatan/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasKinerjaEndpoint.php b/src/Traits/HasKinerjaEndpoint.php index 53b07e9..d5b4649 100644 --- a/src/Traits/HasKinerjaEndpoint.php +++ b/src/Traits/HasKinerjaEndpoint.php @@ -3,23 +3,20 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; trait HasKinerjaEndpoint { - public function deleteKinerjaperiodikDelete(array $paths = [], array $query = []): Response + public function deleteKinerjaperiodikDelete($idRiwayatKinerjaPeriodik): Response { - $urlFormat = '/kinerjaperiodik/delete/{idRiwayatKinerjaPeriodik}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatKinerjaPeriodik' => $idRiwayatKinerjaPeriodik, + ]; - return $this->delete($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}($paths); } - public function postKinerjaperiodikSave(array $paths = [], array $query = []): Response + public function postKinerjaperiodikSave(array $query = []): Response { - $urlFormat = '/kinerjaperiodik/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasKursusEndpoint.php b/src/Traits/HasKursusEndpoint.php index 6a46590..93485cf 100644 --- a/src/Traits/HasKursusEndpoint.php +++ b/src/Traits/HasKursusEndpoint.php @@ -3,23 +3,28 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\KursusIdResponseTransformer; trait HasKursusEndpoint { - public function getKursusId(array $paths = [], array $query = []): Response + public function getKursusId($idRiwayatKursus) { - $urlFormat = '/kursus/id/{idRiwayatKursus}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatKursus' => $idRiwayatKursus, + ]; - return $this->get($urlParsed, $query); + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new KursusIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postKursusSave(array $paths = [], array $query = []): Response + public function postKursusSave(array $query = []): Response { - $urlFormat = '/kursus/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasPenghargaanEndpoint.php b/src/Traits/HasPenghargaanEndpoint.php index 3428b9e..b9288e7 100644 --- a/src/Traits/HasPenghargaanEndpoint.php +++ b/src/Traits/HasPenghargaanEndpoint.php @@ -3,23 +3,28 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\PenghargaanIdResponseTransformer; trait HasPenghargaanEndpoint { - public function getPenghargaanId(array $paths = [], array $query = []): Response + public function getPenghargaanId($idRiwayatPenghargaan) { - $urlFormat = '/penghargaan/id/{idRiwayatPenghargaan}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatPenghargaan' => $idRiwayatPenghargaan, + ]; - return $this->get($urlParsed, $query); + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new PenghargaanIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postPenghargaanSave(array $paths = [], array $query = []): Response + public function postPenghargaanSave(array $query = []): Response { - $urlFormat = '/penghargaan/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasSkp22Endpoint.php b/src/Traits/HasSkp22Endpoint.php index 04b9dd2..961d524 100644 --- a/src/Traits/HasSkp22Endpoint.php +++ b/src/Traits/HasSkp22Endpoint.php @@ -3,23 +3,28 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\Skp22IdResponseTransformer; trait HasSkp22Endpoint { - public function getSkp22Id(array $paths = [], array $query = []): Response + public function getSkp22Id($idRiwayatSkp) { - $urlFormat = '/skp22/id/{idRiwayatSkp}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); + $paths = [ + 'idRiwayatSkp' => $idRiwayatSkp, + ]; - return $this->get($urlParsed, $query); + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new Skp22IdResponseTransformer( + $response, + new $transformerClass + ); } - public function postSkp22Save(array $paths = [], array $query = []): Response + public function postSkp22Save(array $query = []): Response { - $urlFormat = '/skp22/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Traits/HasSkpEndpoint.php b/src/Traits/HasSkpEndpoint.php index f7eb09c..d5d1a0a 100644 --- a/src/Traits/HasSkpEndpoint.php +++ b/src/Traits/HasSkpEndpoint.php @@ -3,31 +3,33 @@ namespace Kanekescom\Siasn\Simpeg\Traits; use Illuminate\Http\Client\Response; -use Kanekescom\Siasn\Simpeg\Helpers\UrlParser; +use Kanekescom\Siasn\Simpeg\Helpers\SkpIdResponseTransformer; trait HasSkpEndpoint { - public function postSkp2021Save(array $paths = [], array $query = []): Response + public function postSkp2021Save(array $query = []): Response { - $urlFormat = '/skp/2021/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->get($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } - public function getSkpId(array $paths = [], array $query = []): Response + public function getSkpId($idRiwayatSkp) { - $urlFormat = '/skp/id/{idRiwayatSkp}'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->get($urlParsed, $query); + $paths = [ + 'idRiwayatSkp' => $idRiwayatSkp, + ]; + + $response = $this->simpeg::{__FUNCTION__}($paths); + $transformer = str(__FUNCTION__)->replaceFirst('get', ''); + $transformerClass = "\\Kanekescom\\Siasn\\Simpeg\\Transformers\\{$transformer}Transformer"; + + return new SkpIdResponseTransformer( + $response, + new $transformerClass + ); } - public function postSkpSave(array $paths = [], array $query = []): Response + public function postSkpSave(array $query = []): Response { - $urlFormat = '/skp/save'; - $urlParsed = (new UrlParser($urlFormat))->parse($paths); - - return $this->post($urlParsed, $query); + return $this->simpeg::{__FUNCTION__}([], $query); } } diff --git a/src/Transformers/AngkakreditIdTransformer.php b/src/Transformers/AngkakreditIdTransformer.php new file mode 100644 index 0000000..7323978 --- /dev/null +++ b/src/Transformers/AngkakreditIdTransformer.php @@ -0,0 +1,18 @@ +