diff --git a/huertos/src/main/java/net/miarma/backend/huertos/config/SecurityConfig.java b/huertos/src/main/java/net/miarma/backend/huertos/config/SecurityConfig.java index efb69ef..7286e3d 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/config/SecurityConfig.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/config/SecurityConfig.java @@ -43,10 +43,10 @@ public class SecurityConfig { .authorizeHttpRequests(auth -> auth // PUBLICAS .requestMatchers("/login").permitAll() - .requestMatchers("/announces/**").permitAll() - .requestMatchers("/huertos/members/waitlist").permitAll() - .requestMatchers("/huertos/members/waitlist/limited").permitAll() - .requestMatchers("/huertos/members/latest-number").permitAll() + .requestMatchers("/announces").permitAll() + .requestMatchers("/requests").permitAll() + .requestMatchers("/huertos/users/waitlist/limited").permitAll() + .requestMatchers("/huertos/users/latest-number").permitAll() // PRIVADAS .anyRequest().authenticated() ); diff --git a/huertos/src/main/java/net/miarma/backend/huertos/controller/RequestController.java b/huertos/src/main/java/net/miarma/backend/huertos/controller/RequestController.java index 75df34d..44fc538 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/controller/RequestController.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/controller/RequestController.java @@ -1,13 +1,19 @@ package net.miarma.backend.huertos.controller; +import jakarta.transaction.Transactional; +import net.miarma.backend.huertos.dto.CreateWaitlistDto; +import net.miarma.backend.huertos.dto.PreUserDto; import net.miarma.backend.huertos.dto.RequestCountDto; import net.miarma.backend.huertos.dto.RequestDto; import net.miarma.backend.huertos.dto.view.VRequestsWithPreUsersDto; +import net.miarma.backend.huertos.mapper.PreUserMapper; import net.miarma.backend.huertos.mapper.RequestMapper; import net.miarma.backend.huertos.mapper.view.VIncomesWithFullNamesMapper; import net.miarma.backend.huertos.mapper.view.VRequestsWithPreUsersMapper; +import net.miarma.backend.huertos.model.PreUser; import net.miarma.backend.huertos.model.Request; import net.miarma.backend.huertos.model.view.VRequestsWithPreUsers; +import net.miarma.backend.huertos.service.PreUserService; import net.miarma.backend.huertos.service.RequestService; import net.miarma.backend.huertos.service.view.VRequestsWithPreUsersService; import net.miarma.backlib.security.JwtService; @@ -26,11 +32,16 @@ import java.util.stream.Collectors; public class RequestController { private final RequestService requestService; + private final PreUserService preUserService; private final VRequestsWithPreUsersService vRequestsWithPreUsersService; private final JwtService jwtService; - public RequestController(RequestService requestService, VRequestsWithPreUsersService vRequestsWithPreUsersService, JwtService jwtService) { + public RequestController(RequestService requestService, + PreUserService preUserService, + VRequestsWithPreUsersService vRequestsWithPreUsersService, + JwtService jwtService) { this.requestService = requestService; + this.preUserService = preUserService; this.vRequestsWithPreUsersService = vRequestsWithPreUsersService; this.jwtService = jwtService; } @@ -108,6 +119,14 @@ public class RequestController { return ResponseEntity.ok(RequestMapper.toResponse(request)); } + @PostMapping + @Transactional + public ResponseEntity create( + @RequestBody CreateWaitlistDto body) { + RequestDto.Response response = requestService.create(body.request(), body.preUser()); + return ResponseEntity.ok(response); + } + @PutMapping("/{request_id}") @PreAuthorize("hasAnyRole('HUERTOS_ROLE_ADMIN', 'HUERTOS_ROLE_DEV')") public ResponseEntity update( diff --git a/huertos/src/main/java/net/miarma/backend/huertos/dto/CreateWaitlistDto.java b/huertos/src/main/java/net/miarma/backend/huertos/dto/CreateWaitlistDto.java new file mode 100644 index 0000000..fb844ba --- /dev/null +++ b/huertos/src/main/java/net/miarma/backend/huertos/dto/CreateWaitlistDto.java @@ -0,0 +1,7 @@ +package net.miarma.backend.huertos.dto; + +public record CreateWaitlistDto( + RequestDto.Request request, + PreUserDto.Request preUser +) { +} diff --git a/huertos/src/main/java/net/miarma/backend/huertos/service/RequestService.java b/huertos/src/main/java/net/miarma/backend/huertos/service/RequestService.java index f5830d7..034b38d 100644 --- a/huertos/src/main/java/net/miarma/backend/huertos/service/RequestService.java +++ b/huertos/src/main/java/net/miarma/backend/huertos/service/RequestService.java @@ -4,8 +4,13 @@ import java.time.Instant; import java.util.List; import java.util.UUID; +import net.miarma.backend.huertos.dto.PreUserDto; import net.miarma.backend.huertos.dto.RequestDto; +import net.miarma.backend.huertos.mapper.PreUserMapper; +import net.miarma.backend.huertos.mapper.RequestMapper; import net.miarma.backend.huertos.model.HuertosUserMetadata; +import net.miarma.backend.huertos.model.PreUser; +import net.miarma.backend.huertos.repository.PreUserRepository; import net.miarma.backlib.exception.BadRequestException; import net.miarma.backlib.exception.NotFoundException; import org.springframework.stereotype.Service; @@ -20,11 +25,14 @@ import net.miarma.backlib.util.UuidUtil; public class RequestService { private final RequestRepository requestRepository; + private final PreUserRepository preUserRepository; private final HuertosUserMetadataService metadataService; public RequestService(RequestRepository requestRepository, + PreUserRepository preUserRepository, HuertosUserMetadataService metadataSertice) { this.requestRepository = requestRepository; + this.preUserRepository = preUserRepository; this.metadataService = metadataSertice; } @@ -73,6 +81,14 @@ public class RequestService { return requestRepository.save(request); } + @Transactional + public RequestDto.Response create(RequestDto.Request requestDto, + PreUserDto.Request preUserDto) { + PreUser preUser = preUserRepository.save(PreUserMapper.toEntity(preUserDto)); + Request request = requestRepository.save(RequestMapper.toEntity(requestDto)); + return RequestMapper.toResponse(request); + } + public Request update(UUID requestId, RequestDto.Request dto) { byte[] idBytes = UuidUtil.uuidToBin(requestId); diff --git a/huertos/src/main/resources/application-dev.yml b/huertos/src/main/resources/application-dev.yml index d35311b..c0e66ab 100644 --- a/huertos/src/main/resources/application-dev.yml +++ b/huertos/src/main/resources/application-dev.yml @@ -20,7 +20,7 @@ core: huertos: user: SYSTEM - password: ${HUERTOS_SYSTEM_PASSWORD} + password: ${HUERTOS_PASS} mail: smtp: diff --git a/huertos/src/main/resources/application-prod.yml b/huertos/src/main/resources/application-prod.yml index 75868ce..56dca05 100644 --- a/huertos/src/main/resources/application-prod.yml +++ b/huertos/src/main/resources/application-prod.yml @@ -19,7 +19,7 @@ core: huertos: user: SYSTEM - password: ${HUERTOS_SYSTEM_PASSWORD} + password: ${HUERTOS_PASS} mail: smtp: