Skip to content

Commit c272501

Browse files
Set up one to many relationship with events and categories
1 parent 00fffe3 commit c272501

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

src/main/java/org/launchcode/codingevents/controllers/EventController.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,21 @@ public class EventController {
2525
private EventCategoryRepository eventCategoryRepository;
2626

2727
@GetMapping
28-
public String displayAllEvents(Model model) {
29-
model.addAttribute("title", "All Events");
30-
model.addAttribute("events", eventRepository.findAll());
28+
public String displayEvents(@RequestParam(required = false) Integer categoryId, Model model) {
29+
30+
if (categoryId == null) {
31+
model.addAttribute("title", "All Events");
32+
model.addAttribute("events", eventRepository.findAll());
33+
} else {
34+
Optional<EventCategory> result = eventCategoryRepository.findById(categoryId);
35+
if (result.isEmpty()) {
36+
model.addAttribute("title", "Invalid Category ID: " + categoryId);
37+
} else {
38+
EventCategory category = result.get();
39+
model.addAttribute("title", "Events in category: " + category.getName());
40+
model.addAttribute("events", category.getEvents());
41+
}
42+
}
3143
return "events/index";
3244
}
3345

src/main/java/org/launchcode/codingevents/models/EventCategory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public class EventCategory extends AbstractEntity {
1515
@Size(min=3, message="Name must be at least 3 characters long")
1616
private String name;
1717

18+
@OneToMany(mappedBy = "eventCategory")
19+
private final List<Event> events = new ArrayList<>();
20+
1821
public EventCategory(@Size(min = 3, message = "Name must be at least 3 characters long") String name) {
1922
this.name = name;
2023
}
@@ -29,6 +32,10 @@ public void setName(String name) {
2932
this.name = name;
3033
}
3134

35+
public List<Event> getEvents() {
36+
return events;
37+
}
38+
3239
@Override
3340
public String toString() {
3441
return name;

src/main/resources/templates/eventCategories/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
</tr>
1313
</thead>
1414
<tr th:each="category : ${categories}">
15-
<td th:text="${category.name}"></td>
15+
<td><a th:text="${category.name}" th:href="'/events?categoryId=' + ${category.id}"></a></td>
1616
</tr>
1717

1818
</table>

0 commit comments

Comments
 (0)