Add: missing @RequestBody annotations in some controllers as well as some missing fields in entities.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package net.miarma.backend.huertos.controller;
|
||||
|
||||
import net.miarma.backend.huertos.dto.BalanceDto;
|
||||
import net.miarma.backend.huertos.dto.view.VBalanceWithTotalsDto;
|
||||
import net.miarma.backend.huertos.mapper.BalanceMapper;
|
||||
import net.miarma.backend.huertos.mapper.view.VBalanceWithTotalsMapper;
|
||||
import net.miarma.backend.huertos.model.Balance;
|
||||
import net.miarma.backend.huertos.service.BalanceService;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -27,6 +29,12 @@ public class BalanceController {
|
||||
return ResponseEntity.ok(BalanceMapper.toDto(balance));
|
||||
}
|
||||
|
||||
@GetMapping("/with-totals")
|
||||
@PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')")
|
||||
public ResponseEntity<VBalanceWithTotalsDto> getWithTotals() {
|
||||
return ResponseEntity.ok(VBalanceWithTotalsMapper.toDto(balanceService.getWithTotals()));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')")
|
||||
public ResponseEntity<BalanceDto> setBalance(BalanceDto dto) {
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ExpenseController {
|
||||
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')")
|
||||
public ResponseEntity<ExpenseDto.Response> create(ExpenseDto.Request dto) {
|
||||
public ResponseEntity<ExpenseDto.Response> create(@RequestBody ExpenseDto.Request dto) {
|
||||
return ResponseEntity.ok(
|
||||
ExpenseMapper.toResponse(
|
||||
expenseService.create(
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package net.miarma.backend.huertos.controller;
|
||||
|
||||
import net.miarma.backend.huertos.dto.ExpenseDto;
|
||||
import net.miarma.backend.huertos.dto.IncomeDto;
|
||||
import net.miarma.backend.huertos.dto.view.VIncomesWithFullNamesDto;
|
||||
import net.miarma.backend.huertos.mapper.ExpenseMapper;
|
||||
import net.miarma.backend.huertos.dto.view.VIncomesWithInfoDto;
|
||||
import net.miarma.backend.huertos.mapper.IncomeMapper;
|
||||
import net.miarma.backend.huertos.mapper.view.VIncomesWithFullNamesMapper;
|
||||
import net.miarma.backend.huertos.mapper.view.VIncomesWithInfoMapper;
|
||||
import net.miarma.backend.huertos.model.Income;
|
||||
import net.miarma.backend.huertos.service.HuertosUserMetadataService;
|
||||
import net.miarma.backend.huertos.service.IncomeService;
|
||||
import net.miarma.backend.huertos.service.view.VIncomesWithFullNamesService;
|
||||
import net.miarma.backend.huertos.service.view.VIncomesWithInfoService;
|
||||
import net.miarma.backlib.security.JwtService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -23,12 +22,12 @@ import java.util.UUID;
|
||||
@RequestMapping("/incomes")
|
||||
public class IncomeController {
|
||||
private IncomeService incomeService;
|
||||
private VIncomesWithFullNamesService vIncomesWithFullNamesService;
|
||||
private VIncomesWithInfoService vIncomesWithInfoService;
|
||||
private JwtService jwtService;
|
||||
|
||||
public IncomeController(IncomeService incomeService, VIncomesWithFullNamesService vIncomesWithFullNamesService, JwtService jwtService) {
|
||||
public IncomeController(IncomeService incomeService, VIncomesWithInfoService vIncomesWithInfoService, JwtService jwtService) {
|
||||
this.incomeService = incomeService;
|
||||
this.vIncomesWithFullNamesService = vIncomesWithFullNamesService;
|
||||
this.vIncomesWithInfoService = vIncomesWithInfoService;
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
@@ -43,13 +42,13 @@ public class IncomeController {
|
||||
);
|
||||
}
|
||||
|
||||
@GetMapping("/with-names")
|
||||
@GetMapping("/with-info")
|
||||
@PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')")
|
||||
public ResponseEntity<List<VIncomesWithFullNamesDto>> getAllWithNames() {
|
||||
public ResponseEntity<List<VIncomesWithInfoDto>> getAllWithInfo() {
|
||||
return ResponseEntity.ok(
|
||||
vIncomesWithFullNamesService.getAll()
|
||||
vIncomesWithInfoService.getAll()
|
||||
.stream()
|
||||
.map(VIncomesWithFullNamesMapper::toResponse)
|
||||
.map(VIncomesWithInfoMapper::toResponse)
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
@@ -79,7 +78,7 @@ public class IncomeController {
|
||||
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')")
|
||||
public ResponseEntity<IncomeDto.Response> create(IncomeDto.Request dto) {
|
||||
public ResponseEntity<IncomeDto.Response> create(@RequestBody IncomeDto.Request dto) {
|
||||
return ResponseEntity.ok(
|
||||
IncomeMapper.toResponse(
|
||||
incomeService.create(
|
||||
|
||||
@@ -52,10 +52,10 @@ public class RequestController {
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<RequestDto.Response> create(RequestDto.Request dto) {
|
||||
public ResponseEntity<RequestDto.Response> create(@RequestBody RequestDto.Request dto) {
|
||||
return ResponseEntity.ok(
|
||||
RequestMapper.toResponse(
|
||||
requestService.createWaitlist(
|
||||
requestService.create(
|
||||
RequestMapper.toEntity(dto)
|
||||
)));
|
||||
}
|
||||
|
||||
@@ -7,11 +7,20 @@ import java.util.UUID;
|
||||
public class IncomeDto {
|
||||
public static class Request {
|
||||
private UUID userId;
|
||||
private Integer memberNumber;
|
||||
private String concept;
|
||||
private BigDecimal amount;
|
||||
private Byte type;
|
||||
private Byte frequency;
|
||||
|
||||
public Integer getMemberNumber() {
|
||||
return memberNumber;
|
||||
}
|
||||
|
||||
public void setMemberNumber(Integer memberNumber) {
|
||||
this.memberNumber = memberNumber;
|
||||
}
|
||||
|
||||
public UUID getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
@@ -4,10 +4,11 @@ import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
||||
public class VIncomesWithFullNamesDto {
|
||||
public class VIncomesWithInfoDto {
|
||||
private UUID incomeId;
|
||||
private UUID userId;
|
||||
private String displayName;
|
||||
private Integer memberNumber;
|
||||
private String concept;
|
||||
private BigDecimal amount;
|
||||
private Byte type;
|
||||
@@ -34,6 +35,14 @@ public class VIncomesWithFullNamesDto {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public Integer getMemberNumber() {
|
||||
return memberNumber;
|
||||
}
|
||||
|
||||
public void setMemberNumber(Integer memberNumber) {
|
||||
this.memberNumber = memberNumber;
|
||||
}
|
||||
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
@@ -1,15 +1,16 @@
|
||||
package net.miarma.backend.huertos.mapper.view;
|
||||
|
||||
import net.miarma.backend.huertos.dto.view.VIncomesWithFullNamesDto;
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithFullNames;
|
||||
import net.miarma.backend.huertos.dto.view.VIncomesWithInfoDto;
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithInfo;
|
||||
|
||||
public class VIncomesWithFullNamesMapper {
|
||||
public class VIncomesWithInfoMapper {
|
||||
|
||||
public static VIncomesWithFullNamesDto toResponse(VIncomesWithFullNames entity) {
|
||||
VIncomesWithFullNamesDto dto = new VIncomesWithFullNamesDto();
|
||||
public static VIncomesWithInfoDto toResponse(VIncomesWithInfo entity) {
|
||||
VIncomesWithInfoDto dto = new VIncomesWithInfoDto();
|
||||
dto.setIncomeId(entity.getIncomeId());
|
||||
dto.setUserId(entity.getUserId());
|
||||
dto.setDisplayName(entity.getDisplayName());
|
||||
dto.setMemberNumber(entity.getMemberNumber());
|
||||
dto.setConcept(entity.getConcept());
|
||||
dto.setAmount(entity.getAmount());
|
||||
dto.setType(entity.getType());
|
||||
@@ -24,10 +24,16 @@ public class Request {
|
||||
private Byte status;
|
||||
|
||||
@Column(name = "requested_by", columnDefinition = "BINARY(16)")
|
||||
private UUID requestedBy;
|
||||
private byte[] requestedByBin;
|
||||
|
||||
@Transient
|
||||
private UUID requestedBy;
|
||||
|
||||
@Column(name = "target_user_id", columnDefinition = "BINARY(16)")
|
||||
private UUID targetUserId;
|
||||
private byte[] targetUserIdBin;
|
||||
|
||||
@Transient
|
||||
private UUID targetUserId;
|
||||
|
||||
@Column(name = "created_at", nullable = false)
|
||||
private Instant createdAt;
|
||||
@@ -38,6 +44,14 @@ public class Request {
|
||||
if (requestId != null) {
|
||||
requestIdBin = UuidUtil.uuidToBin(requestId);
|
||||
}
|
||||
|
||||
if (requestedBy != null) {
|
||||
requestedByBin = UuidUtil.uuidToBin(requestedBy);
|
||||
}
|
||||
|
||||
if (targetUserId != null) {
|
||||
targetUserIdBin = UuidUtil.uuidToBin(targetUserId);
|
||||
}
|
||||
}
|
||||
|
||||
@PostLoad
|
||||
@@ -45,6 +59,14 @@ public class Request {
|
||||
if (requestIdBin != null) {
|
||||
requestId = UuidUtil.binToUUID(requestIdBin);
|
||||
}
|
||||
|
||||
if (requestedByBin != null) {
|
||||
requestedBy = UuidUtil.binToUUID(requestedByBin);
|
||||
}
|
||||
|
||||
if (targetUserIdBin != null) {
|
||||
targetUserId = UuidUtil.binToUUID(targetUserIdBin);
|
||||
}
|
||||
}
|
||||
|
||||
public UUID getRequestId() {
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@Immutable
|
||||
@Table(name = "v_incomes_with_full_names")
|
||||
public class VIncomesWithFullNames {
|
||||
@Table(name = "v_incomes_with_info")
|
||||
public class VIncomesWithInfo {
|
||||
|
||||
@Id
|
||||
@Column(name = "income_id", columnDefinition = "BINARY(16)")
|
||||
@@ -29,6 +29,9 @@ public class VIncomesWithFullNames {
|
||||
@Column(name = "display_name")
|
||||
private String displayName;
|
||||
|
||||
@Column(name = "member_number")
|
||||
private Integer memberNumber;
|
||||
|
||||
private String concept;
|
||||
private BigDecimal amount;
|
||||
private Byte type;
|
||||
@@ -60,6 +63,8 @@ public class VIncomesWithFullNames {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public Integer getMemberNumber() { return memberNumber; }
|
||||
|
||||
public String getConcept() {
|
||||
return concept;
|
||||
}
|
||||
@@ -4,7 +4,9 @@ import net.miarma.backend.huertos.model.view.VBalanceWithTotals;
|
||||
import org.springframework.data.repository.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface VBalanceWithTotalsRepository extends Repository<VBalanceWithTotals, byte[]> {
|
||||
public interface VBalanceWithTotalsRepository extends Repository<VBalanceWithTotals, Byte> {
|
||||
List<VBalanceWithTotals> findAll();
|
||||
Optional<VBalanceWithTotals> findById(Byte id);
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package net.miarma.backend.huertos.repository.view;
|
||||
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithFullNames;
|
||||
import org.springframework.data.repository.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface VIncomesWithFullNamesRepository extends Repository<VIncomesWithFullNames, byte[]> {
|
||||
List<VIncomesWithFullNames> findAll();
|
||||
Optional<VIncomesWithFullNames> findById(byte[] incomeId);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package net.miarma.backend.huertos.repository.view;
|
||||
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithInfo;
|
||||
import org.springframework.data.repository.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface VIncomesWithInfoRepository extends Repository<VIncomesWithInfo, byte[]> {
|
||||
List<VIncomesWithInfo> findAll();
|
||||
Optional<VIncomesWithInfo> findById(byte[] incomeId);
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
package net.miarma.backend.huertos.service;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Optional;
|
||||
|
||||
import net.miarma.backend.huertos.model.view.VBalanceWithTotals;
|
||||
import net.miarma.backend.huertos.repository.view.VBalanceWithTotalsRepository;
|
||||
import net.miarma.backlib.exception.ConflictException;
|
||||
import net.miarma.backlib.exception.NotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -15,40 +16,47 @@ import net.miarma.backend.huertos.repository.BalanceRepository;
|
||||
@Transactional
|
||||
public class BalanceService {
|
||||
|
||||
private final BalanceRepository repo;
|
||||
private final BalanceRepository balanceRepository;
|
||||
private final VBalanceWithTotalsRepository vBalanceWithTotalsRepository;
|
||||
|
||||
public BalanceService(BalanceRepository repo) {
|
||||
this.repo = repo;
|
||||
public BalanceService(BalanceRepository balanceRepository, VBalanceWithTotalsRepository vBalanceWithTotalsRepository) {
|
||||
this.balanceRepository = balanceRepository;
|
||||
this.vBalanceWithTotalsRepository = vBalanceWithTotalsRepository;
|
||||
}
|
||||
|
||||
public Balance get() {
|
||||
return repo.findById((byte) 1)
|
||||
return balanceRepository.findById((byte) 1)
|
||||
.orElseThrow(() -> new NotFoundException("Balance not found"));
|
||||
}
|
||||
|
||||
public VBalanceWithTotals getWithTotals() {
|
||||
return vBalanceWithTotalsRepository.findById((byte) 1)
|
||||
.orElseThrow(() -> new NotFoundException("Balance not found"));
|
||||
}
|
||||
|
||||
public Balance create(Balance balance) {
|
||||
if (repo.existsById((byte) 1)) {
|
||||
if (balanceRepository.existsById((byte) 1)) {
|
||||
throw new ConflictException("Balance already exists");
|
||||
}
|
||||
balance.setId((byte) 1);
|
||||
balance.setCreatedAt(Instant.now());
|
||||
return repo.save(balance);
|
||||
return balanceRepository.save(balance);
|
||||
}
|
||||
|
||||
public Balance update(Balance dto) {
|
||||
Balance balance = repo.findById((byte) 1)
|
||||
Balance balance = balanceRepository.findById((byte) 1)
|
||||
.orElseThrow(() -> new NotFoundException("Balance not found"));
|
||||
|
||||
if (dto.getInitialBank() != null) balance.setInitialBank(dto.getInitialBank());
|
||||
if (dto.getInitialCash() != null) balance.setInitialCash(dto.getInitialCash());
|
||||
|
||||
return repo.save(balance);
|
||||
return balanceRepository.save(balance);
|
||||
}
|
||||
|
||||
public void delete() {
|
||||
if (!repo.existsById((byte) 1)) {
|
||||
if (!balanceRepository.existsById((byte) 1)) {
|
||||
throw new NotFoundException("Balance not found");
|
||||
}
|
||||
repo.deleteById((byte) 1);
|
||||
balanceRepository.deleteById((byte) 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class RequestService {
|
||||
.toList();
|
||||
}
|
||||
|
||||
public Request createWaitlist(Request request) {
|
||||
public Request create(Request request) {
|
||||
if (request.getType() == null) {
|
||||
throw new BadRequestException("type is required");
|
||||
}
|
||||
|
||||
@@ -7,31 +7,31 @@ import net.miarma.backlib.exception.NotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import jakarta.transaction.Transactional;
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithFullNames;
|
||||
import net.miarma.backend.huertos.repository.view.VIncomesWithFullNamesRepository;
|
||||
import net.miarma.backend.huertos.model.view.VIncomesWithInfo;
|
||||
import net.miarma.backend.huertos.repository.view.VIncomesWithInfoRepository;
|
||||
import net.miarma.backlib.util.UuidUtil;
|
||||
|
||||
@Service
|
||||
@Transactional
|
||||
public class VIncomesWithFullNamesService {
|
||||
public class VIncomesWithInfoService {
|
||||
|
||||
private final VIncomesWithFullNamesRepository repository;
|
||||
private final VIncomesWithInfoRepository repository;
|
||||
|
||||
public VIncomesWithFullNamesService(VIncomesWithFullNamesRepository repository) {
|
||||
public VIncomesWithInfoService(VIncomesWithInfoRepository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
public List<VIncomesWithFullNames> getAll() {
|
||||
public List<VIncomesWithInfo> getAll() {
|
||||
return repository.findAll();
|
||||
}
|
||||
|
||||
public VIncomesWithFullNames getById(UUID incomeId) {
|
||||
public VIncomesWithInfo getById(UUID incomeId) {
|
||||
byte[] idBytes = UuidUtil.uuidToBin(incomeId);
|
||||
return repository.findById(idBytes)
|
||||
.orElseThrow(() -> new NotFoundException("Income not found"));
|
||||
}
|
||||
|
||||
public List<VIncomesWithFullNames> getByUserId(UUID userId) {
|
||||
public List<VIncomesWithInfo> getByUserId(UUID userId) {
|
||||
byte[] idBytes = UuidUtil.uuidToBin(userId);
|
||||
return repository.findAll().stream()
|
||||
.filter(i -> i.getUserId().equals(userId))
|
||||
Reference in New Issue
Block a user