Add removal of CustomCatalogEntry inside catalog via button

This commit is contained in:
Erik Hohlfeld 2023-11-11 22:06:48 +01:00 committed by Simon Bruder
parent 580529ab2f
commit e7a722b6f8
Signed by: simon
GPG key ID: 8D3C82F9F309F8EC
5 changed files with 45 additions and 20 deletions

View file

@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
@ -30,14 +31,22 @@ public class CatalogController {
@GetMapping("/catalog_editor") @GetMapping("/catalog_editor")
public String catalog_configuration(Model model) { public String catalog_configuration(Model model) {
model.addAttribute("inventory", inventory); model.addAttribute("inventory", inventory);
model.addAttribute("formCatalogEntry", new CustomCatalogEntry()); model.addAttribute("formCatalogEntry", new CustomCatalogEntry(
CustomCatalogEntry.EventType.EVENT_CATERING,
new HashMap<String, Integer>(),
0,
0));
return "catalog_editor"; return "catalog_editor";
} }
@PostMapping("/catalog_editor/catalog_add") @PostMapping("/catalog_editor/catalog_add")
public String catalog_add(@ModelAttribute CustomCatalogEntry formCatalogEntry, Model model) { public String catalog_add(Model model) {
catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry( catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry(
// TODO: Fill with formCatalogEntry's data // TODO: Fill with formCatalogEntry's data instead of dummy data
CustomCatalogEntry.EventType.EVENT_CATERING,
new HashMap<String, Integer>(),
0,
0
)); ));
return "redirect:/catalog"; return "redirect:/catalog";
} }
@ -46,7 +55,7 @@ public class CatalogController {
@PostMapping("/catalog/remove") @PostMapping("/catalog/remove")
public String removeEntry(@RequestParam int catalogEntryID) { public String removeEntry(@RequestParam int catalogEntryID) {
catalogEntryRepository.removeCatalogEntry(catalogEntryID); catalogEntryRepository.removeCatalogEntry(catalogEntryID);
return "catalog_editor"; return "redirect:/catalog";
} }
@PostMapping("/catalog_editor/product_add") @PostMapping("/catalog_editor/product_add")
@ -70,10 +79,11 @@ public class CatalogController {
} }
@PostMapping("/catalog_editor/add_time") @PostMapping("/catalog_editor/add_time")
public String add_time(@ModelAttribute CustomCatalogEntry formCatalogEntry, Model model) { public String add_time(@RequestParam int minimumTimePeriod, @ModelAttribute CustomCatalogEntry formCatalogEntry, Model model) {
System.out.println(formCatalogEntry.getMinimumTimePeriod()); System.out.println(minimumTimePeriod);
model.addAttribute("formCatalogEntry", formCatalogEntry); /*System.out.println(formCatalogEntry.getMinimumTimePeriod());
// Might not work because on every GetMapping of /catalog_editor a new formCatalogEntry is created model.addAttribute("formCatalogEntry", formCatalogEntry);*/
// TODO: Might not work because on every GetMapping of /catalog_editor a new formCatalogEntry is created
return "redirect:/catalog_editor"; return "redirect:/catalog_editor";
} }

View file

