Melengkapi feature Approve Jadwal Kunjungan yang di berikan Surveyor

This commit is contained in:
Andy Chaerudin
2024-12-11 12:07:34 +07:00
parent ba9a155280
commit 3f2b0b2a7e
4 changed files with 80 additions and 20 deletions

View File

@@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\BasicDataSurveyorExport; use Modules\Lpj\Exports\BasicDataSurveyorExport;
@@ -527,22 +528,29 @@ class SurveyorController extends Controller
public function storeAproved($id) public function storeAproved(Request $request, $id): JsonResponse
{ {
try { $data = [];
$penilaian = Penilaian::findOrFail($id); if (request()->ajax()) {
$penilaian->update([ try {
'authorized_status' => 1, $penilaian = Penilaian::findOrFail($id);
]); $penilaian->update([
'authorized_status' => 1,
]);
$data['status'] = 'success';
$data['message']= 'Jadwal '.$request->noReg.' berhasil di aprove';
} catch (\Exception $e) {
$data['status'] = 'error';
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
}
return redirect() } else {
->route('permohonan.index') $data['status'] = 'error';
->with('success', 'Jadwal berhasil di aprove.'); $data['message'] = "no ajax request";
} catch (\Exception $e) {
return redirect()
->route('permohonan.index')
->with('error', 'Gagal membuat jadwal: ' . $e->getMessage());
} }
return response()->json($data);
} }

View File

@@ -3,11 +3,8 @@
@section('breadcrumbs') @section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }} {{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection @endsection
@section('content') @section('content')
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index']) @include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index'])
@@ -462,6 +459,7 @@
if (response.success) { if (response.success) {
window.location.href = window.location.href =
'{{ route('penilaian.index') }}'; '{{ route('penilaian.index') }}';
toastrSuccessBuild(response.message);
} else { } else {
showErrorMessages(response.errors); showErrorMessages(response.errors);
@@ -470,6 +468,7 @@
}, },
error: function(xhr) { error: function(xhr) {
// Handle errors from the server // Handle errors from the server
toastrErrorBuild(xhr.responseJSON.message);
showErrorMessages(xhr.responseJSON?.errors); showErrorMessages(xhr.responseJSON?.errors);
console.error('Error occurred:', xhr.statusText); console.error('Error occurred:', xhr.statusText);
console.log('Response:', xhr.responseText); console.log('Response:', xhr.responseText);

View File

@@ -186,9 +186,9 @@
let actionHtml = `<div class="flex flex-nowrap justify-center gap-1.5">`; let actionHtml = `<div class="flex flex-nowrap justify-center gap-1.5">`;
if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !== if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !==
'done') { 'done' && data.penilaian.authorized_status==null) {
actionHtml += ` actionHtml += `
<a class="btn btn-sm btn-outline btn-primary" href="surveyor/storeAproved/${data.penilaian.id}"> <a class="btn btn-sm btn-outline btn-primary" href="javascript:void(0)" onclick="surveyorApproveKunjungan(${data.penilaian.id},'${data.nomor_registrasi}')" title="Hapus Proses Penawaran '+kjppName+'">
<i class="ki-filled ki-calendar-edit"></i> <i class="ki-filled ki-calendar-edit"></i>
</a> </a>
`; `;
@@ -225,5 +225,58 @@
}); });
</script> </script>
<script type="text/javascript">
function surveyorApproveKunjungan(id, noReg) {
Swal.fire({
title: ' ',
text: "Yakin akan Menyetujui Jadwal Kunjungan "+noReg+"?",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes'
}).then((result) => {
if (result.isConfirmed) {
//define variable
// $id ==> penilaian.id
let token = "{{ csrf_token() }}";
let useURL = "{{ URL::to('/surveyor/storeAproved') }}"+"/"+id;
var input_data = new Object();
input_data._token = token;
input_data.id = id;
input_data.noReg =noReg;
$.ajax({
url: useURL,
type: "PUT",
cache: false,
data: input_data,
dataType: "json",
success: function(response) {
console.log(response);
if('success' == response.status)
{
swal.fire('Sukses Menyetujui!', response.message, 'success').then(() => {
location.reload(true);
});
}
else
{
Swal.fire('Error!', response.message, 'error');
}
},
error: function(response, textStatus, errorThrown) {
// var errors = response.responseJSON.errors;
// console.log(errors);
console.log(response);
}
});
}
})
}
</script>
@endpush @endpush

View File

@@ -514,7 +514,7 @@ Route::middleware(['auth'])->group(function () {
Route::post('store', [SurveyorController::class, 'store'])->name('store'); Route::post('store', [SurveyorController::class, 'store'])->name('store');
Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah'); Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah');
Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal'); Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal');
Route::get('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); Route::put('storeAproved/{storeAproved}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
Route::put('storeFreeze', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze'); Route::put('storeFreeze', [SurveyorController::class, 'storeFreeze'])->name('storeFreeze');
Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto'); Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto');
Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding'); Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding');