diff --git a/src/main/java/me/jweissen/aeticket/controller/CartController.java b/src/main/java/me/jweissen/aeticket/controller/CartController.java new file mode 100644 index 0000000..fb9930b --- /dev/null +++ b/src/main/java/me/jweissen/aeticket/controller/CartController.java @@ -0,0 +1,23 @@ +package me.jweissen.aeticket.controller; + +import me.jweissen.aeticket.service.CartService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/cart") +public class CartController { + private final CartService cartService; + + public CartController(CartService cartService) { + this.cartService = cartService; + } + + @PostMapping("/add") + public ResponseEntity addEntry() { + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/src/main/java/me/jweissen/aeticket/controller/EventController.java b/src/main/java/me/jweissen/aeticket/controller/EventController.java index 04b0224..b377313 100644 --- a/src/main/java/me/jweissen/aeticket/controller/EventController.java +++ b/src/main/java/me/jweissen/aeticket/controller/EventController.java @@ -8,6 +8,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/event") public class EventController { @@ -17,6 +19,16 @@ public class EventController { this.eventService = eventService; } + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + return new ResponseEntity<>(eventService.getById(id), HttpStatus.OK); + } + + @GetMapping("/list") + public ResponseEntity> getAllFuture() { + return new ResponseEntity<>(eventService.getAllFuture(), HttpStatus.OK); + } + @PostMapping("/add") public ResponseEntity create(@RequestBody EventRequestDto event) { // TODO admin only @@ -37,9 +49,4 @@ public class EventController { eventService.delete(id); return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); } - - @GetMapping("/{id}") - public ResponseEntity getById(@PathVariable Integer id) { - eventService.getById(); - } } diff --git a/src/main/java/me/jweissen/aeticket/dto/request/CartAddRequestDto.java b/src/main/java/me/jweissen/aeticket/dto/request/CartAddRequestDto.java new file mode 100644 index 0000000..d1dca5d --- /dev/null +++ b/src/main/java/me/jweissen/aeticket/dto/request/CartAddRequestDto.java @@ -0,0 +1,6 @@ +package me.jweissen.aeticket.dto.request; + +import java.util.List; + +public record CartAddRequestDto(Long id, List cartEntries) { +} diff --git a/src/main/java/me/jweissen/aeticket/dto/request/CartEntryRequestDto.java b/src/main/java/me/jweissen/aeticket/dto/request/CartEntryRequestDto.java new file mode 100644 index 0000000..d11e9fd --- /dev/null +++ b/src/main/java/me/jweissen/aeticket/dto/request/CartEntryRequestDto.java @@ -0,0 +1,4 @@ +package me.jweissen.aeticket.dto.request; + +public record CartEntryRequestDto(Long id, Integer amount) { +} diff --git a/src/main/java/me/jweissen/aeticket/dto/response/CategoryResponseDto.java b/src/main/java/me/jweissen/aeticket/dto/response/CategoryResponseDto.java index fb5386a..6a1c22a 100644 --- a/src/main/java/me/jweissen/aeticket/dto/response/CategoryResponseDto.java +++ b/src/main/java/me/jweissen/aeticket/dto/response/CategoryResponseDto.java @@ -1,4 +1,4 @@ package me.jweissen.aeticket.dto.response; -public record CategoryResponseDto(int id, String name, int price, int stock) { +public record CategoryResponseDto(Long id, String name, Double price, Integer stock) { } diff --git a/src/main/java/me/jweissen/aeticket/dto/response/EventResponseDto.java b/src/main/java/me/jweissen/aeticket/dto/response/EventResponseDto.java index 5876852..abc3279 100644 --- a/src/main/java/me/jweissen/aeticket/dto/response/EventResponseDto.java +++ b/src/main/java/me/jweissen/aeticket/dto/response/EventResponseDto.java @@ -4,7 +4,7 @@ import java.util.Date; import java.util.List; public record EventResponseDto( - int id, + Long id, String name, Date from, Date to, diff --git a/src/main/java/me/jweissen/aeticket/model/Category.java b/src/main/java/me/jweissen/aeticket/model/Category.java index deb9c58..d8ec6d1 100644 --- a/src/main/java/me/jweissen/aeticket/model/Category.java +++ b/src/main/java/me/jweissen/aeticket/model/Category.java @@ -2,6 +2,7 @@ package me.jweissen.aeticket.model; import jakarta.persistence.*; import lombok.Getter; +import lombok.NonNull; import lombok.Setter; import java.util.List; @@ -13,16 +14,19 @@ import java.util.List; public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; + private Long id; @Column(nullable = false) + @NonNull private String name; @Column(nullable = false) - private Double price; + @NonNull + private Integer price; @Column(nullable = false) - private int stock; + @NonNull + private Integer stock; @ManyToOne(optional = false) @JoinColumn(nullable = false) diff --git a/src/main/java/me/jweissen/aeticket/model/Event.java b/src/main/java/me/jweissen/aeticket/model/Event.java index 3e19039..b597b3c 100644 --- a/src/main/java/me/jweissen/aeticket/model/Event.java +++ b/src/main/java/me/jweissen/aeticket/model/Event.java @@ -17,7 +17,7 @@ import java.util.List; public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; + private Long id; @Column(nullable = false) @NonNull diff --git a/src/main/java/me/jweissen/aeticket/repository/EventRepository.java b/src/main/java/me/jweissen/aeticket/repository/EventRepository.java index 68af5a8..c4812dc 100644 --- a/src/main/java/me/jweissen/aeticket/repository/EventRepository.java +++ b/src/main/java/me/jweissen/aeticket/repository/EventRepository.java @@ -2,6 +2,11 @@ package me.jweissen.aeticket.repository; import me.jweissen.aeticket.model.Event; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; public interface EventRepository extends JpaRepository { + @Query("SELECT e FROM Event e WHERE e.start > CURRENT_TIMESTAMP") + List findAllFuture(); } diff --git a/src/main/java/me/jweissen/aeticket/service/CategoryService.java b/src/main/java/me/jweissen/aeticket/service/CategoryService.java new file mode 100644 index 0000000..7b44853 --- /dev/null +++ b/src/main/java/me/jweissen/aeticket/service/CategoryService.java @@ -0,0 +1,23 @@ +package me.jweissen.aeticket.service; + +import me.jweissen.aeticket.dto.response.CategoryResponseDto; +import me.jweissen.aeticket.model.Category; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class CategoryService { + public static CategoryResponseDto toDto(Category category) { + return new CategoryResponseDto( + category.getId(), + category.getName(), + category.getPrice() / 100.0, + category.getStock() + ); + } + + public static List toDtos(List categories) { + return categories.stream().map(CategoryService::toDto).toList(); + } +} diff --git a/src/main/java/me/jweissen/aeticket/service/EventService.java b/src/main/java/me/jweissen/aeticket/service/EventService.java index ee796c4..e2e6670 100644 --- a/src/main/java/me/jweissen/aeticket/service/EventService.java +++ b/src/main/java/me/jweissen/aeticket/service/EventService.java @@ -7,6 +7,8 @@ import me.jweissen.aeticket.model.Event; import me.jweissen.aeticket.repository.EventRepository; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class EventService { private final EventRepository eventRepository; @@ -31,8 +33,12 @@ public class EventService { event.getStart(), event.getEnd(), event.getDescription(), - event.getCategories() - ) + CategoryService.toDtos(event.getCategories()) + ); + } + + public static List toDtos(List events) { + return events.stream().map(EventService::toDto).toList(); } public void create(EventRequestDto event) { @@ -47,6 +53,10 @@ public class EventService { } public EventResponseDto getById(Integer id) { - return eventRepository.getReferenceById(id); + return EventService.toDto(eventRepository.getReferenceById(id)); + } + + public List getAllFuture() { + return EventService.toDtos(eventRepository.findAllFuture()); } }