Skip to content

Commit 3277268

Browse files
committed
resource
1 parent 28f1932 commit 3277268

File tree

4 files changed

+173
-20
lines changed

4 files changed

+173
-20
lines changed

app/Http/Controllers/Auth/UserController.php

Lines changed: 122 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,126 @@
55
use App\Http\Controllers\Controller;
66
use Illuminate\Http\Request;
77
use App\Models\User;
8+
use Illuminate\Support\Facades\Validator;
9+
use App\Http\Resources\User as UserResource;
810

911
class UserController extends Controller
1012
{
1113
/**
12-
* Get authenticated user.
14+
* Authenticated user.
1315
*
1416
* @param \Illuminate\Http\Request $request
1517
* @return \Illuminate\Http\JsonResponse
1618
*/
1719
public function current(Request $request)
1820
{
19-
return response()->json($request->user());
21+
return new UserResource($request->user());
2022
}
2123

2224
/**
23-
* Get countries.
25+
* List of users.
26+
*
27+
* @return \Illuminate\Http\JsonResponse
28+
*/
29+
public function index()
30+
{
31+
return UserResource::collection(User::all());
32+
}
33+
34+
/**
35+
* Store a newly created user in storage.
36+
*
37+
* @param \Illuminate\Http\Request $request
38+
* @return \Illuminate\Http\JsonResponse
39+
*/
40+
public function store(Request $request)
41+
{
42+
$rules = [
43+
'name' => 'required|max:255',
44+
'email' => 'required|email:filter|max:255|unique:users',
45+
'hobbies' => 'required',
46+
'phone' => 'required|digits:10',
47+
'password' => 'required|min:6',
48+
'country_id' => 'required'
49+
];
50+
$validator = Validator::make($request->all(), $rules);
51+
if ($validator->fails()) {
52+
return response()->json([
53+
"message"=> "The given data was invalid.",
54+
"errors" => $validator->getMessageBag()->getMessages()
55+
], 422);
56+
}
57+
$splitName = explode(' ', $request->name, 2);
58+
$user = User::create([
59+
'name' => $request->name,
60+
'email' => $request->email,
61+
'firstname' => $splitName[0],
62+
'lastname' => $splitName[1] ?? '',
63+
'hobbies' => $request->hobbies,
64+
'phone' => $request->phone,
65+
'country_id' => $request->country_id,
66+
'password' => bcrypt($request->password),
67+
]);
68+
69+
return new UserResource($user);
70+
}
71+
72+
/**
73+
* Update the specified user in storage
74+
*
75+
* @param \Illuminate\Http\Request $request
76+
* @param \App\Models\User $user
77+
* @return \Illuminate\Http\JsonResponse
78+
*/
79+
public function update(Request $request, User $user)
80+
{
81+
$rules = [
82+
'name' => 'required|max:255',
83+
'email' => 'required|email:filter|max:255|unique:users',
84+
'hobbies' => 'required',
85+
'phone' => 'required|digits:10',
86+
'password' => 'required|min:6',
87+
'country_id' => 'required'
88+
];
89+
$validator = Validator::make($request->all(), $rules);
90+
if ($validator->fails()) {
91+
return response()->json([
92+
"message"=> "The given data was invalid.",
93+
"errors" => $validator->getMessageBag()->getMessages()
94+
], 422);
95+
}
96+
$splitName = explode(' ', $request->name, 2);
97+
$user->update([
98+
'name' => $request->name,
99+
'email' => $request->email,
100+
'firstname' => $splitName[0],
101+
'lastname' => $splitName[1] ?? '',
102+
'hobbies' => $request->hobbies,
103+
'phone' => $request->phone,
104+
'country_id' => $request->country_id,
105+
'password' => bcrypt($request->password),
106+
]);
107+
108+
return new UserResource($user);
109+
}
110+
111+
/**
112+
* Remove the specified user from storage.
113+
*
114+
* @param \App\Models\User $user
115+
* @return \Illuminate\Http\JsonResponse
116+
*/
117+
public function destory(User $user)
118+
{
119+
$user->delete();
120+
121+
return response()->json([
122+
'status' => 'success'
123+
]);
124+
}
125+
126+
/**
127+
* List of countries
24128
*
25129
* @return \Illuminate\Http\JsonResponse
26130
*/
@@ -44,18 +148,21 @@ public function getCountries()
44148
return response()->json($countryArray);
45149
}
46150

47-
public function getUsers()
48-
{
49-
$users = User::all();
50-
$result = [];
51-
foreach ($users as $user) {
52-
array_push($result, [
53-
'id' => $user->id,
54-
'name' => $user->name
55-
]);
56-
}
151+
/**
152+
*
153+
*/
154+
// public function getUsers()
155+
// {
156+
// $users = User::all();
157+
// $result = [];
158+
// foreach ($users as $user) {
159+
// array_push($result, [
160+
// 'id' => $user->id,
161+
// 'name' => $user->name
162+
// ]);
163+
// }
57164

58-
return response()->json($result);
165+
// return response()->json($result);
59166

60-
}
167+
// }
61168
}

app/Http/Resources/Post.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use Illuminate\Http\Resources\Json\JsonResource;
6+
7+
class Post extends JsonResource
8+
{
9+
/**
10+
* Transform the resource into an array.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return array
14+
*/
15+
public function toArray($request)
16+
{
17+
return parent::toArray($request);
18+
}
19+
}

app/Http/Resources/User.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use Illuminate\Http\Resources\Json\JsonResource;
6+
7+
class User extends JsonResource
8+
{
9+
/**
10+
* Transform the resource into an array.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return array
14+
*/
15+
public function toArray($request)
16+
{
17+
return parent::toArray($request);
18+
}
19+
}

routes/api.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use App\Http\Controllers\Auth\UserController;
88
use App\Http\Controllers\PostController;
99

10+
use App\Http\Resources\User as UserResource;
11+
use App\Models\User;
1012
/*
1113
|--------------------------------------------------------------------------
1214
| API Routes
@@ -21,21 +23,27 @@
2123
// Route::middleware('auth:api')->get('/user', function (Request $request) {
2224
// return $request->user();
2325
// });
26+
Route::get('/tests', function () {
27+
return new UserResource(User::find(1));
28+
});
2429

2530
Route::group(['middleware' => 'auth:api'], function () {
2631
Route::post('logout', [LoginController::class, 'logout']);
2732

28-
Route::get('user', [UserController::class, 'current']);
29-
Route::get('users', [UserController::class, 'getUsers']);
30-
3133
Route::get('posts', [PostController::class, 'index']);
3234
Route::post('posts', [PostController::class, 'store']);
3335
Route::post('posts/{post}', [PostController::class, 'update']);
3436
Route::delete('posts/{post}', [PostController::class, 'destroy']);
37+
38+
// User module
39+
Route::get('user', 'Auth\UserController@current');
40+
Route::get('users', 'Auth\UserController@index');
41+
Route::post('users', 'Auth\UserController@store');
42+
Route::post('users/{user}', 'Auth\UserController@update');
43+
Route::delete('users/{user}', 'Auth\UserController@destory');
44+
Route::get('users/countries', 'Auth\UserController@getCountries');
3545
});
3646

3747
Route::group(['middleware' => 'guest:api'], function () {
3848
Route::post('login', [LoginController::class, 'login']);
39-
Route::post('register', [RegisterController::class, 'register']);
40-
Route::get('countries', [UserController::class, 'getCountries']);
4149
});

0 commit comments

Comments
 (0)