in app/Http/Controllers/ContactsController.php [67:147]
private function contacts(Request $request, bool $active)
{
$user = $request->user();
$sort = $request->input('sort') ?? $user->contacts_sort_order;
$showDeceased = $request->input('show_dead');
if ($user->contacts_sort_order !== $sort) {
app(UpdateViewPreference::class)->execute([
'account_id' => $user->account_id,
'user_id' => $user->id,
'preference' => $sort,
]);
}
$contacts = $user->account->contacts()->real();
if ($active) {
$archived = (clone $contacts)->notActive();
$contacts = (clone $contacts)->active();
$nbArchived = $archived->count();
} else {
$contacts = $contacts->notActive();
$nbArchived = $contacts->count();
}
$tags = null;
$url = '';
$count = 1;
if ($request->input('tag1')) {
// get contacts with selected tags
$tags = collect();
while ($request->input('tag'.$count)) {
$tag = Tag::where([
'account_id' => auth()->user()->account_id,
'name_slug' => $request->input('tag'.$count),
]);
if ($tag->count() > 0) {
$tag = $tag->get();
if (! $tags->contains($tag[0])) {
$tags = $tags->concat($tag);
}
$url .= 'tag'.$count.'='.$tag[0]->name_slug.'&';
}
$count++;
}
if ($tags->count() === 0) {
return redirect()->route('people.index');
} else {
$contacts = $contacts->tags($tags);
}
} elseif ($request->input('no_tag')) {
$contacts = $contacts->tags('NONE');
}
$contactsCount = (clone $contacts)->alive()->count();
$deceasedCount = (clone $contacts)->dead()->count();
if ($showDeceased === 'true') {
$contactsCount += $deceasedCount;
}
$accountHasLimitations = AccountHelper::hasLimitations(auth()->user()->account);
return view('people.index')
->withAccountHasLimitations($accountHasLimitations)
->with('hidingDeceased', $showDeceased != 'true')
->with('deceasedCount', $deceasedCount)
->withActive($active)
->withContactsCount($contactsCount)
->withHasArchived($nbArchived > 0)
->withArchivedContacts($nbArchived)
->withTags($tags)
->withTagsCount(Tag::contactsCount())
->withUrl($url)
->withTagCount($count)
->withTagLess($request->input('no_tag') ?? false);
}