diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php new file mode 100644 index 0000000..722a078 --- /dev/null +++ b/app/Http/Controllers/Api/UserController.php @@ -0,0 +1,152 @@ +user_id); + + if($data){ + http_response_code(200); + return response([ + 'message' => 'Successfull', + 'data' => $data + ]); + } + else{ + http_response_code(200); + return response([ + 'message' => 'No Record Found', + ]); + } + } catch (RequestException $r) { + + http_response_code(400); + return response([ + 'message' => 'Failed', + 'errorCode' => 4103 + ],400); + } + } + public function getAll(Request $request) + { + try { + $data = User::orderby('id', 'desc')->get(); + http_response_code(200); + return response([ + 'message' => 'Successfull', + 'data' => $data + ]); + } catch (RequestException $r) { + + http_response_code(400); + return response([ + 'message' => 'Failed', + 'errorCode' => 4103 + ],400); + } + } + public function update(Request $request, $id) + { + // Log::info("update=". $request->name); + $validateUser = Validator::make($request->all(), + [ + 'username' => 'required', + 'role_id' => 'required' + ]); + + if($validateUser->fails()){ + return response()->json([ + 'status' => false, + 'message' => 'validation error', + 'errors' => $validateUser->errors() + ], 401); + } + try { + $data = User::findOrFail($id); + $data->username = $request->username; + $data->role_id = $request->role_id; + $data->save(); + + http_response_code(200); + return response([ + 'message' => 'Update Successful', + ]); + + } catch (RequestException $r) { + + http_response_code(400); + return response([ + 'message' => 'Data failed to be updated.', + 'errorCode' => 4101, + ], 400); + } + } + public function patchupdate(Request $request, $id) + { + // Log::info("update=". $request->name); + $validateUser = Validator::make($request->all(), + [ + 'username' => 'required', + 'role_id' => 'required' + ]); + + if($validateUser->fails()){ + return response()->json([ + 'status' => false, + 'message' => 'validation error', + 'errors' => $validateUser->errors() + ], 401); + } + try { + $data = User::findOrFail($id); + $data->name = $request->name; + $data->email = $request->email; + $data->role_id = $request->role_id; + $data->save(); + + http_response_code(200); + return response([ + 'message' => 'Update Successful', + ]); + + } catch (RequestException $r) { + + http_response_code(400); + return response([ + 'message' => 'Data failed to be updated', + 'errorCode' => 4101, + ], 400); + } + } + public function delete($id) + { + try { + $data = User::find($id); + $data->delete(); + + http_response_code(200); + return response([ + 'message' => 'Data successfully deleted', + ]); + } catch (RequestException $r) { + + http_response_code(400); + return response([ + 'message' => 'Data failed to be deleted', + 'errorCode' => 4102, + ], 400); + } + } +} \ No newline at end of file diff --git a/app/Models/Project.php b/app/Models/Project.php new file mode 100644 index 0000000..cae2d52 --- /dev/null +++ b/app/Models/Project.php @@ -0,0 +1,14 @@ + */ protected $fillable = [ - 'name', - 'email', + 'username', 'password', + 'role_id', ]; /** @@ -41,4 +41,8 @@ class User extends Authenticatable protected $casts = [ 'email_verified_at' => 'datetime', ]; + public function userRole() + { + return $this->hasOne('App\Models\UserRole', 'id', 'role_id'); + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 621a24e..b46d3cd 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,10 +15,9 @@ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); + $table->string('username'); + $table->string('password'); + $table->timestamp('email_verified_at')->nullable(); $table->rememberToken(); $table->timestamps(); }); diff --git a/database/migrations/2023_03_10_085339_create_projects_table.php b/database/migrations/2023_03_10_085339_create_projects_table.php new file mode 100644 index 0000000..fb4207d --- /dev/null +++ b/database/migrations/2023_03_10_085339_create_projects_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name')->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('projects'); + } +} \ No newline at end of file diff --git a/database/migrations/2023_03_10_085825_create_tasks_table.php b/database/migrations/2023_03_10_085825_create_tasks_table.php new file mode 100644 index 0000000..61850b3 --- /dev/null +++ b/database/migrations/2023_03_10_085825_create_tasks_table.php @@ -0,0 +1,41 @@ +id(); + $table->string('title'); + $table->string('description')->nullable(); + $table->biginteger('status')->unsigned(); + $table->biginteger('user_id')->unsigned(); + $table->biginteger('project_id')->unsigned(); + $table->timestamps(); + }); + Schema::table('tasks', function($table) { + $table->foreign('user_id')->references('id')->on('users'); + $table->foreign('project_id')->references('id')->on('projects'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tasks'); + } +} + \ No newline at end of file diff --git a/database/migrations/2023_03_10_090058_create_roles_table.php b/database/migrations/2023_03_10_090058_create_roles_table.php new file mode 100644 index 0000000..002949a --- /dev/null +++ b/database/migrations/2023_03_10_090058_create_roles_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('roles'); + } +} \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index eb6fa48..a9e3d0a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,6 +2,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; +use App\Http\Controllers\Api\UserController; /* |-------------------------------------------------------------------------- @@ -14,6 +15,11 @@ | */ -Route::middleware('auth:sanctum')->get('/user', function (Request $request) { - return $request->user(); +Route::group(['middleware' => ['auth:sanctum']], function () { + Route::name('users')->get('/v1/users', [UserController::class, 'index']); + Route::name('users')->get('/v1/users/{id}', [UserController::class, 'show']); + Route::name('users')->post('/v1/users',[UserController::class, 'store']); + Route::name('users')->put('/v1/users/{id}',[UserController::class, 'update']); + Route::name('users')->delete('/v1/users/{id}',[UserController::class, 'destroy']); + Route::name('users')->patch('/v1/users/{id}',[UserController::class, 'edit']); });