NETBien.backend/app/Http/Controllers/Netbien/ClientController.php
Juan Felipe Zapata Moreno 4d6059a1e9 Corte de caja actualizado
2025-11-07 17:33:39 -06:00

92 lines
2.4 KiB
PHP

<?php namespace App\Http\Controllers\Netbien;
use Notsoweb\ApiResponse\Enums\ApiResponse;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Client;
use App\Http\Requests\Netbien\ClientStoreRequest;
use App\Http\Requests\Netbien\ClientUpdateRequest;
/**
*
*/
class ClientController extends Controller
{
public function index()
{
$clients = Client::with('simCards:id,msisdn')->orderBy('id', 'asc')->paginate(config('app.pagination'));
return ApiResponse::OK->response([
'data' => $clients,
]);
}
public function search(Request $request)
{
$request->validate([
'filter' => 'required|string|min:2',
]);
$search = $request->input('filter');
$clients = Client::with('simCards:id,msisdn')
->where(function($q) use ($search) {
$q->whereRaw("CONCAT(name, ' ', paternal, ' ', maternal) LIKE ?", ["%{$search}%"])
->orWhere('rfc', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%")
->orWhere('phone', 'like', "%{$search}%");
})
->orderBy('id', 'asc')
->paginate(config('app.pagination'));
return ApiResponse::OK->response([
'data' => $clients,
]);
}
public function show(Client $client)
{
$client->load('simCards:id,msisdn');
return ApiResponse::OK->response([
'data' => $client,
]);
}
public function store(ClientStoreRequest $request)
{
$client = Client::create($request->validated());
return ApiResponse::CREATED->response([
'data' => $client,
]);
}
public function update(ClientUpdateRequest $request, Client $client)
{
$client->update($request->validated());
return ApiResponse::OK->response([
'data' => $client,
]);
}
public function destroy(Client $client)
{
$hasActiveSims = $client->simCards()
->wherePivot('is_active', true)
->exists();
if ($hasActiveSims) {
return ApiResponse::BAD_REQUEST->response([
'message' => 'No se puede eliminar el cliente porque tiene SIMs activas',
]);
}
$client->delete();
return ApiResponse::NO_CONTENT->response();
}
}