Skip to content

Commit 0185d9b

Browse files
committed
exercises
1 parent bfaeab0 commit 0185d9b

6 files changed

Lines changed: 163 additions & 50 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.launchcode.codingevents.controllers;
2+
3+
4+
import org.launchcode.codingevents.data.EventCategoryRepository;
5+
import org.launchcode.codingevents.models.EventCategory;
6+
import org.springframework.stereotype.Controller;
7+
import org.springframework.ui.Model;
8+
import org.springframework.validation.Errors;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
13+
@Controller
14+
@RequestMapping("/eventCategories")
15+
public class EventCategoryController {
16+
17+
private final EventCategoryRepository eventCategoryRepository;
18+
19+
public EventCategoryController(EventCategoryRepository eventCategoryRepository) {
20+
this.eventCategoryRepository = eventCategoryRepository;
21+
}
22+
23+
@GetMapping("/index")
24+
public String displayAllCategories(Model model) {
25+
model.addAttribute("title", "All Categories");
26+
model.addAttribute("categories", eventCategoryRepository.findAll());
27+
return "eventCategories/index";
28+
}
29+
30+
@GetMapping("/create")
31+
public String renderCreateEventCategoryForm(Model model) {
32+
model.addAttribute("title", "Create Category");
33+
model.addAttribute("eventCategory", new EventCategory());
34+
return "eventCategories/create";
35+
}
36+
37+
@PostMapping("/create")
38+
public String processCreateEventCategoryForm(EventCategory eventCategory, Errors errors, Model model) {
39+
if (errors.hasErrors()) {
40+
model.addAttribute("title", "Create Category");
41+
return "eventCategories/create";
42+
}
43+
44+
return "redirect:/eventCategories/index";
45+
}
46+
}
Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,29 @@
11
package org.launchcode.codingevents.controllers;
22

3-
import jakarta.validation.Valid;
4-
import org.launchcode.codingevents.data.EventRepository;
5-
import org.launchcode.codingevents.models.Event;
6-
import org.launchcode.codingevents.models.EventType;
7-
import org.springframework.beans.factory.annotation.Autowired;
83
import org.springframework.stereotype.Controller;
9-
import org.springframework.web.bind.annotation.*;
4+
import org.springframework.web.bind.annotation.GetMapping;
5+
import org.springframework.web.bind.annotation.RequestMapping;
106
import org.springframework.ui.Model;
11-
import org.springframework.validation.Errors;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
1210

1311
/**
1412
* Created by Chris Bay
1513
*/
1614
@Controller
1715
@RequestMapping("events")
1816
public class EventController {
19-
@Autowired
20-
private EventRepository eventRepository;
2117

2218
@GetMapping
2319
public String displayAllEvents(Model model) {
24-
model.addAttribute("title", "All Events");
25-
model.addAttribute("events", eventRepository.findAll());
20+
List<String> events = new ArrayList<>();
21+
events.add("Code With Pride");
22+
events.add("Strange Loop");
23+
events.add("Apple WWDC");
24+
events.add("SpringOne Platform");
25+
model.addAttribute("events", events);
2626
return "events/index";
2727
}
2828

29-
@GetMapping("create")
30-
public String displayCreateEventForm(Model model) {
31-
model.addAttribute("title", "Create Event");
32-
model.addAttribute(new Event());
33-
model.addAttribute("types", EventType.values());
34-
return "events/create";
35-
}
36-
37-
@PostMapping("create")
38-
public String processCreateEventForm(@ModelAttribute @Valid Event newEvent,
39-
Errors errors, Model model) {
40-
if(errors.hasErrors()) {
41-
model.addAttribute("title", "Create Event");
42-
return "events/create";
43-
}
44-
45-
eventRepository.save(newEvent);
46-
return "redirect:/events";
47-
}
48-
49-
@GetMapping("delete")
50-
public String displayDeleteEventForm(Model model) {
51-
model.addAttribute("title", "Delete Events");
52-
model.addAttribute("events", eventRepository.findAll());
53-
return "events/delete";
54-
}
55-
56-
@PostMapping("delete")
57-
public String processDeleteEventsForm(@RequestParam(required = false) int[] eventIds) {
58-
59-
if (eventIds != null) {
60-
for (int id : eventIds) {
61-
eventRepository.deleteById(id);
62-
}
63-
}
64-
65-
return "redirect:/events";
66-
}
67-
6829
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.launchcode.codingevents.data;
2+
3+
import org.launchcode.codingevents.models.Event;
4+
import org.springframework.data.repository.CrudRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface EventCategoryRepository extends CrudRepository<Event, Integer> {
9+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.launchcode.codingevents.models;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.GeneratedValue;
5+
import jakarta.persistence.Id;
6+
import jakarta.validation.constraints.Size;
7+
8+
import java.util.Objects;
9+
10+
@Entity
11+
public class EventCategory {
12+
13+
@Id
14+
@GeneratedValue
15+
private int id;
16+
17+
@Size(min=3, message="Name must be at least 3 characters long")
18+
private String name;
19+
20+
public EventCategory(@Size(min = 3, message = "Name must be at least 3 characters long") String name) {
21+
this.name = name;
22+
}
23+
24+
public EventCategory() {}
25+
26+
public String getName() {
27+
return name;
28+
}
29+
30+
public void setName(String name) {
31+
this.name = name;
32+
}
33+
34+
public int getId() {
35+
return id;
36+
}
37+
38+
@Override
39+
public String toString() {
40+
return name;
41+
}
42+
43+
@Override
44+
public boolean equals(Object o) {
45+
if (this == o) return true;
46+
if (o == null || getClass() != o.getClass()) return false;
47+
EventCategory that = (EventCategory) o;
48+
return id == that.id;
49+
}
50+
51+
@Override
52+
public int hashCode() {
53+
return Objects.hash(id);
54+
}
55+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!DOCTYPE html>
2+
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
3+
<head th:replace="fragments :: head"></head>
4+
<body class="container">
5+
6+
<header th:replace="fragments :: header"></header>
7+
8+
<h2 th:text="${title}"></h2>
9+
10+
<form th:action="@{/eventCategories/create}" th:object="${eventCategory}" method="post">
11+
<label for="name">Category Name:</label>
12+
<input type="text" id="name" name="name" th:field="*{name}" required>
13+
<br>
14+
<label for="description">Category Description:</label>
15+
<textarea id="description" name="description" th:field="*{description}" required></textarea>
16+
<br>
17+
<button type="submit">Create Category</button>
18+
</form>
19+
20+
</body>
21+
</html>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!DOCTYPE html>
2+
<html lang="en" xmlns:th="http://www.thymeleaf.org/">
3+
<head th:replace="fragments :: head"></head>
4+
<body class="container">
5+
6+
<header th:replace="fragments :: header"></header>
7+
8+
<table class="table table-striped">
9+
<thead>
10+
<tr>
11+
<th>Category Name</th>
12+
</tr>
13+
</thead>
14+
<tr th:each="category : ${categories}">
15+
<td th:text="${category.name}"></td>
16+
</tr>
17+
18+
</table>
19+
20+
</body>
21+
</html>

0 commit comments

Comments
 (0)