package br.com.treinaweb.twjobs.api.emailSend; import br.com.treinaweb.twjobs.core.enums.EmailActivation; import br.com.treinaweb.twjobs.core.exceptions.NegocioException; import br.com.treinaweb.twjobs.core.models.EmailSend; import br.com.treinaweb.twjobs.core.permissions.TWJobsPermissions; import br.com.treinaweb.twjobs.core.repositories.EmailSendRepository; import br.com.treinaweb.twjobs.core.services.auth.SecurityService; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @RequiredArgsConstructor @RestController @RequestMapping("/api/emailSend") public class EmailSendRestController { private final EmailSendRepository emailSendRepository; private final SecurityService securityService; // COLOCAR DEPOIS COMO DEFAULT - STATUS = DISABLE @PostMapping @TWJobsPermissions.IsCompany @ResponseStatus(code = HttpStatus.CREATED) public EmailSend add(@RequestBody EmailSend emailSend) { emailSend.setUser(securityService.getCurrentUser()); return emailSendRepository.save(emailSend); } @GetMapping @TWJobsPermissions.IsCompany public List<EmailSend> getAll() { return emailSendRepository.findAllByUserId(securityService.getCurrentUser().getId()); } @PutMapping("/{id}") @TWJobsPermissions.IsCompany public EmailSend put(@PathVariable Long id,@RequestBody EmailSend emailSend) { // Se liga que no frontend, assim que o usuário clicar a requisição vai ser feita mediante // clique na check-box // Se for enable : checa se todos os outros estão disable // se estão: salva // se não, retorna um erro emailSend.setId(id); emailSend.setUser(securityService.getCurrentUser()); Boolean check = emailSendRepository.existsByUserIdAndStatus(securityService.getCurrentUser().getId(), emailSend.getStatus()); if(emailSend.getStatus() == EmailActivation.enable) { if(check) { emailSend.setStatus(EmailActivation.disable); throw new NegocioException("Você só pode ter 1 e-mail ativo"); } } return emailSendRepository.save(emailSend); } @DeleteMapping("{id}") @TWJobsPermissions public ResponseEntity<Void> delete(@PathVariable Long id) { Boolean check = emailSendRepository.existsByUserIdAndId(securityService.getCurrentUser().getId(), id); if(check) { // return null; emailSendRepository.deleteById(id); return ResponseEntity.noContent().build(); } else { return ResponseEntity.notFound().build(); } } }