Commit 92ba03d9 authored by RenanMontenegro3's avatar RenanMontenegro3

feat(blacklist): enriquece resposta da blacklist com dados do navio

- Refatora métodos findAll e findAllSemPaginacao para incluir dados do navio
- Adiciona enriquecimento automático dos campos: mmsi, nome, loa, boca, dwt, pontal, ponte_mfold, mfold_quilha, categoria e flag
- Mantém ordenação descendente por ID
- Melhora organização do código com separação clara entre busca, enriquecimento e mapeamento
parent 861ec3b4
...@@ -24,9 +24,7 @@ import jakarta.validation.Valid; ...@@ -24,9 +24,7 @@ import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.*;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault; import org.springframework.data.web.PageableDefault;
import org.springframework.data.web.PagedResourcesAssembler; import org.springframework.data.web.PagedResourcesAssembler;
import org.springframework.hateoas.CollectionModel; import org.springframework.hateoas.CollectionModel;
...@@ -66,46 +64,78 @@ public class BlackListRestController { ...@@ -66,46 +64,78 @@ public class BlackListRestController {
@GetMapping("/sem-paginacao") @GetMapping("/sem-paginacao")
@TWJobsPermissions.IsCompany @TWJobsPermissions.IsCompany
public CollectionModel<EntityModel<BlackListResponse>> findAllSemPaginacao() { public CollectionModel<EntityModel<BlackListResponse>> findAllSemPaginacao() {
List<BlackListResponse> lista = blackListRepository.findAll(Sort.by(Sort.Direction.DESC, "id")).stream() // Recupera a lista de BlackList ordenada
List<BlackList> list = blackListRepository.findAll(Sort.by(Sort.Direction.DESC, "id"));
// Enriquecer com dados do navio
list.forEach(item -> {
vesselRepository.findByImo(item.getImo()).ifPresent(vessel -> {
item.setMmsi(vessel.getMmsi());
item.setNome(vessel.getNome());
item.setLoa(vessel.getLoa());
item.setBoca(vessel.getBoca());
item.setDwt(vessel.getDwt());
item.setPontal(vessel.getPontal());
item.setPonte_mfold(vessel.getPonte_mfold());
item.setMfold_quilha(vessel.getMfold_quilha());
item.setCategoria(vessel.getCategoria() != null ? vessel.getCategoria() : "não informado");
item.setFlag(vessel.getFlag() != null ? Integer.valueOf(vessel.getFlag()) : null);
});
});
// Mapeia para DTO
List<BlackListResponse> responseList = list.stream()
.map(blackListMapper::toBlackListResponse) .map(blackListMapper::toBlackListResponse)
.collect(Collectors.toList()); .collect(Collectors.toList());
return blackListAssembler.toCollectionModel(lista);
// Monta resposta HATEOAS
List<EntityModel<BlackListResponse>> entityModels = responseList.stream()
.map(blackListAssembler::toModel)
.collect(Collectors.toList());
return CollectionModel.of(entityModels);
} }
//"@PageableDefault(value = 7)" tamanho local para o tamanho da paginação. Deve ser igual ou menor ao valor encontrado no "application.properties" //"@PageableDefault(value = 7)" tamanho local para o tamanho da paginação. Deve ser igual ou menor ao valor encontrado no "application.properties"
@GetMapping @GetMapping
@TWJobsPermissions.IsCompany @TWJobsPermissions.IsCompany
public CollectionModel<EntityModel<BlackListResponse>> findAll(@PageableDefault(value = 15) Pageable pageable) { public CollectionModel<EntityModel<BlackListResponse>> findAll(@PageableDefault(value = 15) Pageable pageable) {
Pageable sortedPageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("id").descending()); Pageable sortedPageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("id").descending());
User user = securityService.getCurrentUser(); // Recupera a página de BlackList
Long userId = user.getId(); Page<BlackList> blackListPage = blackListRepository.findAll(sortedPageable);
// org.springframework.data.domain.Page<BlackListResponse> blackLists = null; // Para cada item, busca o navio e preenche os campos manualmente
// if (user.getRole().equals(Role.COMPANY)) { List<BlackList> enriched = blackListPage.getContent().stream()
// throw new NegocioException("É company"); .peek(item -> {
var blackLists = blackListRepository.findAll(sortedPageable) vesselRepository.findByImo(item.getImo()).ifPresent(vessel -> {
.map(blackListMapper::toBlackListResponse); item.setMmsi(vessel.getMmsi());
return pagedResourcesAssembler.toModel(blackLists, blackListAssembler); item.setNome(vessel.getNome());
// } else if (user.getRole().equals(Role.CANDIDATE)) { item.setLoa(vessel.getLoa());
//// throw new NegocioException("É candidate"); item.setBoca(vessel.getBoca());
// item.setDwt(vessel.getDwt());
// blackLists = blackListRepository.findAllByUserId(pageable, userId) item.setPontal(vessel.getPontal());
// .map(blackListMapper::toBlackListResponse); item.setPonte_mfold(vessel.getPonte_mfold());
// pagedResourcesAssembler.toModel(blackLists, blackListAssembler); item.setMfold_quilha(vessel.getMfold_quilha());
//
// } item.setCategoria(vessel.getCategoria() != null ? vessel.getCategoria() : "não informado");
item.setFlag(vessel.getFlag() != null ? Integer.valueOf(vessel.getFlag()) : null);
});
})
.collect(Collectors.toList());
// Converte para página novamente (com os dados preenchidos)
Page<BlackList> enrichedPage = new PageImpl<>(enriched, sortedPageable, blackListPage.getTotalElements());
// Page<AcceptResponse> // Mapeia para DTO
// accepts = acceptRepository.findAllByUserId(pageable,userId) Page<BlackListResponse> responsePage = enrichedPage.map(blackListMapper::toBlackListResponse);
// .map(acceptMapper::toAcceptResponse);
// return pagedResourcesAssembler.toModel(responsePage, blackListAssembler);
//
// return null;
// return pagedResourcesAssembler.toModel(blackLists, blackListAssembler);
} }
@GetMapping("/statistics/count") @GetMapping("/statistics/count")
@TWJobsPermissions.IsCompany @TWJobsPermissions.IsCompany
public Long howMany() { public Long howMany() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment