ldc-com-app-bo/app/Http/Controllers/Bo/ContactController.php
2025-05-21 16:29:18 +02:00

74 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\FilterCustomerRequest;
use App\Models\AppUser;
use App\Models\Contact;
use App\Models\Formulary;
use Illuminate\Database\Eloquent\Builder;
class ContactController extends Controller
{
/**
* Display a listing of the resource.
*
* @param \App\Http\Requests\Bo\FilterCustomerRequest $request
* @return \Illuminate\View\View
*/
public function index(FilterCustomerRequest $request): \Illuminate\View\View
{
/** @var \Illuminate\Database\Eloquent\Builder $query */
$query = Contact::query()->with('appUser')->whereHas('appUser', function ($query) {
$query->where('tenant_id', tenant('id'));
});
if ($request->search) {
$this->searchQuery(
$query,
$request->search,
null,
'firstname',
'lastname',
'email',
);
}
$searchFields = \implode(', ', [
trans('validation.attributes.last_name'),
trans('validation.attributes.email'),
trans('validation.attributes.phone'),
]);
/** Sort columns with a query */
$this->sortQuery($query);
if ($request->user) {
$query->whereHas('appUser', function (Builder $q) use ($request) {
$q->where('id', $request->user);
});
}
$contactModelList = $this->paginate($query);
$appUsers = AppUser::query()->select(['id', 'lastname', 'firstname'])->orderBy('lastname')->get();
return view('bo.pages.contacts.index', compact('contactModelList', 'searchFields', 'appUsers'));
}
/**
* Display the specified resource.
*
* @param \App\Models\Contact $contact
* @return \Illuminate\View\View
*/
public function show(Contact $contact): \Illuminate\View\View
{
$contact->load('appUser.directories');
$fomularies = Formulary::all()->keyBy('name');
return view('bo.pages.contacts.show', [
'contactModel' => $contact,
'fomularies' => $fomularies
]);
}
}