Commit 17870f75 authored by Viral Solani's avatar Viral Solani

Refactor User API

parent f277a631
......@@ -2,11 +2,13 @@
namespace App\Http\Controllers\Api\V1;
use App\Http\Resources\UserResource;
use Validator;
use Illuminate\Http\Request;
use App\Models\Access\User\User;
use App\Http\Resources\UserResource;
use App\Events\Backend\Access\User\UserCreated;
use App\Events\Backend\Access\User\UserUpdated;
use App\Repositories\Backend\Access\User\UserRepository;
use Illuminate\Http\Request;
use Validator;
class UsersController extends APIController
{
......@@ -25,7 +27,9 @@ class UsersController extends APIController
/**
* Return the users.
*
* @return \Illuminate\Http\Response
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
......@@ -41,89 +45,120 @@ class UsersController extends APIController
*
* @param User $user
*
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\JsonResponse
*/
public function show(User $user)
{
$data = new UserResource($user);
$history['history'] = history()->renderEntity('User', $user->id);
$maindata = $data->toArray($user);
$maindata = array_merge($maindata, $history);
return $maindata;
return new UserResource($user);
}
/**
* Return the specified resource.
* Create User
*
* @param Request
* @param Request $request
*
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\JsonResponse
*/
public function deactivatedUserList(Request $request)
public function store(Request $request)
{
$limit = $request->get('paginate') ? $request->get('paginate') : 25;
$validation = $this->validateUser($request);
return UserResource::collection(
$this->repository->getForDataTable(0, false)->paginate($limit)
);
if ($validation->fails()) {
return $this->throwValidation($validation->messages()->first());
}
/**
* Return the specified resource.
*
* @param User $user
*
* @return \Illuminate\Http\Response
*/
public function deleteUserList(Request $request)
{
$limit = $request->get('paginate') ? $request->get('paginate') : 25;
$this->repository->create($request);
return UserResource::collection(
$this->repository->getForDataTable(0, true)->paginate($limit)
);
event(new UserCreated($user));
return new UserResource(User::orderBy('created_at', 'desc')->first());
}
/**
* Update the specified resource in storage.
* Update User
*
* @param Request $request
* @param User $user
*
* @return \Illuminate\Http\JsonResponse
*/
public function update(Request $request, User $user)
{
$validation = $this->validatingRequest($request, 'edit', $user->id);
$validation = $this->validateUser($request, 'edit', $user->id);
if ($validation->fails()) {
return $this->throwValidation($validation->messages()->first());
}
$this->repository->update($user, $request);
$updatedUser = $this->repository->update($user, $request);
$user = User::findOrfail($user->id);
event(new UserUpdated($user));
return new UserResource($user);
return new UserResource($updatedUser);
}
/**
* Store the specified resource in storage.
* Delete User
*
* @param User $user
* @param Request $request
*
* @return mixed
*/
public function store(Request $request)
public function destroy(User $user, Request $request)
{
$this->repository->delete($user);
return $this->respond([
'message' => trans('alerts.backend.users.deleted'),
]);
}
/**
* Return the deactivate users
*
* @param Request
*
* @return \Illuminate\Http\JsonResponse
*/
public function deactivatedUserList(Request $request)
{
$validation = $this->validatingRequest($request);
$limit = $request->get('paginate') ? $request->get('paginate') : 25;
if ($validation->fails()) {
return $this->throwValidation($validation->messages()->first());
return UserResource::collection(
$this->repository->getForDataTable(0, false)->paginate($limit)
);
}
$this->repository->create($request);
return new UserResource(User::orderBy('created_at', 'desc')->first());
/**
* Return the deleted users.
*
* @param User $user
*
* @return \Illuminate\Http\JsonResponse
*/
public function deleteUserList(Request $request)
{
$limit = $request->get('paginate') ? $request->get('paginate') : 25;
return UserResource::collection(
$this->repository->getForDataTable(0, true)->paginate($limit)
);
}
/**
* Validation function to validate user input.
* validateUser User
*
* @param $request
* @param $action
* @param $id
*
* @return \Illuminate\Http\JsonResponse
*/
public function validatingRequest(Request $request, $string = '', $id = 0)
public function validateUser(Request $request, $action = '', $id = 0)
{
$password = ($string == 'edit') ? '' : 'required|min:6|confirmed';
$password = ($action == 'edit') ? '' : 'required|min:6|confirmed';
$validation = Validator::make($request->all(), [
'first_name' => 'required|max:255',
'last_name' => 'required|max:255',
......@@ -135,19 +170,4 @@ class UsersController extends APIController
return $validation;
}
/**
* Api to delete the resource.
*
* @param Role $role
* @param DeleteRoleRequest $request
*
* @return mixed
*/
public function destroy(User $user, Request $request)
{
$this->repository->delete($user);
return ['message' => 'success'];
}
}
......@@ -144,7 +144,7 @@ class UserRepository extends BaseRepository
if ($user->update($data)) {
$user->status = isset($data['status']) ? 1 : 0;
$user->confirmed = isset($data['confirmed']) ? 1 : 0;
$user->save();
$updatedUser = tap($user)->save();
$this->checkUserRolesCount($roles);
$this->flushRoles($roles, $user);
......@@ -152,7 +152,7 @@ class UserRepository extends BaseRepository
$this->flushPermissions($permissions, $user);
event(new UserUpdated($user));
return true;
return $updatedUser;
}
throw new GeneralException(trans('exceptions.backend.access.users.update_error'));
......
......@@ -2091,16 +2091,16 @@
},
{
"name": "nesbot/carbon",
"version": "1.24.1",
"version": "1.24.2",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "ef12cbd8ba5ce624f0a6a95e0850c4cc13e71e41"
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ef12cbd8ba5ce624f0a6a95e0850c4cc13e71e41",
"reference": "ef12cbd8ba5ce624f0a6a95e0850c4cc13e71e41",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bba6c6e410c6b4317e37a9474aeaa753808c3875",
"reference": "bba6c6e410c6b4317e37a9474aeaa753808c3875",
"shasum": ""
},
"require": {
......@@ -2140,7 +2140,7 @@
"datetime",
"time"
],
"time": "2018-03-09T15:49:34+00:00"
"time": "2018-03-10T10:10:14+00:00"
},
{
"name": "nikic/php-parser",
......
......@@ -28,12 +28,13 @@ Route::group(['namespace' => 'Api\V1', 'prefix' => 'v1', 'as' => 'v1.'], functio
// Route::post('password/reset', 'ResetPasswordController@reset')->name('password.reset');
});
Route::resource('users', 'UsersController' , ['except' => ['edit', 'udpate']]);
// Users
Route::group(['prefix' => 'users'], function () {
Route::get('deactiveUsers', 'UsersController@deactivatedUserList');
Route::get('deleteUsers', 'UsersController@deleteUserList');
});
Route::resource('users', 'UsersController');
// Roles
Route::resource('roles', 'RolesController');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment