Skip to content

Commit 6cd764f

Browse files
committed
listens to RequestHexadPlayerTypeEvent. Once recieved, sends UserHexadPlayerTypeSetEvent for the given user
1 parent bd3a56b commit 6cd764f

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ repositories {
119119

120120
dependencies {
121121

122-
implementation 'de.unistuttgart.iste.meitrex:meitrex-common:1.4.12pre2'
122+
implementation 'de.unistuttgart.iste.meitrex:meitrex-common:1.4.12pre4'
123123
implementation 'de.unistuttgart.iste.meitrex:content_service:1.6.0'
124124
implementation 'de.unistuttgart.iste.meitrex:course_service:1.1.0rc2'
125125
implementation 'de.unistuttgart.iste.meitrex:user_service:1.0.0rc1'
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package de.unistuttgart.iste.meitrex.gamification_service.dapr;
2+
3+
import de.unistuttgart.iste.meitrex.common.dapr.TopicPublisher;
4+
import de.unistuttgart.iste.meitrex.common.event.RequestHexadPlayerTypeEvent;
5+
import de.unistuttgart.iste.meitrex.gamification_service.service.IPlayerHexadScoreService;
6+
import io.dapr.Topic;
7+
import io.dapr.client.domain.CloudEvent;
8+
import lombok.RequiredArgsConstructor;
9+
import lombok.extern.slf4j.Slf4j;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestBody;
12+
import org.springframework.web.bind.annotation.RestController;
13+
14+
/**
15+
* Listener for RequestHexadPlayerTypeEvent.
16+
* When a request is received, it fetches the user's hexad player type
17+
* and publishes a UserHexadPlayerTypeSetEvent in response.
18+
*/
19+
@Slf4j
20+
@RestController
21+
@RequiredArgsConstructor
22+
public class RequestHexadPlayerTypeEventListener {
23+
24+
private final IPlayerHexadScoreService playerHexadScoreService;
25+
private final TopicPublisher topicPublisher;
26+
27+
@Topic(name = "request-hexad-player-type", pubsubName = "meitrex")
28+
@PostMapping(path = "/request-hexad-player-type-pubsub")
29+
public void onRequestHexadPlayerTypeEvent(@RequestBody CloudEvent<RequestHexadPlayerTypeEvent> cloudEvent) {
30+
RequestHexadPlayerTypeEvent event = cloudEvent.getData();
31+
32+
log.info("Received RequestHexadPlayerTypeEvent for user: {}", event.getUserId());
33+
34+
try {
35+
// Fetch the player hexad score for the user
36+
var playerHexadScore = playerHexadScoreService.getById(event.getUserId());
37+
38+
if (playerHexadScore != null) {
39+
log.info("Publishing UserHexadPlayerTypeSetEvent for user: {}", event.getUserId());
40+
playerHexadScoreService.sendUserHexadPlayerTypeSetEvent(event.getUserId(), playerHexadScore);
41+
} else {
42+
log.warn("No hexad player type found for user: {}", event.getUserId());
43+
}
44+
} catch (Exception e) {
45+
log.error("Error handling RequestHexadPlayerTypeEvent for user {}: {}",
46+
event.getUserId(), e.getMessage(), e);
47+
}
48+
}
49+
}

src/main/java/de/unistuttgart/iste/meitrex/gamification_service/service/IPlayerHexadScoreService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,11 @@ public interface IPlayerHexadScoreService {
5151
* @return true if a hexad score exists otherwise false
5252
*/
5353
Boolean hasHexadScore(UUID userId);
54+
55+
/**
56+
* Publishes an UserHexadPlayerTypeSetEvent
57+
* @param userId the ID of the user
58+
* @param playerHexadScore the player hexad score of the user
59+
*/
60+
void sendUserHexadPlayerTypeSetEvent(UUID userId, PlayerHexadScore playerHexadScore);
5461
}

src/main/java/de/unistuttgart/iste/meitrex/gamification_service/service/PlayerHexadScoreService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public Boolean hasHexadScore(UUID userId) {
181181
* @param userId the ID of the user
182182
* @param playerHexadScore the updated player hexad score
183183
*/
184-
private void sendUserHexadPlayerTypeSetEvent(UUID userId, PlayerHexadScore playerHexadScore) {
184+
public void sendUserHexadPlayerTypeSetEvent(UUID userId, PlayerHexadScore playerHexadScore) {
185185
HexadPlayerType primaryPlayerType = null;
186186
Map<HexadPlayerType, Double> scoresMap = new HashMap<>();
187187

0 commit comments

Comments
 (0)