Skip to content

Commit 57da15b

Browse files
committed
Intro to ORM exercise - finished Exercise
1 parent 9f3e2db commit 57da15b

4 files changed

Lines changed: 131 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.launchcode.codingevents.controllers;
2+
3+
import jakarta.validation.Valid;
4+
import org.launchcode.codingevents.data.EventCategoryRepository;
5+
import org.launchcode.codingevents.data.EventRepository;
6+
import org.launchcode.codingevents.models.Event;
7+
import org.launchcode.codingevents.models.EventCategory;
8+
import org.launchcode.codingevents.models.EventType;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.stereotype.Controller;
11+
import org.springframework.ui.Model;
12+
import org.springframework.validation.Errors;
13+
import org.springframework.web.bind.annotation.GetMapping;
14+
import org.springframework.web.bind.annotation.ModelAttribute;
15+
import org.springframework.web.bind.annotation.PostMapping;
16+
import org.springframework.web.bind.annotation.RequestMapping;
17+
18+
19+
@Controller
20+
@RequestMapping("eventCategories")
21+
22+
public class EventCategoryController {
23+
24+
@Autowired
25+
private EventCategoryRepository eventCategoryRepository;
26+
27+
@GetMapping
28+
public String displayAllCategories(Model model) {
29+
model.addAttribute("title", "All Categories");
30+
model.addAttribute("categories", eventCategoryRepository.findAll());
31+
return "eventCategories/index";
32+
}
33+
34+
@GetMapping("create")
35+
public String renderCreateEventCategoryForm(Model model) {
36+
model.addAttribute("title", "Create Category");
37+
model.addAttribute(new EventCategory());
38+
model.addAttribute("types", EventType.values());
39+
return "eventCategories/create";
40+
}
41+
42+
@PostMapping("create")
43+
public String processCreateEventCategoryForm(@ModelAttribute @Valid
44+
EventCategory eventCategory,Errors errors, Model model) {
45+
if(errors.hasErrors()) {
46+
model.addAttribute("title", "Create Category");
47+
model.addAttribute(new EventCategory());
48+
return "eventCategories/create";
49+
}
50+
51+
eventCategoryRepository.save(eventCategory);
52+
return "redirect:";
53+
}
54+
55+
56+
}
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.EventCategory;
4+
import org.springframework.data.repository.CrudRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface EventCategoryRepository extends CrudRepository<EventCategory, Integer> {
9+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
<p th:text="${errorMsg}" style="color:red;"></p>
9+
10+
<form method="post">
11+
<div class="form-group">
12+
<label>Name
13+
<input th:field="${eventCategory.name}" class="form-control">
14+
</label>
15+
<p class="error" th:errors="${eventCategory.name}"></p>
16+
</div>
17+
<div class="form-group">
18+
<label>Description
19+
<input th:field="${eventCategory.description}" class="form-control">
20+
</label>
21+
<p class="error" th:errors="${eventCategory.description}"></p>
22+
</div>
23+
<div class="form-group">
24+
<label>Contact Email
25+
<input th:field="${event.contactEmail}" class="form-control">
26+
</label>
27+
<p class="error" th:errors="${eventCategory.contactEmail}"></p>
28+
</div>
29+
<div class="form-group">
30+
<label>Type
31+
<select th:field="${eventCategory.type}">
32+
<option th:each="type : ${types}"
33+
th:value="${type}"
34+
th:text="${type.displayName}"
35+
></option>
36+
</select>
37+
</label>
38+
</div>
39+
<div class="form-group">
40+
<input type="submit" value="Create" class="btn btn-success">
41+
</div>
42+
</form>
43+
44+
</body>
45+
</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)