Skip to content

Commit a70b311

Browse files
author
kaleidox
committed
add remove button to departments
1 parent 7ec03d0 commit a70b311

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/main/java/de/kaleidox/workbench/repo/CustomerRepository.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.springframework.data.repository.query.Param;
99
import org.springframework.stereotype.Controller;
1010
import org.springframework.stereotype.Repository;
11+
import org.springframework.web.bind.annotation.DeleteMapping;
1112
import org.springframework.web.bind.annotation.GetMapping;
1213
import org.springframework.web.bind.annotation.PathVariable;
1314
import org.springframework.web.bind.annotation.PostMapping;
@@ -49,4 +50,17 @@ default void addDepartment(@PathVariable("customerName") String customerName, @R
4950

5051
customer.getDepartments().add(department);
5152
}
53+
54+
@ResponseBody
55+
@Transactional
56+
@DeleteMapping("/{customerName}/departments")
57+
default void removeDepartment(
58+
@PathVariable("customerName") String customerName,
59+
@RequestBody String departmentName
60+
) {
61+
var department = bean(DepartmentRepository.class).getOrCreate(departmentName);
62+
var customer = findById(customerName).orElseThrow();
63+
64+
customer.getDepartments().remove(department);
65+
}
5266
}

src/main/resources/static/customers.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ function createDepartment(customer) {
1818
}).then(handleResponse)
1919
}
2020

21+
function removeDepartment(customer, department) {
22+
if (!confirm(`Abteilung ${department} von ${customer} entfernen?`)) return
23+
24+
fetch(`/api/customers/${customer}/departments`, {
25+
method: 'DELETE', headers: {
26+
'Content-Type': 'application/json'
27+
}, body: department
28+
}).then(handleResponse)
29+
}
30+
2131
function handleResponse(response) {
2232
if (response.ok) window.location.reload()
2333
else alert('Interner Fehler')

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ <h2>Kunden</h2>
2020
<td>
2121
<div class="ui-button" th:attr="onclick=|createDepartment('${entry.key}')|">Neu...</div>
2222
<ul>
23-
<li th:each="department: ${entry.value}" th:text="${department}"></li>
23+
<li th:each="department: ${entry.value}"><span th:text="${department}"></span>
24+
<span style="font-size: 80%; color: red" th:attr="onclick=|removeDepartment('${entry.key}', '${department}')|">Entfernen</span>
25+
</li>
2426
</ul>
2527
</td>
2628
</tr>

0 commit comments

Comments
 (0)