Merge remote-tracking branch 'composer/feature/senior-officer' into staging

This commit is contained in:
daengdeni
2025-01-15 16:50:34 +07:00
9 changed files with 149 additions and 151 deletions

View File

@@ -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.',
]);

View File

@@ -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);

View File

@@ -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)}`;
}
@@ -351,7 +356,8 @@
title: 'Pilih ' + (selectedCategory === 'team' ? 'Anggota Tim' : 'Wilayah'),
input: 'select',
inputOptions: subOptions,
inputPlaceholder: 'Pilih salah satu ' + (selectedCategory === 'team' ? 'Anggota Tim' : 'Wilayah'),
inputPlaceholder: 'Pilih salah satu ' + (selectedCategory === 'team' ?
'Anggota Tim' : 'Wilayah'),
icon: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
@@ -364,7 +370,8 @@
selectCategory();
} else if (subResult.isConfirmed) {
if (!subResult.value) {
Swal.fire('Error!', 'Anda harus memilih opsi sebelum melanjutkan.', 'error');
Swal.fire('Error!', 'Anda harus memilih opsi sebelum melanjutkan.',
'error');
return;
}
@@ -373,7 +380,8 @@
let useURL = "{{ URL::to('/activity/update-team') }}";
// Tentukan tipe parameter berdasarkan kategori
const paramKey = selectedCategory === 'team' ? 'team_member_id' : 'region_id';
const paramKey = selectedCategory === 'team' ? 'team_member_id' :
'region_id';
// Prepare input data
let input_data = {
@@ -394,7 +402,8 @@
dataType: "json",
success: function(response) {
if (response.status === 'success') {
Swal.fire('Sukses!', response.message, 'success').then(() => {
Swal.fire('Sukses!', response.message,
'success').then(() => {
location.reload(true);
});
} else {
@@ -403,7 +412,9 @@
},
error: function(xhr) {
console.error(xhr);
Swal.fire('Error!', 'Terjadi kesalahan saat memproses permintaan.', 'error');
Swal.fire('Error!',
'Terjadi kesalahan saat memproses permintaan.',
'error');
},
});
}
@@ -416,5 +427,4 @@
selectCategory();
}
</script>
@endpush

View File

@@ -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">

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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');
});