diff --git a/src/app/Common/Domain/Enum/PostVisibility.php b/src/app/Common/Domain/Enum/PostVisibility.php index a848301..d1435e1 100644 --- a/src/app/Common/Domain/Enum/PostVisibility.php +++ b/src/app/Common/Domain/Enum/PostVisibility.php @@ -10,8 +10,8 @@ enum PostVisibility: int public function toLabel(): string { return match ($this) { - self::PUBLIC => 'Public', - self::PRIVATE => 'Private', + self::PUBLIC => 'public', + self::PRIVATE => 'private', }; } } \ No newline at end of file diff --git a/src/app/Post/Application/UseCase/EditUseCase.php b/src/app/Post/Application/UseCase/EditUseCase.php index a3b02fe..00b3471 100644 --- a/src/app/Post/Application/UseCase/EditUseCase.php +++ b/src/app/Post/Application/UseCase/EditUseCase.php @@ -16,6 +16,7 @@ public function __construct( public function handle( EditPostUseCommand $command ): EditPostDto { + $entity = PostEntity::build( $command->toArray() ); diff --git a/src/app/Post/Domain/Entity/PostEntity.php b/src/app/Post/Domain/Entity/PostEntity.php index f52418d..23dcc18 100644 --- a/src/app/Post/Domain/Entity/PostEntity.php +++ b/src/app/Post/Domain/Entity/PostEntity.php @@ -29,11 +29,12 @@ public static function build(array $request): self visibility: $request['visibility'] instanceof PostVisibility ? $request['visibility'] : new PostVisibility( PostVisibilityEnum::from( - is_int($request['visibility']) - ? $request['visibility'] - : match (strtoupper((string)$request['visibility'])) { - 'PUBLIC' => PostVisibilityEnum::PRIVATE->value, - default => PostVisibilityEnum::PUBLIC->value, + is_numeric($request['visibility']) + ? (int)$request['visibility'] + : match(strtoupper((string)$request['visibility'])) { + 'PUBLIC' => PostVisibilityEnum::PUBLIC, + 'PRIVATE' => PostVisibilityEnum::PRIVATE, + default => PostVisibilityEnum::PUBLIC, } )) ); diff --git a/src/app/Post/Infrastructure/Repository/PostRepository.php b/src/app/Post/Infrastructure/Repository/PostRepository.php index 6ec10bb..321db2d 100644 --- a/src/app/Post/Infrastructure/Repository/PostRepository.php +++ b/src/app/Post/Infrastructure/Repository/PostRepository.php @@ -39,6 +39,7 @@ public function editById(PostEntity $entity): PostEntity $targetPost->fill([ 'content' => $entity->getContent(), + 'user_id' => $entity->getUserId()->getValue(), 'media_path' => $entity->getMediaPath(), 'visibility' => $entity->getPostVisibility()->getValue(), ])->save(); diff --git a/src/app/Post/Presentation/Controller/PostController.php b/src/app/Post/Presentation/Controller/PostController.php index 3b2272b..c37bf9d 100644 --- a/src/app/Post/Presentation/Controller/PostController.php +++ b/src/app/Post/Presentation/Controller/PostController.php @@ -16,6 +16,9 @@ use App\Common\Presentation\ViewModelFactory\PaginationFactory as PaginationViewModelFactory; use App\Post\Application\Dto\GetUserEachPostDto; use App\Post\Presentation\ViewModel\GetAllUserPostViewModel; +use App\Post\Application\UseCase\EditUseCase; +use App\Post\Application\UseCommand\EditPostUseCommand; +use App\Post\Presentation\ViewModel\EditPostViewModel; class PostController extends Controller { @@ -121,18 +124,17 @@ public function getEachPost( public function edit( Request $request, - int $user_id, - int $post_id, + int $userId, + int $postId, EditUseCase $useCase ): JsonResponse { DB::connection('mysql')->beginTransaction(); try { - $command = EditPostUseCommand::build( array_merge( $request->toArray(), - ['userId' => $user_id], - ['id' => $post_id] + ['userId' => $userId], + ['id' => $postId] ) ); diff --git a/src/app/Post/Tests/Post_CreateTest.php b/src/app/Post/Tests/Post_CreateTest.php index 05d12c8..f758d5a 100644 --- a/src/app/Post/Tests/Post_CreateTest.php +++ b/src/app/Post/Tests/Post_CreateTest.php @@ -2,6 +2,7 @@ namespace App\Post\Tests; +use App\Common\Domain\Enum\PostVisibility as PostVisibilityEnum; use App\Models\Post; use App\Models\User; use Tests\TestCase; @@ -50,7 +51,7 @@ public function test_create_post(): void 'title' => 'Portugal Wins Nations League in 2025', 'content' => 'Vamos Portugal! The team has shown incredible skill and determination.', 'media_path' => 'https://example.com/media.jpg', - 'visibility' => 'public', + 'visibility' => PostVisibilityEnum::PUBLIC->value, ]; $response = $this->post( diff --git a/src/app/Post/Tests/Post_EditTest.php b/src/app/Post/Tests/Post_EditTest.php index a8fb695..877cc60 100644 --- a/src/app/Post/Tests/Post_EditTest.php +++ b/src/app/Post/Tests/Post_EditTest.php @@ -45,35 +45,35 @@ public function test_feature_test(): void 'profile_image' => null, ]; - $user_id = User::create($request)->id; + $userId = User::create($request)->id; $postRequest = [ 'content' => 'Vamos Portugal! The team has shown incredible skill and determination.', 'media_path' => 'https://example.com/media.jpg', - 'visibility' => 'public', + 'visibility' => PostVisibilityEnum::PUBLIC->value, ]; - $post_id = Post::create(array_merge($postRequest, ['user_id' => $user_id]))->id; + $postId = Post::create(array_merge($postRequest, ['user_id' => $userId]))->id; $editRequest = [ 'content' => 'Vamos Portugal! The team has shown incredible skill and determination. Updated content.', 'media_path' => 'https://example.com/media_updated.jpg', - 'visibility' => 'private', + 'visibility' => PostVisibilityEnum::PRIVATE->value, ]; $response = $this->putJson( - "api/users/{$user_id}/posts/{$post_id}", + "api/users/{$userId}/posts/{$postId}", $editRequest ); $response->assertJson([ 'status' => 'success', 'data' => [ - 'id' => $post_id, - 'user_id' => $user_id, + 'id' => $postId, + 'user_id' => $userId, 'content' => $editRequest['content'], 'media_path' => $editRequest['media_path'], - 'visibility' => PostVisibilityEnum::PRIVATE->value, + 'visibility' => PostVisibilityEnum::PRIVATE->toLabel(), ] ]); } diff --git a/src/routes/api.php b/src/routes/api.php index 09c35ba..a45b237 100644 --- a/src/routes/api.php +++ b/src/routes/api.php @@ -20,6 +20,6 @@ Route::get('/', [PostController::class, 'getAllPosts'])->name('getAllPosts'); Route::get('public', [PostController::class, 'getOthersPosts'])->name('getOthersPosts'); Route::get('{postId}', [PostController::class, 'getEachPost'])->name('getEachPost'); - Route::put('{userId}/posts/{postId}', [PostController::class, 'edit'])->name('posts.edit'); + Route::put('{postId}', [PostController::class, 'edit'])->name('edit'); }); }); \ No newline at end of file