Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.orbitech.npvet.controller;

import com.orbitech.npvet.dto.UsuarioCadastrarDTO;
import com.orbitech.npvet.dto.UsuarioDTO;
import com.orbitech.npvet.entity.Usuario;
import com.orbitech.npvet.service.UsuarioService;
Expand Down Expand Up @@ -30,7 +31,7 @@ public class UsuarioController {
}
@PostMapping("/post")
@PreAuthorize("hasAnyAuthority('ADMINISTRADOR')")
public ResponseEntity<UsuarioDTO>create(@Validated @RequestBody UsuarioDTO usuarioDTO, @AuthenticationPrincipal Usuario usuarioAutenticado){
public ResponseEntity<UsuarioDTO>create(@Validated @RequestBody UsuarioCadastrarDTO usuarioDTO, @AuthenticationPrincipal Usuario usuarioAutenticado){
return ResponseEntity.ok(service.create(usuarioDTO, usuarioAutenticado));
}
@PutMapping("/update/{id}")
Expand Down
62 changes: 62 additions & 0 deletions src/main/java/com/orbitech/npvet/dto/UsuarioCadastrarDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.orbitech.npvet.dto;

import com.orbitech.npvet.entity.Role;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.validator.constraints.br.CPF;

import java.time.LocalDateTime;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UsuarioCadastrarDTO {
private String id;
// @NotNull(message = "Você precisa preencher um nome.")
@Size(max = 100, message = "Quantidade de caracteres excedida.")
private String nome;

// @NotNull(message = "Você precisa preencher um CPF.")
@CPF(message = "CPF inválido.")
private String cpf;

@Enumerated(EnumType.STRING)
@NotNull(message = "Você precisar definir o tipo de Usuário entre: SECRETARIA, ADMINISTRADOR ou MEDICO.")
private Role role;

@NotNull(message = "Você precisa definir um nome de usuário.")
@Size(max = 30, message = "Quantidade de caracteres excedida.")
private String username;


@NotNull(message = "Você precisa definir uma senha.")
@Size(max = 50, message = "Quantidade de caracteres excedida.")
private String password;

private String token;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private LocalDateTime deletedAt;

public void roleStringSet(String role){
this.role = Role.valueOf(role);
}
public String roleStringGet() {
return this.role.toString();
}

public void delete(){
this.deletedAt = LocalDateTime.now();
}
public void activate(){
this.deletedAt = null;
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/orbitech/npvet/entity/Usuario.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class Usuario extends AbstractEntity implements UserDetails {
@Column(length = 100, name = "nome")
private String nome;

@Column(unique = true, length = 11, name = "cpf")
@Column(unique = true, length = 15, name = "cpf")
private String cpf;

@Enumerated(EnumType.STRING)
Expand Down
31 changes: 28 additions & 3 deletions src/main/java/com/orbitech/npvet/service/UsuarioService.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.orbitech.npvet.service;

import com.orbitech.npvet.dto.UsuarioCadastrarDTO;
import com.orbitech.npvet.dto.UsuarioDTO;
import com.orbitech.npvet.entity.Role;
import com.orbitech.npvet.entity.Usuario;
import com.orbitech.npvet.repository.UsuarioRepository;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
Expand All @@ -16,33 +19,55 @@

@Service
@Slf4j
@AllArgsConstructor
public class UsuarioService {
@Autowired
private UsuarioRepository repository;

private PasswordEncoder passwordEncoder;

private final ModelMapper mapper = new ModelMapper();

public UsuarioDTO toUsuarioDTO(Usuario usuarioEntidade){
return mapper.map(usuarioEntidade, UsuarioDTO.class);
}

public UsuarioCadastrarDTO toUsuarioCadastrarDTO(Usuario usuarioEntidade){
return mapper.map(usuarioEntidade, UsuarioCadastrarDTO.class);
}

public Usuario toUsuarioEntidade(UsuarioDTO usuarioDTO){
return mapper.map(usuarioDTO, Usuario.class);
}

public Usuario toUsuarioEntidade(UsuarioCadastrarDTO usuarioDTO){
return mapper.map(usuarioDTO, Usuario.class);
}

public Usuario toUsuarioCadastrarEntidade(UsuarioCadastrarDTO usuarioDTO){
return mapper.map(usuarioDTO, Usuario.class);
}

public UsuarioDTO getById(String id){
return toUsuarioDTO(repository.findById(id).orElse(null));
}

public UsuarioCadastrarDTO getByIdForDelete(String id){
return toUsuarioCadastrarDTO(repository.findById(id).orElse(null));
}

public List<UsuarioDTO> getAll() {
return repository.findAll().stream().map(this::toUsuarioDTO).toList();
}
@Transactional
public UsuarioDTO create(UsuarioDTO usuarioDTO, Usuario usuarioAutenticado) {
public UsuarioDTO create(UsuarioCadastrarDTO usuarioDTO, Usuario usuarioAutenticado) {
Usuario usuarioByCpf = repository.findUsuarioByCpf(usuarioDTO.getCpf());

String encodedPassword = passwordEncoder.encode(usuarioDTO.getPassword());
usuarioDTO.setPassword(encodedPassword);

Assert.isTrue(usuarioByCpf == null, String.format("Usuário com o CPF: {%s} já existe!",usuarioDTO.getCpf()));
UsuarioDTO usuarioDT = toUsuarioDTO(repository.save(toUsuarioEntidade(usuarioDTO)));
UsuarioDTO usuarioDT = toUsuarioDTO(repository.save(toUsuarioCadastrarEntidade(usuarioDTO)));
log.info("USUÁRIO:" + usuarioDT.getNome() + "NOME:" +usuarioDT.getNome()+ "USERNAME:" + usuarioDT.getUsername() + "CPF:" + usuarioDT.getCpf() + "| Criado por:" + usuarioAutenticado.getNome() + " "+ usuarioAutenticado.getId());
return usuarioDT;
}
Expand Down Expand Up @@ -106,7 +131,7 @@ public UsuarioDTO getUsuarioByCpf(String cpf){

@Transactional
public UsuarioDTO delete(String id, Usuario usuarioAutenticado){
UsuarioDTO userById = getById(id);
UsuarioCadastrarDTO userById = getByIdForDelete(id);
userById.delete();
UsuarioDTO usuarioDT = toUsuarioDTO(repository.save(toUsuarioEntidade(userById)));
log.info("USUÁRIO:" + usuarioDT.getNome() + "NOME:" +usuarioDT.getNome()+ "USERNAME:" + usuarioDT.getUsername() + "CPF:" + usuarioDT.getCpf() + "| Deletado por:" + usuarioAutenticado.getNome() + " "+ usuarioAutenticado.getId());
Expand Down