update kertas kerja dan column name table inspeksi

This commit is contained in:
majid
2024-12-04 12:08:14 +07:00
parent 280ed97a50
commit c603a99c0d
12 changed files with 753 additions and 410 deletions

View File

@@ -0,0 +1,74 @@
<?php
namespace Modules\Lpj\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class KertasKerjaExport implements WithColumnFormatting, WithHeadings, FromCollection, WithMapping
{
protected $data;
public function __construct($data)
{
$this->data = $data;
}
public function collection()
{
return collect([
[
'Pendekatan pasar',
'Nama Pemilik Aset',
'',
],
[
'Metode Perbandingan Data Pasar',
'Nama Pemberi Tugas: ',
'',
'',
],
[
'Tanggal Penilaian: ',
'Lokasi: ',
'',
'',
],
[
'No.',
'Objek Penilaian',
'Data Pembanding 1',
'Data Pembanding 2',
'Data Pembanding 3'
],
]);
}
// Tambahkan method map()
public function map($row): array
{
return $row;
}
public function headings(): array
{
return [];
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'C' => NumberFormat::FORMAT_NUMBER,
'D' => NumberFormat::FORMAT_NUMBER,
'F' => NumberFormat::FORMAT_NUMBER,
'G' => NumberFormat::FORMAT_NUMBER,
'P' => NumberFormat::FORMAT_DATE_DATETIME,
'Q' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}

View File

@@ -7,7 +7,8 @@ use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Inspeksi;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\KertasKerjaExport;
class PenilaiController extends Controller class PenilaiController extends Controller
{ {
public $user; public $user;
@@ -89,7 +90,7 @@ class PenilaiController extends Controller
} }
public function dataForDatatables(Request $request) public function dataForDatatables(Request $request)
{ {
if (is_null($this->user) || !$this->user->can('penilai.view')) { if (is_null($this->user) || !$this->user->can('penilai.view')) {
//abort(403, 'Sorry! You are not allowed to view users.'); //abort(403, 'Sorry! You are not allowed to view users.');
} }
@@ -163,8 +164,134 @@ class PenilaiController extends Controller
'totalCount' => $totalRecords, 'totalCount' => $totalRecords,
'data' => $data, 'data' => $data,
]); ]);
} }
public function kertas_kerja()
{
$data = [
[
'Pendekatan pasar',
'Nama Pemilik Aset',
'',
],
[
'Metode Perbandingan Data Pasar',
'Nama Pemberi Tugas: ',
'',
'',
],
[
'Tanggal Penilaian: ',
'Lokasi: ',
'',
'',
],
[
'No.',
'Objek Penilaian',
'Data Pembanding 1',
'Data Pembanding 2',
'Data Pembanding 3'
],[
'1',
'Jenis Aset',
'Pembanding 1',
'Pembanding 1',
'Pembanding 1'
],
[
'2',
'Luas Tanah',
'Pembanding 2',
'Pembanding 2',
'Pembanding 2'
],
[
'3',
'Penawaran/Transaksi',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'4',
'Harga penawaran/Transaksi',
'',
'Pembanding 3',
'Pembanding 3'
],[
'5',
'Nomor Telepon',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'6',
'Estimasi Harga Transaksi',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'7',
'Nama Nara sumber',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'8',
'Status Nara sumber',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'9',
'Waktu Penawaran/Transaksi',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'10',
'Titik GPS',
'',
'Pembanding 3',
],
[
'11',
'Alamat',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'12',
'Jarak Pembanding dengan Objek (m)',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'13',
'Estimasi Rangking Tanah',
'',
'Pembanding 3',
'Pembanding 3'
],
[
'14',
'Estimasi Rangking Bangunan',
'',
'Pembanding 3',
'Pembanding 3'
]
];
return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx');
}

View File

