5
5
use App \Http \Controllers \Controller ;
6
6
use Illuminate \Http \Request ;
7
7
use App \Models \User ;
8
+ use Illuminate \Support \Facades \Validator ;
9
+ use App \Http \Resources \User as UserResource ;
8
10
9
11
class UserController extends Controller
10
12
{
11
13
/**
12
- * Get authenticated user.
14
+ * Authenticated user.
13
15
*
14
16
* @param \Illuminate\Http\Request $request
15
17
* @return \Illuminate\Http\JsonResponse
16
18
*/
17
19
public function current (Request $ request )
18
20
{
19
- return response ()-> json ($ request ->user ());
21
+ return new UserResource ($ request ->user ());
20
22
}
21
23
22
24
/**
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
24
128
*
25
129
* @return \Illuminate\Http\JsonResponse
26
130
*/
@@ -44,18 +148,21 @@ public function getCountries()
44
148
return response ()->json ($ countryArray );
45
149
}
46
150
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
+ // }
57
164
58
- return response ()->json ($ result );
165
+ // return response()->json($result);
59
166
60
- }
167
+ // }
61
168
}
0 commit comments