Modifikasi logika hapus admin dan hapus venue

This commit is contained in:
Stephen Gesityan 2025-05-12 23:13:45 +07:00
parent ca61a6b0fe
commit f3020d2089
3 changed files with 51 additions and 29 deletions

View File

@ -5,6 +5,7 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\User; use App\Models\User;
use App\Models\Booking;
use App\Models\Venue; use App\Models\Venue;
class AdminManagementController extends Controller class AdminManagementController extends Controller
@ -77,4 +78,20 @@ public function store(Request $request)
return redirect()->route('superadmin.admin.index') return redirect()->route('superadmin.admin.index')
->with('success', 'Admin berhasil ditambahkan!'); ->with('success', 'Admin berhasil ditambahkan!');
} }
public function destroy($id)
{
// Temukan user dengan role admin
$admin = User::where('role', 'admin')->findOrFail($id);
// Hapus semua bookings yang terkait dengan admin ini
Booking::where('user_id', $admin->id)->delete();
// Hapus admin
$admin->delete();
// Redirect dengan pesan sukses
return redirect()->route('superadmin.admin.index')
->with('success', 'Admin berhasil dihapus beserta data booking yang terkait.');
}
} }

View File

@ -4,6 +4,8 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Booking;
use App\Models\Venue; use App\Models\Venue;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
@ -149,31 +151,38 @@ public function update(Request $request, $id)
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function destroy($id) public function destroy($id)
{ {
$venue = Venue::findOrFail($id); $venue = Venue::findOrFail($id);
// Hapus gambar venue jika ada // Hapus admin yang memiliki venue_id sama
if ($venue->image && Storage::disk('public')->exists($venue->image)) { $admins = User::where('venue_id', $venue->id)->get();
Storage::disk('public')->delete($venue->image); foreach ($admins as $admin) {
// Hapus semua bookings milik admin, jika ada
Booking::where('user_id', $admin->id)->delete();
$admin->delete();
}
// Hapus gambar venue jika ada
if ($venue->image && Storage::disk('public')->exists($venue->image)) {
Storage::disk('public')->delete($venue->image);
}
// Ambil semua meja yang ada di venue ini
$tables = $venue->tables;
// Hapus semua bookings yang terkait dengan meja-meja ini
foreach ($tables as $table) {
$table->bookings()->delete(); // pastikan relasi bookings ada di model Table
}
// Hapus semua meja dari venue
$venue->tables()->delete();
// Hapus venue-nya
$venue->delete();
return redirect()->route('superadmin.venue.index')
->with('success', 'Venue dan semua data terkait berhasil dihapus!');
} }
// Ambil semua meja yang ada di venue ini
$tables = $venue->tables;
// Hapus semua bookings yang terkait dengan meja-meja ini
foreach ($tables as $table) {
$table->bookings()->delete(); // pastikan relasi bookings ada di model Table
}
// Hapus semua meja dari venue
$venue->tables()->delete();
// Hapus venue-nya
$venue->delete();
return redirect()->route('superadmin.venue.index')
->with('success', 'Venue berhasil dihapus!');
}
} }

View File

@ -127,10 +127,6 @@ class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full {{ $admin->
{{ $admin->created_at->format('d M Y') }} {{ $admin->created_at->format('d M Y') }}
</td> </td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"> <td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<a href="{{ route('superadmin.admin.edit', $admin->id) }}"
class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit"></i>
</a>
<button type="button" data-admin-id="{{ $admin->id }}" data-admin-name="{{ $admin->name }}" <button type="button" data-admin-id="{{ $admin->id }}" data-admin-name="{{ $admin->name }}"
class="text-red-600 hover:text-red-800 delete-admin-btn"> class="text-red-600 hover:text-red-800 delete-admin-btn">
<i class="fas fa-trash-alt"></i> <i class="fas fa-trash-alt"></i>