@@ -298,10 +298,15 @@ class PenilaianController extends Controller
$q->orWhere('status', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%');
}); });
} }
$query->whereIn('status', ['registered', 'registrasi-final']); $query->whereIn('status', ['registered', 'registrasi-final']);
// Filter berdasarkan role
if (Auth::user()->roles[0]->name !== 'administrator') {
$query->whereHas('region.teams.teamsUsers.user', function ($q) { $query->whereHas('region.teams.teamsUsers.user', function ($q) {
$q->where('id', Auth::user()->id); $q->where('id', Auth::user()->id);
}); });
}
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder'); $order = $request->get('sortOrder');

View File

@@ -22,6 +22,7 @@ use Modules\Lpj\Models\PosisiKavling;
use Modules\Lpj\Models\KondisiFisikTanah; use Modules\Lpj\Models\KondisiFisikTanah;
use Modules\Lpj\Models\KetinggianTanah; use Modules\Lpj\Models\KetinggianTanah;
use Modules\Lpj\Models\SifatBangunan; use Modules\Lpj\Models\SifatBangunan;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\JenisBangunan; use Modules\Lpj\Models\JenisBangunan;
use Modules\Lpj\Models\KondisiBangunan; use Modules\Lpj\Models\KondisiBangunan;
use Modules\Lpj\Models\SpekBangunan; use Modules\Lpj\Models\SpekBangunan;
@@ -57,7 +58,7 @@ use Modules\Lpj\Models\DetailDokumenJaminan;
use Modules\Lpj\Models\JenisKapal; use Modules\Lpj\Models\JenisKapal;
use Modules\Lpj\Models\JenisKendaraan; use Modules\Lpj\Models\JenisKendaraan;
use Modules\Lpj\Models\RuteJaminan; use Modules\Lpj\Models\RuteJaminan;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\HubunganPemilikJaminan; use Modules\Lpj\Models\HubunganPemilikJaminan;
use Modules\Lpj\Models\HubunganPenghuniJaminan; use Modules\Lpj\Models\HubunganPenghuniJaminan;
use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\AnalisaUnit;
@@ -550,6 +551,11 @@ class SurveyorController extends Controller
} }
public function storeFreeze() {
}
private function formatDataPembanding($request) private function formatDataPembanding($request)
{ {
$dataPembanding = []; $dataPembanding = [];
@@ -1416,8 +1422,7 @@ class SurveyorController extends Controller
'fasilitasObjek' => FasilitasObjek::all(), 'fasilitasObjek' => FasilitasObjek::all(),
'merupakanDaerah' => MerupakanDaerah::all(), 'merupakanDaerah' => MerupakanDaerah::all(),
'jenisUnit' => JenisUnit::all(), 'jenisUnit' => JenisUnit::all(),
'jenisJaminan' => JenisJaminan::all(),
]; ];
} }

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('inspeksi', function (Blueprint $table) {
$table->string('name')->nullable()->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('inspeksi', function (Blueprint $table) {
$table->string('name')->nullable(false)->change();
});
}
};

View File

