ldc-com-app-bo/app/Http/Controllers/Bo/ContactController.php

83 lines
2.3 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
2023-08-30 11:25:04 +02:00
use App\Http\Requests\Bo\FilterCustomerRequest;
use App\Models\AppUser;
use App\Models\Contact;
use App\Models\Formulary;
2023-08-30 11:25:04 +02:00
use Illuminate\Database\Eloquent\Builder;
class ContactController extends Controller
{
/**
* Create the controller instance.
*/
public function __construct()
{
$this->authorizeResource(Contact::class);
}
/**
* Display a listing of the resource.
*
2023-08-30 11:25:04 +02:00
* @param \App\Http\Requests\Bo\FilterCustomerRequest $request
* @return \Illuminate\View\View
*/
public function index(FilterCustomerRequest $request): \Illuminate\View\View
{
2023-08-29 09:39:34 +02:00
/** @var \Illuminate\Database\Eloquent\Builder $query */
2025-05-20 16:20:23 +02:00
$query = Contact::query()->with('appUser')->whereHas('appUser', function ($query) {
$query->where('tenant_id', tenant('id'));
});
2023-08-30 11:25:04 +02:00
if ($request->search) {
$this->searchQuery(
2023-08-29 09:39:34 +02:00
$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 */
2023-08-29 09:39:34 +02:00
$this->sortQuery($query);
2023-08-30 11:25:04 +02:00
if ($request->user) {
$query->whereHas('appUser', function (Builder $q) use ($request) {
$q->where('id', $request->user);
});
}
$contactModels = $this->paginate($query);
$appUsers = AppUser::query()->select(['id', 'lastname', 'firstname'])->orderBy('lastname')->get();
2023-08-30 11:25:04 +02:00
return view('bo.pages.contacts.index', compact('contactModels', 'searchFields', 'appUsers'));
}
/**
* Display the specified resource.
*
* @param \App\Models\Contact $contact
* @return \Illuminate\View\View
*/
public function show(Contact $contact): \Illuminate\View\View
{
2023-08-30 11:25:04 +02:00
$contact->load('appUser.directories');
$fomularies = Formulary::all()->keyBy('name');
return view('bo.pages.contacts.show', [
'contactModel' => $contact,
'fomularies' => $fomularies
]);
}
}