diff --git a/app/Http/Controllers/Master/VendorController.php b/app/Http/Controllers/Master/VendorController.php new file mode 100644 index 0000000..c151147 --- /dev/null +++ b/app/Http/Controllers/Master/VendorController.php @@ -0,0 +1,63 @@ +get(); + + return view('masters.vendors', [ + 'title' => 'Vendor & Kontrak', + 'contracts' => $contracts, + ]); + } + + public function store(Request $request): RedirectResponse + { + $data = $request->validate([ + 'vendor_name' => ['required', 'string', 'max:255'], + 'contract_number' => ['nullable', 'string', 'max:255'], + 'start_date' => ['nullable', 'date'], + 'end_date' => ['nullable', 'date', 'after_or_equal:start_date'], + 'sla_response_hours' => ['nullable', 'integer', 'min:0'], + 'sla_resolution_hours' => ['nullable', 'integer', 'min:0'], + 'notes' => ['nullable', 'string'], + ]); + + VendorContract::create($data); + + return back()->with('success', 'Vendor/kontrak berhasil ditambahkan.'); + } + + public function update(Request $request, VendorContract $vendor_contract): RedirectResponse + { + $data = $request->validate([ + 'vendor_name' => ['required', 'string', 'max:255'], + 'contract_number' => ['nullable', 'string', 'max:255'], + 'start_date' => ['nullable', 'date'], + 'end_date' => ['nullable', 'date', 'after_or_equal:start_date'], + 'sla_response_hours' => ['nullable', 'integer', 'min:0'], + 'sla_resolution_hours' => ['nullable', 'integer', 'min:0'], + 'notes' => ['nullable', 'string'], + ]); + + $vendor_contract->update($data); + + return back()->with('success', 'Vendor/kontrak berhasil diperbarui.'); + } + + public function destroy(VendorContract $vendor_contract): RedirectResponse + { + $vendor_contract->delete(); + + return back()->with('success', 'Vendor/kontrak berhasil dihapus.'); + } +} diff --git a/database/seeders/AssetSeeder.php b/database/seeders/AssetSeeder.php index 15912f0..eecb3f8 100644 --- a/database/seeders/AssetSeeder.php +++ b/database/seeders/AssetSeeder.php @@ -33,15 +33,17 @@ class AssetSeeder extends Seeder $user = AssetUser::first(); $location = AssetLocation::first(); $warranty = Warranty::first(); - $contract = VendorContract::create([ - 'vendor_name' => 'Vendor Default', - 'contract_number' => 'CNT-001', - 'start_date' => now()->subMonths(6), - 'end_date' => now()->addMonths(6), - 'sla_response_hours' => 4, - 'sla_resolution_hours' => 24, - 'notes' => 'Kontrak default untuk sample aset', - ]); + $contract = VendorContract::firstOrCreate( + ['contract_number' => 'CNT-001'], + [ + 'vendor_name' => 'Vendor Default', + 'start_date' => now()->subMonths(6), + 'end_date' => now()->addMonths(6), + 'sla_response_hours' => 4, + 'sla_resolution_hours' => 24, + 'notes' => 'Kontrak default untuk sample aset', + ] + ); $names = [ 'Laptop Dell XPS 13', diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 6eca200..a5cac03 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -14,6 +14,7 @@ class DatabaseSeeder extends Seeder $this->call([ SettingSeeder::class, RbacSeeder::class, + VendorContractSeeder::class, TwoFactorUserSeeder::class, MasterDataSeeder::class, AssetSeeder::class, diff --git a/database/seeders/VendorContractSeeder.php b/database/seeders/VendorContractSeeder.php new file mode 100644 index 0000000..079428e --- /dev/null +++ b/database/seeders/VendorContractSeeder.php @@ -0,0 +1,40 @@ + 'Vendor Default', + 'contract_number' => 'CNT-001', + 'start_date' => now()->subMonths(6), + 'end_date' => now()->addMonths(6), + 'sla_response_hours' => 4, + 'sla_resolution_hours' => 24, + 'notes' => 'Kontrak default untuk sample aset', + ], + [ + 'vendor_name' => 'PT Tech Service', + 'contract_number' => 'CNT-002', + 'start_date' => now()->subMonths(3), + 'end_date' => now()->addMonths(9), + 'sla_response_hours' => 2, + 'sla_resolution_hours' => 12, + 'notes' => 'Support perangkat jaringan & server', + ], + ]; + + foreach ($contracts as $c) { + VendorContract::firstOrCreate( + ['contract_number' => $c['contract_number']], + $c + ); + } + } +} diff --git a/resources/views/layouts/components/main-sidebar.blade.php b/resources/views/layouts/components/main-sidebar.blade.php index 954a3a2..d682620 100644 --- a/resources/views/layouts/components/main-sidebar.blade.php +++ b/resources/views/layouts/components/main-sidebar.blade.php @@ -130,6 +130,8 @@
| Vendor | +Kontrak # | +Periode | +SLA (Resp/Res) | +Catatan | +Aksi | +
|---|---|---|---|---|---|
| {{ $item->vendor_name }} | +{{ $item->contract_number ?: '-' }} | ++ {{ optional($item->start_date)->format('d/m/Y') ?: '-' }} - + {{ optional($item->end_date)->format('d/m/Y') ?: '-' }} + | +{{ $item->sla_response_hours ?? '-' }}h / {{ $item->sla_resolution_hours ?? '-' }}h | +{{ $item->notes ?: '-' }} | ++ + + | +
| Belum ada data. | |||||