perbaikan url query param surveyor dan perbaikan tampilan team activity
This commit is contained in:
@@ -82,8 +82,8 @@ class ActivityController extends Controller
|
||||
'user_id' => 'required|integer',
|
||||
'team_id' => 'required|integer',
|
||||
], [
|
||||
'team_member_id.required_without' => 'Field team_member_id atau region_id harus diisi.',
|
||||
'region_id.required_without' => 'Field region_id atau team_member_id harus diisi.',
|
||||
'team_member_id.required_without' => 'Field team harus diisi.',
|
||||
'.required_without' => 'Field harus diisi.',
|
||||
]);
|
||||
|
||||
|
||||
|
||||
@@ -1476,14 +1476,12 @@ class SurveyorController extends Controller
|
||||
{
|
||||
|
||||
$validated = $request->validate([
|
||||
'form' => 'required|in:create-inspeksi',
|
||||
'inspeksi' => 'required|exists:permohonan,id',
|
||||
'dokument' => 'required',
|
||||
'jenisjaminan' => 'required'
|
||||
'jenis_jaminan' => 'required'
|
||||
]);
|
||||
|
||||
$dokumentId = $validated['dokument'];
|
||||
$jaminanId = $validated['jenisjaminan'];
|
||||
$jaminanId = $validated['jenis_jaminan'];
|
||||
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
|
||||
|
||||
@@ -1566,14 +1564,12 @@ class SurveyorController extends Controller
|
||||
public function denah(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'form' => 'required|in:create-denah',
|
||||
'denah' => 'required|exists:permohonan,id',
|
||||
'dokument' => 'required',
|
||||
'jenisjaminan' => 'required'
|
||||
'jenis_jaminan' => 'required'
|
||||
]);
|
||||
|
||||
$dokumentId = $validated['dokument'];
|
||||
$jaminanId = $validated['jenisjaminan'];
|
||||
$jaminanId = $validated['jenis_jaminan'];
|
||||
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
|
||||
|
||||
@@ -1596,14 +1592,12 @@ class SurveyorController extends Controller
|
||||
public function foto(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'form' => 'required|in:create-foto',
|
||||
'foto' => 'required|exists:permohonan,id',
|
||||
'dokument' => 'required',
|
||||
'jenisjaminan' => 'required'
|
||||
'jenis_jaminan' => 'required'
|
||||
]);
|
||||
|
||||
$dokumentId = $validated['dokument'];
|
||||
$jaminanId = $validated['jenisjaminan'];
|
||||
$jaminanId = $validated['jenis_jaminan'];
|
||||
$fotoObjekJaminan = FotoObjekJaminan::all();
|
||||
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
|
||||
@@ -1632,14 +1626,12 @@ class SurveyorController extends Controller
|
||||
// Ambil data permohonan dengan eager loading
|
||||
|
||||
$validated = $request->validate([
|
||||
'form' => 'required|in:data-pembanding',
|
||||
'pembanding' => 'required|exists:permohonan,id',
|
||||
'dokument' => 'required',
|
||||
'jenisjaminan' => 'required'
|
||||
'jenis_jaminan' => 'required'
|
||||
]);
|
||||
|
||||
$dokumentId = $validated['dokument'];
|
||||
$jaminanId = $validated['jenisjaminan'];
|
||||
$jaminanId = $validated['jenis_jaminan'];
|
||||
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
<h3 class="card-title">Team Activity</h3>
|
||||
</div>
|
||||
<div data-accordion="true">
|
||||
|
||||
@php
|
||||
$sortedTeamsActivity = $teamsActivity->sortBy(function ($item) {
|
||||
return $item->team->regions->penilaiTeam
|
||||
@@ -60,6 +59,9 @@
|
||||
@endphp
|
||||
|
||||
@foreach ($sortedTeamsActivity as $index => $item)
|
||||
@php
|
||||
$totalTask = countPermohonanForUser($item->user->id);
|
||||
@endphp
|
||||
<div class="accordion-item [&:not(:last-child)]:border-b border-b-gray-200" data-accordion-item="true"
|
||||
id="accordion_{{ $index }}">
|
||||
<button class="accordion-toggle py-4 group mx-8"
|
||||
@@ -69,18 +71,28 @@
|
||||
<tr>
|
||||
<th class="min-w-[150px]" style="width: 600px">
|
||||
<span
|
||||
class="text-base text-gray-900 font-normal break-words">{{ $item->user->name }}</span>
|
||||
class="text-base text-gray-900 font-medium break-words">{{ $item->user->name }}</span>
|
||||
</th>
|
||||
<th class="min-w-[150px]">
|
||||
<span class="text-base text-gray-900 font-normal">
|
||||
<p>Total Task: {{ countPermohonanForUser($item->user->id) }}</p>
|
||||
|
||||
@if ($totalTask >= 0 && $totalTask < 5)
|
||||
<span class="badge badge-outline badge-success rounded-full">Total Task
|
||||
{{ $totalTask }}</span>
|
||||
@elseif ($totalTask >= 5 && $totalTask < 10)
|
||||
<span class="badge badge-outline badge-warning rounded-full">Total Task
|
||||
{{ $totalTask }}</span>
|
||||
@else
|
||||
<span class="badge badge-outline badge-danger rounded-full">Total Task
|
||||
{{ $totalTask }}</span>
|
||||
@endif
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<i
|
||||
class="ki-outline ki-plus text-gray-600 text-2sm accordion-active:hidden block"></i>
|
||||
class="ki-outline ki-plus text-gray-600 text-2sm font-medium accordion-active:hidden block"></i>
|
||||
<i
|
||||
class="ki-outline ki-minus text-gray-600 text-2sm accordion-active:block hidden"></i>
|
||||
class="ki-outline ki-minus text-gray-600 text-2sm font-medium accordion-active:block hidden"></i>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
@@ -144,13 +156,6 @@
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
function jadwal(id) {
|
||||
document.getElementById('ids').value = id;
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<script type="module">
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const accordions = document.querySelectorAll('[data-accordion-item]');
|
||||
@@ -241,7 +246,7 @@
|
||||
title: 'Due Date',
|
||||
render: (item, data) => {
|
||||
if (!data.due_date_sla) {
|
||||
return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Sudah melewati batas</span>`;
|
||||
return `<span class="badge badge-sm badge-outline badge-danger uppercase flex justify-center">Sudah melewati batas</span>`;
|
||||
}
|
||||
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
||||
}
|
||||
@@ -251,7 +256,7 @@
|
||||
title: 'Paparan',
|
||||
render: (item, data) => {
|
||||
if (!data.due_date_sla) {
|
||||
return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Sudah melewati batas</span>`;
|
||||
return `<span class="badge badge-sm badge-outline badge-danger uppercase flex justify-center">Sudah melewati batas</span>`;
|
||||
}
|
||||
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
||||
}
|
||||
@@ -311,110 +316,115 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function updateTeam(penilaaniId, permohonanId, userId, teamId) {
|
||||
const selectCategory = () => {
|
||||
Swal.fire({
|
||||
title: 'Pilih Kategori',
|
||||
input: 'select',
|
||||
inputOptions: {
|
||||
team: 'Pilih dari Team',
|
||||
region: 'Pilih dari Wilayah'
|
||||
},
|
||||
inputPlaceholder: 'Pilih kategori Pengganti',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Lanjut',
|
||||
cancelButtonText: 'Batal',
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
const selectedCategory = result.value;
|
||||
let subOptions = {};
|
||||
<script type="text/javascript">
|
||||
function updateTeam(penilaaniId, permohonanId, userId, teamId) {
|
||||
const selectCategory = () => {
|
||||
Swal.fire({
|
||||
title: 'Pilih Kategori',
|
||||
input: 'select',
|
||||
inputOptions: {
|
||||
team: 'Pilih dari Team',
|
||||
region: 'Pilih dari Wilayah'
|
||||
},
|
||||
inputPlaceholder: 'Pilih kategori Pengganti',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Lanjut',
|
||||
cancelButtonText: 'Batal',
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
const selectedCategory = result.value;
|
||||
let subOptions = {};
|
||||
|
||||
if (selectedCategory === 'team') {
|
||||
subOptions = {
|
||||
@foreach ($teamsActivity as $item)
|
||||
{{ $item->user->id }}: '{{ $item->user->name }}',
|
||||
@endforeach
|
||||
};
|
||||
} else if (selectedCategory === 'region') {
|
||||
subOptions = {
|
||||
@foreach ($teamPenilai as $item)
|
||||
{{ $item->regions->id }}: '{{ $item->regions->name }}',
|
||||
@endforeach
|
||||
};
|
||||
}
|
||||
|
||||
Swal.fire({
|
||||
title: 'Pilih ' + (selectedCategory === 'team' ? 'Anggota Tim' : 'Wilayah'),
|
||||
input: 'select',
|
||||
inputOptions: subOptions,
|
||||
inputPlaceholder: 'Pilih salah satu ' + (selectedCategory === 'team' ? 'Anggota Tim' : 'Wilayah'),
|
||||
icon: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Ya',
|
||||
cancelButtonText: 'Kembali',
|
||||
}).then((subResult) => {
|
||||
if (subResult.dismiss === Swal.DismissReason.cancel) {
|
||||
// Kembali ke tahap pemilihan kategori
|
||||
selectCategory();
|
||||
} else if (subResult.isConfirmed) {
|
||||
if (!subResult.value) {
|
||||
Swal.fire('Error!', 'Anda harus memilih opsi sebelum melanjutkan.', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
// Define variables
|
||||
let token = "{{ csrf_token() }}";
|
||||
let useURL = "{{ URL::to('/activity/update-team') }}";
|
||||
|
||||
// Tentukan tipe parameter berdasarkan kategori
|
||||
const paramKey = selectedCategory === 'team' ? 'team_member_id' : 'region_id';
|
||||
|
||||
// Prepare input data
|
||||
let input_data = {
|
||||
_token: token,
|
||||
id: penilaaniId,
|
||||
[paramKey]: subResult.value,
|
||||
permohonan_id: permohonanId,
|
||||
user_id: userId,
|
||||
team_id: teamId,
|
||||
if (selectedCategory === 'team') {
|
||||
subOptions = {
|
||||
@foreach ($teamsActivity as $item)
|
||||
{{ $item->user->id }}: '{{ $item->user->name }}',
|
||||
@endforeach
|
||||
};
|
||||
} else if (selectedCategory === 'region') {
|
||||
subOptions = {
|
||||
@foreach ($teamPenilai as $item)
|
||||
{{ $item->regions->id }}: '{{ $item->regions->name }}',
|
||||
@endforeach
|
||||
};
|
||||
|
||||
// AJAX request
|
||||
$.ajax({
|
||||
url: useURL,
|
||||
type: "PUT",
|
||||
cache: false,
|
||||
data: input_data,
|
||||
dataType: "json",
|
||||
success: function(response) {
|
||||
if (response.status === 'success') {
|
||||
Swal.fire('Sukses!', response.message, 'success').then(() => {
|
||||
location.reload(true);
|
||||
});
|
||||
} else {
|
||||
Swal.fire('Error!', response.message, 'error');
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
console.error(xhr);
|
||||
Swal.fire('Error!', 'Terjadi kesalahan saat memproses permintaan.', 'error');
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Mulai dari pemilihan kategori
|
||||
selectCategory();
|
||||
}
|
||||
</script>
|
||||
Swal.fire({
|
||||
title: 'Pilih ' + (selectedCategory === 'team' ? 'Anggota Tim' : 'Wilayah'),
|
||||
input: 'select',
|
||||
inputOptions: subOptions,
|
||||
inputPlaceholder: 'Pilih salah satu ' + (selectedCategory === 'team' ?
|
||||
'Anggota Tim' : 'Wilayah'),
|
||||
icon: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Ya',
|
||||
cancelButtonText: 'Kembali',
|
||||
}).then((subResult) => {
|
||||
if (subResult.dismiss === Swal.DismissReason.cancel) {
|
||||
// Kembali ke tahap pemilihan kategori
|
||||
selectCategory();
|
||||
} else if (subResult.isConfirmed) {
|
||||
if (!subResult.value) {
|
||||
Swal.fire('Error!', 'Anda harus memilih opsi sebelum melanjutkan.',
|
||||
'error');
|
||||
return;
|
||||
}
|
||||
|
||||
// Define variables
|
||||
let token = "{{ csrf_token() }}";
|
||||
let useURL = "{{ URL::to('/activity/update-team') }}";
|
||||
|
||||
// Tentukan tipe parameter berdasarkan kategori
|
||||
const paramKey = selectedCategory === 'team' ? 'team_member_id' :
|
||||
'region_id';
|
||||
|
||||
// Prepare input data
|
||||
let input_data = {
|
||||
_token: token,
|
||||
id: penilaaniId,
|
||||
[paramKey]: subResult.value,
|
||||
permohonan_id: permohonanId,
|
||||
user_id: userId,
|
||||
team_id: teamId,
|
||||
};
|
||||
|
||||
// AJAX request
|
||||
$.ajax({
|
||||
url: useURL,
|
||||
type: "PUT",
|
||||
cache: false,
|
||||
data: input_data,
|
||||
dataType: "json",
|
||||
success: function(response) {
|
||||
if (response.status === 'success') {
|
||||
Swal.fire('Sukses!', response.message,
|
||||
'success').then(() => {
|
||||
location.reload(true);
|
||||
});
|
||||
} else {
|
||||
Swal.fire('Error!', response.message, 'error');
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
console.error(xhr);
|
||||
Swal.fire('Error!',
|
||||
'Terjadi kesalahan saat memproses permintaan.',
|
||||
'error');
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Mulai dari pemilihan kategori
|
||||
selectCategory();
|
||||
}
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
route('surveyor.inspeksi', [
|
||||
'id' => $permohonan->id,
|
||||
]) .
|
||||
"?form=create-inspeksi&inspeksi={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
|
||||
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
|
||||
'show' => true,
|
||||
'icon' => !empty($currentInspeksi['data_form']),
|
||||
],
|
||||
@@ -30,7 +30,7 @@
|
||||
route('surveyor.denah', [
|
||||
'id' => $permohonan->id,
|
||||
]) .
|
||||
"?form=create-denah&denah={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
|
||||
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
|
||||
'show' => true,
|
||||
'icon' => !empty($currentInspeksi['denah_form']),
|
||||
];
|
||||
@@ -43,7 +43,7 @@
|
||||
route('surveyor.foto', [
|
||||
'id' => $permohonan->id,
|
||||
]) .
|
||||
"?form=create-foto&foto={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
|
||||
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
|
||||
'show' => true,
|
||||
'icon' => !empty($currentInspeksi['foto_form']),
|
||||
],
|
||||
@@ -53,7 +53,7 @@
|
||||
route('surveyor.data-pembanding', [
|
||||
'id' => $permohonan->id,
|
||||
]) .
|
||||
"?form=data-pembanding&pembanding={$permohonan->id}&dokument={$jaminanId}&jenisjaminan={$dokumen->jenisJaminan->id}",
|
||||
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
|
||||
'show' => true,
|
||||
'icon' => !empty($currentInspeksi['data_pembanding']),
|
||||
],
|
||||
@@ -89,10 +89,8 @@
|
||||
<a href="{{ route('surveyor.inspeksi', ['id' => $permohonan->id]) .
|
||||
'?' .
|
||||
http_build_query([
|
||||
'form' => 'create-inspeksi',
|
||||
'inspeksi' => $permohonan->id,
|
||||
'dokument' => $jaminanId,
|
||||
'jenisjaminan' => $dokumen->jenisJaminan->id,
|
||||
'jenis_jaminan' => $dokumen->jenisJaminan->id,
|
||||
]) }}"
|
||||
class="flex items-center justify-between border border-gray-200 rounded-xl gap-2 px-4 py-4 btn-outline {{ !empty($currentInspeksi['data_form']) ? 'btn-success' : 'btn-primary' }} hover:btn-light">
|
||||
<div class="flex items-center gap-3.5">
|
||||
@@ -114,10 +112,8 @@
|
||||
<a href="{{ route('surveyor.foto', ['id' => $permohonan->id]) .
|
||||
'?' .
|
||||
http_build_query([
|
||||
'form' => 'create-foto',
|
||||
'foto' => $permohonan->id,
|
||||
'dokument' => $jaminanId,
|
||||
'jenisjaminan' => $dokumen->jenisJaminan->id,
|
||||
'jenis_jaminan' => $dokumen->jenisJaminan->id,
|
||||
]) }}"
|
||||
class="flex items-center justify-between border border-gray-200 rounded-xl gap-2 px-4 py-4 btn-outline {{ !empty($currentInspeksi['foto_form']) ? 'btn-success' : 'btn-primary' }} hover:btn-light">
|
||||
<div class="flex items-center gap-3.5">
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<div class="card-header bg-agi-50">
|
||||
<h3 class="card-title">Denah</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('surveyor.show', ['id' => request('denah')]) }}?form=denah" class="btn btn-xs btn-info">
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id ]) }}?form=denah" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
Data Jaminan
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('surveyor.show', ['id' => request('foto')]) }}" class="btn btn-xs btn-info">
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="card-header bg-agi-50">
|
||||
<h3 class="card-title">Data Pembanding</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('surveyor.show', ['id' => request('pembanding')]) }}" class="btn btn-xs btn-info">
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Kembali
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="card-header bg-agi-50">
|
||||
<h3 class="card-title">Data Pembanding</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('surveyor.show', ['id' => request('pembanding')]) }}"
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}"
|
||||
class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Kembali
|
||||
</a>
|
||||
|
||||
@@ -549,10 +549,10 @@ Route::middleware(['auth'])->group(function () {
|
||||
Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus');
|
||||
|
||||
Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables');
|
||||
Route::get('inspeksi/{id}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi');
|
||||
Route::get('denah/{id}', [SurveyorController::class, 'denah'])->name('denah');
|
||||
Route::get('foto/{id}', [SurveyorController::class, 'foto'])->name('foto');
|
||||
Route::get('data-pembanding/{id}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
|
||||
Route::get('inspeksi/{id}/create', [SurveyorController::class, 'formInspeksi'])->name('inspeksi');
|
||||
Route::get('denah/{id}/create', [SurveyorController::class, 'denah'])->name('denah');
|
||||
Route::get('foto/{id}/create', [SurveyorController::class, 'foto'])->name('foto');
|
||||
Route::get('data-pembanding/{id}/create', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
|
||||
Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
|
||||
Route::post('update_analisa/{id}', [SurveyorController::class, 'update_analisa'])->name('update_analisa');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user