FIX #8 - advanced filtering

This commit is contained in:
Dr Masroor Ehsan 2025-01-20 14:54:11 +06:00
parent 35a84f9c47
commit 765d741116
3 changed files with 15 additions and 4 deletions

View File

@ -238,16 +238,18 @@ private function applyFilters(QueryDataTable $dataTable)
$assignTo = $this->request()->get('assign_to'); $assignTo = $this->request()->get('assign_to');
$readFrom = $this->request()->get('read_from'); $readFrom = $this->request()->get('read_from');
$readTo = $this->request()->get('read_to'); $readTo = $this->request()->get('read_to');
$readBy = $this->request()->get('read_by');
$modality = $this->request()->get('modality'); $modality = $this->request()->get('modality');
$dataTable->filter( $dataTable->filter(
function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo) { function ($query) use ($status, $studyFrom, $studyTo, $receiveFrom, $receiveTo, $modality, $assignFrom, $assignTo, $readFrom, $readTo, $readBy) {
$this->filterStatus($query, $status); $this->filterStatus($query, $status);
$this->filterDateRange($query, 'study_date', $studyFrom, $studyTo); $this->filterDateRange($query, 'study_date', $studyFrom, $studyTo);
$this->filterDateRange($query, 'received_at', $receiveFrom, $receiveTo); $this->filterDateRange($query, 'received_at', $receiveFrom, $receiveTo);
$this->filterDateRange($query, 'assigned_at', $assignFrom, $assignTo); $this->filterDateRange($query, 'assigned_at', $assignFrom, $assignTo);
$this->filterDateRange($query, 'read_at', $readFrom, $readTo); $this->filterDateRange($query, 'read_at', $readFrom, $readTo);
$this->filterModalities($query, $modality); $this->filterModalities($query, $modality);
$this->filterReadBy($query, $readBy);
} }
); );
} }
@ -269,7 +271,6 @@ private function filterStatus($query, ?string $status): void
$query->whereNotNull('locked_at'); $query->whereNotNull('locked_at');
break; break;
} }
} }
private function filterModalities($query, ?string $request): void private function filterModalities($query, ?string $request): void
@ -542,4 +543,13 @@ private function generateActionButtons(Study $study): string
return implode("\r", $btns); return implode("\r", $btns);
} }
private function filterReadBy($query, ?int $readBy): void
{
if (is_null($readBy) || $readBy == 0) {
return;
}
$query->where('reading_physician_id', $readBy);
}
} }

View File

@ -177,6 +177,7 @@ function (givenDate) {
@endforeach @endforeach
_modality = modalityArray.join(','); _modality = modalityArray.join(',');
_read_by = $('#read_by').val();
filterTable(); filterTable();
}); });

View File

@ -40,7 +40,7 @@
<small class="text-light fw-medium d-block">Reported By</small> <small class="text-light fw-medium d-block">Reported By</small>
<div class="mt-4"> <div class="mt-4">
<select name="read_by" id="read_by" class="form-select"> <select name="read_by" id="read_by" class="form-select">
<option>--</option> <option value=""></option>
@foreach ($rads as $id => $name) @foreach ($rads as $id => $name)
<option value="{{ $id }}">{{ $name }}</option> <option value="{{ $id }}">{{ $name }}</option>
@endforeach @endforeach