Skip to content

Commit

Permalink
Add get user list endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
FaisalBudiono committed Apr 26, 2023
1 parent 334bd6b commit 97da422
Show file tree
Hide file tree
Showing 6 changed files with 632 additions and 1 deletion.
45 changes: 45 additions & 0 deletions app/Http/Controllers/User/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use App\Http\Controllers\Controller;
use App\Http\Requests\User\CreateUserRequest;
use App\Http\Requests\User\DeleteUserRequest;
use App\Http\Requests\User\GetAllUserRequest;
use App\Http\Requests\User\GetUserRequest;
use App\Http\Requests\User\UpdateUserRequest;
use App\Http\Resources\User\UserResource;
Expand Down Expand Up @@ -71,6 +72,50 @@ public function destroy(DeleteUserRequest $request)
}
}

public function index(GetAllUserRequest $request)
{
try {
Log::info(
$this->loggerFormatter->makeGeneric(
$request->getEndpointInfo(),
$request->getXRequestID(),
ProcessingStatus::BEGIN,
'Get all user endpoint',
[
'input' => $request->toArray(),
],
)->getMessage()
);

$users = $this->core->getAll($request);

Log::info(
$this->loggerFormatter->makeGeneric(
$request->getEndpointInfo(),
$request->getXRequestID(),
ProcessingStatus::SUCCESS,
'Get all user endpoint',
[],
)->getMessage()
);

return UserResource::collection($users);
} catch (Exception $e) {
Log::error(
$this->loggerFormatter->makeGeneric(
$request->getEndpointInfo(),
$request->getXRequestID(),
ProcessingStatus::ERROR,
$e->getMessage(),
[
'trace' => $e->getTrace(),
],
)->getMessage()
);
throw new InternalServerErrorException(new ExceptionMessageGeneric);
}
}

public function show(GetUserRequest $request)
{
try {
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Requests/BaseRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ abstract public function rules(): array;

public function getEndpointInfo(): string
{
return $this->method() . ' ' . $this->fullUrl();
return $this->method() . ' ' . $this->url();
}

public function getXRequestID(): string
Expand Down
60 changes: 60 additions & 0 deletions app/Http/Requests/User/GetAllUserRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

namespace App\Http\Requests\User;

use App\Core\Query\OrderDirection;
use App\Core\User\Query\UserOrderBy;
use App\Http\Requests\BaseRequest;
use App\Port\Core\User\GetAllUserPort;
use App\Rules\Enum\BackedEnumRule;
use ValueError;

class GetAllUserRequest extends BaseRequest implements GetAllUserPort
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules(): array
{
return [
'orderBy' => ['bail', 'string', new BackedEnumRule(UserOrderBy::NAME)],
'orderDir' => ['bail', 'string', new BackedEnumRule(OrderDirection::ASCENDING)],
'page' => ['bail', 'integer'],
'perPage' => ['bail', 'integer'],
];
}

public function getOrderBy(): ?UserOrderBy
{
return UserOrderBy::tryFrom($this->input('orderBy'));
}

public function getOrderDirection(): ?OrderDirection
{
return OrderDirection::tryFrom($this->input('orderDir'));
}

public function getPage(): ?int
{
return is_null($this->input('page'))
? null
: $this->input('page');
}

public function getPerPage(): ?int
{
return is_null($this->input('perPage'))
? null
: $this->input('perPage');
}
}
1 change: 1 addition & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use Illuminate\Support\Facades\Route;


Route::get('users', [UserController::class, 'index'])->name('user.index');
Route::post('users', [UserController::class, 'store'])->name('user.store');
Route::delete('users/{userID}', [UserController::class, 'destroy'])->name('user.destroy');
Route::get('users/{userID}', [UserController::class, 'show'])->name('user.show');
Expand Down
Loading

0 comments on commit 97da422

Please sign in to comment.