rewo
This commit is contained in:
parent
f4d04f9a04
commit
fc372073f3
11 changed files with 176 additions and 24 deletions
|
|
@ -1,12 +0,0 @@
|
||||||
### signup
|
|
||||||
POST {{url}}/user/signup
|
|
||||||
Content-Type: application/json
|
|
||||||
|
|
||||||
{
|
|
||||||
"email": "ratp@htl-steyr.ac.at",
|
|
||||||
"password": "test",
|
|
||||||
"firstname": "Peter",
|
|
||||||
"lastname": "Rathgeb"
|
|
||||||
}
|
|
||||||
|
|
||||||
###
|
|
||||||
31
http-requests/user.http
Normal file
31
http-requests/user.http
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
### signup
|
||||||
|
POST {{url}}/user/signup
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"email": "ratp@htl-steyr.ac.at",
|
||||||
|
"password": "test",
|
||||||
|
"firstname": "Peter",
|
||||||
|
"lastname": "Rathgeb"
|
||||||
|
}
|
||||||
|
|
||||||
|
### signin
|
||||||
|
GET {{url}}/user/signin
|
||||||
|
|
||||||
|
### update
|
||||||
|
PUT {{url}}/user/update
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
### delete
|
||||||
|
DELETE {{url}}/user/delete/99
|
||||||
|
|
||||||
|
### list
|
||||||
|
GET {{url}}/user/list
|
||||||
|
|
||||||
|
### load
|
||||||
|
GET {{url}}/user/load/1
|
||||||
|
|
||||||
|
# eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZXRpY2tldCB1c2VyIHRva2VuIiwiZXhwIjoxNzAzMDU4MjczLCJ1c2VySWQiOjEsImlhdCI6MTcwMjk3MTg3M30.hC1N7hKYSIT-fqmaZ9bv3-YXOxQWdp-Sb5rZi4rARc0
|
||||||
5
pom.xml
5
pom.xml
|
|
@ -45,6 +45,11 @@
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springdoc</groupId>
|
||||||
|
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||||
|
<version>2.2.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package me.jweissen.aeticket.controller;
|
package me.jweissen.aeticket.controller;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.CartAddRequestDto;
|
||||||
import me.jweissen.aeticket.dto.response.CartEntryResponseDto;
|
import me.jweissen.aeticket.dto.response.CartEntryResponseDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.CheckoutResponseDto;
|
||||||
import me.jweissen.aeticket.service.CartService;
|
import me.jweissen.aeticket.service.CartService;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|
@ -20,16 +22,21 @@ public class CartController {
|
||||||
this.cartService = cartService;
|
this.cartService = cartService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*@GetMapping("/list")
|
|
||||||
public ResponseEntity<List<CartEntryResponseDto>> getCartEntries() {
|
|
||||||
return cartService.get
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public ResponseEntity<Void> addEntry() {
|
public ResponseEntity<Void> addEntry(CartAddRequestDto dto) {
|
||||||
|
// TODO
|
||||||
return ResponseEntity.noContent().build();
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
public ResponseEntity<List<CartEntryResponseDto>> getCartEntries() {
|
||||||
|
// TODO
|
||||||
|
return new ResponseEntity<>(null, HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/checkout")
|
||||||
|
public ResponseEntity<CheckoutResponseDto> checkout() {
|
||||||
|
// TODO
|
||||||
|
return ResponseEntity.badRequest().build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
package me.jweissen.aeticket.controller;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.CategoryRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.CategoryUpdateRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.EventRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.EventUpdateRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.CategoryResponseDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.EventResponseDto;
|
||||||
|
import me.jweissen.aeticket.service.CategoryService;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/eventcategory")
|
||||||
|
public class CategoryController {
|
||||||
|
private final CategoryService categoryService;
|
||||||
|
|
||||||
|
public CategoryController(CategoryService categoryService) {
|
||||||
|
this.categoryService = categoryService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
public ResponseEntity<Void> create(@RequestBody CategoryRequestDto dto) {
|
||||||
|
// TODO admin only
|
||||||
|
categoryService.create(dto);
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
public ResponseEntity<Void> update(@RequestBody CategoryUpdateRequestDto dto) {
|
||||||
|
// TODO admin only
|
||||||
|
if (!categoryService.update(dto)) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete/{id}")
|
||||||
|
public ResponseEntity<Void> delete(@PathVariable Long id) {
|
||||||
|
// TODO admin only
|
||||||
|
categoryService.delete(id);
|
||||||
|
return ResponseEntity.noContent().build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public ResponseEntity<CategoryResponseDto> getById(@PathVariable Long id) {
|
||||||
|
return categoryService.getById(id)
|
||||||
|
.map(categoryResponseDto -> new ResponseEntity<>(categoryResponseDto, HttpStatus.OK))
|
||||||
|
.orElseGet(() -> ResponseEntity.notFound().build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
public ResponseEntity<List<CategoryResponseDto>> getAll() {
|
||||||
|
return new ResponseEntity<>(categoryService.getAll(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package me.jweissen.aeticket.controller;
|
package me.jweissen.aeticket.controller;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.aspect.Permissions;
|
||||||
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||||
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
||||||
import me.jweissen.aeticket.dto.request.UserUpdateRequestDto;
|
import me.jweissen.aeticket.dto.request.UserUpdateRequestDto;
|
||||||
|
|
@ -51,6 +52,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
|
@Permissions(user = false)
|
||||||
public ResponseEntity<List<UserResponseDto>> getAll() {
|
public ResponseEntity<List<UserResponseDto>> getAll() {
|
||||||
// TODO admin only
|
// TODO admin only
|
||||||
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
public record CategoryRequestDto(String name, int price, int stock) {
|
public record CategoryRequestDto(String name, Double price, Integer stock) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
|
public record CategoryUpdateRequestDto(Long id, String name, Double price, Integer stock) {
|
||||||
|
}
|
||||||
|
|
@ -1,9 +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.NonNull;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -11,6 +9,10 @@ import java.util.List;
|
||||||
@Table
|
@Table
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
public class Category {
|
public class Category {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,5 @@ package me.jweissen.aeticket.repository;
|
||||||
import me.jweissen.aeticket.model.Category;
|
import me.jweissen.aeticket.model.Category;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
public interface CategoryRepository extends JpaRepository<Category, Integer> {
|
public interface CategoryRepository extends JpaRepository<Category, Long> {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,32 @@
|
||||||
package me.jweissen.aeticket.service;
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.CategoryRequestDto;
|
||||||
|
import me.jweissen.aeticket.dto.request.CategoryUpdateRequestDto;
|
||||||
import me.jweissen.aeticket.dto.response.CategoryResponseDto;
|
import me.jweissen.aeticket.dto.response.CategoryResponseDto;
|
||||||
|
import me.jweissen.aeticket.dto.response.EventResponseDto;
|
||||||
import me.jweissen.aeticket.model.Category;
|
import me.jweissen.aeticket.model.Category;
|
||||||
|
import me.jweissen.aeticket.repository.CategoryRepository;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CategoryService {
|
public class CategoryService {
|
||||||
|
private final CategoryRepository categoryRepository;
|
||||||
|
|
||||||
|
public CategoryService(CategoryRepository categoryRepository) {
|
||||||
|
this.categoryRepository = categoryRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Category fromDto(CategoryRequestDto dto) {
|
||||||
|
return new Category(
|
||||||
|
dto.name(),
|
||||||
|
eurosToCents(dto.price()),
|
||||||
|
dto.stock()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static CategoryResponseDto toDto(Category category) {
|
public static CategoryResponseDto toDto(Category category) {
|
||||||
return new CategoryResponseDto(
|
return new CategoryResponseDto(
|
||||||
category.getId(),
|
category.getId(),
|
||||||
|
|
@ -24,4 +43,38 @@ public class CategoryService {
|
||||||
public static Double centsToEuros(int cents) {
|
public static Double centsToEuros(int cents) {
|
||||||
return cents / 100.0;
|
return cents / 100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Integer eurosToCents(Double euros) {
|
||||||
|
return (Double.valueOf(euros * 100)).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public CategoryResponseDto create(CategoryRequestDto dto) {
|
||||||
|
Category category = categoryRepository.save(fromDto(dto));
|
||||||
|
return toDto(category);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean update(CategoryUpdateRequestDto dto) {
|
||||||
|
return categoryRepository.findById(dto.id())
|
||||||
|
.map(category -> {
|
||||||
|
category.setName(dto.name());
|
||||||
|
category.setPrice(eurosToCents(dto.price()));
|
||||||
|
category.setStock(dto.stock());
|
||||||
|
categoryRepository.save(category);
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.orElse(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(Long id) {
|
||||||
|
categoryRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Optional<CategoryResponseDto> getById(Long id) {
|
||||||
|
return categoryRepository.findById(id).map(CategoryService::toDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<CategoryResponseDto> getAll() {
|
||||||
|
return toDtos(categoryRepository.findAll());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue