zack zack
This commit is contained in:
parent
7aee8fcdc9
commit
a63afaa022
36 changed files with 612 additions and 30 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -31,3 +31,6 @@ build/
|
||||||
|
|
||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
### Custom ###
|
||||||
|
db/mysql
|
||||||
196
docs/task.html
Normal file
196
docs/task.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -162,7 +162,7 @@ services:
|
||||||
* Endpunkt: `/api/v1/cart/add`
|
* Endpunkt: `/api/v1/cart/add`
|
||||||
* Erforderlicher Token wird als Bearer - Token im Autorizationheader mitgeschickt.
|
* Erforderlicher Token wird als Bearer - Token im Autorizationheader mitgeschickt.
|
||||||
* Erfoderliche Daten werden im Requst - Body als JSON - Objekt mitgeschickt.
|
* Erfoderliche Daten werden im Requst - Body als JSON - Objekt mitgeschickt.
|
||||||
`{"id": 1, tickets: [{"id": 1, "amount": 2}, {"id": 2, "amount": 1}]}`
|
`{"id": 1, cartEntries: [{"id": 1, "amount": 2}, {"id": 2, "amount": 1}]}`
|
||||||
* Im Erfolgsfall wird der Statuscode `200` zurückgegeben.
|
* Im Erfolgsfall wird der Statuscode `200` zurückgegeben.
|
||||||
* Bei Misserfolg wird der Statuscode `400` / `401` zurückgebeben.
|
* Bei Misserfolg wird der Statuscode `400` / `401` zurückgebeben.
|
||||||
|
|
||||||
|
|
@ -170,7 +170,7 @@ services:
|
||||||
* `GET` - Request
|
* `GET` - Request
|
||||||
* Endpunkt: `/api/v1/cart/list`
|
* Endpunkt: `/api/v1/cart/list`
|
||||||
* Erforderlicher Token wird als Bearer - Token im Autorizationheader mitgeschickt.
|
* Erforderlicher Token wird als Bearer - Token im Autorizationheader mitgeschickt.
|
||||||
* Im Erfolgsfall wird der Statuscode `200` und folgende Daten zurückgegeben: `[{"id": 1, "name": "Maturaball HTL Steyr 2024", "from": "02.03.2024 19:00", "to": "03.03.2024 05:00", "description": "Bester Ball der HTL Steyr", "tickets": [{"id": 1, "name": "A", "price": 25, "amount": 2}, {"id": 2, "name": "B", "price": 22, "amount": 1}]}, {"id": 2, "name": "Frühjahrskonzert der HTL Steyr", "from": "09.04.2024 19:00", "to": "09.04.2024 21:00", "description": "Konzert des Schulorchestersr", "tickets": [{"id": 4, "name": "A", "price": 12, "amount": 2}]}]`
|
* Im Erfolgsfall wird der Statuscode `200` und folgende Daten zurückgegeben: `[{"id": 1, "name": "Maturaball HTL Steyr 2024", "from": "02.03.2024 19:00", "to": "03.03.2024 05:00", "description": "Bester Ball der HTL Steyr", "cartEntries": [{"id": 1, "name": "A", "price": 25, "amount": 2}, {"id": 2, "name": "B", "price": 22, "amount": 1}]}, {"id": 2, "name": "Frühjahrskonzert der HTL Steyr", "from": "09.04.2024 19:00", "to": "09.04.2024 21:00", "description": "Konzert des Schulorchestersr", "cartEntries": [{"id": 4, "name": "A", "price": 12, "amount": 2}]}]`
|
||||||
* Bei Misserfolg wird der Statuscode `400` / `401` zurückgebeben.
|
* Bei Misserfolg wird der Statuscode `400` / `401` zurückgebeben.
|
||||||
|
|
||||||
### Tickets kaufen
|
### Tickets kaufen
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
package me.jweissen.aeticket.controller;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.EventRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.EventUpdateRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.EventResponseDto;
|
||||||
|
import me.jweissen.aeticket.service.EventService;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/event")
|
||||||
|
public class EventController {
|
||||||
|
private final EventService eventService;
|
||||||
|
|
||||||
|
public EventController(EventService eventService) {
|
||||||
|
this.eventService = eventService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResponseEntity<Void> create(@RequestBody EventRequestDto event) {
|
||||||
|
// TODO admin only
|
||||||
|
eventService.create(event);
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
public ResponseEntity<Void> update(@RequestBody EventUpdateRequestDto event) {
|
||||||
|
// TODO admin only
|
||||||
|
// eventService.update(event);
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
public ResponseEntity<Void> delete(@PathVariable Integer id) {
|
||||||
|
// TODO admin only
|
||||||
|
eventService.delete(id);
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public ResponseEntity<EventResponseDto> getById(@PathVariable Integer id) {
|
||||||
|
eventService.getById();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
package me.jweissen.aeticket.controller;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.UserRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.UserUpdateRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.SignupResponseDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.UserResponseDto;
|
||||||
|
import me.jweissen.aeticket.service.UserService;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/user")
|
||||||
|
public class UserController {
|
||||||
|
private final UserService userService;
|
||||||
|
|
||||||
|
public UserController(UserService userService) {
|
||||||
|
this.userService = userService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/signup")
|
||||||
|
public ResponseEntity<SignupResponseDto> signUp(@RequestBody UserRequestDto user) {
|
||||||
|
// TODO
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/signin")
|
||||||
|
public ResponseEntity<SignupResponseDto> signIn(@RequestBody LoginRequestDto user) {
|
||||||
|
// TODO
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
public ResponseEntity<Void> update(@RequestBody UserUpdateRequestDto user) {
|
||||||
|
// TODO admin only
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
public ResponseEntity<Void> delete(@PathVariable Integer id) {
|
||||||
|
userService.delete(id);
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
public ResponseEntity<List<UserResponseDto>> getAll() {
|
||||||
|
// TODO admin only
|
||||||
|
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
|
public record CategoryRequestDto(String name, int price, int stock) {
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,12 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
public record EventRequestDto() {
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public record EventRequestDto(
|
||||||
|
String name,
|
||||||
|
Date from,
|
||||||
|
Date to,
|
||||||
|
String description,
|
||||||
|
List<CategoryRequestDto> ticketCategories) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
|
public record EventUpdateRequestDto() {
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
public record LoginRequestDto() {
|
public record LoginRequestDto(String email, String password) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package me.jweissen.aeticket.dto.request;public class TicketCategoryRequestDto {
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
public record UserRequestDto() {
|
public record UserRequestDto(String email, String password, String firstname, String lastname) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
|
public record UserUpdateRequestDto(Integer id, String name, String email) {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
public record CartEntryResponseDto(Integer id, String name, Double price, Integer amount) {
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package me.jweissen.aeticket.dto.response;
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public record CartEventResponseDto(
|
public record CartEventResponseDto(
|
||||||
int id,
|
int id,
|
||||||
String name,
|
String name,
|
||||||
String from,
|
Date from,
|
||||||
String to,
|
Date to,
|
||||||
String description,
|
String description,
|
||||||
List<TicketResponseDto> tickets) {
|
List<CartEntryResponseDto> cartEntries) {
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
public record CategoryResponseDto(int id, String name, int price, int stock) {
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.response;
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
public class CheckoutResponseDto {
|
public record CheckoutResponseDto(double price) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public record EventResponseDto(
|
public record EventResponseDto(
|
||||||
int id,
|
int id,
|
||||||
String name,
|
String name,
|
||||||
String from,
|
Date from,
|
||||||
String to,
|
Date to,
|
||||||
String description,
|
String description,
|
||||||
List<TicketCategoryResponseDto> ticketCategories) {
|
List<CategoryResponseDto> ticketCategories) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
public record SignupResponseDto(String token) {
|
||||||
|
}
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package me.jweissen.aeticket.dto.response;public class TicketCategoryResponseDto {
|
|
||||||
}
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package me.jweissen.aeticket.dto.response;public record TicketResponseDto() {
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.response;
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
public record UserResponseDto() {
|
public record UserResponseDto(int id, String firstname, String lastname, String email) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,25 @@
|
||||||
package me.jweissen.aeticket.model;
|
package me.jweissen.aeticket.model;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
public class Cart {
|
public class Cart {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "cart")
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private List<CartEntry> cartEntries;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private User user;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
26
src/main/java/me/jweissen/aeticket/model/CartEntry.java
Normal file
26
src/main/java/me/jweissen/aeticket/model/CartEntry.java
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.jweissen.aeticket.model;
|
||||||
|
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class CartEntry {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private Cart cart;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private Category category;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
private int amount;
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,8 @@ import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table
|
@Table
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -26,4 +28,7 @@ public class Category {
|
||||||
@JoinColumn(nullable = false)
|
@JoinColumn(nullable = false)
|
||||||
private Event event;
|
private Event event;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "category")
|
||||||
|
@JoinColumn
|
||||||
|
private List<CartEntry> cartEntries;
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
package me.jweissen.aeticket.model;
|
package me.jweissen.aeticket.model;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.*;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
@ -12,21 +11,28 @@ import java.util.List;
|
||||||
@Table
|
@Table
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class Event {
|
public class Event {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private Date start;
|
private Date start;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private Date end;
|
private Date end;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "event")
|
@OneToMany(mappedBy = "event")
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
package me.jweissen.aeticket.model;
|
|
||||||
|
|
||||||
public class Ticket {
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,11 @@ package me.jweissen.aeticket.model;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.NonNull;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table
|
@Table
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -14,11 +17,26 @@ public class User {
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private String firstname;
|
private String firstname;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private String lastname;
|
private String lastname;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
@Column(nullable = false)
|
||||||
|
@NonNull
|
||||||
|
private Boolean admin;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "user")
|
||||||
|
@JoinColumn(nullable = false)
|
||||||
|
private List<Cart> carts;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package me.jweissen.aeticket.repository;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.model.CartEntry;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface CartEntryRepository extends JpaRepository<CartEntry, Integer> {
|
||||||
|
@Query("SELECT ce FROM CartEntry ce WHERE ce.cart.id = :cartId AND ce.category.event.id = :eventId")
|
||||||
|
List<CartEntry> getByCartAndEvent(@Param("cartId") Integer cartId, @Param("eventId") Integer eventId);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package me.jweissen.aeticket.repository;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.model.Cart;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface CartRepository extends JpaRepository<Cart, Integer> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package me.jweissen.aeticket.repository;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.model.Category;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface CategoryRepository extends JpaRepository<Category, Integer> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package me.jweissen.aeticket.repository;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.model.Event;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface EventRepository extends JpaRepository<Event, Integer> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package me.jweissen.aeticket.repository;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.model.User;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface UserRepository extends JpaRepository<User, Integer> {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.response.CartEntryResponseDto;
|
||||||
|
import me.jweissen.aeticket.model.CartEntry;
|
||||||
|
import me.jweissen.aeticket.model.Category;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CartEntryService {
|
||||||
|
public static CartEntryResponseDto toDto(CartEntry cartEntry) {
|
||||||
|
Category category = cartEntry.getCategory();
|
||||||
|
return new CartEntryResponseDto(
|
||||||
|
category.getId(),
|
||||||
|
category.getName(),
|
||||||
|
category.getPrice(),
|
||||||
|
cartEntry.getAmount()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<CartEntryResponseDto> toDtos(List<CartEntry> cartEntries) {
|
||||||
|
return cartEntries.stream().map(CartEntryService::toDto).toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,2 +1,34 @@
|
||||||
package me.jweissen.aeticket.service;public class CartService {
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.response.CartEventResponseDto;
|
||||||
|
import me.jweissen.aeticket.model.Cart;
|
||||||
|
import me.jweissen.aeticket.model.Event;
|
||||||
|
import me.jweissen.aeticket.repository.CartEntryRepository;
|
||||||
|
import me.jweissen.aeticket.repository.CartRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class CartService {
|
||||||
|
private final CartRepository cartRepository;
|
||||||
|
private final CartEntryRepository cartEntryRepository;
|
||||||
|
|
||||||
|
public CartService(CartRepository cartRepository, CartEntryRepository cartEntryRepository) {
|
||||||
|
this.cartRepository = cartRepository;
|
||||||
|
this.cartEntryRepository = cartEntryRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<CartEventResponseDto> toDto(Cart cart) {
|
||||||
|
List<Event> distinctEvents = cart.getCartEntries().stream().map(entry -> entry.getCategory().getEvent()).distinct().toList();
|
||||||
|
return distinctEvents.stream().map(event ->
|
||||||
|
new CartEventResponseDto(
|
||||||
|
event.getId(),
|
||||||
|
event.getTitle(),
|
||||||
|
event.getStart(),
|
||||||
|
event.getEnd(),
|
||||||
|
event.getDescription(),
|
||||||
|
CartEntryService.toDtos(cartEntryRepository.getByCartAndEvent(cart.getId(), event.getId()))
|
||||||
|
)).toList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,52 @@
|
||||||
package me.jweissen.aeticket.service;public class EventService {
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.EventRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.EventUpdateRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.EventResponseDto;
|
||||||
|
import me.jweissen.aeticket.model.Event;
|
||||||
|
import me.jweissen.aeticket.repository.EventRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class EventService {
|
||||||
|
private final EventRepository eventRepository;
|
||||||
|
|
||||||
|
public EventService(EventRepository eventRepository) {
|
||||||
|
this.eventRepository = eventRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Event fromDto(EventRequestDto dto) {
|
||||||
|
return Event.builder()
|
||||||
|
.title(dto.name())
|
||||||
|
.description(dto.description())
|
||||||
|
.start(dto.from())
|
||||||
|
.end(dto.to())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EventResponseDto toDto(Event event) {
|
||||||
|
return new EventResponseDto(
|
||||||
|
event.getId(),
|
||||||
|
event.getTitle(),
|
||||||
|
event.getStart(),
|
||||||
|
event.getEnd(),
|
||||||
|
event.getDescription(),
|
||||||
|
event.getCategories()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public void create(EventRequestDto event) {
|
||||||
|
eventRepository.save(EventService.fromDto(event));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(EventUpdateRequestDto event) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(Integer id) {
|
||||||
|
eventRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EventResponseDto getById(Integer id) {
|
||||||
|
return eventRepository.getReferenceById(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,38 @@
|
||||||
package me.jweissen.aeticket.service;public class UserService {
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.response.UserResponseDto;
|
||||||
|
import me.jweissen.aeticket.model.User;
|
||||||
|
import me.jweissen.aeticket.repository.UserRepository;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class UserService {
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
|
public UserService(UserRepository userRepository) {
|
||||||
|
this.userRepository = userRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UserResponseDto toDto(User user) {
|
||||||
|
return new UserResponseDto(
|
||||||
|
user.getId(),
|
||||||
|
user.getFirstname(),
|
||||||
|
user.getLastname(),
|
||||||
|
user.getEmail()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<UserResponseDto> toDtos(List<User> users) {
|
||||||
|
return users.stream().map(UserService::toDto).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UserResponseDto> getAll() {
|
||||||
|
return UserService.toDtos(userRepository.findAll());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(Integer id) {
|
||||||
|
userRepository.deleteById(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue