fix pemutihan pagination

This commit is contained in:
Fiky Baharudin 2025-01-18 15:52:54 +07:00
parent 71d5b5f302
commit cd8934b377
9 changed files with 1525 additions and 119 deletions

View File

@ -9,19 +9,62 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use Yajra\DataTables\Facades\DataTables;
class LayananPemutihanController extends Controller
{
public function index(){
public function data(Request $request){
$query = PengajuanPemutihan::
select(
'pengajuan_pemutihans.*',
'users.nama_gelar as dosen_pengampu',
)
->join('users','dosen_id','=','users.id');
if ($request->has('program_studi') && !empty($request->program_studi)) {
if($request->program_studi == "s1"){
$query->where('program_studi', "S1 Farmasi");
}elseif($request->program_studi == "s2"){
$query->where('program_studi', "S2 Farmasi");
}elseif($request->program_studi == "psppa"){
$query->where('program_studi', "PSPPA");
}
}
$data = $query->orderBy('pengajuan_pemutihans.created_at', 'desc')->get();
return DataTables::of($data)
->addColumn('action', function($row){
if (!empty($row->status_operator)) {
$btn = '<a href="javascript:void(0)" class="btn btn-info" onclick="showDetail(\''.$row->caseid.'\')">Detail</a>';
} else {
$btn = '<a href="javascript:void(0)" class="btn btn-info" onclick="showDetail(\''.$row->caseid.'\')">Detail</a>';
$btn = $btn.'<a href="javascript:void(0)" class="btn btn-success" onclick="showDetail(\''.$row->caseid.'\')">Terima</a>';
$btn = $btn.'<a href="javascript:void(0)" class="edit btn btn-danger" onclick="tolak(\''.$row->caseid.'\')">Tolak</a> ';
}
return $btn;
})
->toJson();
}
public function detail($caseid){
$data = PengajuanPemutihan::
select(
'pengajuan_pemutihans.*',
'users.nama_gelar as dosen_pengampu',
)
->join('users','dosen_id','=','users.id')
->where('pengajuan_pemutihans.caseid',$caseid)
->get();
return view('layanan-pemutihan.index',['title' => 'Pengajuan Pemutihan | Admin Dashboard','data' => $data]);
return DataTables::of($data)
->toJson();
}
public function index(){
return view('layanan-pemutihan.index',[
'title' => 'Pengajuan Pemutihan | Admin Dashboard',
]);
}
public function tambah(){
@ -121,7 +164,8 @@ public function selesai($caseid, Request $request){
$data->status_operator = Carbon::now();
$data->keterangan_operator = 0;
$data->save();
return redirect()->route('layanan-pemutihan.index')->with('success','Data Berhasil Disimpan, status akan diupdate menjadi selesai');
// return redirect()->route('layanan-pemutihan.index')->with('success','Data Berhasil Disimpan, status akan diupdate menjadi selesai');
return redirect()->back()->with('success','Data Berhasil Disimpan, status akan diupdate menjadi selesai');
}
function tolak($caseid, Request $request){
@ -132,6 +176,6 @@ function tolak($caseid, Request $request){
$data->status_operator = Carbon::now();
$data->keterangan_operator = $request->keterangan_operator;
$data->save();
return redirect()->route('layanan-pemutihan.index')->with('success','Data Berhasil Disimpan, status akan diupdate menjadi Ditolak');
return redirect()->back()->with('success','Data Berhasil Disimpan, status akan diupdate menjadi Ditolak');
}
}

View File

@ -14,7 +14,8 @@
"laravel/sanctum": "^3.3",
"laravel/tinker": "^2.8",
"simplesoftwareio/simple-qrcode": "^4.2",
"spatie/laravel-permission": "^6.4"
"spatie/laravel-permission": "^6.4",
"yajra/laravel-datatables": "~10.0"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",

1107
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -169,6 +169,7 @@
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Spatie\Permission\PermissionServiceProvider::class,
Yajra\DataTables\DataTablesServiceProvider::class,
])->toArray(),
/*

127
config/datatables.php Normal file
View File

@ -0,0 +1,127 @@
<?php
return [
/*
* DataTables search options.
*/
'search' => [
/*
* Smart search will enclose search keyword with wildcard string "%keyword%".
* SQL: column LIKE "%keyword%"
*/
'smart' => true,
/*
* Multi-term search will explode search keyword using spaces resulting into multiple term search.
*/
'multi_term' => true,
/*
* Case insensitive will search the keyword in lower case format.
* SQL: LOWER(column) LIKE LOWER(keyword)
*/
'case_insensitive' => true,
/*
* Wild card will add "%" in between every characters of the keyword.
* SQL: column LIKE "%k%e%y%w%o%r%d%"
*/
'use_wildcards' => false,
/*
* Perform a search which starts with the given keyword.
* SQL: column LIKE "keyword%"
*/
'starts_with' => false,
],
/*
* DataTables internal index id response column name.
*/
'index_column' => 'DT_RowIndex',
/*
* List of available builders for DataTables.
* This is where you can register your custom dataTables builder.
*/
'engines' => [
'eloquent' => Yajra\DataTables\EloquentDataTable::class,
'query' => Yajra\DataTables\QueryDataTable::class,
'collection' => Yajra\DataTables\CollectionDataTable::class,
'resource' => Yajra\DataTables\ApiResourceDataTable::class,
],
/*
* DataTables accepted builder to engine mapping.
* This is where you can override which engine a builder should use
* Note, only change this if you know what you are doing!
*/
'builders' => [
//Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent',
//Illuminate\Database\Eloquent\Builder::class => 'eloquent',
//Illuminate\Database\Query\Builder::class => 'query',
//Illuminate\Support\Collection::class => 'collection',
],
/*
* Nulls last sql pattern for PostgreSQL & Oracle.
* For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction'
*/
'nulls_last_sql' => ':column :direction NULLS LAST',
/*
* User friendly message to be displayed on user if error occurs.
* Possible values:
* null - The exception message will be used on error response.
* 'throw' - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed.
* 'custom message' - Any friendly message to be displayed to the user. You can also use translation key.
*/
'error' => env('DATATABLES_ERROR', null),
/*
* Default columns definition of dataTable utility functions.
*/
'columns' => [
/*
* List of columns hidden/removed on json response.
*/
'excess' => ['rn', 'row_num'],
/*
* List of columns to be escaped. If set to *, all columns are escape.
* Note: You can set the value to empty array to disable XSS protection.
*/
'escape' => '*',
/*
* List of columns that are allowed to display html content.
* Note: Adding columns to list will make us available to XSS attacks.
*/
'raw' => ['action'],
/*
* List of columns are forbidden from being searched/sorted.
*/
'blacklist' => ['password', 'remember_token'],
/*
* List of columns that are only allowed fo search/sort.
* If set to *, all columns are allowed.
*/
'whitelist' => '*',
],
/*
* JsonResponse header and options config.
*/
'json' => [
'header' => [],
'options' => 0,
],
/*
* Default condition to determine if a parameter is a callback or not.
* Callbacks needs to start by those terms, or they will be cast to string.
*/
'callback' => ['$', '$.', 'function'],
];

