Skip to content

Commit d9402ce

Browse files
authored
Merge pull request #116 from PEC-CSS/ken
2 parents 3e4d4df + 6650732 commit d9402ce

File tree

5 files changed

+56
-1
lines changed

5 files changed

+56
-1
lines changed

src/main/java/com/pecacm/backend/controllers/EventsController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.pecacm.backend.enums.EventRole;
77
import com.pecacm.backend.exception.AcmException;
88
import com.pecacm.backend.model.EndEventDetails;
9+
import com.pecacm.backend.model.EndEventSidDetails;
910
import com.pecacm.backend.response.EventAttendeesResponse;
1011
import com.pecacm.backend.services.EventService;
1112
import jakarta.annotation.Nonnull;
@@ -132,6 +133,13 @@ public ResponseEntity<Void> endEvent(@PathVariable Integer eventId, @RequestBody
132133
return ResponseEntity.ok().build();
133134
}
134135

136+
@PostMapping("/{eventId}/end/sid")
137+
@PreAuthorize(Constants.HAS_ROLE_CORE_AND_ABOVE)
138+
public ResponseEntity<Void> endEventBySid(@PathVariable Integer eventId, @RequestBody EndEventSidDetails endEventSidDetails) {
139+
eventService.endEventBySid(eventId, endEventSidDetails);
140+
return ResponseEntity.ok().build();
141+
}
142+
135143
@GetMapping("/next")
136144
@PreAuthorize(Constants.HAS_ANY_ROLE)
137145
public ResponseEntity<Event> nextEvent(@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @Nonnull LocalDate date) {

src/main/java/com/pecacm/backend/model/EndEventDetails.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
77
import lombok.Setter;
8+
import lombok.Builder;
89

910
import java.util.ArrayList;
1011
import java.util.List;
@@ -13,6 +14,7 @@
1314
@Setter
1415
@AllArgsConstructor
1516
@NoArgsConstructor
17+
@Builder
1618
public class EndEventDetails {
1719
private List<String> contributors = new ArrayList<>();
1820
private List<String> publicity = new ArrayList<>();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.pecacm.backend.model;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
import lombok.Setter;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
@Getter
12+
@Setter
13+
@AllArgsConstructor
14+
@NoArgsConstructor
15+
public class EndEventSidDetails {
16+
private List<String> contributors = new ArrayList<>();
17+
private List<String> publicity = new ArrayList<>();
18+
private List<Integer> participants = new ArrayList<>();
19+
private Integer contributorXp = 5;
20+
private Integer publicityXp = 2;
21+
private Integer participantXp = 1;
22+
}

src/main/java/com/pecacm/backend/repository/UserRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,6 @@ public interface UserRepository extends JpaRepository<User, Integer> {
6060

6161
List<User> findByEmailIn(List<String> emails);
6262

63+
List<User> findBySidIn(List<Integer> sids);
64+
6365
}

src/main/java/com/pecacm/backend/services/EventService.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.pecacm.backend.enums.EventRole;
88
import com.pecacm.backend.exception.AcmException;
99
import com.pecacm.backend.model.EndEventDetails;
10+
import com.pecacm.backend.model.EndEventSidDetails;
1011
import com.pecacm.backend.repository.EventRepository;
1112
import com.pecacm.backend.repository.TransactionRepository;
1213
import com.pecacm.backend.repository.UserRepository;
@@ -20,7 +21,10 @@
2021

2122
import java.time.LocalDate;
2223
import java.time.LocalDateTime;
23-
import java.util.*;
24+
import java.util.ArrayList;
25+
import java.util.List;
26+
import java.util.Objects;
27+
import java.util.Optional;
2428

2529
@Service
2630
public class EventService {
@@ -126,6 +130,23 @@ public void endEvent(Integer eventId, EndEventDetails endEventDetails) {
126130
eventRepository.save(event);
127131
}
128132

133+
@Transactional
134+
public void endEventBySid(Integer eventId, EndEventSidDetails endEventSidDetails) {
135+
List<String> participants = userRepository.findBySidIn(endEventSidDetails.getParticipants())
136+
.stream()
137+
.map(User::getEmail)
138+
.toList();
139+
EndEventDetails endEventDetails = EndEventDetails.builder()
140+
.contributors(endEventSidDetails.getContributors())
141+
.publicity(endEventSidDetails.getPublicity())
142+
.participants(participants)
143+
.contributorXp(endEventSidDetails.getContributorXp())
144+
.publicityXp(endEventSidDetails.getPublicityXp())
145+
.participantXp(endEventSidDetails.getParticipantXp())
146+
.build();
147+
endEvent(eventId, endEventDetails);
148+
}
149+
129150
private void updateEventRoles(List<String> emails, EventRole eventRole, Event event, EndEventDetails endEventDetails) {
130151
List<User> users = userRepository.findByEmailIn(emails);
131152

0 commit comments

Comments
 (0)