Commit c07dd277 authored by RenanMontenegro3's avatar RenanMontenegro3

fix: Alteração na lógica de envio de emails, titulos, berços e status

parent 0b70f116
...@@ -5,18 +5,19 @@ import br.com.treinaweb.twjobs.api.accepts.assemblers.AcceptAssembler; ...@@ -5,18 +5,19 @@ import br.com.treinaweb.twjobs.api.accepts.assemblers.AcceptAssembler;
import br.com.treinaweb.twjobs.api.accepts.dtos.AcceptRequest; import br.com.treinaweb.twjobs.api.accepts.dtos.AcceptRequest;
import br.com.treinaweb.twjobs.api.accepts.dtos.AcceptResponse; import br.com.treinaweb.twjobs.api.accepts.dtos.AcceptResponse;
import br.com.treinaweb.twjobs.api.accepts.mappers.AcceptMapper; import br.com.treinaweb.twjobs.api.accepts.mappers.AcceptMapper;
import br.com.treinaweb.twjobs.api.bercos.dtos.BercoResponse;
import br.com.treinaweb.twjobs.api.file.FileManagerController; import br.com.treinaweb.twjobs.api.file.FileManagerController;
import br.com.treinaweb.twjobs.core.enums.Role; import br.com.treinaweb.twjobs.core.enums.Role;
import br.com.treinaweb.twjobs.core.enums.VeriStatus; import br.com.treinaweb.twjobs.core.enums.VeriStatus;
import br.com.treinaweb.twjobs.core.exceptions.AcceptNotFoundException; import br.com.treinaweb.twjobs.core.exceptions.AcceptNotFoundException;
import br.com.treinaweb.twjobs.core.exceptions.NegocioException; import br.com.treinaweb.twjobs.core.exceptions.NegocioException;
import br.com.treinaweb.twjobs.core.models.Accept; import br.com.treinaweb.twjobs.core.models.Accept;
import br.com.treinaweb.twjobs.core.models.Berco;
import br.com.treinaweb.twjobs.core.models.User; import br.com.treinaweb.twjobs.core.models.User;
import br.com.treinaweb.twjobs.core.models.Vessel; import br.com.treinaweb.twjobs.core.models.Vessel;
import br.com.treinaweb.twjobs.core.permissions.TWJobsPermissions; import br.com.treinaweb.twjobs.core.permissions.TWJobsPermissions;
import br.com.treinaweb.twjobs.core.repositories.AcceptCustomRepository; import br.com.treinaweb.twjobs.core.repositories.AcceptCustomRepository;
import br.com.treinaweb.twjobs.core.repositories.AcceptRepository; import br.com.treinaweb.twjobs.core.repositories.AcceptRepository;
import br.com.treinaweb.twjobs.core.repositories.UserRepository;
import br.com.treinaweb.twjobs.core.repositories.VesselRepository; import br.com.treinaweb.twjobs.core.repositories.VesselRepository;
import br.com.treinaweb.twjobs.core.service.CadastroAcceptService; import br.com.treinaweb.twjobs.core.service.CadastroAcceptService;
import br.com.treinaweb.twjobs.core.service.EmailService; import br.com.treinaweb.twjobs.core.service.EmailService;
...@@ -24,12 +25,11 @@ import br.com.treinaweb.twjobs.core.services.auth.SecurityService; ...@@ -24,12 +25,11 @@ import br.com.treinaweb.twjobs.core.services.auth.SecurityService;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.NonNull;
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.Pageable; 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.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
...@@ -64,8 +64,6 @@ public class AcceptRestController { ...@@ -64,8 +64,6 @@ public class AcceptRestController {
private final SecurityService securityService; private final SecurityService securityService;
private final PagedResourcesAssembler<AcceptResponse> pagedResourcesAssembler; private final PagedResourcesAssembler<AcceptResponse> pagedResourcesAssembler;
private final CadastroAcceptService cadastroAcceptService; private final CadastroAcceptService cadastroAcceptService;
private final AcceptCustomRepository acceptCustomRepository; private final AcceptCustomRepository acceptCustomRepository;
...@@ -73,9 +71,18 @@ public class AcceptRestController { ...@@ -73,9 +71,18 @@ public class AcceptRestController {
private final FileManagerController fileManagerController; private final FileManagerController fileManagerController;
//<ALTERAÇÕES 05/01/26[->>] >
private final UserRepository userRepository;
//<ALTERAÇÕES 05/01/26[<<-] >
//<ALTERAÇÕES 22/11/25[->>] >
@Autowired @Autowired
private EmailService emailService; private EmailService emailService;
//</ALTERAÇÕES 22/11/25[->>] >
@Autowired @Autowired
private ObjectMapper mapper; private ObjectMapper mapper;
...@@ -87,29 +94,44 @@ public class AcceptRestController { ...@@ -87,29 +94,44 @@ public class AcceptRestController {
return acceptRepository.countAllAccepts(); return acceptRepository.countAllAccepts();
} }
@GetMapping("/sem-paginacao")
public CollectionModel<EntityModel<AcceptResponse>> findAllSemPaginacao() {
List<AcceptResponse> lista = acceptRepository.findAll(Sort.by(Sort.Direction.DESC, "id")).stream()
.map(acceptMapper::toAcceptResponse)
.collect(Collectors.toList());
return acceptAssembler.toCollectionModel(lista);
}
//"@PageableDefault(value = 7)" tamanho local para o tamanho da paginação. Deve ser igual ou menor ao valor encontrado no "application.properties"
@GetMapping @GetMapping
public CollectionModel<EntityModel<AcceptResponse>> findAll(@PageableDefault(size = 15) Pageable pageable) { public CollectionModel<EntityModel<AcceptResponse>> findAll(@PageableDefault(value = 15) Pageable pageable) {
Pageable ordenado = PageRequest.of(pageable.getPageNumber(), User user = securityService.getCurrentUser();
pageable.getPageSize(), Long userId = user.getId();
Sort.by("id").descending());
var accepts = acceptRepository.findAll(ordenado)
.map(acceptMapper::toAcceptResponse);
// if (user.getRole().equals(Role.COMPANY)) {
// throw new NegocioException("É company");
var accepts = acceptRepository.findAll(pageable)
// findAll(pageable)
.map(acceptMapper::toAcceptResponse) ;
return pagedResourcesAssembler.toModel(accepts, acceptAssembler); return pagedResourcesAssembler.toModel(accepts, acceptAssembler);
// } else if (user.getRole().equals(Role.CANDIDATE)) {
//// throw new NegocioException("É candidate");
// var accepts = acceptRepository.findAllByUserId(pageable,userId)
// .map(acceptMapper::toAcceptResponse);
// return pagedResourcesAssembler.toModel(accepts, acceptAssembler);
//
// }
// Page<AcceptResponse>
// accepts = acceptRepository.findAllByUserId(pageable,userId)
// .map(acceptMapper::toAcceptResponse);
//
//
// AJEITAR
// return null;
// return pagedResourcesAssembler.toModel(accepts, acceptAssembler);
} }
@GetMapping("/custom") @GetMapping("/custom")
public List<AcceptResponse> findTest(@RequestParam(value = "id", required = false) Long id, public List<AcceptResponse> findTest(@RequestParam(value = "id", required = false) Long id,
@RequestParam(value = "imo", required = false) String imo, @RequestParam(value = "imo", required = false) String imo,
...@@ -117,14 +139,14 @@ public class AcceptRestController { ...@@ -117,14 +139,14 @@ public class AcceptRestController {
@RequestParam(value = "nome", required = false) String nome, @RequestParam(value = "nome", required = false) String nome,
@RequestParam(value = "categoria", required = false) String categoria, @RequestParam(value = "categoria", required = false) String categoria,
@RequestParam(value = "dataInicio", required = false) @RequestParam(value = "dataInicio", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataInicio, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataInicio,
@RequestParam(value = "dataFim", required = false) @RequestParam(value = "dataFim", required = false)
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataFim) { @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate dataFim) {
List<AcceptResponse> accepts = acceptCustomRepository.acceptsCustom(id, imo, status, nome, categoria, dataInicio,dataFim) List<AcceptResponse> accepts = acceptCustomRepository.acceptsCustom(id, imo, status, nome, categoria, dataInicio,dataFim)
.stream() .stream()
.map(acceptMapper::toAcceptResponse) .map(acceptMapper::toAcceptResponse)
.collect(Collectors.toList()); .collect(Collectors.toList());
return accepts; return accepts;
} }
...@@ -136,7 +158,7 @@ public class AcceptRestController { ...@@ -136,7 +158,7 @@ public class AcceptRestController {
Accept accept; Accept accept;
if(user.getRole()==Role.COMPANY) { if(user.getRole()==Role.COMPANY) {
accept = acceptRepository.findById(id) accept = acceptRepository.findById(id)
.orElseThrow(AcceptNotFoundException::new); .orElseThrow(AcceptNotFoundException::new);
} else { } else {
accept = acceptRepository.findByIdAndUserId(id, userId) accept = acceptRepository.findByIdAndUserId(id, userId)
...@@ -153,11 +175,9 @@ public class AcceptRestController { ...@@ -153,11 +175,9 @@ public class AcceptRestController {
@PostMapping @PostMapping
@ResponseStatus(code = HttpStatus.CREATED) @ResponseStatus(code = HttpStatus.CREATED)
public EntityModel<AcceptResponse> public EntityModel<AcceptResponse>
create(@Valid @RequestParam(name="acceptRequestForm", required=true) String acceptRequestForm, @RequestParam(name="foto", required=false) MultipartFile foto) throws JsonProcessingException {return cadastroAcceptService.salvar(acceptRequestForm, foto,"paulowrkstdy@gmail.com");} create(@Valid @RequestParam(name="acceptRequestForm", required=true) String acceptRequestForm, @RequestParam(name="foto", required=false) MultipartFile foto) throws JsonProcessingException {return cadastroAcceptService.salvar(acceptRequestForm, foto,"pauloacb2020@gmail.com");}
// renan.montenegro2018@gmail.com // renan.montenegro2018@gmail.com
@PutMapping("/{id}") @PutMapping("/{id}")
@TWJobsPermissions.IsCompany @TWJobsPermissions.IsCompany
public EntityModel<AcceptResponse> update( public EntityModel<AcceptResponse> update(
...@@ -262,22 +282,35 @@ public class AcceptRestController { ...@@ -262,22 +282,35 @@ public class AcceptRestController {
var acceptResponse = acceptMapper.toAcceptResponse(accept); var acceptResponse = acceptMapper.toAcceptResponse(accept);
//<ALTERAÇÕES 05/01/2026[->>]>
String destinatario_admin = String.valueOf(userRepository.findBySendEmail(Boolean.TRUE).get().getEmail());
String nome_bercos_autori = "";
for(Berco berco : accept.getBercos()) {
// GUARDA O NOME DOS BERCOS
nome_bercos_autori = nome_bercos_autori + berco.getNome() + ", ";
}
//<ALTERAÇÕES 22/11/25[->>] > //<ALTERAÇÕES 22/11/25[->>] >
String msg = String msg =
"ID DO ACEITE: "+accept.getId()+"\n"+ "ID DO ACEITE: "+accept.getId()+"\n"+
"IMO DO NAVIO: "+accept.getVessel().getImo()+"\n"+ "IMO DO NAVIO: "+accept.getVessel().getImo()+"\n"+
"BERCOS AUTORIZADOS: "+accept.getBercos()+"\n"+ "BERCOS AUTORIZADOS: "+nome_bercos_autori+"\n"+
"STATUS ATUAL DO ACEITE: " + traduzStatus(accept.getStatus()) + "\n" + "STATUS ATUAL DO ACEITE: "+traduzStatus(accept.getStatus())+"\n"+
"COMENTÁRIO RESPOSTA(PORTO): "+accept.getRestricoes()+"\n"+ "COMENTÁRIO RESPOSTA(PORTO): "+accept.getRestricoes()+"\n"+
"DATA E HORA DESTA RESPOSTA: "+accept.getData_update()+", "+ accept.getTime_update(); "DATA E HORA DESTA RESPOSTA: "+accept.getData_update()+", "+ accept.getTime_update();
emailService.enviarEmailTexto(accept.getUser().getEmail(), "Aceite de Navio - RESPOSTA PRA SUA SOLICITAÇÃO", msg); emailService.enviarEmailTexto(accept.getUser().getEmail(), "Aceite do Navio " + accept.getVessel().getNome() +" - RESPOSTA DA SOLICITAÇÃO DO USUÁRIO ", msg);
// ENVIAR CÓPIA PARA A COACE ->
emailService.enviarEmailTexto(destinatario_admin, "Aceite do Navio " + accept.getVessel().getNome() +" - RESPOSTA DA SOLICITAÇÃO ", msg);
//<ALTERAÇÕES 22/11/25[->>] >
//<ALTERAÇÕES 22/11/25[->>]>
//<ALTERAÇÕES 05/01/2026[<<-]>
return acceptAssembler.toModel(acceptResponse); return acceptAssembler.toModel(acceptResponse);
...@@ -293,7 +326,6 @@ public class AcceptRestController { ...@@ -293,7 +326,6 @@ public class AcceptRestController {
default: return "Status desconhecido"; default: return "Status desconhecido";
} }
} }
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
// @TWJobsPermissions.IsOwner // @TWJobsPermissions.IsOwner
@TWJobsPermissions.IsCompany @TWJobsPermissions.IsCompany
......
...@@ -275,10 +275,12 @@ public class CadastroAcceptService { ...@@ -275,10 +275,12 @@ public class CadastroAcceptService {
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+ "STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+ "OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+ "DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole(); "DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: " + ("COMPANY".equals(user.getRole().name()) ? "ADMINISTRATIVO" : "USUÁRIO");
emailService.enviarEmailTexto(destinatario, "Aceite de Navio - BLOQUEADO", msg);
emailService.enviarEmailTexto(destinatario, "Aceite do Navio " + accept.getVessel().getNome() + " - STATUS: BLOQUEADO", msg);
emailService.enviarEmailTexto(accept.getUser().getEmail(), "Aceite do Navio " + accept.getVessel().getNome() + " - STATUS: BLOQUEADO", msg);
} else if (!bercosCompativeis.isEmpty()) { } else if (!bercosCompativeis.isEmpty()) {
// </PARTE NOVA> // </PARTE NOVA>
...@@ -305,11 +307,14 @@ public class CadastroAcceptService { ...@@ -305,11 +307,14 @@ public class CadastroAcceptService {
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Aceito"+"\n"+ "STATUS INPUTADO PARA O ACEITE(SISTEMA): Aceito"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+ "OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+ "DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole(); "DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: " + ("COMPANY".equals(user.getRole().name()) ? "ADMINISTRATIVO" : "USUÁRIO");
emailService.enviarEmailTexto(destinatario, "Aceite de Navio - ACEITO", msg); emailService.enviarEmailTexto(destinatario, "Aceite do Navio " + accept.getVessel().getNome() + " - STATUS: ACEITO", msg);
// </PARTE-NOVA-2> // </PARTE-NOVA-2>
emailService.enviarEmailTexto(accept.getUser().getEmail(), "Aceite do Navio " + accept.getVessel().getNome() + " - STATUS: ACEITO", msg);
...@@ -321,25 +326,26 @@ public class CadastroAcceptService { ...@@ -321,25 +326,26 @@ public class CadastroAcceptService {
} else { } else {
// id, imo, user, status, obs, data de criacao, local hospedagem + URIs // id, imo, user, status, obs, data de criacao, local hospedagem + URIs
if(blackListed) { if(blackListed) {
msg = "ID DO ACEITE: "+currentAcceptId+"\n"+ msg = "ID DO ACEITE: "+currentAcceptId+"\n"+
"IMO DO NAVIO: "+accept.getImo()+"\n"+ "IMO DO NAVIO: "+accept.getImo()+"\n"+
"CAUSA IDENTIFICADA(SISTEMA): Navio problemático, está na BLACK LIST!"+"\n"+ "CAUSA IDENTIFICADA(SISTEMA): Navio problemático, está na BLACK LIST!"+"\n"+
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+ "STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+ "OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+ "DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole(); "DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: " + ("COMPANY".equals(user.getRole().name()) ? "ADMINISTRATIVO" : "USUÁRIO");
} else { } else {
msg = "ID DO ACEITE: "+currentAcceptId+"\n"+ msg = "ID DO ACEITE: "+currentAcceptId+"\n"+
"IMO DO NAVIO: "+accept.getImo()+"\n"+ "IMO DO NAVIO: "+accept.getImo()+"\n"+
"CAUSA IDENTIFICADA(SISTEMA): Navio problemático, de acordo com categoria, loa, dwt e calados cadastrados, nenhum berço o comporta!"+"\n"+ "CAUSA IDENTIFICADA(SISTEMA): Navio problemático, de acordo com categoria, loa, dwt e calados cadastrados, nenhum berço o comporta!"+"\n"+
"STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+ "STATUS INPUTADO PARA O ACEITE(SISTEMA): Em processamento"+"\n"+
"OBS DO USUÁRIO: "+accept.getObs()+"\n"+ "OBS DO USUÁRIO: "+accept.getObs()+"\n"+
"DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+ "DATA CRIAÇÃO DO REGISTRO DE ACEITE: "+accept.getData_create()+"\n"+
"DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: "+user.getRole(); "DADOS DO USUÁRIO: "+"ID: "+user.getId()+" E-MAIL: "+user.getEmail()+" NOME: "+user.getName()+" PAPEL: " + ("COMPANY".equals(user.getRole().name()) ? "ADMINISTRATIVO" : "USUÁRIO");
} }
emailService.enviarEmailTexto(destinatario, "Aceite de Navio - BLOQUEADO", msg); emailService.enviarEmailTexto(destinatario, "Aceite do Navio " + accept.getVessel().getNome() + " - STATUS: BLOQUEADO", msg);
accept.setStatus("N"); accept.setStatus("N");
} }
...@@ -355,7 +361,7 @@ public class CadastroAcceptService { ...@@ -355,7 +361,7 @@ public class CadastroAcceptService {
"ID: " + user.getId() + "\n" + "ID: " + user.getId() + "\n" +
"Nome: " + user.getName() + "\n" + "Nome: " + user.getName() + "\n" +
"E-mail: " + user.getEmail() + "\n" + "E-mail: " + user.getEmail() + "\n" +
"Papel: " + user.getRole(); " PAPEL: " + ("COMPANY".equals(user.getRole().name()) ? "ADMINISTRATIVO" : "USUÁRIO");
emailService.enviarEmailTexto(destinatario, "Solicitação de Aceite Cadastrada", msg); emailService.enviarEmailTexto(destinatario, "Solicitação de Aceite Cadastrada", msg);
...@@ -453,6 +459,8 @@ public class CadastroAcceptService { ...@@ -453,6 +459,8 @@ public class CadastroAcceptService {
} }
} }
// Json de getStatusStatistics() // Json de getStatusStatistics()
//{ //{
// "aceito": 10, // "aceito": 10,
......
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