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>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
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.CheckoutResponseDto;
|
||||
import me.jweissen.aeticket.service.CartService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
|
@ -20,16 +22,21 @@ public class CartController {
|
|||
this.cartService = cartService;
|
||||
}
|
||||
|
||||
/*@GetMapping("/list")
|
||||
public ResponseEntity<List<CartEntryResponseDto>> getCartEntries() {
|
||||
return cartService.get
|
||||
}*/
|
||||
|
||||
@PostMapping("/add")
|
||||
public ResponseEntity<Void> addEntry() {
|
||||
|
||||
public ResponseEntity<Void> addEntry(CartAddRequestDto dto) {
|
||||
// TODO
|
||||
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;
|
||||
|
||||
import me.jweissen.aeticket.aspect.Permissions;
|
||||
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
||||
import me.jweissen.aeticket.dto.request.UserUpdateRequestDto;
|
||||
|
|
@ -51,6 +52,7 @@ public class UserController {
|
|||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@Permissions(user = false)
|
||||
public ResponseEntity<List<UserResponseDto>> getAll() {
|
||||
// TODO admin only
|
||||
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
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;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -11,6 +9,10 @@ import java.util.List;
|
|||
@Table
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class Category {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
|
|
|||
|
|
@ -3,5 +3,5 @@ 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> {
|
||||
public interface CategoryRepository extends JpaRepository<Category, Long> {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,32 @@
|
|||
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.EventResponseDto;
|
||||
import me.jweissen.aeticket.model.Category;
|
||||
import me.jweissen.aeticket.repository.CategoryRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
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) {
|
||||
return new CategoryResponseDto(
|
||||
category.getId(),
|
||||
|
|
@ -24,4 +43,38 @@ public class CategoryService {
|
|||
public static Double centsToEuros(int cents) {
|
||||
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