update
This commit is contained in:
parent
cda7ccb78c
commit
f8728818f8
5 changed files with 103 additions and 0 deletions
|
@ -3,8 +3,10 @@
|
||||||
namespace App\Http\Controllers\Api;
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Api\Request\CustomerCreateRequest;
|
||||||
use App\Http\Controllers\ApiController;
|
use App\Http\Controllers\ApiController;
|
||||||
use App\Models\Customer;
|
use App\Models\Customer;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class CustomersController extends ApiController
|
class CustomersController extends ApiController
|
||||||
{
|
{
|
||||||
|
@ -32,4 +34,41 @@ class CustomersController extends ApiController
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/api/customers",
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="Successful operation",
|
||||||
|
* ),
|
||||||
|
* @OA\PathItem (
|
||||||
|
* ),
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* required=true,
|
||||||
|
* @OA\JsonContent(
|
||||||
|
* required={"name","email","phone"},
|
||||||
|
* @OA\Property(property="name", type="string", example="John Doe", description="Name of the customer"),
|
||||||
|
* @OA\Property(property="email", type="string", example="jhon@gmail.com", description="Email of the customer"),
|
||||||
|
* @OA\Property(property="phone", type="string", example="1234567890", description="Phone of the customer")
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
public function store(CustomerCreateRequest $request)
|
||||||
|
{
|
||||||
|
$customer = new Customer();
|
||||||
|
$customer->name = $request->name;
|
||||||
|
$customer->email = $request->email;
|
||||||
|
$customer->phone = $request->phone;
|
||||||
|
$customer->save();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'status' => 'ok',
|
||||||
|
'message' => 'Customer created',
|
||||||
|
'data' => [
|
||||||
|
'customer' => $customer,
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
19
web/app/Http/Controllers/Api/Request/ApiRequest.php
Normal file
19
web/app/Http/Controllers/Api/Request/ApiRequest.php
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api\Request;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Validation\Validator;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
|
||||||
|
class ApiRequest extends FormRequest
|
||||||
|
{
|
||||||
|
public function failedValidation(Validator $validator)
|
||||||
|
{
|
||||||
|
throw new HttpResponseException(response()->json([
|
||||||
|
'error' => true,
|
||||||
|
'message' => $validator->errors()->first(),
|
||||||
|
'data' => $validator->errors(),
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api\Request;
|
||||||
|
|
||||||
|
class AuthorizedApiRequest extends ApiRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
$user = auth()->user();
|
||||||
|
|
||||||
|
if ($user) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Http\Controllers\Api\Request;
|
||||||
|
|
||||||
|
class CustomerCreateRequest extends AuthorizedApiRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => 'required',
|
||||||
|
'email' => 'required|email|unique:customers,email',
|
||||||
|
'phone' => 'required',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,10 @@ use Illuminate\Support\Facades\Route;
|
||||||
Route::get('health', [\App\Http\Controllers\Api\HealthController::class, 'index']);
|
Route::get('health', [\App\Http\Controllers\Api\HealthController::class, 'index']);
|
||||||
|
|
||||||
Route::get('customers', [\App\Http\Controllers\Api\CustomersController::class, 'index']);
|
Route::get('customers', [\App\Http\Controllers\Api\CustomersController::class, 'index']);
|
||||||
|
Route::post('customers', [\App\Http\Controllers\Api\CustomersController::class, 'store']);
|
||||||
|
Route::get('customers/{id}', [\App\Http\Controllers\Api\CustomersController::class, 'show']);
|
||||||
|
Route::put('customers/{id}', [\App\Http\Controllers\Api\CustomersController::class, 'update']);
|
||||||
|
Route::delete('customers/{id}', [\App\Http\Controllers\Api\CustomersController::class, 'destroy']);
|
||||||
|
|
||||||
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
||||||
return $request->user();
|
return $request->user();
|
||||||
|
|
Loading…
Reference in a new issue