@ -11,13 +11,13 @@ public class CustomCatalogEntry {
private int minimumTimePeriod; // Declared as int for simplification of the prototype. Only whole hours. private int minimumTimePeriod; // Declared as int for simplification of the prototype. Only whole hours.
private int totalCost; // Should actually accumulate the price of all items. private int totalCost; // Should actually accumulate the price of all items.
public CustomCatalogEntry() { public CustomCatalogEntry(EventType eventType, Map<String, Integer> products, int minimumTimePeriod, int totalCost) {
this.id = idCounter; this.id = idCounter;
idCounter++; idCounter++;
this.eventType = EventType.EVENT_CATERING; this.eventType = eventType;
this.products = new HashMap<String, Integer>(); this.products = products;
this.minimumTimePeriod = 5; this.minimumTimePeriod = minimumTimePeriod;
this.totalCost = 3; this.totalCost = totalCost;
} }
public int getId() { public int getId() {
@ -44,6 +44,9 @@ public class CustomCatalogEntry {
this.eventType = eventType; this.eventType = eventType;
} }
public void setProducts(Map<String, Integer> products) {
this.products = products;
}
public void setMinimumTimePeriod(int timePeriod) { public void setMinimumTimePeriod(int timePeriod) {
this.minimumTimePeriod = timePeriod; this.minimumTimePeriod = timePeriod;
} }

View file

@ -20,7 +20,7 @@ public class CustomCatalogEntryDataInitializer implements DataInitializer {
Map<String, Integer> products = new HashMap<>(); Map<String, Integer> products = new HashMap<>();
products.put("Brötchen", 30); products.put("Brötchen", 30);
products.put("Kerze", 20); products.put("Kerze", 20);
catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry()); catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry(CustomCatalogEntry.EventType.EVENT_CATERING, products, 4, 500));
products = new HashMap<>(); products = new HashMap<>();
products.put("Kuchen", 3); products.put("Kuchen", 3);
@ -28,6 +28,6 @@ public class CustomCatalogEntryDataInitializer implements DataInitializer {
products.put("Pizza Margherita", 1); products.put("Pizza Margherita", 1);
products.put("Pizza Quattro Formaggi", 1); products.put("Pizza Quattro Formaggi", 1);
products.put("Ballon", 20); products.put("Ballon", 20);
catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry()); catalogEntryRepository.addCatalogEntry(new CustomCatalogEntry(CustomCatalogEntry.EventType.PARTY_SERVICE, products, 2, 1000));
} }
} }

View file

@ -33,6 +33,7 @@
<td> <td>
**BILD** **BILD**
</td> </td>
<td th:text="${catalogEntry.getId()}">
<td th:text="${catalogEntry.getEventType()}"> <td th:text="${catalogEntry.getEventType()}">
<td th:text="${catalogEntry.getMinimumTimePeriod()}">h <td th:text="${catalogEntry.getMinimumTimePeriod()}">h
<td> <td>
@ -41,6 +42,12 @@
</ul> </ul>
</td> </td>
<td th:text="${catalogEntry.getTotalCost()}"> <td th:text="${catalogEntry.getTotalCost()}">
<td>
<form method="post" th:action="@{/catalog/remove}">
<input type="hidden" name="catalogEntryID" th:value="${catalogEntry.getId()}">
<button type="submit">Entfernen</button>
</form>
</td>
</tr> </tr>
</table> </table>
</div> </div>
@ -57,6 +64,12 @@
</form> </form>
</div> </div>
<div>
<form th:action="@{/catalog_editor}">
<button type="submit">Hinzufügen</button>
</form>
</div>
<div> <div>
<button type="button">Hinzufügen</button> <button type="button">Hinzufügen</button>
</div> </div>
@ -70,4 +83,3 @@
</p> </p>
</footer> </footer>
</html> </html>

View file

@ -31,7 +31,7 @@
<h2>Mindestzeitraum</h2> <h2>Mindestzeitraum</h2>
<form th:object="${formCatalogEntry}" method="post" th:action="@{/catalog_editor/add_time}"> <form th:object="${formCatalogEntry}" method="post" th:action="@{/catalog_editor/add_time}">
<label>Mindestzeitraum:</label> <label>Mindestzeitraum:</label>
<input th:field="*{minimumTimePeriod}" type="number" min="1" step="1" value="1"/> <input th:field="*{minimumTimePeriod}" type="number" min="0" step="1" value="1"/>
<button type="submit">Zum Model hinzufügen</button> <button type="submit">Zum Model hinzufügen</button>
</form> </form>
@ -46,8 +46,6 @@
<th>Stückpreis</th> <th>Stückpreis</th>
</tr> </tr>
<tr th:each="item : ${inventory}"> <tr th:each="item : ${inventory}">
<td th:text="${item}">
<td th:text="${item.getItemId()}">
<td th:text="${item.getName()}"> <td th:text="${item.getName()}">
<td th:text="${item.getAmount()}"> <td th:text="${item.getAmount()}">
<td th:text="${item.getCost()}"> <td th:text="${item.getCost()}">
@ -58,6 +56,8 @@
</form> </form>
</td> </td>
</table> </table>
<hr>
<div style="height: 20px;"></div>
<form method="post" th:action="@{/catalog_editor/product_add}"> <form method="post" th:action="@{/catalog_editor/product_add}">
<label for="name">Produktname</label> <label for="name">Produktname</label>
<input type="text" id="name" name="name" required> <input type="text" id="name" name="name" required>