View File

@ -65,6 +65,7 @@
<thead>
<tr>
<th>CaseID</th>
<th>Tanggal Pengajuan</th>
<th>Program Studi</th>
<th>Mata Kuliah</th>
<th>Dosen Pengampu</th>
@ -73,50 +74,18 @@
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ($data as $datas)
<tr>
<td>@if($datas->status_operator === null)<span class="badge badge-warning">{{$datas->caseid}}</span> @elseif($datas->keterangan_operator != "0")<span class="badge badge-danger">{{$datas->caseid}}</span> @else <span class="badge badge-success">{{$datas->caseid}}</span> @endif</td>
<td>{{ $datas->program_studi }}</td>
<td>{{ $datas->mata_kuliah }} </td>
<td>{{ $datas->dosen_pengampu }} </td>
<td>{{ $datas->ruang_kelas }} </td>
<td>{{ $datas->tanggal_kelas }}</td>
<td class="text-center">
<form action="{{ route('layanan-pemutihan.selesai',['caseid'=>$datas->caseid]) }}" method="post">@csrf
<a class="btn btn-primary" data-toggle="modal" data-target="#MD{{ $datas->id }}">Details</a>
@if($datas->status_operator == null) | <button type="submit" id="selesai" class="btn btn-success">Selesai</button> | <a class="btn btn-danger" data-toggle="modal" data-target="#Delete{{ $datas->id }}">Tolak</a>@endif
</form>
</td>
</tr>
<!-- /.modal-Delete -->
<div class="modal fade" id="Delete{{$datas->id}}">
<div class="modal fade" id="ModalDelete">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Apa Anda Yakin Menolak Pengajuan Pemutihan <b>{{ $datas->caseid }}</b> ?</h4>
<h4 class="modal-title"></h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="alert alert-info alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-info"></i> Perhatian!</h5>
<span >Alasan yang Dimasukkan Disini, Akan dikirimkan melalui Email Kepada Mahasiswa Terkait.</span>
</div>
<form action="{{ route('layanan-pemutihan.tolak',$datas->caseid) }}" method="post">
@csrf
<input type="hidden" name="id" value="{{$datas->id}}">
<div class="row">
<div class="col">
<label for="keterangan_operator">Alasan:</label>
<textarea name="keterangan_operator" class="form-control" id="keterangan_operator" cols="30" rows="10"
placeholder="Masukkan Alasan Disini
Masukkan Alasan Disini"></textarea>
<input type="hidden" name="id" value="{{$datas->id}}">
</div>
</div>
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-default" data-dismiss="modal">Batal</button>
@ -129,89 +98,75 @@
<!-- /.modal-dialog -->
</div>
<!-- Modal Detail dan Terima -->
<div class="modal fade" id="MD{{$datas->id}}">
<div class="modal fade" id="ModalDetail">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Details Data <b>{{ $datas->caseid }}</b></h4>
<h4 class="modal-title">Details Data</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<!-- Content goes here -->
<div class="row">
<div class="col">
<label for="program_studi">Program Studi:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->program_studi }}">
<label for="jam_kelas">Jam Kelas:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->jam_kelas }}">
<label for="ruang_kelas">Ruang Kelas:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->ruang_kelas }}">
</div>
<div class="col">
<input id="program_studi" type="text" class="form-control form-control-border" readonly value="">
<label for="mata_kuliah">Mata Kuliah:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->mata_kuliah }}">
<input id="program_studi" type="text" class="form-control form-control-border" readonly value="">
</div>
<div class="col">
<label for="jam_kelas">Jam Kelas:</label>
<input id="jam_kelas" type="text" class="form-control form-control-border" readonly value="">
<label for="tanggal_kelas">Tanggal Kelas:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->tanggal_kelas }}">
<label for="bukti_izin_dosen">Bukti Izin Dosen:</label><br/>
<a href="{{asset('storage')}}/pemutihan/{{ $datas->bukti_izin_dosen }}" target="_blank" class="btn btn-success">Klik Disini</a>
<input id="tanggal_kelas" type="text" class="form-control form-control-border" readonly value="">
</div>
</div>
<div class="row">
<div class="col">
<div class="link-dokumen"></div>
</div>
</div>
<div class="row">
<div class="col">
<label for="ruang_kelas">Ruang Kelas:</label>
<input id="ruang_kelas" type="text" class="form-control form-control-border" readonly value="">
<label for="dosen_pengampu">Dosen Pengampu:</label>
<input id="dosen_pengampu" class="form-control form-control-border" readonly value="">
</div>
</div>
<div class="row">
<div class="col">
<label for="jurnal_kuliah">Jurnal Perkuliahan:</label>
<input id="jurnal_kuliah" class="form-control form-control-border" readonly value="">
</div>
</div>
<div class="row">
<div class="col">
<label for="dosen_pengampu">Dosen Pengampu: {{ $datas->ttd_dosen === '-' ? 'Belum Tanda Tangan' : 'Telah TTD Pada '.$datas->ttd_dosen }}</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->dosen_pengampu }}">
<label for="jurnal_kuliah">Jurnal Kuliah:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->jurnal_kuliah }}">
<label for="alasan">Alasan Pemutihan:</label>
<input type="text" class="form-control form-control-border" readonly value="{{ $datas->alasan }}">
<label for="keterangan">Keterangan:</label>
<textarea name="keterangan" id="keterangan" cols="30" rows="10" class="form-control form-control-border" readonly>
{{ $datas->keterangan }}
</textarea>
<input id="alasan" class="form-control form-control-border" readonly value="">
</div>
</div>
<div class="row">
<div class="col">
<label for="file_transkrip">Cetak Surat Pernyataan<br>
<a href="{{ route('layanan-pemutihan.cetak',['caseid'=>$datas->caseid]) }}" target="_blank" class="btn btn-success">Klik Disini</a>
<label for="keterangan">Keterangan Pemutihan:</label>
<textarea name="keterangan" id="keterangan" class="form-control form-control-border" cols="30" rows="5" readonly></textarea>
</div>
</div>
@if($datas->status_operator == null)
<div class="row mt-3">
<div class="col">
<form action="{{ route('layanan-pemutihan.selesai',['caseid'=>$datas->caseid]) }}" method="post">
@csrf
<input type="hidden" name="caseid" value="{{$datas->caseid}}">
<button type="submit" id="selesai" class="btn btn-success btn-block">Selesai</button>
</form>
</div>
</div>
@endif
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<span>{{$datas->caseid}}</span>
@if($datas->ttd_operator=="-")
<form action="{{ route('layanan-sempro.terima')}}" method="post">
@csrf
<input type="hidden" name="id" value="{{$datas->id}}">
<button type="submit" class="btn btn-success">Terima</button>
</form>
@endif
</form>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
@endforeach
</tbody>
<tfoot>
<tr>
<th>CaseID</th>
<th>Tanggal Pengajuan</th>
<th>Program Studi</th>
<th>Mata Kuliah</th>
<th>Dosen Pengampu</th>
@ -245,23 +200,168 @@
<script src="{{asset('/')}}plugins/datatables-buttons/js/buttons.html5.min.js"></script>
<script src="{{asset('/')}}plugins/datatables-buttons/js/buttons.print.min.js"></script>
<script src="{{asset('/')}}plugins/datatables-buttons/js/buttons.colVis.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
<script>
$(function () {
$("#example1").DataTable({
"responsive": true, "lengthChange": false, "autoWidth": false,
"order": [[6, 'desc']],
"buttons": [{
// New button configuration
text: 'Tambah Data', // Replace with your desired button text
action: function ( e, dt, node, config ) {
// Perform your custom action here, e.g., open a new tab with the external link
window.open("{{ route('layanan-pemutihan.tambah')}}", '_blank');
if(window.location.search === '?program_studi=s1'){
var url = '/admin/layanan-pemutihan/data?program_studi=s1';
}else if(window.location.search === '?program_studi=s2'){
var url = '/admin/layanan-pemutihan/data?program_studi=s2';
}else if(window.location.search === '?program_studi=psppa'){
var url = '/admin/layanan-pemutihan/data?program_studi=psppa';
}else{
var url = '/admin/layanan-pemutihan/data';
};
var table = $("#example1").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"processing": true,
"serverSide": true,
"ajax": {
"url": url,
},
"columns": [{ // mengambil & menampilkan kolom sesuai tabel database
data: 'caseid',
// name: 'CaseID',
searchable: true
},
{
data: 'created_at',
render: function(data, type, row) {
return moment(data).format('DD-MM-YYYY hh:mm')
}
},"csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
},
{
data: 'program_studi',
// name: 'Program Studi'
},
{
data: 'mata_kuliah',
// name: 'Mata Kuliah'
},
{
data: 'dosen_pengampu',
// name: 'Dosen Pengampu'
},
{
data: 'ruang_kelas',
// name: 'Ruang Kuliah'
},
{
data: 'tanggal_kelas',
// name: 'Tanggal'
},
{
data: 'action',
searchable: false
// name: 'Aksi'
},
],
"search": {
"caseInsensitive": true
},
order: [
[2, 'desc']
]
})
});
function showDetail($caseid) {
// Implement the logic to show the detail modal or navigate to the detail page
// For example, you can use AJAX to fetch the detail data and show it in a modal
// console.log($caseid);
$.ajax({
url: '/admin/layanan-pemutihan/data/'+$caseid,
method: 'GET',
success: function(data) {
// Populate the modal with the detail data
var result = data.data[0];
var modalTitle = `
<h4 class="modal-title">Details Data <strong>${result.caseid}</strong></h4>
`;
var linkDokumen = `
<label for="bukti_izin_dosen">Bukti Izin Dosen :</label>
<a href="/storage/pemutihan/${result.bukti_izin_dosen}" target="_blank" class="form-control btn btn-success" id="bukti_izin_dosen">Klik Disini</a>
<label for="cetak_bukti_pemutihan">Cetak Surat Pernyataan :</label>
<a href="/admin/layanan-pemutihan/cetak/${result.caseid}" target="_blank" class="form-control btn btn-success">Klik Disini</a>
`;
$('#ModalDetail .link-dokumen').html(linkDokumen);
$('#ModalDetail .modal-title').html(modalTitle);
$('#ModalDetail #caseid').val(result.caseid);
$('#ModalDetail #program_studi').val(result.program_studi);
$('#ModalDetail #mata_kuliah').val(result.mata_kuliah);
$('#ModalDetail #jam_kelas').val(result.jam_kelas);
$('#ModalDetail #tanggal_kelas').val(result.tanggal_kelas);
$('#ModalDetail #ruang_kelas').val(result.ruang_kelas);
$('#ModalDetail #bukti_izin_dosen').val(result.bukti_izin_dosen);
$('#ModalDetail #dosen_pengampu').val(result.dosen_pengampu);
$('#ModalDetail #jurnal_kuliah').val(result.jurnal_kuliah);
$('#ModalDetail #alasan').val(result.alasan);
$('#ModalDetail #keterangan').val(result.keterangan);
if(result.status_operator == null){
$('#ModalDetail .modal-footer').html(`
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<form action="/admin/layanan-pemutihan/selesai/${result.caseid}" method="post">
@csrf
<button type="submit" class="btn btn-success">Kirim</button>
</form>
`);
$('#ModalDetail').modal('show');
}
else{
$('#ModalDetail .modal-footer').html(`
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
`);
}
$('#ModalDetail').modal('show');
}
});
}
function tolak($caseid) {
// Implement the logic to show the detail modal or navigate to the detail page
// For example, you can use AJAX to fetch the detail data and show it in a modal
// console.log($caseid);
$.ajax({
url: '/admin/layanan-pemutihan/data/'+$caseid,
method: 'GET',
success: function(data) {
// Populate the modal with the detail data
var result = data.data[0];
var modalTitle = `
Apa Anda Yakin Menolak Pengajuan Pemutihan <b>${result.caseid}</b> ?
`;
$('#ModalDelete .modal-title').html(modalTitle);
if(result.status_operator == null){
$('#ModalDelete .modal-body').html(`
<div class="alert alert-info alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h5><i class="icon fas fa-info"></i> Perhatian!</h5>
<span >Alasan yang Dimasukkan Disini, Akan dikirimkan melalui Email Kepada Mahasiswa Terkait.</span>
</div>
<form action="/admin/layanan-pemutihan/tolak/${result.caseid}" method="post">
@csrf
<label for="keterangan_operator">Keterangan Operator :</label>
<textarea name="keterangan_operator" id="keterangan_operator" class="form-control" cols="20" rows="10" required></textarea>
<div class="text-center mt-3">
<button type="submit" class="btn btn-danger">Tolak</button>
</div>
</form>
`);
$('#ModalDelete .modal-footer').html(`
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
`);
}
$('#ModalDelete').modal('show');
}
});
}
</script>
@endpush

View File

@ -31,6 +31,7 @@
<script src="{{ asset('/') }}plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="{{ asset('/') }}dist/js/adminlte.min.js"></script>
@stack('js')
</body>
</html>

View File

@ -46,13 +46,40 @@
</li>
@hasanyrole('Super Administrator|Operator Akademik')
<li class="nav-header text-bold">LAYANAN AKADEMIK</li>
<li class="nav-item">
<li class="nav-item has-treeview">
<a href="{{ route('layanan-pemutihan.index') }}" class="nav-link {{ Request::is('admin/layanan-pemutihan') ? 'active' : '' }}">
<i class="nav-icon fas fa-chalkboard-teacher"></i>
<p>
Pengajuan Pemutihan
Layanan Pemutihan
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="{{ route('layanan-pemutihan.index') }}" id="filter-s1-farmasi" class="nav-link {{ Request::is('admin/layanan-pemutihan/s1') ? 'active' : '' }}">
<i class="far fa-circle nav-icon"></i>
<p>Keseluruhan</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('layanan-pemutihan.index',['program_studi' => 's1']) }}" id="filter-s1-farmasi" class="nav-link {{ Request::is('admin/layanan-pemutihan/s1') ? 'active' : '' }}">
<i class="far fa-circle nav-icon"></i>
<p>S1 Farmasi</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('layanan-pemutihan.index',['program_studi' => 's2']) }}" id="filter-s2-farmasi" class="nav-link {{ Request::is('admin/layanan-pemutihan/s2') ? 'active' : '' }}">
<i class="far fa-circle nav-icon"></i>
<p>S2 Farmasi</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('layanan-pemutihan.index',['program_studi' => 'psppa']) }}" class="nav-link {{ Request::is('admin/layanan-pemutihan/psppa') ? 'active' : '' }}">
<i class="far fa-circle nav-icon"></i>
<p>PSPPA</p>
</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="{{ route('layanan-dpudpa.index') }}" class="nav-link {{ Request::is('admin/layanan-dpudpa') ? 'active' : '' }}">

View File

@ -49,6 +49,8 @@
//layanan Pemutihan kelas
Route::get('/layanan-pemutihan', [LayananPemutihanController::class, 'index'])->name('layanan-pemutihan.index');
Route::POST('/layanan-pemutihan', [LayananPemutihanController::class, 'terima'])->name('layanan-pemutihan.terima');
Route::get('/layanan-pemutihan/data', [LayananPemutihanController::class, 'data'])->name('layanan-pemutihan.data');
Route::get('/layanan-pemutihan/data/{caseid}', [LayananPemutihanController::class, 'detail'])->name('layanan-pemutihan.detail');
Route::POST('/layanan-pemutihan/tolak/{caseid}', [LayananPemutihanController::class, 'tolak'])->name('layanan-pemutihan.tolak');
Route::POST('/layanan-pemutihan/selesai/{caseid}', [LayananPemutihanController::class, 'selesai'])->name('layanan-pemutihan.selesai');
//layanan Pengajuan DPU DPA