From 9656a87fba30997cf4858b9bcb35476dc155f674 Mon Sep 17 00:00:00 2001
From: Omer Bahadiroglu <93478016+ohbahadiroglu@users.noreply.github.com>
Date: Sat, 23 Dec 2023 23:39:25 +0300
Subject: [PATCH] post-game relation activated (#627)

---
 .../src/main/kotlin/com/gamelounge/backend/model/DTO/PostDTO.kt | 2 +-
 .../com/gamelounge/backend/model/request/CreatePostRequest.kt   | 2 ++
 .../com/gamelounge/backend/model/request/UpdatePostRequest.kt   | 2 ++
 .../main/kotlin/com/gamelounge/backend/service/PostService.kt   | 2 ++
 .../src/main/kotlin/com/gamelounge/backend/util/ConverterDTO.kt | 1 +
 5 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/model/DTO/PostDTO.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/model/DTO/PostDTO.kt
index 3ae57c53..0d33bcbc 100644
--- a/app/backend/src/main/kotlin/com/gamelounge/backend/model/DTO/PostDTO.kt
+++ b/app/backend/src/main/kotlin/com/gamelounge/backend/model/DTO/PostDTO.kt
@@ -13,7 +13,7 @@ data class PostDTO(
     var downvotes: Int = 0,
     var totalComments: Int = 0,
     var category: PostCategory = PostCategory.DISCUSSION,
-    ///var relatedGame: GameDTO? = null,
+    var relatedGame: GameDTO? = null,
     var tags: List<TagDTO>? = null
 )
 
diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/CreatePostRequest.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/CreatePostRequest.kt
index 2eed8fca..80caa1f0 100644
--- a/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/CreatePostRequest.kt
+++ b/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/CreatePostRequest.kt
@@ -10,6 +10,8 @@ data class CreatePostRequest(
     val content: String,
     @JsonProperty("category")
     val category: PostCategory,
+    @JsonProperty("gameId")
+    val gameId: Long? = null,
     @JsonProperty("tags")
     val tags: List<String>? = emptyList()
 )
\ No newline at end of file
diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/UpdatePostRequest.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/UpdatePostRequest.kt
index e4053aed..fb23909a 100644
--- a/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/UpdatePostRequest.kt
+++ b/app/backend/src/main/kotlin/com/gamelounge/backend/model/request/UpdatePostRequest.kt
@@ -10,6 +10,8 @@ data class UpdatePostRequest(
     val content: String?,
     @JsonProperty("category")
     val category: PostCategory?,
+    @JsonProperty("gameId")
+    val gameId: Long?,
     @JsonProperty("tags")
     val tags: List<String>?
 )
\ No newline at end of file
diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/service/PostService.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/service/PostService.kt
index 78ff99c6..78290068 100644
--- a/app/backend/src/main/kotlin/com/gamelounge/backend/service/PostService.kt
+++ b/app/backend/src/main/kotlin/com/gamelounge/backend/service/PostService.kt
@@ -40,6 +40,7 @@ class PostService(
             content = post.content,
             category = post.category,
             user = user,
+            relatedGame = post.gameId?.let { gameService.getGame(it) },
             postTags = tagService.createAndReturnTagsFromTagNames(post.tags) ?: emptyList()
         )
         return postRepository.save(newPost)
@@ -60,6 +61,7 @@ class PostService(
         post.title = updatedPost.title ?: post.title
         post.content = updatedPost.content ?: post.content
         post.category = updatedPost.category ?: post.category
+        post.relatedGame = updatedPost.gameId?.let { gameService.getGame(it) } ?: post.relatedGame
         post.postTags = tagService.createAndReturnTagsFromTagNames(updatedPost.tags) ?: post.postTags
         // TODO
 
diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/util/ConverterDTO.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/util/ConverterDTO.kt
index 341ddd94..b9ad3d41 100644
--- a/app/backend/src/main/kotlin/com/gamelounge/backend/util/ConverterDTO.kt
+++ b/app/backend/src/main/kotlin/com/gamelounge/backend/util/ConverterDTO.kt
@@ -14,6 +14,7 @@ object ConverterDTO {
             downvotes = post.downvotes,
             totalComments = post.totalComments,
             category = post.category,
+            relatedGame = post.relatedGame?.let { convertToGameDTO(it) },
             tags = convertBulkToTagDTO(post.postTags)
         )
     }