project-ta/.history/resources/views/admin/layanan/index.blade_20260413215412.php

193 lines
8.6 KiB
PHP

@extends('layouts.app')
@section('content')
<div class="container-fluid">
<h1 class="h3 mb-4 text-gray-800">Kelola Layanan Pengaduan</h1>
@if(session('success'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
{{ session('success') }}
<button type="button" class="close" data-dismiss="alert">&times;</button>
</div>
@endif
<div class="card shadow mb-4">
<div class="card-header d-flex justify-content-between align-items-center">
<h6 class="m-0 font-weight-bold text-primary">Daftar Pengaduan</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-striped" id="dataTable" width="100%">
<thead class="thead-dark">
<tr>
<th>No</th>
<th>Nama Penghuni</th>
<th>Tanggal Pengaduan</th>
<th>Kategori Masalah</th>
<th>Deskripsi</th>
<th>Foto</th>
<th>Status</th>
<th>Tanggapan Admin</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@forelse($layanan as $item)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $item->penghuni->nama ?? '-' }}</td>
<td>{{ $item->tanggal_pengaduan }}</td>
<td>{{ ucfirst($item->kategori_masalah) }}</td>
<td>{{ \Illuminate\Support\Str::limit($item->deskripsi, 40) }}</td>
<td>
@if($item->foto)
<img src="{{ asset('storage/' . $item->foto) }}" width="80">
@else
-
@endif
</td>
<td>
@if($item->status == 'diajukan')
<span class="badge badge-secondary">Diajukan</span>
@elseif($item->status == 'diproses')
<span class="badge badge-warning">Diproses</span>
@else
<span class="badge badge-success">Selesai</span>
@endif
</td>
<td>
{{ $item->tanggapan_admin ?? 'Belum ada tanggapan' }}
</td>
<td>
<!-- Tombol Tanggapi -->
<button class="btn btn-sm btn-primary btn-tanggapi" data-id="{{ $item->id }}"
data-toggle="modal" data-target="#modalTanggapi">
<i class="fas fa-comment"></i> Tanggapi
</button>
<!-- Tombol Hapus -->
<form action="{{ route('layanan.delete', $item->id) }}" method="POST"
style="display:inline;">
@csrf
@method('DELETE')
<button class="btn btn-sm btn-danger"
onclick="return confirm('Yakin hapus data ini?')">
<i class="fas fa-trash"></i>
</button>
</form>
</td>
</tr>
<!-- 🔥 MODAL FINAL (HANYA 1) -->
<div class="modal fade" id="modalTanggapi">
<div class="modal-dialog">
<form id="formTanggapi" method="POST">
@csrf
@method('PUT')
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tanggapi Pengaduan</h5>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Tanggapan</label>
<textarea name="tanggapan_admin" class="form-control"
required></textarea>
</div>
<div class="form-group">
<label>Status</label>
<select name="status" class="form-control" required>
<option value="diproses">Diproses</option>
<option value="selesai">Selesai</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success">Simpan</button>
<button type="button" class="btn btn-secondary"
data-dismiss="modal">Batal</button>
</div>
</div>
</form>
</div>
</div>
@empty
<tr>
<td colspan="8" class="text-center text-muted">
Belum ada data pengaduan
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
$(document).ready(function () {
// 🔥 INIT DATATABLE (AMAN)
let table = $('#dataTable').DataTable({
pageLength: 10,
lengthChange: false,
ordering: true,
destroy: true, // 🔥 penting biar tidak double init
language: {
search: "Cari:",
paginate: {
previous: "Sebelumnya",
next: "Berikutnya"
},
emptyTable: "Tidak ada data tersedia"
}
});
// 🔥 FIX EVENT (PAKAI OFF + ON)
$(document).off('click', '.btn-tanggapi').on('click', '.btn-tanggapi', function () {
let id = $(this).data('id');
let action = "{{ url('/layanan') }}/" + id + "/tanggapi";
$('#formTanggapi').attr('action', action);
// 🔥 RESET FORM (BIAR TIDAK BUG)
$('#formTanggapi')[0].reset();
});
});
<script>
$('#modalTanggapi').on('show.bs.modal', function () {
$('body').addClass('modal-open');
});
$('#modalTanggapi').on('hidden.bs.modal', function () {
$('body').removeClass('modal-open');
});
</script>
</script>
@endpush