@@ -25,8 +25,17 @@ class RequisitionController extends Controller
|
||||
{
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$filters = $request->validate(['search' => 'nullable|string|max:100', 'status' => ['nullable', Rule::in(['draft', 'pending', 'approved', 'rejected', 'cancelled'])]]);
|
||||
$filters = $request->validate(['search' => 'nullable|string|max:100', 'status' => ['nullable', Rule::in(['draft', 'pending', 'approved', 'rejected', 'cancelled'])], 'view' => ['nullable', Rule::in(['all', 'mine', 'approvals', 'decided'])]]);
|
||||
$query = Requisition::query()->visibleTo($request->user())->with(['requester:id,name', 'department:id,name', 'steps']);
|
||||
if (($filters['view'] ?? 'all') === 'mine') {
|
||||
$query->where('requester_id', $request->user()->id);
|
||||
} elseif (($filters['view'] ?? 'all') === 'approvals') {
|
||||
$eligible = (clone $query)->where('status', 'pending')->get()
|
||||
->filter(fn (Requisition $requisition) => $requisition->canDecide($request->user()))->modelKeys();
|
||||
$query->whereIn('id', $eligible);
|
||||
} elseif (($filters['view'] ?? 'all') === 'decided') {
|
||||
$query->whereHas('steps', fn ($steps) => $steps->where('approver_id', $request->user()->id)->whereIn('decision', ['approved', 'rejected']));
|
||||
}
|
||||
if (! empty($filters['search'])) {
|
||||
$query->where('number', 'like', '%'.$filters['search'].'%');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user