115 lines
3.3 KiB
PHP
115 lines
3.3 KiB
PHP
<?php namespace App\Http\Controllers\App;
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Client;
|
|
use Notsoweb\ApiResponse\Enums\ApiResponse;
|
|
|
|
class ClientController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$clients = Client::where('name', 'LIKE', "%{$request->q}%")
|
|
->orderBy('name')
|
|
->paginate(config('app.pagination'));
|
|
|
|
return ApiResponse::OK->response(['clients' => $clients]);
|
|
}
|
|
|
|
public function show(Client $client)
|
|
{
|
|
return ApiResponse::OK->response([
|
|
'client' => $client
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'name' => 'nullable|string|max:255',
|
|
'email' => 'nullable|email|max:255',
|
|
'phone' => 'nullable|string|max:20',
|
|
'address' => 'nullable|string|max:500',
|
|
'rfc' => 'nullable|string|max:13',
|
|
],[
|
|
'email.unique' => 'El correo electrónico ya está en uso por otro cliente.',
|
|
'phone.unique' => 'El teléfono ya está en uso por otro cliente.',
|
|
'rfc.unique' => 'El RFC ya está en uso por otro cliente.',
|
|
]);
|
|
|
|
try{
|
|
|
|
$client = Client::create($request->only([
|
|
'name',
|
|
'email',
|
|
'phone',
|
|
'address',
|
|
'rfc',
|
|
]));
|
|
|
|
return ApiResponse::OK->response([
|
|
'client' => $client,
|
|
'message' => 'Cliente creado correctamente.'
|
|
]);
|
|
|
|
}catch(\Exception $e){
|
|
return ApiResponse::BAD_REQUEST->response([
|
|
'message' => 'Error al crear el cliente.'
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function update(Request $request, Client $client)
|
|
{
|
|
$request->validate([
|
|
'name' => 'nullable|string|max:255',
|
|
'email' => 'nullable|email|max:255',
|
|
'phone' => 'nullable|string|max:20',
|
|
'address' => 'nullable|string|max:500',
|
|
'rfc' => 'nullable|string|max:13',
|
|
],[
|
|
'email.unique' => 'El correo electrónico ya está en uso por otro cliente.',
|
|
'phone.unique' => 'El teléfono ya está en uso por otro cliente.',
|
|
'rfc.unique' => 'El RFC ya está en uso por otro cliente.',
|
|
]);
|
|
|
|
try{
|
|
|
|
$client->update($request->only([
|
|
'name',
|
|
'email',
|
|
'phone',
|
|
'address',
|
|
'rfc',
|
|
]));
|
|
|
|
return ApiResponse::OK->response([
|
|
'client' => $client,
|
|
'message' => 'Cliente actualizado correctamente.'
|
|
]);
|
|
|
|
}catch(\Exception $e){
|
|
return ApiResponse::BAD_REQUEST->response([
|
|
'message' => 'Error al actualizar el cliente.'
|
|
]);
|
|
}
|
|
}
|
|
|
|
public function destroy(Client $client)
|
|
{
|
|
try{
|
|
$client->delete();
|
|
|
|
return ApiResponse::OK->response([
|
|
'message' => 'Cliente eliminado correctamente.'
|
|
]);
|
|
|
|
}catch(\Exception $e){
|
|
return ApiResponse::BAD_REQUEST->response([
|
|
'message' => 'Error al eliminar el cliente.'
|
|
]);
|
|
}
|
|
}
|
|
}
|