Teren-app/app/Http/Controllers/ClientController.php
Simon Pocrnjič 74d40a4087 Ilike
2024-11-22 09:42:40 +01:00

95 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Client;
use DB;
use Illuminate\Http\Request;
use Inertia\Inertia;
class ClientController extends Controller
{
public function index(Client $client, Request $request){
return Inertia::render('Client/Index',[
'clients' => $client::query()
->with('person')
->when($request->input('search'), fn($que, $search) =>
$que->whereHas(
'person',
fn($q) => $q->where('full_name', 'ilike', '%' . $search . '%')
)
)
->where('active', 1)
->orderByDesc('created_at')
->paginate(15)
->withQueryString(),
'filters' => $request->only(['search'])
]);
}
public function show(Client $client, Request $request) {
$data = $client::query()
->with(['person' => fn($que) => $que->with(['addresses','phones'])])
->findOrFail($client->id);
return Inertia::render('Client/Show', [
'client' => $data,
'client_cases' => $data->clientCases()
->with('person')
->when($request->input('search'), fn($que, $search) =>
$que->whereHas(
'person',
fn($q) => $q->where('full_name', 'ilike', '%' . $search . '%')
)
)
->where('active', 1)
->orderByDesc('created_at')
->paginate(15)
->withQueryString(),
'filters' => $request->only(['search'])
]);
}
public function store(Request $request)
{
DB::transaction(function() use ($request){
$address = $request->input('address');
$phone = $request->input('phone');
$person = \App\Models\Person\Person::create([
'nu' => rand(100000,200000),
'first_name' => $request->input('first_name'),
'last_name' => $request->input('last_name'),
'full_name' => $request->input('full_name'),
'gender' => null,
'birthday' => null,
'tax_number' => $request->input('tax_number'),
'social_security_number' => $request->input('social_security_number'),
'description' => $request->input('description'),
'group_id' => 1,
'type_id' => 2
]);
$person->addresses()->create([
'address' => $address['address'],
'country' => $address['country'],
'type_id' => $address['type_id']
]);
$person->phones()->create([
'nu' => $phone['nu'],
'country_code' => $phone['country_code'],
'type_id' => $phone['type_id']
]);
$person->client()->create();
});
//\App\Models\Person\PersonAddress::create($address);
return to_route('client');
}
}