Se agrega el servicio de eliminar un perfil a un usuario en ServiceUzyTUsuario,…

Se agrega el servicio de eliminar un perfil a un usuario en ServiceUzyTUsuario, Además se agrega tambien el servicio de asignar perfil en ServiceUzyTPerfilUsuario
parent d889aa70
package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUsuarioConPerfiles;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTPerfilUsuario.IServiceUzyTPerfilUsuario;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_VERSION;
@RestController
@CrossOrigin(origins = "*")
@RequestMapping(V1_API_VERSION + "/perfilusuario")
public class UzyTPerfilUsuarioController {
private final IServiceUzyTPerfilUsuario serviceUzyTPerfilUsuario;
public UzyTPerfilUsuarioController(IServiceUzyTPerfilUsuario serviceUzyTPerfilUsuario) {
this.serviceUzyTPerfilUsuario = serviceUzyTPerfilUsuario;
}
@PostMapping("/asignar_perfil/{uzytusuarioId}/{uzytperfilId}")
public DtoUsuarioConPerfiles asignarPerfilAUsuario(
@PathVariable("uzytusuarioId") @NotNull Long uzytusuarioId,
@PathVariable("uzytperfilId") @NotNull Long uzytperfilId) {
return serviceUzyTPerfilUsuario.asignarPerfilAUsuario(uzytusuarioId, uzytperfilId);
}
}
......@@ -7,6 +7,7 @@ import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTUsuario.IServiceUzyTUsuario
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Set;
......@@ -36,8 +37,13 @@ public class UzyTUsuarioController {
public List<DtoUzyTUsuario> ListarRegistros() {
return serviceUzyTUsuario.ListarRegistros();
}
@DeleteMapping("/eliminar_perfil/{uzytusuario_id}/{uzytperfil_id}")
public DtoUsuarioConPerfiles eliminarPerfilDeUsuario(
@PathVariable("uzytusuario_id") @NotNull Long uzytusuario_id,
@PathVariable("uzytperfil_id") @NotNull Long uzytperfil_id) {
return serviceUzyTUsuario.eliminarPerfilDeUsuario(uzytusuario_id, uzytperfil_id);
}
@GetMapping("/perfilUsuario/{uzytusuario_id}")
public Set<DtoUzyTPerfil> findPerfilesByUsuarioId(@PathVariable Long uzytusuario_id) {
return serviceUzyTUsuario.findPerfilesByUsuarioId(uzytusuario_id);
......
......@@ -19,6 +19,9 @@ public class ModelUzyTPerfilUsuarioId implements Serializable {
@Column(name = "UZYTPERFIL_ID", nullable = false)
private Long uzytperfilId;
@NotNull
@Column(name = "UZYTUSUARIO_ID", nullable = false)
private Long uzytusuarioId;
......
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTPerfilUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUsuarioConPerfiles;
public interface IServiceUzyTPerfilUsuario {
DtoUsuarioConPerfiles asignarPerfilAUsuario(Long uzytusuarioId, Long uzytperfilId);
}
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTPerfilUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTUsuario;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUsuarioConPerfiles;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTPerfilMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTUsuario;
import org.springframework.stereotype.Service;
@Service
public class ServiceUzyTPerfilUsuario implements IServiceUzyTPerfilUsuario {
private final DaoUzyTUsuario daoUzyTUsuario;
private final UzyTPerfilMapper mapperPerfil;
private final DaoUzyTPerfil daoUzyTPerfil;
public ServiceUzyTPerfilUsuario(DaoUzyTUsuario daoUzyTUsuario, UzyTPerfilMapper mapperPerfil, DaoUzyTPerfil daoUzyTPerfil) {
this.daoUzyTUsuario = daoUzyTUsuario;
this.mapperPerfil = mapperPerfil;
this.daoUzyTPerfil = daoUzyTPerfil;
}
@Override
public DtoUsuarioConPerfiles asignarPerfilAUsuario(Long uzytusuarioId, Long uzytperfilId) {
ModelUzyTUsuario usuario = daoUzyTUsuario.findById(uzytusuarioId)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + uzytusuarioId));
ModelUzyTPerfil perfil = daoUzyTPerfil.findById(uzytperfilId)
.orElseThrow(() -> new ResourceNotFoundException("Perfil no encontrado con ID: " + uzytperfilId));
// Aquí asignas el perfil al usuario
usuario.getUzytperfils().add(perfil);
daoUzyTUsuario.save(usuario);
// Creas un objeto DtoUsuarioConPerfiles para asignar sus valores a los campos
DtoUsuarioConPerfiles dtoUsuarioConPerfiles = new DtoUsuarioConPerfiles();
dtoUsuarioConPerfiles.setUzytusuario_id(usuario.getUzytusuario_id());
dtoUsuarioConPerfiles.setUzytusuario_nombres(usuario.getUzytusuario_nombres());
dtoUsuarioConPerfiles.setPerfiles(mapperPerfil.entitiesToDtosSet(usuario.getUzytperfils()));
return dtoUsuarioConPerfiles;
}
}
......@@ -22,5 +22,7 @@ public interface IServiceUzyTUsuario {
DtoUsuarioConPerfiles asignarPerfilAUsuario(Long uzytusuario_id, Long uzytperfil_id);
DtoUsuarioConPerfiles eliminarPerfilDeUsuario(Long uzytusuario_id, Long uzytperfil_id);
boolean eliminar(Long id);
}
......@@ -232,7 +232,41 @@ public class ServiceUzyTUsuario implements IServiceUzyTUsuario {
}
}
public DtoUsuarioConPerfiles eliminarPerfilDeUsuario(Long uzytusuario_id, Long uzytperfil_id) {
if (uzytusuario_id <= 0 || uzytperfil_id <= 0) {
throw new InvalidArgumentException("Se debe ingresar un ID válido y mayor que cero.");
}
try {
ModelUzyTUsuario usuario = daoUzyTUsuario.findById(uzytusuario_id)
.orElseThrow(() -> new ResourceNotFoundException("Usuario no encontrado con ID: " + uzytusuario_id));
ModelUzyTPerfil perfil = daoUzyTPerfil.findById(uzytperfil_id)
.orElseThrow(() -> new ResourceNotFoundException("Perfil no encontrado con ID: " + uzytperfil_id));
if (!usuario.getUzytperfils().contains(perfil)) {
throw new InvalidArgumentException("El perfil no está asignado al usuario.");
}
// Aquí eliminas el perfil del usuario
usuario.getUzytperfils().remove(perfil);
daoUzyTUsuario.save(usuario);
Set<DtoUzyTPerfil> perfilesDto = mapperPerfil.entitiesToDtosSet(usuario.getUzytperfils());
// Se crea un objeto de DtoUsuarioConPerfiles para asignarles su valor a los campos
DtoUsuarioConPerfiles dtoUsuarioConPerfiles = new DtoUsuarioConPerfiles();
dtoUsuarioConPerfiles.setUzytusuario_id(usuario.getUzytusuario_id());
dtoUsuarioConPerfiles.setUzytusuario_nombres(usuario.getUzytusuario_nombres());
dtoUsuarioConPerfiles.setPerfiles(perfilesDto);
return dtoUsuarioConPerfiles;
} catch (ResourceNotFoundException | InvalidArgumentException ex) {
throw ex;
} catch (Exception ex) {
throw new RuntimeException("Error al eliminar perfil del usuario: " + ex.getMessage());
}
}
@Override
public Set<DtoUzyTPerfil> findPerfilesByUsuarioId(Long uzytusuario_id) {
......
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