@@ -183,10 +183,61 @@
PAPARAN PAPARAN
</a> </a>
<a class="btn btn-primary" href="#"> <div class="dropdown" data-dropdown="true" data-dropdown-trigger="click">
<button class="dropdown-toggle btn btn-primary">
WORKSHEET WORKSHEET
</button>
<div class="dropdown-content w-full max-w-56 py-2">
<div class="menu menu-default flex flex-col w-full">
<div class="menu-item">
<a class="menu-link" href="#">
<span class="menu-icon">
<i class="ki-outline ki-badge">
</i>
</span>
<span class="menu-title">
MEMO
</span>
</a> </a>
</div> </div>
<div class="menu-item">
<a class="menu-link" href="#">
<span class="menu-icon">
<i class="ki-outline ki-profile-circle">
</i>
</span>
<span class="menu-title">
RESUME
</span>
</a>
</div>
<div class="menu-item">
<a class="menu-link" onclick="seletSederhanaStandart()">
<span class="menu-icon">
<i class="ki-outline ki-setting-2">
</i>
</span>
<span class="menu-title">
LPJ
</span>
</a>
</div>
<div class="menu-item">
<a class="menu-link" href="#">
<span class="menu-icon">
<i class="ki-outline ki-message-programming">
</i>
</span>
<span class="menu-title">
RAP
</span>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="flex justify-end gap-5"> <div class="flex justify-end gap-5">
<a class="btn btn-success" href="#"> <a class="btn btn-success" href="#">
@@ -211,6 +262,7 @@
<div class="modal" data-modal="true" id="modal_2"> <div class="modal" data-modal="true" id="modal_2">
<div class="modal-content modal-center-y max-w-[600px]"> <div class="modal-content modal-center-y max-w-[600px]">
<div class="modal-header"> <div class="modal-header">
@@ -233,7 +285,8 @@
</div> </div>
<div class="form-group flex items-baseline flex-wrap"> <div class="form-group flex items-baseline flex-wrap">
<a class="btn btn-outline btn-primary w-full" href="#">Export Kertas Kerja</a> <a class="btn btn-outline btn-primary w-full"
href="{{ route('penilai.export.kertas-kerja', $permohonan->id) }}">Export Kertas Kerja</a>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@@ -242,3 +295,23 @@
</div> </div>
</div> </div>
@endsection @endsection
<script>
function seletSederhanaStandart() {
Swal.fire({
title: 'Apakah kamu akan memilih lpj standar?',
icon: 'warning',
showDenyButton: true,
showCancelButton: false,
confirmButtonText: 'Yes',
denyButtonText: 'No',
}).then((result) => {
if (result.isConfirmed) {
} else if (result.isDenied) {
Swal.fire('Changes are not saved', '', 'info')
}
})
}
</script>

View File

@@ -254,7 +254,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Jadwal Kunjungan Tanggal assign
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">

View File

@@ -67,7 +67,7 @@
alt="Uploaded Image"> alt="Uploaded Image">
<input type="file" <input type="file"
name="foto_objek" name="foto_objek"
class="input" class="file-input"
accept="image/*" accept="image/*"
onchange="previewImage(this, 'uploadedImage1')"> onchange="previewImage(this, 'uploadedImage1')">
</div> </div>
@@ -77,7 +77,7 @@
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<img id="uploadedImage2" class="max-w-[200px] hidden" <img id="uploadedImage2" class="max-w-[200px] hidden"
alt="Pembanding Image"> alt="Pembanding Image">
<input type="file" name="foto_objek_pembanding[]" class="input-file" <input type="file" name="foto_objek_pembanding[]" class="file-input"
accept="image/*" onchange="previewImage(this, 'uploadedImage2')"> accept="image/*" onchange="previewImage(this, 'uploadedImage2')">
</div> </div>
</td> </td>
@@ -94,19 +94,18 @@
<td class="px-4 py-2"> <td class="px-4 py-2">
<select name="jenis_aset" class="select"> <select name="jenis_aset" class="select">
<option value="">Pilih Jenis Aset</option> <option value="">Pilih Jenis Aset</option>
<option value="Tanah" @foreach ($data['jenisJaminan'] as $item)
{{ ($inspectionData['jenis_aset'] ?? '') == 'Tanah' ? 'selected' : '' }}> <option value="{{ $item->name }}" {{ ($inspectionData['asset']['jenis_asset']['sesuai'] ?? '') == $item->name ? 'selected' : '' }}>{{ $item->name }}</option>
Tanah</option> @endforeach
<option value="Bangunan"
{{ ($inspectionData['jenis_aset'] ?? '') == 'Bangunan' ? 'selected' : '' }}>
Bangunan</option>
</select> </select>
</td> </td>
<td class="px-4 py-2"> <td class="px-4 py-2">
<select name="jenis_aset_pembanding[]" class="select"> <select name="jenis_aset_pembanding[]" class="select">
<option value="">Pilih Jenis Aset</option> <option value="">Pilih Jenis Aset</option>
<option value="Tanah">Tanah</option> @foreach ($data['jenisJaminan'] as $item)
<option value="Bangunan">Bangunan</option> <option value="{{ $item->name }}" {{ ($inspectionData['jenis_aset'] ?? '') == $item->name ? 'selected' : '' }}>{{ $item->name }}</option>
@endforeach
</select> </select>
</td> </td>
</tr> </tr>

