Changes to field job view and controller

This commit is contained in:
Simon Pocrnjič
2025-12-28 12:15:37 +01:00
parent dea7432deb
commit 84b75143df
3 changed files with 411 additions and 173 deletions
+54 -18
View File
@@ -26,10 +26,13 @@ public function index(Request $request)
])->filter()->unique()->values();
$search = $request->input('search');
$searchAssigned = $request->input('search_assigned');
$assignedUserId = $request->input('assigned_user_id');
$unassignedClientUuids = $request->input('unassigned_client_uuids');
$assignedClientUuids = $request->input('assigned_client_uuids');
$unassignedContracts = Contract::query()
->with(['clientCase.person.addresses', 'clientCase.client.person', 'type', 'account'])
->with(['clientCase.person.addresses', 'clientCase.client.person:id,uuid,full_name', 'type', 'account'])
->when($segmentIds->isNotEmpty(), fn($q) =>
$q->whereHas('segments', fn($rq) => $rq->whereIn('segments.id', $segmentIds)),
fn($q) => $q->whereRaw('1 = 0')
@@ -45,50 +48,83 @@ public function index(Request $request)
)
)
)
->when(!empty($unassignedClientUuids) && is_array($unassignedClientUuids), fn ($q) =>
$q->whereHas('clientCase.client', fn($cq) =>
$cq->whereIn('uuid', $unassignedClientUuids)
)
)
->whereDoesntHave('fieldJobs', fn ($q) =>
$q->whereNull('completed_at')
->whereNull('cancelled_at')
)
->latest('id')
->paginate(
$request->input('per_page_contracts', 10),
['*'],
'page_contracts',
$request->input('page_contracts', 1)
);
->latest('id');
$unassignedClients = $unassignedContracts->get()
->pluck('clientCase.client')
->filter()
->unique('id');
$assignedContracts = Contract::query()
->with(['clientCase.person.addresses', 'clientCase.client.person', 'type', 'account', 'lastFieldJobs', 'lastFieldJobs.assignedUser', 'lastFieldJobs.user'])
->with(['clientCase.person.addresses', 'clientCase.client.person:id,uuid,full_name', 'type', 'account', 'lastFieldJobs', 'lastFieldJobs.assignedUser', 'lastFieldJobs.user'])
->when($segmentIds->isNotEmpty(), fn($q) =>
$q->whereHas('segments', fn($rq) => $rq->whereIn('segments.id', $segmentIds)),
fn($q) => $q->whereRaw('1 = 0')
)
->when( !empty($searchAssigned), fn ($q) =>
$q->where(fn($sq) =>
$sq->where('reference', 'like', "%{$searchAssigned}%")
->orWhereHas('clientCase.person', fn($psq) =>
$psq->where('full_name', 'ilike', "%{$searchAssigned}%")
)
->orWhereHas('clientCase.person.addresses', fn ($ccpaq) =>
$ccpaq->where('address', 'ilike', "%{$searchAssigned}")
)
)
)
->when(!empty($assignedClientUuids) && is_array($assignedClientUuids), fn ($q) =>
$q->whereHas('clientCase.client', fn($cq) =>
$cq->whereIn('uuid', $assignedClientUuids)
)
)
->whereHas('lastFieldJobs', fn ($q) =>
$q->whereNull('completed_at')
->whereNull('cancelled_at')
->when($assignedUserId && $assignedUserId !== 'all', fn ($jq) =>
$jq->where('assigned_user_id', $assignedUserId))
)
->latest('id')
->paginate(
$request->input('per_page_assignments', 10),
['*'],
'page_assignments',
$request->input('page_assignments', 1)
);
->latest('id');
$assignedClients = $assignedContracts->get()
->pluck('clientCase.client')
->filter()
->unique('id');
$users = User::query()->orderBy('name')->get(['id', 'name']);
return Inertia::render('FieldJob/Index', [
'setting' => $setting,
'unassignedContracts' => $unassignedContracts,
'assignedContracts' => $assignedContracts,
'unassignedContracts' => $unassignedContracts->paginate(
$request->input('per_page_contracts', 10),
['*'],
'page_contracts',
$request->input('page_contracts', 1)
),
'assignedContracts' => $assignedContracts->paginate(
$request->input('per_page_assignments', 10),
['*'],
'page_assignments',
$request->input('page_assignments', 1)
),
'unassignedClients' => $unassignedClients,
'assignedClients' => $assignedClients,
'users' => $users,
'filters' => [
'search' => $search,
'search_assigned' => $searchAssigned,
'assigned_user_id' => $assignedUserId,
'unassigned_client_uuids' => $unassignedClientUuids,
'assigned_client_uuids' => $assignedClientUuids,
],
]);
}