Skip to content

Commit 48188d1

Browse files
author
Jovert Lota Palonpon
committed
[Users] Created edit page, close #29
1 parent d070b82 commit 48188d1

File tree

7 files changed

+476
-171
lines changed

7 files changed

+476
-171
lines changed

app/Http/Controllers/Api/V1/UsersController.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function store(Request $request) : JsonResponse
4343

4444
'type' => 'required_if:step,1|in:superuser,user',
4545
'email' => 'required_if:step,1|email|unique:users,email,NULL,id,deleted_at,NULL',
46-
'username' => 'nullable|unique:users'
46+
'username' => 'nullable|unique:users,username,NULL,id,deleted_at,NULL'
4747
]);
4848

4949
// Return here if the user is just in the first step.
@@ -93,6 +93,28 @@ public function show(Request $request, User $user) : JsonResponse
9393
*/
9494
public function update(Request $request, User $user) : JsonResponse
9595
{
96+
$request->validate([
97+
'firstname' => 'required_if:step,0|string|max:255',
98+
'lastname' => 'required_if:step,0|string|max:255',
99+
100+
'gender' => 'nullable|in:female,male',
101+
'birthdate' =>
102+
'nullable|date:Y-m-d|before:'.now()->subYear(10)->format('Y-m-d'),
103+
'address' => 'nullable|string|max:510',
104+
105+
'type' => 'required_if:step,1|in:superuser,user',
106+
'email' =>
107+
"required_if:step,1|email|unique:users,email,{$user->id},id,deleted_at,NULL",
108+
'username' =>
109+
"nullable|unique:users,username,{$user->id},id,deleted_at,NULL"
110+
]);
111+
112+
$attributes = $request->all();
113+
unset($attributes['step']);
114+
115+
$user->fill($attributes);
116+
$user->update();
117+
96118
return response()->json($user);
97119
}
98120

resources/js/models/User.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,41 @@ export default class User {
3737
return response.data;
3838
}
3939

40+
/**
41+
* Show a user.
42+
*
43+
* @param {number} id
44+
*
45+
* @return {object}
46+
*/
47+
static async show(id) {
48+
const response = await axios.get(`/api/v1/users/${id}`);
49+
50+
if (response.status !== 200) {
51+
return {};
52+
}
53+
54+
return response.data;
55+
}
56+
57+
/**
58+
* Update a user.
59+
*
60+
* @param {number} id
61+
* @param {object} attributes
62+
*
63+
* @return {object}
64+
*/
65+
static async update(id, attributes) {
66+
const response = await axios.patch(`/api/v1/users/${id}`, attributes);
67+
68+
if (response.status !== 200) {
69+
return {};
70+
}
71+
72+
return response.data;
73+
}
74+
4075
/**
4176
* Delete a user.
4277
*

resources/js/views/__backoffice/users/Create.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class Create extends Component {
2222
activeStep: 0,
2323
formValues: [],
2424
user: {},
25-
errors: {},
2625
message: {},
2726
};
2827

@@ -115,14 +114,7 @@ class Create extends Component {
115114

116115
render() {
117116
const { classes, ...other } = this.props;
118-
const {
119-
loading,
120-
activeStep,
121-
formValues,
122-
user,
123-
errors,
124-
message,
125-
} = this.state;
117+
const { loading, activeStep, formValues, user, message } = this.state;
126118

127119
const steps = ['Profile', 'Account', 'Avatar'];
128120

@@ -144,7 +136,6 @@ class Create extends Component {
144136
values={
145137
formValues[0] ? formValues[0] : defaultValues
146138
}
147-
errors={errors}
148139
handleSubmit={this.handleSubmit}
149140
/>
150141
);
@@ -159,7 +150,6 @@ class Create extends Component {
159150
email: '',
160151
username: '',
161152
}}
162-
errors={errors}
163153
handleSubmit={this.handleSubmit}
164154
handleBack={this.handleBack}
165155
/>

0 commit comments

Comments
 (0)