View File

@@ -141,8 +141,8 @@
@endforeach @endforeach
@endif @endif
</select> </select>
<button type="button" class="btn btn-md btn-primary" {{-- <button type="button" class="btn btn-md btn-primary"
onclick="updateAnalisa('jenis_asset')">Save</button> onclick="updateAnalisa('jenis_asset')">Save</button> --}}
</div> </div>
</div> </div>
<em id="error-jenis_asset" class="alert text-danger text-sm"></em> <em id="error-jenis_asset" class="alert text-danger text-sm"></em>
@@ -161,134 +161,91 @@
@endforeach @endforeach
<div class="flex-wrap items-stretch"> <div class="flex-wrap items-stretch">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2"> <div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap"> <label class="form-label flex items-center gap-3 text-nowrap">
<input <input
onclick="toggleAlamatVisibility('alamat_sesuai', 'alamat_tidak_sesuai', 'sesuai')" onclick="updateAlamatFields('sesuai')"
type="radio" class="radio" name="alamat_sesuai" value="sesuai" type="radio"
class="radio"
name="alamat_sesuai"
value="sesuai"
{{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['sesuai'])) ? 'checked' : '' }}> {{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Ya</span> <span class="ml-2">Ya</span>
</label> </label>
<label class="form-label flex items-center gap-3 text-nowrap"> <label class="form-label flex items-center gap-3 text-nowrap">
<input <input
onclick="toggleAlamatVisibility('alamat_sesuai', 'alamat_tidak_sesuai', 'tidak sesuai')" onclick="updateAlamatFields('tidak sesuai')"
type="radio" class="radio" name="alamat_sesuai" value="tidak sesuai" type="radio"
class="radio"
name="alamat_sesuai"
value="tidak sesuai"
{{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['tidak sesuai'])) ? 'checked' : '' }}> {{ old('jenis_asset', isset($forminspeksi['asset']['alamat']['tidak sesuai'])) ? 'checked' : '' }}>
<span class="ml-2">Tidak</span> <span class="ml-2">Tidak</span>
</label> </label>
</div> </div>
</div>
<em id="error-alamat" class="alert text-danger text-sm"></em> <em id="error-alamat" class="alert text-danger text-sm"></em>
</div> </div>
{{-- Alamat Sesuai --}} <div id="alamat_form" class="grid gap-2 mt-5">
<div id="alamat_sesuai" class="grid gap-2 mt-5" style="{{ isset($forminspeksi['asset']['alamat']['sesuai']) ? '' : 'display: none;' }}">
@foreach ($permohonan->debiture->documents as $dokumen)
@php @php
$fields = [ $fields = [
[ [
'label' => 'Jl.', 'label' => 'Jl.',
'value' => $dokumen->address ?? '',
'name' => 'nama_jalan', 'name' => 'nama_jalan',
'id' => 'nama_jalan',
'readonly' => false, 'readonly' => false,
], ],
[ [
'label' => 'Provinsi', 'label' => 'Provinsi',
'value' => $dokumen->province->name ?? '',
'name' => 'provinsi', 'name' => 'provinsi',
'readonly' => true, 'id' => 'provinsi',
'type' => 'select',
'options' => $provinces,
], ],
[ [
'label' => 'Kota/Kabupaten', 'label' => 'Kota/Kabupaten',
'value' => $dokumen->city->name ?? '',
'name' => 'kota_kabupaten', 'name' => 'kota_kabupaten',
'readonly' => true, 'id' => 'kota_kabupaten',
'type' => 'select',
'options' => $provinces,
], ],
[ [
'label' => 'Kecamatan', 'label' => 'Kecamatan',
'value' => $dokumen->district->name ?? '',
'name' => 'kecamatan', 'name' => 'kecamatan',
'readonly' => true, 'id' => 'kecamatan',
'type' => 'select',
'options' => $provinces,
], ],
[ [
'label' => 'Kelurahan', 'label' => 'Kelurahan',
'value' => $dokumen->village->name ?? '',
'name' => 'desa_kelurahan', 'name' => 'desa_kelurahan',
'readonly' => true, 'id' => 'desa_kelurahan',
'type' => 'select',
'options' => $provinces,
], ],
]; ];
@endphp @endphp
@foreach ($fields as $field) @foreach ($fields as $field)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $field['label'] }}</label> <label class="form-label max-w-56">{{ $field['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="text" class="input" name="{{ $field['name'] }}" @if (isset($field['type']) && $field['type'] === 'select')
value="{{ $field['value'] }}" {{ $field['readonly'] ? 'readonly' : '' }}> <select id="{{ $field['id'] }}" name="{{ $field['name'] }}" class="select w-full">
</div> <option value="">{{ $field['label'] }}</option>
</div> @foreach ($field['options'] as $option)
@endforeach
@endforeach
</div>
{{-- Alamat Tidak Sesuai --}}
<div id="alamat_tidak_sesuai" class="grid gap-2 mt-5" style="{{ isset($forminspeksi['asset']['alamat']['tidak sesuai']) ? '' : 'display: none;' }}"">
@php
$inputDataLokasi = [
['label' => 'Jl.', 'id' => 'address', 'name' => 'address', 'type' => 'text'],
[
'label' => 'Provinsi',
'id' => 'province_code',
'name' => 'provinsi',
'type' => 'select',
'options' => $provinces,
],
[
'label' => 'Kota/Kabupaten',
'id' => 'city_code',
'name' => 'kota_kabupaten',
'type' => 'select',
'options' => $provinces,
],
[
'label' => 'Kecamatan',
'id' => 'district_code',
'name' => 'kecamatan',
'type' => 'select',
'options' => $provinces,
],
[
'label' => 'Desa/Kelurahan',
'id' => 'village_code',
'name' => 'desa_kelurahan',
'type' => 'select',
'options' => $provinces,
],
];
@endphp
@foreach ($inputDataLokasi as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
@if ($item['type'] === 'text')
<input id="{{ $item['id'] }}" name="{{ $item['name'] }}" class="input">
@else
<select id="{{ $item['id'] }}" name="{{ $item['name'] }}"
class="select w-full">
<option value="">{{ $item['label'] }}</option>
@if ($item['id'] === 'province_code')
@foreach ($item['options'] as $option)
<option value="{{ $option->code }}">{{ $option->name }}</option> <option value="{{ $option->code }}">{{ $option->name }}</option>
@endforeach @endforeach
@endif
</select> </select>
@else
<input type="text" id="{{ $field['id'] }}" name="{{ $field['name'] }}" class="input"
{{ $field['readonly'] ? 'readonly' : '' }}>
@endif @endif
</div> </div>
</div> </div>
@endforeach @endforeach
</div> </div>
</div> </div>
</div> </div>

View File

@@ -54,6 +54,25 @@
@endsection @endsection
@push('scripts') @push('scripts')
<script type="text/javascript"> <script type="text/javascript">
function updateAlamatFields(type) {
if (type === 'sesuai') {
// Update nilai form dengan data sesuai
document.getElementById('nama_jalan').value = "{{ $dokumen->address ?? '' }}";
document.getElementById('provinsi').value = "{{ $dokumen->province->code ?? '' }}";
document.getElementById('kota_kabupaten').value = "{{ $dokumen->city->code ?? '' }}";
document.getElementById('kecamatan').value = "{{ $dokumen->district->code ?? '' }}";
document.getElementById('desa_kelurahan').value = "{{ $dokumen->village->code ?? '' }}";
} else if (type === 'tidak sesuai') {
// Reset nilai form untuk input manual
document.getElementById('nama_jalan').value = '';
document.getElementById('provinsi').value = '';
document.getElementById('kota_kabupaten').value = '';
document.getElementById('kecamatan').value = '';
document.getElementById('desa_kelurahan').value = '';
}
}
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) { function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
const selectedValue = $(`[name="${fieldName}"]:checked`).val(); const selectedValue = $(`[name="${fieldName}"]:checked`).val();
const inputField = $(`#${inputId}`); const inputField = $(`#${inputId}`);
@@ -127,65 +146,69 @@
function submitData() { function submitData() {
const loadingOverlay = document.getElementById('loadingOverlay'); const loadingOverlay = document.getElementById('loadingOverlay');
loadingOverlay.classList.remove('hidden'); loadingOverlay.classList.remove('hidden');
loadingOverlay.classList.add('flex'); loadingOverlay.classList.add('flex');
const formElement = $('#formInspeksi')[0]; const formElement = $('#formInspeksi')[0];
const formData = new FormData(formElement); const formData = new FormData(formElement);
formData.forEach((value, key) => {
$.ajax({ console.log(key, value);
url: '{{ route('surveyor.store') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
window.location.href =
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
}
});
} else {
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
console.log(response);
},
error: function(xhr, status, error) {
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
});
}
console.error('Terjadi error:', error); // Menampilkan pesan error di konsol
console.log('Status:', status);
console.log('Response:', xhr.responseText);
console.log(errors);
toastrErrorBuild(error);
},
complete: function() {
// Re-enable the button and hide the spinner
loadingOverlay.classList.add('hidden');
loadingOverlay.classList.remove('flex');
}
}); });
// $.ajax({
// url: '{{ route('surveyor.store') }}',
// type: 'POST',
// data: formData,
// processData: false,
// contentType: false,
// headers: {
// 'X-CSRF-TOKEN': '{{ csrf_token() }}'
// },
// success: function(response) {
// if (response.success) {
// Swal.fire({
// title: 'Berhasil!',
// text: response.message,
// icon: 'success',
// confirmButtonText: 'OK'
// }).then((response) => {
// if (response.isConfirmed) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
// }
// });
// } else {
// Swal.fire({
// title: 'Error!',
// text: response.message || 'Terjadi kesalahan',
// icon: 'error',
// confirmButtonText: 'OK'
// });
// }
// console.log(response);
// },
// error: function(xhr, status, error) {
// let errors = xhr.responseJSON?.errors;
// $('.alert').text('');
// if (errors) {
// $.each(errors, function(key, value) {
// $(`#error-${key}`).text(value[0]);
// });
// }
// console.error('Terjadi error:', error); // Menampilkan pesan error di konsol
// console.log('Status:', status);
// console.log('Response:', xhr.responseText);
// console.log(errors);
// toastrErrorBuild(error);
// },
// complete: function() {
// // Re-enable the button and hide the spinner
// loadingOverlay.classList.add('hidden');
// loadingOverlay.classList.remove('flex');
// }
// });
} }
function previewImage(input, previewId) { function previewImage(input, previewId) {
@@ -260,9 +283,8 @@
success: function(response) { success: function(response) {
console.log(response); console.log(response);
if (response.success) { if (response.success) {
window.location.href = // window.location.href =
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}'; // '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
toastrSuccessBuild(response.message); toastrSuccessBuild(response.message);
} }
}, },

View File

@@ -5,7 +5,6 @@
@endsection @endsection
@section('content') @section('content')
@push('styles') @push('styles')
@endpush @endpush
<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">
@@ -96,18 +95,19 @@
</div> </div>
</div> </div>
@endsection @endsection
@push('scripts') @push('scripts')
<script> <script>
function jadwal(id){ function jadwal(id) {
document.getElementById('ids').value = id ; document.getElementById('ids').value = id;
} }
</script>
<script type="module">
function freezeInputSurveyor(data) {
}
</script>
<script type="module">
const element = document.querySelector('#permohonan-table'); const element = document.querySelector('#permohonan-table');
const searchInput = document.getElementById('search'); const searchInput = document.getElementById('search');
const statusFilter = document.getElementById('status-filter'); const statusFilter = document.getElementById('status-filter');
@@ -172,6 +172,11 @@ function jadwal(id){
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="surveyor/${data.id}/show?form=inspeksi"> <a class="btn btn-sm btn-icon btn-clear btn-warning" href="surveyor/${data.id}/show?form=inspeksi">
<i class="ki-outline ki-eye"></i> <i class="ki-outline ki-eye"></i>
</a> </a>
<button type="button" class="btn btn-sm btn-icon btn-clear btn-info" onclick="freezeInputSurveyor(${data.id})" data-modal-toggle="#modal_freeze">
<i class="ki-filled ki-arrow-circle-right"></i>
</button>
`; `;
} }
return actionHtml; return actionHtml;
@@ -200,11 +205,13 @@ function jadwal(id){
return `${day}-${month}-${year}`; return `${day}-${month}-${year}`;
} }
</script>
</script>
@endpush @endpush
<div class="modal" data-modal="true" id="modal_jadwal" > <div class="modal" data-modal="true" id="modal_jadwal">
<div class="modal-content max-w-[600px] top-[10%]"> <div class="modal-content modal-center-y max-w-[600px]">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Kunjungan</h3> <h3 class="modal-title">Kunjungan</h3>
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true"> <button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
@@ -212,7 +219,8 @@ function jadwal(id){
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form action="{{ route('surveyor.storeJadwal')}}" method="POST" enctype="multipart/form-data" id="revisiForm"> <form action="{{ route('surveyor.storeJadwal') }}" method="POST" enctype="multipart/form-data"
id="revisiForm">
@method('put') @method('put')
@csrf @csrf
<input id="ids" type="hidden" name="id"> <input id="ids" type="hidden" name="id">
@@ -231,8 +239,51 @@ function jadwal(id){
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan</label> <label class="form-label max-w-56">Catatan</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<textarea id="deskripsi_penilaian" class="textarea @error('deskripsi_penilaian') border-danger bg-danger-light @enderror" <textarea id="deskripsi_penilaian"
rows="3" name="deskripsi_penilaian"></textarea> class="textarea @error('deskripsi_penilaian') border-danger bg-danger-light @enderror" rows="3"
name="deskripsi_penilaian"></textarea>
@error('deskripsi_penilaian')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="modal-footer justify-end mt-2">
<div class="flex gap-4">
<button type="button" class="btn btn-light" data-modal-dismiss="true">Cancel</button>
<button id="btnSubmit" type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="modal" data-modal="true" id="modal_freeze">
<div class="modal-content modal-center-y max-w-[600px]">
<div class="modal-header">
<h3 class="modal-title">Freeze Surveyor</h3>
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
<i class="ki-outline ki-cross"></i>
</button>
</div>
<div class="modal-body">
<form action="{{ route('surveyor.storeFreeze') }}" method="POST" enctype="multipart/form-data"
id="freezeSurveyor">
@method('put')
@csrf
<input id="ids" type="hidden" name="id">
<div class="pl-1 grid gap-2.5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Catatan</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea id="deskripsi_penilaian"
class="textarea @error('deskripsi_penilaian') border-danger bg-danger-light @enderror" rows="3"
name="deskripsi_penilaian"></textarea>
@error('deskripsi_penilaian') @error('deskripsi_penilaian')
<em class="alert text-danger text-sm">{{ $message }}</em> <em class="alert text-danger text-sm">{{ $message }}</em>
@enderror @enderror

View File

@@ -515,6 +515,7 @@ Route::middleware(['auth'])->group(function () {
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::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved');
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');
Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus'); Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus');
@@ -535,6 +536,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran'); Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran');
Route::get('export/kertas-kerja', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja');