408 lines
25 KiB
PHP
408 lines
25 KiB
PHP
@extends('Dashboard.layouts.main')
|
|
|
|
@section('title', 'Edit Layanan')
|
|
|
|
@section('content')
|
|
<div class="content">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="page-title-box">
|
|
<div class="page-title-right">
|
|
<ol class="breadcrumb m-0">
|
|
<li class="breadcrumb-item"><a href="{{ route('dashboard') }}">Dashboard</a></li>
|
|
<li class="breadcrumb-item"><a href="{{ route('services.index') }}">Layanan</a></li>
|
|
<li class="breadcrumb-item active">Edit</li>
|
|
</ol>
|
|
</div>
|
|
<h4 class="page-title">Edit Layanan</h4>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<form action="{{ route('services.update', $service->id) }}" method="POST" enctype="multipart/form-data">
|
|
@csrf
|
|
@method('PUT')
|
|
|
|
@if ($errors->any())
|
|
<div class="alert alert-danger">
|
|
<ul>
|
|
@foreach ($errors->all() as $error)
|
|
<li>{{ $error }}</li>
|
|
@endforeach
|
|
</ul>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label for="jenis_permintaan">Jenis Permintaan <span class="text-danger">*</span></label>
|
|
<select class="form-control @error('jenis_permintaan') is-invalid @enderror" id="jenis_permintaan" name="jenis_permintaan" required>
|
|
<option value="">Pilih Jenis Permintaan</option>
|
|
<option value="Pengambilan Contoh Uji" {{ old('jenis_permintaan', $service->jenis_permintaan) == 'Pengambilan Contoh Uji' ? 'selected' : '' }}>Pengambilan Contoh Uji</option>
|
|
<option value="Pengambilan dan Pengujian Contoh Uji" {{ old('jenis_permintaan', $service->jenis_permintaan) == 'Pengambilan dan Pengujian Contoh Uji' ? 'selected' : '' }}>Pengambilan dan Pengujian Contoh Uji</option>
|
|
</select>
|
|
@error('jenis_permintaan')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="tanggal_uji">Tanggal Uji <span class="text-danger">*</span></label>
|
|
<input type="date" class="form-control @error('tanggal_uji') is-invalid @enderror" id="tanggal_uji" name="tanggal_uji" value="{{ old('tanggal_uji', $service->tanggal_uji) }}" required>
|
|
@error('tanggal_uji')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="parameter">Parameter <span class="text-danger">*</span></label>
|
|
<select class="form-control @error('parameter') is-invalid @enderror" id="parameter" name="parameter" required>
|
|
<option value="">Pilih Parameter</option>
|
|
<option value="TDS" {{ old('parameter', $service->parameter) == 'TDS' ? 'selected' : '' }}>Jumlah Zat Padat Terlarut (TDS) - Rp. 22.000</option>
|
|
<option value="TSS" {{ old('parameter', $service->parameter) == 'TSS' ? 'selected' : '' }}>Total Suspended Solid (TSS) - Rp. 22.000</option>
|
|
<option value="Kekeruhan" {{ old('parameter', $service->parameter) == 'Kekeruhan' ? 'selected' : '' }}>Kekeruhan - Rp. 15.000</option>
|
|
<option value="Suhu" {{ old('parameter', $service->parameter) == 'Suhu' ? 'selected' : '' }}>Suhu - Rp. 3.500</option>
|
|
<option value="Daya Hantar Listrik" {{ old('parameter', $service->parameter) == 'Daya Hantar Listrik' ? 'selected' : '' }}>Daya Hantar Listrik - Rp. 12.500</option>
|
|
<option value="pH" {{ old('parameter', $service->parameter) == 'pH' ? 'selected' : '' }}>pH - Rp. 10.500</option>
|
|
<option value="Amonia" {{ old('parameter', $service->parameter) == 'Amonia' ? 'selected' : '' }}>Amonia - Rp. 37.000</option>
|
|
<option value="DO" {{ old('parameter', $service->parameter) == 'DO' ? 'selected' : '' }}>Oksigen Terlarut (DO) - Rp. 16.000</option>
|
|
<option value="Nitrat" {{ old('parameter', $service->parameter) == 'Nitrat' ? 'selected' : '' }}>Nitrat - Rp. 32.000</option>
|
|
<option value="Nitrit" {{ old('parameter', $service->parameter) == 'Nitrit' ? 'selected' : '' }}>Nitrit - Rp. 33.500</option>
|
|
<option value="BOD" {{ old('parameter', $service->parameter) == 'BOD' ? 'selected' : '' }}>BOD - Rp. 40.000</option>
|
|
<option value="COD" {{ old('parameter', $service->parameter) == 'COD' ? 'selected' : '' }}>COD - Rp. 58.000</option>
|
|
<option value="Tembaga" {{ old('parameter', $service->parameter) == 'Tembaga' ? 'selected' : '' }}>Tembaga - Rp. 50.000</option>
|
|
<option value="Besi" {{ old('parameter', $service->parameter) == 'Besi' ? 'selected' : '' }}>Besi - Rp. 51.000</option>
|
|
<option value="Mangan" {{ old('parameter', $service->parameter) == 'Mangan' ? 'selected' : '' }}>Mangan - Rp. 52.800</option>
|
|
</select>
|
|
<small class="form-text text-muted">Pilih parameter uji yang diinginkan.</small>
|
|
@error('parameter')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label for="pengujian_kualitas_air">Pengujian Kualitas Air <span class="text-danger">*</span></label>
|
|
<select class="form-control @error('pengujian_kualitas_air') is-invalid @enderror" id="pengujian_kualitas_air" name="pengujian_kualitas_air" required>
|
|
<option value="">Pilih Jenis Pengujian</option>
|
|
<option value="Air Limbah" {{ old('pengujian_kualitas_air', $service->pengujian_kualitas_air) == 'Air Limbah' ? 'selected' : '' }}>Air Limbah</option>
|
|
<option value="Air Bersih" {{ old('pengujian_kualitas_air', $service->pengujian_kualitas_air) == 'Air Bersih' ? 'selected' : '' }}>Air Bersih</option>
|
|
<option value="Air Badan Air" {{ old('pengujian_kualitas_air', $service->pengujian_kualitas_air) == 'Air Badan Air' ? 'selected' : '' }}>Air Badan Air</option>
|
|
</select>
|
|
@error('pengujian_kualitas_air')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="total_sampel">Total Sampel <span class="text-danger">*</span></label>
|
|
<input type="number" class="form-control @error('total_sampel') is-invalid @enderror" id="total_sampel" name="total_sampel" min="1" value="{{ old('total_sampel', $service->total_sampel) }}" required>
|
|
<small class="form-text text-muted">Jumlah sampel yang akan diambil/diuji</small>
|
|
@error('total_sampel')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="jarak_pengambilan_sampel">Jarak Pengambilan Sampel <span class="text-danger">*</span></label>
|
|
<select class="form-control @error('jarak_pengambilan_sampel') is-invalid @enderror" id="jarak_pengambilan_sampel" name="jarak_pengambilan_sampel" required>
|
|
<option value="">Pilih Jarak Pengambilan</option>
|
|
<option value="jarak < 100km" {{ old('jarak_pengambilan_sampel', $service->jarak_pengambilan_sampel) == 'jarak < 100km' ? 'selected' : '' }}>Jarak < 100 km (Rp. 273.000)</option>
|
|
<option value="jarak 100km - 150km" {{ old('jarak_pengambilan_sampel', $service->jarak_pengambilan_sampel) == 'jarak 100km - 150km' ? 'selected' : '' }}>Jarak 100 km - 150 km (Rp. 373.000)</option>
|
|
<option value="jarak > 150km" {{ old('jarak_pengambilan_sampel', $service->jarak_pengambilan_sampel) == 'jarak > 150km' ? 'selected' : '' }}>Jarak > 150 km (Rp. 473.000)</option>
|
|
</select>
|
|
@error('jarak_pengambilan_sampel')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@if(Auth::user()->role === 'admin')
|
|
<hr>
|
|
<h5 class="text-primary">Informasi Admin</h5>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label for="status">Status Layanan <span class="text-danger">*</span></label>
|
|
<select class="form-control @error('status') is-invalid @enderror" id="status" name="status" required>
|
|
<option value="Menunggu" {{ old('status', $service->status) == 'Menunggu' ? 'selected' : '' }}>Menunggu</option>
|
|
<option value="Diterima" {{ old('status', $service->status) == 'Diterima' ? 'selected' : '' }}>Diterima</option>
|
|
<option value="Diproses" {{ old('status', $service->status) == 'Diproses' ? 'selected' : '' }}>Diproses</option>
|
|
<option value="Selesai" {{ old('status', $service->status) == 'Selesai' ? 'selected' : '' }}>Selesai</option>
|
|
<option value="Ditolak" {{ old('status', $service->status) == 'Ditolak' ? 'selected' : '' }}>Ditolak</option>
|
|
</select>
|
|
@error('status')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="tanggal_selesai_uji">Tanggal Selesai Uji</label>
|
|
<input type="date" class="form-control @error('tanggal_selesai_uji') is-invalid @enderror" id="tanggal_selesai_uji" name="tanggal_selesai_uji" value="{{ old('tanggal_selesai_uji', $service->tanggal_selesai_uji) }}">
|
|
@error('tanggal_selesai_uji')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="biaya_retribusi_parameter">Biaya Retribusi Parameter (Rp)</label>
|
|
<input type="number" class="form-control @error('biaya_retribusi_parameter') is-invalid @enderror" id="biaya_retribusi_parameter" name="biaya_retribusi_parameter" min="0" value="{{ old('biaya_retribusi_parameter', $service->biaya_retribusi_parameter) }}">
|
|
@error('biaya_retribusi_parameter')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group" id="keteranganContainer">
|
|
<label for="keterangan">Keterangan Status</label>
|
|
<textarea class="form-control @error('keterangan') is-invalid @enderror" id="keterangan" name="keterangan" rows="3" placeholder="Masukkan keterangan status layanan (wajib jika status Diterima atau Ditolak)">{{ old('keterangan', $service->keterangan) }}</textarea>
|
|
<small class="form-text text-muted">Tuliskan keterangan mengapa layanan diterima atau ditolak. Keterangan ini akan ditampilkan kepada pelanggan.</small>
|
|
@error('keterangan')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<label for="biaya_retribusi_jarak">Biaya Retribusi Jarak (Rp)</label>
|
|
<input type="number" class="form-control @error('biaya_retribusi_jarak') is-invalid @enderror" id="biaya_retribusi_jarak" name="biaya_retribusi_jarak" min="0" value="{{ old('biaya_retribusi_jarak', $service->biaya_retribusi_jarak) }}">
|
|
@error('biaya_retribusi_jarak')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="biaya_retribusi">Total Biaya Retribusi (Rp)</label>
|
|
<input type="number" class="form-control @error('biaya_retribusi') is-invalid @enderror" id="biaya_retribusi" name="biaya_retribusi" min="0" value="{{ old('biaya_retribusi', $service->biaya_retribusi) }}">
|
|
<small class="form-text text-muted">Dihitung otomatis dari biaya parameter dan jarak</small>
|
|
@error('biaya_retribusi')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="file_hasil_uji">File Hasil Uji</label>
|
|
<input type="file" class="form-control-file @error('file_hasil_uji') is-invalid @enderror" id="file_hasil_uji" name="file_hasil_uji">
|
|
<small class="form-text text-muted">Format yang diizinkan: PDF, DOC, DOCX (Maks. 10MB)</small>
|
|
@if($service->file_hasil_uji)
|
|
<p class="mt-2">
|
|
<a href="{{ asset('uploads/hasil_uji/'.$service->file_hasil_uji) }}" target="_blank" class="btn btn-sm btn-info">
|
|
<i class="fe-file-text"></i> Lihat File
|
|
</a>
|
|
</p>
|
|
@endif
|
|
@error('file_hasil_uji')
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="mt-3 text-right">
|
|
<a href="{{ route('services.index') }}" class="btn btn-secondary mr-2">Batal</a>
|
|
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('scripts')
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
// Fungsi untuk menampilkan/menyembunyikan kolom keterangan berdasarkan status
|
|
function toggleKeterangan() {
|
|
var status = document.getElementById('status').value;
|
|
var keteranganContainer = document.getElementById('keteranganContainer');
|
|
var keteranganLabel = keteranganContainer.querySelector('label');
|
|
var keteranganHelpText = keteranganContainer.querySelector('small');
|
|
|
|
if (status === 'Diterima' || status === 'Ditolak') {
|
|
keteranganContainer.style.display = 'block';
|
|
keteranganLabel.innerHTML = 'Keterangan Status <span class="text-danger">*</span>';
|
|
if (status === 'Diterima') {
|
|
keteranganHelpText.innerText = 'Tuliskan keterangan mengapa layanan diterima. Keterangan ini akan ditampilkan kepada pelanggan.';
|
|
} else {
|
|
keteranganHelpText.innerText = 'Tuliskan alasan mengapa layanan ditolak. Keterangan ini akan ditampilkan kepada pelanggan.';
|
|
}
|
|
} else {
|
|
keteranganContainer.style.display = 'none';
|
|
}
|
|
}
|
|
|
|
// Event listener untuk perubahan status
|
|
document.getElementById('status').addEventListener('change', toggleKeterangan);
|
|
|
|
// Jalankan fungsi saat halaman dimuat
|
|
toggleKeterangan();
|
|
|
|
// Fungsi untuk menghitung total biaya
|
|
function hitungTotalBiaya() {
|
|
var biayaParameter = parseInt(document.getElementById('biaya_retribusi_parameter').value) || 0;
|
|
var biayaJarak = parseInt(document.getElementById('biaya_retribusi_jarak').value) || 0;
|
|
var totalBiaya = biayaParameter + biayaJarak;
|
|
|
|
document.getElementById('biaya_retribusi').value = totalBiaya;
|
|
}
|
|
|
|
// Event listener untuk input biaya parameter
|
|
document.getElementById('biaya_retribusi_parameter').addEventListener('input', hitungTotalBiaya);
|
|
|
|
// Event listener untuk input biaya jarak
|
|
document.getElementById('biaya_retribusi_jarak').addEventListener('input', hitungTotalBiaya);
|
|
|
|
// Event listener untuk jarak pengambilan sampel
|
|
document.getElementById('jarak_pengambilan_sampel').addEventListener('change', function() {
|
|
var jarak = this.value;
|
|
var biayaJarak = 0;
|
|
|
|
if (jarak === 'jarak < 100km') {
|
|
biayaJarak = 273000;
|
|
} else if (jarak === 'jarak 100km - 150km') {
|
|
biayaJarak = 373000;
|
|
} else if (jarak === 'jarak > 150km') {
|
|
biayaJarak = 473000;
|
|
}
|
|
|
|
document.getElementById('biaya_retribusi_jarak').value = biayaJarak;
|
|
hitungTotalBiaya();
|
|
});
|
|
|
|
// Event listener untuk parameter
|
|
document.getElementById('parameter').addEventListener('change', function() {
|
|
var parameter = this.value;
|
|
var hargaParameter = 0;
|
|
|
|
switch(parameter) {
|
|
case 'TDS':
|
|
hargaParameter = 22000;
|
|
break;
|
|
case 'TSS':
|
|
hargaParameter = 22000;
|
|
break;
|
|
case 'Kekeruhan':
|
|
hargaParameter = 15000;
|
|
break;
|
|
case 'Suhu':
|
|
hargaParameter = 3500;
|
|
break;
|
|
case 'Daya Hantar Listrik':
|
|
hargaParameter = 12500;
|
|
break;
|
|
case 'pH':
|
|
hargaParameter = 10500;
|
|
break;
|
|
case 'Amonia':
|
|
hargaParameter = 37000;
|
|
break;
|
|
case 'DO':
|
|
hargaParameter = 16000;
|
|
break;
|
|
case 'Nitrat':
|
|
hargaParameter = 32000;
|
|
break;
|
|
case 'Nitrit':
|
|
hargaParameter = 33500;
|
|
break;
|
|
case 'BOD':
|
|
hargaParameter = 40000;
|
|
break;
|
|
case 'COD':
|
|
hargaParameter = 58000;
|
|
break;
|
|
case 'Tembaga':
|
|
hargaParameter = 50000;
|
|
break;
|
|
case 'Besi':
|
|
hargaParameter = 51000;
|
|
break;
|
|
case 'Mangan':
|
|
hargaParameter = 52800;
|
|
break;
|
|
default:
|
|
hargaParameter = 0;
|
|
}
|
|
|
|
var totalSampel = parseInt(document.getElementById('total_sampel').value) || 1;
|
|
document.getElementById('biaya_retribusi_parameter').value = hargaParameter * totalSampel;
|
|
hitungTotalBiaya();
|
|
});
|
|
|
|
// Event listener untuk total sampel
|
|
document.getElementById('total_sampel').addEventListener('input', function() {
|
|
var parameter = document.getElementById('parameter').value;
|
|
var hargaParameter = 0;
|
|
|
|
switch(parameter) {
|
|
case 'TDS':
|
|
hargaParameter = 22000;
|
|
break;
|
|
case 'TSS':
|
|
hargaParameter = 22000;
|
|
break;
|
|
case 'Kekeruhan':
|
|
hargaParameter = 15000;
|
|
break;
|
|
case 'Suhu':
|
|
hargaParameter = 3500;
|
|
break;
|
|
case 'Daya Hantar Listrik':
|
|
hargaParameter = 12500;
|
|
break;
|
|
case 'pH':
|
|
hargaParameter = 10500;
|
|
break;
|
|
case 'Amonia':
|
|
hargaParameter = 37000;
|
|
break;
|
|
case 'DO':
|
|
hargaParameter = 16000;
|
|
break;
|
|
case 'Nitrat':
|
|
hargaParameter = 32000;
|
|
break;
|
|
case 'Nitrit':
|
|
hargaParameter = 33500;
|
|
break;
|
|
case 'BOD':
|
|
hargaParameter = 40000;
|
|
break;
|
|
case 'COD':
|
|
hargaParameter = 58000;
|
|
break;
|
|
case 'Tembaga':
|
|
hargaParameter = 50000;
|
|
break;
|
|
case 'Besi':
|
|
hargaParameter = 51000;
|
|
break;
|
|
case 'Mangan':
|
|
hargaParameter = 52800;
|
|
break;
|
|
default:
|
|
hargaParameter = 0;
|
|
}
|
|
|
|
var totalSampel = parseInt(this.value) || 1;
|
|
document.getElementById('biaya_retribusi_parameter').value = hargaParameter * totalSampel;
|
|
hitungTotalBiaya();
|
|
});
|
|
|
|
// Hitung total saat halaman dimuat
|
|
hitungTotalBiaya();
|
|
});
|
|
</script>
|
|
@endsection
|