feat(laporan): tambah filter branch pada laporan permohonan
Menambahkan fitur filter berdasarkan cabang pada laporan permohonan: - Mengimplementasikan filter branch pada controller LaporanPermohonanController - Mengimplementasikan filter branch pada export LaporanPermohonanExport - Menambahkan dropdown filter cabang pada halaman index - Mengimplementasikan filter cabang pada JavaScript untuk datatable - Menambahkan parameter branch_id pada URL ekspor data - Memastikan filter cabang berfungsi baik pada tampilan datatable maupun pada ekspor data
This commit is contained in:
@@ -41,6 +41,11 @@
|
|||||||
$query->where('status', $this->request->status);
|
$query->where('status', $this->request->status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apply branch filter if provided
|
||||||
|
if ($this->request->has('branch_id') && !empty($this->request->branch_id)) {
|
||||||
|
$query->where('branch_id', $this->request->branch_id);
|
||||||
|
}
|
||||||
|
|
||||||
// Apply search filter if provided
|
// Apply search filter if provided
|
||||||
if ($this->request->has('search') && !empty($this->request->search)) {
|
if ($this->request->has('search') && !empty($this->request->search)) {
|
||||||
$search = $this->request->search;
|
$search = $this->request->search;
|
||||||
|
|||||||
@@ -55,6 +55,11 @@
|
|||||||
$query->where('status', $search->status);
|
$query->where('status', $search->status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filter by branch if provided
|
||||||
|
if (isset($search->branch_id) && !empty($search->branch_id)) {
|
||||||
|
$query->where('branch_id', $search->branch_id);
|
||||||
|
}
|
||||||
|
|
||||||
if(isset($search->search)) {
|
if(isset($search->search)) {
|
||||||
|
|
||||||
$query->where(function ($q) use ($search) {
|
$query->where(function ($q) use ($search) {
|
||||||
|
|||||||
@@ -22,6 +22,14 @@
|
|||||||
<input placeholder="Tanggal Akhir" id="end_date" type="date">
|
<input placeholder="Tanggal Akhir" id="end_date" type="date">
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<select class="select select-sm" id="branch_filter">
|
||||||
|
<option value="">Semua Cabang</option>
|
||||||
|
@foreach(\Modules\Basicdata\Models\Branch::where('status', 1)->get() as $branch)
|
||||||
|
<option value="{{ $branch->id }}">{{ $branch->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<select class="select select-sm" id="status_filter">
|
<select class="select select-sm" id="status_filter">
|
||||||
<option value="">Semua Status</option>
|
<option value="">Semua Status</option>
|
||||||
@@ -30,6 +38,7 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<button class="btn btn-sm btn-primary" id="filter_tanggal">Filter</button>
|
<button class="btn btn-sm btn-primary" id="filter_tanggal">Filter</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -113,6 +122,7 @@
|
|||||||
const startDateInput = document.getElementById('start_date');
|
const startDateInput = document.getElementById('start_date');
|
||||||
const endDateInput = document.getElementById('end_date');
|
const endDateInput = document.getElementById('end_date');
|
||||||
const statusFilter = document.getElementById('status_filter');
|
const statusFilter = document.getElementById('status_filter');
|
||||||
|
const branchFilter = document.getElementById('branch_filter');
|
||||||
const filterTanggalButton = document.getElementById('filter_tanggal');
|
const filterTanggalButton = document.getElementById('filter_tanggal');
|
||||||
const exportBtn = document.getElementById('export-btn');
|
const exportBtn = document.getElementById('export-btn');
|
||||||
|
|
||||||
@@ -209,6 +219,7 @@
|
|||||||
const startDate = startDateInput.value;
|
const startDate = startDateInput.value;
|
||||||
const endDate = endDateInput.value;
|
const endDate = endDateInput.value;
|
||||||
const status = statusFilter.value;
|
const status = statusFilter.value;
|
||||||
|
const branch = branchFilter.value;
|
||||||
|
|
||||||
if (searchInput.value) {
|
if (searchInput.value) {
|
||||||
filters.search = searchInput.value;
|
filters.search = searchInput.value;
|
||||||
@@ -226,6 +237,10 @@
|
|||||||
filters.status = status;
|
filters.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (branch) {
|
||||||
|
filters.branch_id = branch;
|
||||||
|
}
|
||||||
|
|
||||||
dataTable.search(filters);
|
dataTable.search(filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +266,11 @@
|
|||||||
url.searchParams.delete('status');
|
url.searchParams.delete('status');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (branchFilter.value) {
|
||||||
|
url.searchParams.set('branch_id', branchFilter.value);
|
||||||
|
} else {
|
||||||
|
url.searchParams.delete('branch_id');
|
||||||
|
}
|
||||||
|
|
||||||
if (searchInput.value) {
|
if (searchInput.value) {
|
||||||
url.searchParams.set('search', searchInput.value);
|
url.searchParams.set('search', searchInput.value);
|
||||||
|
|||||||
Reference in New Issue
Block a user